synapse-cli-agent 0.1.30__tar.gz → 0.1.31__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 (509) hide show
  1. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/.github/workflows/release.yml +12 -2
  2. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/CHANGELOG.md +13 -0
  3. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/PKG-INFO +8 -6
  4. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/README.md +7 -5
  5. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/pyproject.toml +1 -1
  6. synapse_cli_agent-0.1.31/release_body.md +12 -0
  7. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/entry.py +4 -0
  8. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/turn/controller.py +127 -28
  9. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_turn_controller.py +111 -0
  10. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/uv.lock +1 -1
  11. synapse_cli_agent-0.1.30/release_body.md +0 -13
  12. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/.dockerignore +0 -0
  13. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/.github/workflows/ci.yml +0 -0
  14. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/.github/workflows/docs.yml +0 -0
  15. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/.github/workflows/native-compression-wheels.yml +0 -0
  16. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/.github/workflows/native-core-tool-wheels.yml +0 -0
  17. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/.gitignore +0 -0
  18. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/.python-version +0 -0
  19. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/.readthedocs.yaml +0 -0
  20. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/AGENTS.md +0 -0
  21. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/Dockerfile.web +0 -0
  22. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/LICENSE +0 -0
  23. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/README.zh-CN.md +0 -0
  24. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/agent-studio-prototype/favicon.svg +0 -0
  25. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/agent-studio-prototype/index.html +0 -0
  26. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/agent-studio-prototype/script.js +0 -0
  27. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/agent-studio-prototype/styles.css +0 -0
  28. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/agent_upstream.txt +0 -0
  29. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/assets/demo.gif +0 -0
  30. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/assets/synapse-logo.svg +0 -0
  31. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/assets/tui-preview.png +0 -0
  32. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/cli_upstream.txt +0 -0
  33. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/debug_compact.py +0 -0
  34. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/decode_screenshot.py +0 -0
  35. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/agent-development-guide.md +0 -0
  36. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/agent-runtime-decoupling/baseline-report.md +0 -0
  37. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/agent-runtime-decoupling/decisions.md +0 -0
  38. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/agent-runtime-decoupling/index.md +0 -0
  39. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/agent-runtime-decoupling/migration.md +0 -0
  40. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/agent-runtime-decoupling/phase-0-baseline.md +0 -0
  41. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/agent-runtime-decoupling/phase-1-streaming-core.md +0 -0
  42. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/agent-runtime-decoupling/phase-2-turn-runtime.md +0 -0
  43. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/agent-runtime-decoupling/phase-3-tui-cutover.md +0 -0
  44. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/agent-runtime-decoupling/phase-4-session-runtime.md +0 -0
  45. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/agent-runtime-decoupling/phase-5-multi-session.md +0 -0
  46. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/agent-runtime-decoupling/phase-6-project-runtime.md +0 -0
  47. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/agent-runtime-decoupling/phase-7-global-control-plane.md +0 -0
  48. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/agent-runtime-decoupling/phase-8-hardening.md +0 -0
  49. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/agent-runtime-decoupling/post-review-fix-plan.md +0 -0
  50. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/agent-runtime-decoupling/progress.md +0 -0
  51. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/architecture-flow.md +0 -0
  52. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/architecture.md +0 -0
  53. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/cli.md +0 -0
  54. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/codex-session-discovery-phase-1.md +0 -0
  55. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/codex-session-import-phase-2.md +0 -0
  56. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/config.md +0 -0
  57. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/design.md +0 -0
  58. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/docker-web.md +0 -0
  59. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/index.md +0 -0
  60. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/install.md +0 -0
  61. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/math-formulas-test.md +0 -0
  62. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/mcp.md +0 -0
  63. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/models.md +0 -0
  64. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/native-compression-core.md +0 -0
  65. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/native-core-tool.md +0 -0
  66. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/permissions.md +0 -0
  67. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/quickstart.md +0 -0
  68. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/sessions.md +0 -0
  69. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/skills.md +0 -0
  70. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/smith_output.md +0 -0
  71. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/subagent-architecture-survey.md +0 -0
  72. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/tool-output-transform.md +0 -0
  73. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/tui-cursor-refactor.md +0 -0
  74. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/tutorial.md +0 -0
  75. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/docs/x-agent-development-guide.md +0 -0
  76. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/examples/mcp.example.json +0 -0
  77. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/examples/models.example.json +0 -0
  78. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/examples/settings.example.json +0 -0
  79. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/middleware_upstream.txt +0 -0
  80. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/mkdocs.yml +0 -0
  81. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-core-tool/Cargo.lock +0 -0
  82. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-core-tool/Cargo.toml +0 -0
  83. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-core-tool/LICENSE +0 -0
  84. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-core-tool/NOTICE +0 -0
  85. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-core-tool/README.md +0 -0
  86. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-core-tool/pyproject.toml +0 -0
  87. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-core-tool/python/synapse_core_tool/__init__.py +0 -0
  88. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-core-tool/src/file_access.rs +0 -0
  89. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-core-tool/src/file_tools.rs +0 -0
  90. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-core-tool/src/lib.rs +0 -0
  91. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-core-tool/src/math_render.rs +0 -0
  92. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-core-tool/src/search.rs +0 -0
  93. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-core-tool/uv.lock +0 -0
  94. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/Cargo.lock +0 -0
  95. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/Cargo.toml +0 -0
  96. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/LICENSE +0 -0
  97. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/NOTICE +0 -0
  98. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/README.md +0 -0
  99. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/pyproject.toml +0 -0
  100. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/python/synapse_tool_compress_core/__init__.py +0 -0
  101. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/ccr.rs +0 -0
  102. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/ccr_in_memory.rs +0 -0
  103. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/mod.rs +0 -0
  104. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/relevance/base.rs +0 -0
  105. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/relevance/bm25.rs +0 -0
  106. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/signals/keyword_detector.rs +0 -0
  107. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/signals/line_importance.rs +0 -0
  108. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/adaptive_sizer.rs +0 -0
  109. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/anchor_selector.rs +0 -0
  110. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/code_compressor.rs +0 -0
  111. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/diff_compressor.rs +0 -0
  112. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/log_compressor.rs +0 -0
  113. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/search_compressor.rs +0 -0
  114. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/analyzer.rs +0 -0
  115. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/anchors.rs +0 -0
  116. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/builder.rs +0 -0
  117. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/classifier.rs +0 -0
  118. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/classifier.rs +0 -0
  119. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/compactor.rs +0 -0
  120. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/formatter.rs +0 -0
  121. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/ir.rs +0 -0
  122. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/mod.rs +0 -0
  123. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/walker.rs +0 -0
  124. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/config.rs +0 -0
  125. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/constraints.rs +0 -0
  126. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crusher.rs +0 -0
  127. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crushers.rs +0 -0
  128. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/error_keywords.rs +0 -0
  129. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/field_detect.rs +0 -0
  130. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/hashing.rs +0 -0
  131. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/mod.rs +0 -0
  132. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/observer.rs +0 -0
  133. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/orchestration.rs +0 -0
  134. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/outliers.rs +0 -0
  135. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/planning.rs +0 -0
  136. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/statistics.rs +0 -0
  137. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/stats_math.rs +0 -0
  138. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/traits.rs +0 -0
  139. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/types.rs +0 -0
  140. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/rust/synapse-tool-compress-core/src/lib.rs +0 -0
  141. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/scripts/install.ps1 +0 -0
  142. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/scripts/release.ps1 +0 -0
  143. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/scripts/serve_web.py +0 -0
  144. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/slash_cmds_upstream.txt +0 -0
  145. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/__init__.py +0 -0
  146. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/__main__.py +0 -0
  147. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/app/__init__.py +0 -0
  148. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/app/agent.py +0 -0
  149. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/app/agent_assembly.py +0 -0
  150. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/app/agent_md.py +0 -0
  151. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/cli.py +0 -0
  152. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/commands/__init__.py +0 -0
  153. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/commands/compression.py +0 -0
  154. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/commands/goal.py +0 -0
  155. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/commands/helpers.py +0 -0
  156. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/commands/mcp.py +0 -0
  157. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/commands/model.py +0 -0
  158. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/commands/result.py +0 -0
  159. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/commands/sessions.py +0 -0
  160. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/commands/slash_cmds.py +0 -0
  161. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/commands/slash_complete.py +0 -0
  162. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/commands/theme.py +0 -0
  163. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/config.py +0 -0
  164. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/content/__init__.py +0 -0
  165. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/content/input_history.py +0 -0
  166. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/content/multimodal.py +0 -0
  167. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/content/prompts.py +0 -0
  168. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/content/skills_catalog.py +0 -0
  169. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/goals/__init__.py +0 -0
  170. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/goals/middleware.py +0 -0
  171. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/goals/model.py +0 -0
  172. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/goals/runtime.py +0 -0
  173. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/goals/steering.py +0 -0
  174. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/goals/store.py +0 -0
  175. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/goals/tools.py +0 -0
  176. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/integrations/__init__.py +0 -0
  177. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/integrations/checkpoint_seed.py +0 -0
  178. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/integrations/codex_history.py +0 -0
  179. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/integrations/codex_import.py +0 -0
  180. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/integrations/codex_sessions.py +0 -0
  181. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/integrations/describe_image.py +0 -0
  182. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/integrations/http_clients.py +0 -0
  183. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/integrations/llm_openai_compat.py +0 -0
  184. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/integrations/llm_openai_websocket.py +0 -0
  185. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/integrations/mcp_client.py +0 -0
  186. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/integrations/openai_oauth.py +0 -0
  187. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/integrations/openai_oauth_middleware.py +0 -0
  188. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/integrations/openai_usage.py +0 -0
  189. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/integrations/vision_middleware.py +0 -0
  190. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/memory/__init__.py +0 -0
  191. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/memory/auto_recorder.py +0 -0
  192. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/memory/embedder.py +0 -0
  193. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/memory/long_term.py +0 -0
  194. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/models/__init__.py +0 -0
  195. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/models/config.py +0 -0
  196. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/models/helpers.py +0 -0
  197. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/models/profile.py +0 -0
  198. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/models/registry.py +0 -0
  199. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/models_registry.py +0 -0
  200. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/observability/__init__.py +0 -0
  201. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/observability/debug_inspector.html +0 -0
  202. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/observability/debug_server.py +0 -0
  203. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/observability/exit_trace.py +0 -0
  204. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/observability/heap_dump.py +0 -0
  205. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/observability/llm_debug.py +0 -0
  206. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/observability/startup_trace.py +0 -0
  207. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/parallel_subagents.py +0 -0
  208. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/planner/__init__.py +0 -0
  209. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/planner/task_planner.py +0 -0
  210. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/projects/__init__.py +0 -0
  211. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/projects/catalog.py +0 -0
  212. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/rag/__init__.py +0 -0
  213. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/rag/knowledge_base.py +0 -0
  214. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/__init__.py +0 -0
  215. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/agent_loop/__init__.py +0 -0
  216. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/agent_loop/model.py +0 -0
  217. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/agent_loop/request.py +0 -0
  218. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/agent_loop/turn.py +0 -0
  219. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/async_runtime.py +0 -0
  220. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/backends.py +0 -0
  221. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/cancellation.py +0 -0
  222. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/context_compact.py +0 -0
  223. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/debug_capture_middleware.py +0 -0
  224. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/execute_capture.py +0 -0
  225. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/filesystem_tool_prompt_middleware.py +0 -0
  226. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/fs_permissions.py +0 -0
  227. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/harness.py +0 -0
  228. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/hitl.py +0 -0
  229. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/interaction_ledger.py +0 -0
  230. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/middleware.py +0 -0
  231. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/model_request_compression_middleware.py +0 -0
  232. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/pathing.py +0 -0
  233. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/projects/__init__.py +0 -0
  234. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/projects/identity.py +0 -0
  235. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/projects/runtime.py +0 -0
  236. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/safety.py +0 -0
  237. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/session_prewarm.py +0 -0
  238. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/sessions/__init__.py +0 -0
  239. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/sessions/events.py +0 -0
  240. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/sessions/manager.py +0 -0
  241. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/sessions/persistence.py +0 -0
  242. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/sessions/ref.py +0 -0
  243. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/sessions/runtime.py +0 -0
  244. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/steer.py +0 -0
  245. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/streaming/__init__.py +0 -0
  246. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/streaming/accumulator.py +0 -0
  247. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/streaming/adapters.py +0 -0
  248. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/streaming/events.py +0 -0
  249. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/streaming/parser.py +0 -0
  250. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/streaming/protocol.py +0 -0
  251. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/streaming/runtime.py +0 -0
  252. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/streaming/stream_events.py +0 -0
  253. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/streaming/tool_model.py +0 -0
  254. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/subagent_routing.py +0 -0
  255. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/subagents.py +0 -0
  256. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/timeline.py +0 -0
  257. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/token_rate.py +0 -0
  258. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/tool_ignore.py +0 -0
  259. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/tool_output_eval.py +0 -0
  260. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/tool_output_middleware.py +0 -0
  261. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/tool_output_usage_middleware.py +0 -0
  262. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/runtime/tool_response_truncate_middleware.py +0 -0
  263. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/sessions/__init__.py +0 -0
  264. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/sessions/cancel_repair.py +0 -0
  265. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/sessions/search_index.py +0 -0
  266. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/sessions/store.py +0 -0
  267. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/sessions/summary.py +0 -0
  268. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/sessions/transcript.py +0 -0
  269. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/sessions/transcript_migration.py +0 -0
  270. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/sessions/transcript_projection.py +0 -0
  271. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/settings/__init__.py +0 -0
  272. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/settings/config_paths.py +0 -0
  273. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/settings/schema.py +0 -0
  274. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/subagent_monitor.py +0 -0
  275. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/subagents.py +0 -0
  276. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/tool_output/__init__.py +0 -0
  277. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/tool_output/detection.py +0 -0
  278. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/tool_output/metrics.py +0 -0
  279. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/tool_output/models.py +0 -0
  280. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/tool_output/pipeline.py +0 -0
  281. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/tool_output/repository.py +0 -0
  282. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/tool_output/transformers.py +0 -0
  283. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/tools/__init__.py +0 -0
  284. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/tools/describe_image.py +0 -0
  285. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/tools/filesystem_patch.py +0 -0
  286. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/tools/filesystem_search.py +0 -0
  287. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/tools/session_tools.py +0 -0
  288. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/__init__.py +0 -0
  289. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/agent_lifecycle.py +0 -0
  290. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/answer_divider.py +0 -0
  291. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/bottombar/__init__.py +0 -0
  292. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/bottombar/components/__init__.py +0 -0
  293. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/bottombar/components/codex_usage.py +0 -0
  294. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/bottombar/components/fast.py +0 -0
  295. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/bottombar/components/goal.py +0 -0
  296. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/bottombar/components/key_hints.py +0 -0
  297. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/bottombar/components/mcp.py +0 -0
  298. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/bottombar/components/mode.py +0 -0
  299. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/bottombar/components/model.py +0 -0
  300. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/bottombar/components/thread.py +0 -0
  301. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/bottombar/context.py +0 -0
  302. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/bottombar/core.py +0 -0
  303. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/chrome/__init__.py +0 -0
  304. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/chrome/controller.py +0 -0
  305. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/clipboard.py +0 -0
  306. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/dialogs/__init__.py +0 -0
  307. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/dialogs/active_session_switcher.py +0 -0
  308. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/dialogs/base.py +0 -0
  309. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/dialogs/codex_reset.py +0 -0
  310. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/dialogs/codex_session_list.py +0 -0
  311. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/dialogs/compression_diagnostics.py +0 -0
  312. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/dialogs/controller.py +0 -0
  313. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/dialogs/git_explore.py +0 -0
  314. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/dialogs/mcp_panel.py +0 -0
  315. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/dialogs/model_picker.py +0 -0
  316. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/dialogs/safety_panel.py +0 -0
  317. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/dialogs/session_list.py +0 -0
  318. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/dialogs/subagent_monitor.py +0 -0
  319. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/dialogs/theme_designer.py +0 -0
  320. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/dialogs/theme_picker.py +0 -0
  321. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/drawer.py +0 -0
  322. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/formatters.py +0 -0
  323. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/git_explore/__init__.py +0 -0
  324. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/git_explore/engine.py +0 -0
  325. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/git_explore/provider.py +0 -0
  326. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/git_explore/unified.py +0 -0
  327. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/image_preview.py +0 -0
  328. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/image_render.py +0 -0
  329. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/image_viewer.py +0 -0
  330. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/math_image.py +0 -0
  331. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/mermaid_image.py +0 -0
  332. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/prompt_controller.py +0 -0
  333. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/rendering.py +0 -0
  334. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/selectable_static.py +0 -0
  335. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/selectable_text.py +0 -0
  336. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/sink.py +0 -0
  337. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/status_controller.py +0 -0
  338. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/steer_controller.py +0 -0
  339. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/steer_widget.py +0 -0
  340. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/stream.py +0 -0
  341. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/stream_events.py +0 -0
  342. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/stream_runtime.py +0 -0
  343. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/subagent_status_bar.py +0 -0
  344. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/textual_lifecycle.py +0 -0
  345. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/textual_stream_sink.py +0 -0
  346. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/theme.py +0 -0
  347. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/theme_controller.py +0 -0
  348. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/timeline.py +0 -0
  349. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/tool_blocks.py +0 -0
  350. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/topbar/__init__.py +0 -0
  351. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/topbar/components/__init__.py +0 -0
  352. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/topbar/components/branch.py +0 -0
  353. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/topbar/components/title.py +0 -0
  354. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/topbar/components/tool_output.py +0 -0
  355. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/topbar/components/usage.py +0 -0
  356. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/topbar/components/workspace.py +0 -0
  357. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/topbar/context.py +0 -0
  358. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/topbar/core.py +0 -0
  359. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/topbar/git_changes_popover.py +0 -0
  360. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/topbar/git_chrome.py +0 -0
  361. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/topbar/tool_output_popover.py +0 -0
  362. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/topbar/widget.py +0 -0
  363. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/transcript/__init__.py +0 -0
  364. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/transcript/controller.py +0 -0
  365. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/transcript/factory.py +0 -0
  366. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/transcript/history.py +0 -0
  367. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/transcript/state.py +0 -0
  368. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/transcript_blocks.py +0 -0
  369. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/tui.py +0 -0
  370. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/tui_launch.py +0 -0
  371. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/tui_styles.py +0 -0
  372. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/turn/__init__.py +0 -0
  373. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/turn/event_bridge.py +0 -0
  374. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/turn/event_renderer.py +0 -0
  375. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/turn/persistence.py +0 -0
  376. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/turn/request.py +0 -0
  377. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/turn_rail.py +0 -0
  378. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/turn_rail_widgets.py +0 -0
  379. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/user_turn.py +0 -0
  380. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/user_turn_block.py +0 -0
  381. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/ui/welcome.py +0 -0
  382. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/src/synapse/web.py +0 -0
  383. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/synapse.cmd +0 -0
  384. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/__init__.py +0 -0
  385. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/fixtures/agent_stream/core_scenarios.json +0 -0
  386. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/fixtures/codex_rollouts/duplicate_response_item.jsonl +0 -0
  387. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/fixtures/codex_rollouts/incomplete_and_aborted.jsonl +0 -0
  388. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/fixtures/codex_rollouts/legacy_compaction.jsonl +0 -0
  389. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/fixtures/codex_rollouts/normal_completed.jsonl +0 -0
  390. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/fixtures/codex_rollouts/replacement_history.jsonl +0 -0
  391. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/fixtures/codex_rollouts/rollback.jsonl +0 -0
  392. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/fixtures/codex_rollouts/unsupported_replacement.jsonl +0 -0
  393. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/fixtures/sample_repo/calculator.py +0 -0
  394. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/fixtures/sample_repo/test_calculator.py +0 -0
  395. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/fixtures/tool_output_eval.json +0 -0
  396. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test.py +0 -0
  397. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_agent_factory.py +0 -0
  398. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_agent_lifecycle.py +0 -0
  399. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_agent_turn_runtime.py +0 -0
  400. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_async_checkpointer.py +0 -0
  401. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_backends.py +0 -0
  402. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_bottombar_registry.py +0 -0
  403. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_cancel_repair.py +0 -0
  404. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_capabilities.py +0 -0
  405. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_checkpoint_seed.py +0 -0
  406. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_chrome_controller.py +0 -0
  407. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_cli.py +0 -0
  408. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_cli_codex_import.py +0 -0
  409. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_codex_history.py +0 -0
  410. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_codex_import.py +0 -0
  411. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_codex_sessions.py +0 -0
  412. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_codex_sessions_windows.py +0 -0
  413. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_compact_tool_descriptions.py +0 -0
  414. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_config.py +0 -0
  415. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_context_compact.py +0 -0
  416. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_context_window.py +0 -0
  417. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_dag_parallel.py +0 -0
  418. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_debug_capture_middleware.py +0 -0
  419. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_debug_inspector.py +0 -0
  420. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_describe_image.py +0 -0
  421. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_dialogs.py +0 -0
  422. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_entry.py +0 -0
  423. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_filesystem_patch_tool.py +0 -0
  424. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_filesystem_search_tools.py +0 -0
  425. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_git_changes_popover.py +0 -0
  426. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_git_chrome.py +0 -0
  427. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_git_explore.py +0 -0
  428. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_goal_live_tui.py +0 -0
  429. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_goals.py +0 -0
  430. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_heap_dump.py +0 -0
  431. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_http_clients.py +0 -0
  432. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_image_render.py +0 -0
  433. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_image_viewer.py +0 -0
  434. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_input_history.py +0 -0
  435. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_iteration_abc.py +0 -0
  436. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_layered_config.py +0 -0
  437. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_math_image_render.py +0 -0
  438. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_mcp_schema.py +0 -0
  439. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_mermaid_image.py +0 -0
  440. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_mermaid_render.py +0 -0
  441. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_middleware_async.py +0 -0
  442. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_model_request_compression_middleware.py +0 -0
  443. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_model_retry.py +0 -0
  444. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_multimodal.py +0 -0
  445. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_native_math_render.py +0 -0
  446. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_openai_compat_reasoning.py +0 -0
  447. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_openai_oauth.py +0 -0
  448. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_openai_oauth_middleware.py +0 -0
  449. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_openai_usage.py +0 -0
  450. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_openai_websocket.py +0 -0
  451. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_pathing.py +0 -0
  452. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_project_catalog.py +0 -0
  453. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_project_drawer.py +0 -0
  454. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_project_runtime.py +0 -0
  455. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_project_switch.py +0 -0
  456. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_prompt_controller.py +0 -0
  457. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_prompts.py +0 -0
  458. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_runtime_hardening.py +0 -0
  459. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_runtime_manager.py +0 -0
  460. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_runtime_streaming.py +0 -0
  461. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_safety.py +0 -0
  462. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_search_index.py +0 -0
  463. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_session_prewarm.py +0 -0
  464. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_session_runtime.py +0 -0
  465. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_session_store.py +0 -0
  466. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_session_summary.py +0 -0
  467. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_slash_and_mcp.py +0 -0
  468. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_slash_complete.py +0 -0
  469. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_slash_effects.py +0 -0
  470. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_startup_defer.py +0 -0
  471. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_startup_trace.py +0 -0
  472. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_steer.py +0 -0
  473. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_steer_controller.py +0 -0
  474. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_stream_cancel.py +0 -0
  475. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_stream_semantic_fixtures.py +0 -0
  476. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_stream_tool_items.py +0 -0
  477. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_stream_ui.py +0 -0
  478. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_subagent_monitor_dialog.py +0 -0
  479. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_subagent_status.py +0 -0
  480. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_textual_stream_sink.py +0 -0
  481. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_theme.py +0 -0
  482. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_theme_controller.py +0 -0
  483. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_timeline.py +0 -0
  484. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_token_rate.py +0 -0
  485. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_tool_ignore.py +0 -0
  486. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_tool_intent.py +0 -0
  487. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_tool_output.py +0 -0
  488. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_tool_output_eval.py +0 -0
  489. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_tool_output_slash.py +0 -0
  490. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_tool_output_usage_middleware.py +0 -0
  491. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_tool_response_truncate_middleware.py +0 -0
  492. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_topbar_context_ratio.py +0 -0
  493. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_topbar_registry.py +0 -0
  494. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_transcript.py +0 -0
  495. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_transcript_controller.py +0 -0
  496. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_transcript_history.py +0 -0
  497. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_transcript_history_controller.py +0 -0
  498. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_transcript_migration.py +0 -0
  499. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_transcript_projection.py +0 -0
  500. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_tui_active_session_switcher.py +0 -0
  501. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_tui_codex_import.py +0 -0
  502. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_tui_selection.py +0 -0
  503. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_turn_event_renderer.py +0 -0
  504. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_turn_rail_minimap.py +0 -0
  505. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_turn_request.py +0 -0
  506. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_usage_restore.py +0 -0
  507. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_user_turn_style.py +0 -0
  508. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/test_welcome.py +0 -0
  509. {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.31}/tests/tool_output_plugin_fixture.py +0 -0
@@ -63,14 +63,17 @@ jobs:
63
63
  - name: windows
64
64
  os: windows-latest
65
65
  artifact: executable-windows
66
+ binname: synapse-windows-x64.exe
66
67
  # macOS executables target Apple Silicon only; Intel macOS is unsupported
67
68
  # (matches the native-core-tool wheels matrix).
68
69
  - name: macos
69
70
  os: macos-latest
70
71
  artifact: executable-macos
72
+ binname: synapse-macos-arm64
71
73
  - name: linux
72
74
  os: ubuntu-latest
73
75
  artifact: executable-linux
76
+ binname: synapse-linux-x64
74
77
  steps:
75
78
  - uses: actions/checkout@v4
76
79
 
@@ -100,15 +103,22 @@ jobs:
100
103
  --collect-all texicode `
101
104
  src/synapse/entry.py
102
105
 
106
+ - name: Rename executable for artifact
107
+ shell: pwsh
108
+ run: |
109
+ $ext = if ($env:RUNNER_OS -eq 'Windows') { '.exe' } else { '' }
110
+ Rename-Item "dist/synapse$ext" "dist/${{ matrix.binname }}"
111
+ Write-Host "Renamed to ${{ matrix.binname }}"
112
+
103
113
  - name: Fix executable permission (Unix)
104
114
  if: runner.os != 'Windows'
105
- run: chmod +x dist/synapse
115
+ run: chmod +x "dist/${{ matrix.binname }}"
106
116
 
107
117
  - name: Upload executable artifact
108
118
  uses: actions/upload-artifact@v4
109
119
  with:
110
120
  name: ${{ matrix.artifact }}
111
- path: dist/synapse*
121
+ path: dist/${{ matrix.binname }}
112
122
  if-no-files-found: error
113
123
 
114
124
  release:
@@ -8,6 +8,19 @@ All entries are written in English.
8
8
 
9
9
  ---
10
10
 
11
+ ## v0.1.31
12
+
13
+ ### New Features
14
+
15
+ - The `Ctrl+O` / `Ctrl+Tab` recent-sessions switcher now lists the most recently changed sessions across every registered project (from the user-layer catalog) instead of current-project history only, and marks each row's live runtime status (`running` / `queued` / `idle` / `cold`, etc.). Sessions without an in-process runtime are shown as cold history, and the list degrades gracefully to the legacy view when the catalog is unavailable.
16
+
17
+ ### Bug Fixes
18
+
19
+ - Fixed the standalone Windows executable exiting immediately after launch: the PyInstaller entry script only defined `main()` without invoking it, so the packaged binary ran the top-level code and quit. `synapse.entry` now has an `if __name__ == "__main__"` guard and the packaged executable runs the CLI correctly.
20
+ - Fixed the release executable assets: the Linux and macOS binaries shared the same filename (`synapse`) and overwrote each other when merged into the release. Each platform is now uploaded under a distinct name: `synapse-windows-x64.exe`, `synapse-macos-arm64`, and `synapse-linux-x64`.
21
+
22
+ ---
23
+
11
24
  ## v0.1.30
12
25
 
13
26
  ### New Features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: synapse-cli-agent
3
- Version: 0.1.30
3
+ Version: 0.1.31
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
@@ -286,11 +286,13 @@ floating project drawer: it lists every registered project, groups their
286
286
  sessions, marks live runtime status, and lets you switch sessions in place or
287
287
  jump to another project (the TUI restarts into that project).
288
288
 
289
- Press `Ctrl+Tab` for a lighter active-session switcher: it lists only sessions
290
- that are doing work right now (across projects), lets you `Tab` / `Shift+Tab`
291
- through them and `Enter` to switch — the old session keeps running in the
292
- background and is never cancelled. Some terminals never forward `Ctrl+Tab` to
293
- the app; `Ctrl+O` is a drop-in alternative.
289
+ Press `Ctrl+Tab` for a global recent-sessions switcher: it lists the most
290
+ recently changed sessions across every registered project (from the user-layer
291
+ catalog), marks each one's live runtime status — `running` / `queued` /
292
+ `idle` / `cold`, etc. — lets you `Tab` / `Shift+Tab` through them and `Enter`
293
+ to switch. The old session keeps running in the background and is never
294
+ cancelled. Some terminals never forward `Ctrl+Tab` to the app; `Ctrl+O` is a
295
+ drop-in alternative.
294
296
 
295
297
  <details>
296
298
  <summary><b>Or run from source</b></summary>
@@ -55,11 +55,13 @@ floating project drawer: it lists every registered project, groups their
55
55
  sessions, marks live runtime status, and lets you switch sessions in place or
56
56
  jump to another project (the TUI restarts into that project).
57
57
 
58
- Press `Ctrl+Tab` for a lighter active-session switcher: it lists only sessions
59
- that are doing work right now (across projects), lets you `Tab` / `Shift+Tab`
60
- through them and `Enter` to switch — the old session keeps running in the
61
- background and is never cancelled. Some terminals never forward `Ctrl+Tab` to
62
- the app; `Ctrl+O` is a drop-in alternative.
58
+ Press `Ctrl+Tab` for a global recent-sessions switcher: it lists the most
59
+ recently changed sessions across every registered project (from the user-layer
60
+ catalog), marks each one's live runtime status — `running` / `queued` /
61
+ `idle` / `cold`, etc. — lets you `Tab` / `Shift+Tab` through them and `Enter`
62
+ to switch. The old session keeps running in the background and is never
63
+ cancelled. Some terminals never forward `Ctrl+Tab` to the app; `Ctrl+O` is a
64
+ drop-in alternative.
63
65
 
64
66
  <details>
65
67
  <summary><b>Or run from source</b></summary>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "synapse-cli-agent"
3
- version = "0.1.30"
3
+ version = "0.1.31"
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,12 @@
1
+ ## v0.1.31
2
+
3
+ ### New Features
4
+
5
+ - The `Ctrl+O` / `Ctrl+Tab` recent-sessions switcher now lists the most recently changed sessions across every registered project (from the user-layer catalog) instead of current-project history only, and marks each row's live runtime status (`running` / `queued` / `idle` / `cold`, etc.). Sessions without an in-process runtime are shown as cold history, and the list degrades gracefully to the legacy view when the catalog is unavailable.
6
+
7
+ ### Bug Fixes
8
+
9
+ - Fixed the standalone Windows executable exiting immediately after launch: the PyInstaller entry script only defined `main()` without invoking it, so the packaged binary ran the top-level code and quit. `synapse.entry` now has an `if __name__ == "__main__"` guard and the packaged executable runs the CLI correctly.
10
+ - Fixed the release executable assets: the Linux and macOS binaries shared the same filename (`synapse`) and overwrote each other when merged into the release. Each platform is now uploaded under a distinct name: `synapse-windows-x64.exe`, `synapse-macos-arm64`, and `synapse-linux-x64`.
11
+
12
+ ---
@@ -20,3 +20,7 @@ def main() -> None:
20
20
 
21
21
  mark("cli:imported")
22
22
  cli_main()
23
+
24
+
25
+ if __name__ == "__main__":
26
+ main()
@@ -354,44 +354,143 @@ class TurnController:
354
354
  return by_project
355
355
 
356
356
  def active_session_items(self) -> tuple[ActiveSessionItem, ...]:
357
- """Snapshot of the 10 most recently touched sessions for the switcher.
358
-
359
- Two sources are merged:
360
-
361
- - in-process runtimes: the canonical ``ProjectRegistry`` (cross-project
362
- background sessions) plus the legacy ``_sessions`` compatibility
363
- index for early-startup sessions never registered there;
364
- - the current project's persisted session store: cold history that has
365
- no runtime in this process (e.g. sessions from before a restart), so
366
- the switcher lists genuinely recent sessions, not only live ones.
367
-
368
- Every in-memory runtime counts (active or idle); rows are ordered by
369
- last activity (runtime ``last_activity_at`` for live sessions,
370
- persisted ``updated_at`` for cold ones) and capped at
371
- ``MAX_RECENT_SESSION_ITEMS``. Active statuses are still carried on each
372
- item so the dialog can style them.
357
+ """Snapshot of the 10 most recently changed sessions, globally.
358
+
359
+ Primary source is the user-layer ``ProjectCatalog`` projection: it
360
+ lists every registered project's sessions ordered by ``updated_at``
361
+ (cross-project), so the switcher is a *global* recent-changes list
362
+ rather than current-project history. Each row is then annotated with
363
+ its live runtime status:
364
+
365
+ - a session with an in-process runtime uses the runtime snapshot's
366
+ real status and ``last_activity_at`` (running / queued / idle / …);
367
+ - a session with no runtime in this process is marked ``COLD`` and
368
+ ordered by its persisted ``updated_at``.
369
+
370
+ Runtimes that the catalog has not projected yet (e.g. an active turn
371
+ that has not persisted) are appended so working sessions never vanish
372
+ from the list. When the catalog is unavailable (disabled or not yet
373
+ ready) this degrades to the legacy view: cross-project in-process
374
+ runtimes plus the current project's persisted cold history. Rows are
375
+ capped at ``MAX_RECENT_SESSION_ITEMS``.
373
376
  """
377
+ runtimes = self._runtime_index()
378
+ current = self._app.thread_id
379
+ catalog = getattr(self._app, "_project_catalog", None)
380
+ if catalog is not None:
381
+ try:
382
+ sessions = catalog.list_sessions(
383
+ limit=MAX_RECENT_SESSION_ITEMS * 3
384
+ )
385
+ except Exception: # noqa: BLE001 - catalog is best-effort
386
+ sessions = None
387
+ if sessions is not None:
388
+ return self._merge_global_items(sessions, runtimes, current)
389
+ return self._legacy_recent_items(runtimes, current)
390
+
391
+ def _runtime_index(self) -> dict[str, SessionRuntime]:
392
+ """thread_id -> runtime across projects; the registry wins on clashes."""
374
393
  runtimes: dict[str, SessionRuntime] = {}
375
394
  for runtime in self._project_registry.all_sessions():
376
395
  runtimes[runtime.thread_id] = runtime
377
396
  for runtime in tuple(self._sessions.values()):
378
397
  runtimes.setdefault(runtime.thread_id, runtime)
398
+ return runtimes
379
399
 
380
- current = self._app.thread_id
400
+ def _merge_global_items(
401
+ self,
402
+ sessions: list[Any],
403
+ runtimes: dict[str, SessionRuntime],
404
+ current: str,
405
+ ) -> tuple[ActiveSessionItem, ...]:
406
+ """Merge global catalog rows with live runtimes into one ordered list."""
381
407
  items: list[ActiveSessionItem] = []
408
+ covered: set[tuple[str, str]] = set()
409
+ for cs in sessions:
410
+ runtime = self._runtime_for_session(cs, runtimes)
411
+ if runtime is not None:
412
+ snapshot = runtime.snapshot()
413
+ title = self._active_session_title(runtime, snapshot)
414
+ if title == snapshot.thread_id[:8] and (cs.title or "").strip():
415
+ # Prefer the catalog title over the bare id fallback.
416
+ title = (cs.title or "").strip()[:120]
417
+ items.append(
418
+ ActiveSessionItem(
419
+ project_id=cs.project_id,
420
+ thread_id=cs.thread_id,
421
+ title=title,
422
+ project_label=cs.project_name or self._project_label(runtime),
423
+ status=snapshot.status,
424
+ last_activity_at=snapshot.last_activity_at,
425
+ current=cs.thread_id == current,
426
+ )
427
+ )
428
+ else:
429
+ updated = _parse_stored_timestamp(cs.updated_at)
430
+ if updated is None:
431
+ continue
432
+ items.append(
433
+ ActiveSessionItem(
434
+ project_id=cs.project_id,
435
+ thread_id=cs.thread_id,
436
+ title=(cs.title or "").strip()[:120] or cs.thread_id[:8],
437
+ project_label=cs.project_name or cs.project_id[:8],
438
+ status=SessionStatus.COLD,
439
+ last_activity_at=updated,
440
+ current=False,
441
+ )
442
+ )
443
+ covered.add((cs.project_id, cs.thread_id))
444
+ # Append runtimes the catalog has not projected yet (active, unpersisted).
382
445
  for runtime in runtimes.values():
383
446
  snapshot = runtime.snapshot()
384
- items.append(
385
- ActiveSessionItem(
386
- project_id=snapshot.project_id,
387
- thread_id=snapshot.thread_id,
388
- title=self._active_session_title(runtime, snapshot),
389
- project_label=self._project_label(runtime),
390
- status=snapshot.status,
391
- last_activity_at=snapshot.last_activity_at,
392
- current=snapshot.thread_id == current,
393
- )
394
- )
447
+ key = (snapshot.project_id, snapshot.thread_id)
448
+ if key in covered:
449
+ continue
450
+ items.append(self._item_from_runtime(runtime, snapshot, current))
451
+ items.sort(key=lambda item: item.last_activity_at, reverse=True)
452
+ return tuple(items[:MAX_RECENT_SESSION_ITEMS])
453
+
454
+ @staticmethod
455
+ def _runtime_for_session(cs: Any, runtimes: dict[str, SessionRuntime]) -> SessionRuntime | None:
456
+ """Exact ``(project_id, thread_id)`` match, then unique thread fallback."""
457
+ matches = [r for r in runtimes.values() if r.thread_id == cs.thread_id]
458
+ for runtime in matches:
459
+ if str(getattr(runtime, "project_id", "") or "") == cs.project_id:
460
+ return runtime
461
+ return matches[0] if len(matches) == 1 else None
462
+
463
+ def _item_from_runtime(
464
+ self,
465
+ runtime: SessionRuntime,
466
+ snapshot: Any,
467
+ current: str,
468
+ ) -> ActiveSessionItem:
469
+ """Build a switcher row straight from one live runtime snapshot."""
470
+ return ActiveSessionItem(
471
+ project_id=snapshot.project_id,
472
+ thread_id=snapshot.thread_id,
473
+ title=self._active_session_title(runtime, snapshot),
474
+ project_label=self._project_label(runtime),
475
+ status=snapshot.status,
476
+ last_activity_at=snapshot.last_activity_at,
477
+ current=snapshot.thread_id == current,
478
+ )
479
+
480
+ def _legacy_recent_items(
481
+ self,
482
+ runtimes: dict[str, SessionRuntime],
483
+ current: str,
484
+ ) -> tuple[ActiveSessionItem, ...]:
485
+ """Fallback when the global catalog is unavailable.
486
+
487
+ Cross-project in-process runtimes plus the current project's persisted
488
+ cold history (the pre-catalog behavior).
489
+ """
490
+ items: list[ActiveSessionItem] = []
491
+ for runtime in runtimes.values():
492
+ snapshot = runtime.snapshot()
493
+ items.append(self._item_from_runtime(runtime, snapshot, current))
395
494
  items.extend(self._stored_recent_items(current))
396
495
  items.sort(key=lambda item: item.last_activity_at, reverse=True)
397
496
  return tuple(items[:MAX_RECENT_SESSION_ITEMS])
@@ -1363,6 +1363,117 @@ class TestActiveSessionItems:
1363
1363
 
1364
1364
  assert controller.active_session_items() == ()
1365
1365
 
1366
+ def test_global_catalog_cold_sessions_across_projects(self) -> None:
1367
+ from synapse.projects.catalog import CatalogSession
1368
+
1369
+ controller = self._controller()
1370
+ controller._app._project_catalog = SimpleNamespace(
1371
+ list_sessions=lambda *, limit=200: [
1372
+ CatalogSession(
1373
+ project_id="pa", project_name="proj-a",
1374
+ workspace_path="/ws/a", thread_id="ca",
1375
+ title="cold a", model=None, summary=None,
1376
+ updated_at="2025-01-01T00:00:03+00:00",
1377
+ created_at="2025-01-01T00:00:00+00:00", tags=[],
1378
+ ),
1379
+ CatalogSession(
1380
+ project_id="pb", project_name="proj-b",
1381
+ workspace_path="/ws/b", thread_id="cb",
1382
+ title="cold b", model=None, summary=None,
1383
+ updated_at="2025-01-01T00:00:01+00:00",
1384
+ created_at="2025-01-01T00:00:00+00:00", tags=[],
1385
+ ),
1386
+ ]
1387
+ )
1388
+
1389
+ items = controller.active_session_items()
1390
+ by_id = {item.thread_id: item for item in items}
1391
+ assert set(by_id) == {"ca", "cb"}
1392
+ assert by_id["ca"].status == SessionStatus.COLD
1393
+ assert by_id["ca"].project_id == "pa"
1394
+ assert by_id["ca"].project_label == "proj-a"
1395
+ assert by_id["ca"].title == "cold a"
1396
+ assert by_id["ca"].current is False
1397
+ # Sorted by persisted updated_at, newest first.
1398
+ assert [item.thread_id for item in items] == ["ca", "cb"]
1399
+
1400
+ def test_runtime_status_overrides_catalog_row(self) -> None:
1401
+ from synapse.projects.catalog import CatalogSession
1402
+
1403
+ controller = self._controller()
1404
+ controller._sessions["live"] = self._runtime(
1405
+ controller,
1406
+ thread_id="live",
1407
+ project_id="pa",
1408
+ status=SessionStatus.RUNNING,
1409
+ activity=1.0,
1410
+ workspace="proj-a",
1411
+ )
1412
+ controller._app._project_catalog = SimpleNamespace(
1413
+ list_sessions=lambda *, limit=200: [
1414
+ CatalogSession(
1415
+ project_id="pa", project_name="proj-a",
1416
+ workspace_path="/ws/a", thread_id="live",
1417
+ title="catalog title", model=None, summary=None,
1418
+ updated_at="2025-01-01T00:00:00+00:00",
1419
+ created_at="2025-01-01T00:00:00+00:00", tags=[],
1420
+ ),
1421
+ CatalogSession(
1422
+ project_id="pb", project_name="proj-b",
1423
+ workspace_path="/ws/b", thread_id="cold",
1424
+ title="cold b", model=None, summary=None,
1425
+ updated_at="2025-01-01T00:00:01+00:00",
1426
+ created_at="2025-01-01T00:00:00+00:00", tags=[],
1427
+ ),
1428
+ ]
1429
+ )
1430
+
1431
+ items = controller.active_session_items()
1432
+ by_id = {item.thread_id: item for item in items}
1433
+ # Runtime snapshot status wins over the catalog projection.
1434
+ assert by_id["live"].status == SessionStatus.RUNNING
1435
+ assert by_id["cold"].status == SessionStatus.COLD
1436
+ # Live runtime (now - 1s) sorts before the cold 2025 row.
1437
+ assert [item.thread_id for item in items] == ["live", "cold"]
1438
+
1439
+ def test_runtime_not_in_catalog_is_appended(self) -> None:
1440
+ controller = self._controller()
1441
+ controller._sessions["active"] = self._runtime(
1442
+ controller,
1443
+ thread_id="active",
1444
+ project_id="pa",
1445
+ status=SessionStatus.RUNNING,
1446
+ activity=1.0,
1447
+ )
1448
+ # Catalog has no projection yet (active turn not persisted).
1449
+ controller._app._project_catalog = SimpleNamespace(
1450
+ list_sessions=lambda *, limit=200: []
1451
+ )
1452
+
1453
+ items = controller.active_session_items()
1454
+ assert [item.thread_id for item in items] == ["active"]
1455
+ assert items[0].status == SessionStatus.RUNNING
1456
+
1457
+ def test_catalog_failure_falls_back_to_legacy(self) -> None:
1458
+ def _boom(**kwargs: Any) -> list[Any]:
1459
+ del kwargs
1460
+ raise RuntimeError("db locked")
1461
+
1462
+ controller = self._controller()
1463
+ controller._sessions["a"] = self._runtime(
1464
+ controller,
1465
+ thread_id="a",
1466
+ project_id="p1",
1467
+ status=SessionStatus.RUNNING,
1468
+ activity=1.0,
1469
+ )
1470
+ controller._app._project_catalog = SimpleNamespace(list_sessions=_boom)
1471
+
1472
+ # Legacy fallback: live runtime survives, no exception leaks.
1473
+ items = controller.active_session_items()
1474
+ assert [item.thread_id for item in items] == ["a"]
1475
+ assert items[0].status == SessionStatus.RUNNING
1476
+
1366
1477
 
1367
1478
  def test_current_flag_marks_attached_thread(self) -> None:
1368
1479
  controller = self._controller()
@@ -2326,7 +2326,7 @@ wheels = [
2326
2326
 
2327
2327
  [[package]]
2328
2328
  name = "synapse-cli-agent"
2329
- version = "0.1.30"
2329
+ version = "0.1.31"
2330
2330
  source = { editable = "." }
2331
2331
  dependencies = [
2332
2332
  { name = "aiosqlite" },
@@ -1,13 +0,0 @@
1
- ## v0.1.30
2
-
3
- ### New Features
4
-
5
- - TUI startup timing trace: the startup report now covers the full CLI module-tree import (typer, settings, stream modules) that previously fell outside the trace, making startup bottlenecks visible.
6
- - Faster TUI startup: the model registry prewarm is optimized so the interface appears sooner.
7
-
8
- ### Engineering
9
-
10
- - Release workflow now builds standalone single-file executables for Windows, Linux, and macOS (PyInstaller) and attaches them to the GitHub Release; the GitHub Release creation was moved to a dedicated job that waits for both the Python distributions and the executables, while PyPI publishing stays independent.
11
- - Translated AGENTS.md and CHANGELOG.md to English; updated the README homepage demo media with an animated GIF and an mp4 fallback source.
12
-
13
- ---