synapse-cli-agent 0.1.42__tar.gz → 0.1.44__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 (576) hide show
  1. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/.github/workflows/release.yml +10 -1
  2. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/.gitignore +5 -0
  3. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/CHANGELOG.md +32 -0
  4. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/PKG-INFO +15 -1
  5. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/README.md +14 -0
  6. synapse_cli_agent-0.1.44/bucket/synapse.json +29 -0
  7. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/pyproject.toml +1 -1
  8. synapse_cli_agent-0.1.44/release_body.md +18 -0
  9. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/commands/slash_complete.py +5 -6
  10. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/backends.py +28 -3
  11. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/chrome/controller.py +7 -0
  12. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/topbar/components/branch.py +24 -1
  13. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/topbar/components/workspace.py +20 -1
  14. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/topbar/core.py +243 -4
  15. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/tui.py +4 -0
  16. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_backends.py +74 -0
  17. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_slash_complete.py +10 -1
  18. synapse_cli_agent-0.1.44/tests/test_startup_defer.py +73 -0
  19. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/uv.lock +1 -1
  20. synapse_cli_agent-0.1.42/release_body.md +0 -12
  21. synapse_cli_agent-0.1.42/tests/test_startup_defer.py +0 -40
  22. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/.dockerignore +0 -0
  23. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/.github/workflows/ci.yml +0 -0
  24. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/.github/workflows/docs.yml +0 -0
  25. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/.github/workflows/native-compression-wheels.yml +0 -0
  26. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/.github/workflows/native-core-tool-wheels.yml +0 -0
  27. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/.python-version +0 -0
  28. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/.readthedocs.yaml +0 -0
  29. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/.zed/settings.json +0 -0
  30. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/AGENTS.md +0 -0
  31. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/Dockerfile.web +0 -0
  32. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/LICENSE +0 -0
  33. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/README.zh-CN.md +0 -0
  34. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/agent_upstream.txt +0 -0
  35. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/approval-behavior.md +0 -0
  36. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/assets/demo.gif +0 -0
  37. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/assets/synapse-logo.svg +0 -0
  38. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/assets/tui-preview.png +0 -0
  39. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/cli_upstream.txt +0 -0
  40. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/debug_compact.py +0 -0
  41. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/decode_screenshot.py +0 -0
  42. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/acp-adapter/capability-matrix.md +0 -0
  43. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/acp-adapter/decisions.md +0 -0
  44. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/acp-adapter/index.md +0 -0
  45. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/acp-adapter/phase-0-protocol-baseline.md +0 -0
  46. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/acp-adapter/phase-1-core-transport.md +0 -0
  47. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/acp-adapter/phase-2-prompt-semantics.md +0 -0
  48. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/acp-adapter/phase-3-permissions.md +0 -0
  49. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/acp-adapter/phase-4-session-lifecycle.md +0 -0
  50. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/acp-adapter/phase-5-session-mcp.md +0 -0
  51. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/acp-adapter/phase-6-client-services.md +0 -0
  52. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/acp-adapter/phase-7-advanced-capabilities.md +0 -0
  53. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/acp-adapter/phase-8-compliance.md +0 -0
  54. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/acp-adapter/progress.md +0 -0
  55. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/agent-development-guide.md +0 -0
  56. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/agent-runtime-decoupling/baseline-report.md +0 -0
  57. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/agent-runtime-decoupling/decisions.md +0 -0
  58. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/agent-runtime-decoupling/index.md +0 -0
  59. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/agent-runtime-decoupling/migration.md +0 -0
  60. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/agent-runtime-decoupling/phase-0-baseline.md +0 -0
  61. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/agent-runtime-decoupling/phase-1-streaming-core.md +0 -0
  62. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/agent-runtime-decoupling/phase-2-turn-runtime.md +0 -0
  63. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/agent-runtime-decoupling/phase-3-tui-cutover.md +0 -0
  64. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/agent-runtime-decoupling/phase-4-session-runtime.md +0 -0
  65. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/agent-runtime-decoupling/phase-5-multi-session.md +0 -0
  66. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/agent-runtime-decoupling/phase-6-project-runtime.md +0 -0
  67. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/agent-runtime-decoupling/phase-7-global-control-plane.md +0 -0
  68. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/agent-runtime-decoupling/phase-8-hardening.md +0 -0
  69. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/agent-runtime-decoupling/post-review-fix-plan.md +0 -0
  70. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/agent-runtime-decoupling/progress.md +0 -0
  71. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/architecture-flow.md +0 -0
  72. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/architecture.md +0 -0
  73. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/cli.md +0 -0
  74. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/codex-session-discovery-phase-1.md +0 -0
  75. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/codex-session-import-phase-2.md +0 -0
  76. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/config.md +0 -0
  77. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/design.md +0 -0
  78. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/docker-web.md +0 -0
  79. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/index.md +0 -0
  80. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/install.md +0 -0
  81. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/math-formulas-test.md +0 -0
  82. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/mcp.md +0 -0
  83. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/models.md +0 -0
  84. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/native-compression-core.md +0 -0
  85. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/native-core-tool.md +0 -0
  86. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/permissions.md +0 -0
  87. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/quickstart.md +0 -0
  88. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/sessions.md +0 -0
  89. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/skills.md +0 -0
  90. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/smith_output.md +0 -0
  91. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/subagents.md +0 -0
  92. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/tool-output-transform.md +0 -0
  93. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/tui-cursor-refactor.md +0 -0
  94. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/tutorial.md +0 -0
  95. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/docs/x-agent-development-guide.md +0 -0
  96. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/examples/mcp.example.json +0 -0
  97. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/examples/models.example.json +0 -0
  98. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/examples/settings.example.json +0 -0
  99. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/middleware_upstream.txt +0 -0
  100. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/mkdocs.yml +0 -0
  101. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-core-tool/Cargo.lock +0 -0
  102. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-core-tool/Cargo.toml +0 -0
  103. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-core-tool/LICENSE +0 -0
  104. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-core-tool/NOTICE +0 -0
  105. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-core-tool/README.md +0 -0
  106. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-core-tool/pyproject.toml +0 -0
  107. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-core-tool/python/synapse_core_tool/__init__.py +0 -0
  108. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-core-tool/src/file_access.rs +0 -0
  109. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-core-tool/src/file_tools.rs +0 -0
  110. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-core-tool/src/lib.rs +0 -0
  111. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-core-tool/src/llm.rs +0 -0
  112. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-core-tool/src/math_render.rs +0 -0
  113. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-core-tool/src/search.rs +0 -0
  114. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-core-tool/uv.lock +0 -0
  115. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/Cargo.lock +0 -0
  116. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/Cargo.toml +0 -0
  117. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/LICENSE +0 -0
  118. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/NOTICE +0 -0
  119. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/README.md +0 -0
  120. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/pyproject.toml +0 -0
  121. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/python/synapse_tool_compress_core/__init__.py +0 -0
  122. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/ccr.rs +0 -0
  123. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/ccr_in_memory.rs +0 -0
  124. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/mod.rs +0 -0
  125. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/relevance/base.rs +0 -0
  126. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/relevance/bm25.rs +0 -0
  127. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/signals/keyword_detector.rs +0 -0
  128. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/signals/line_importance.rs +0 -0
  129. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/adaptive_sizer.rs +0 -0
  130. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/anchor_selector.rs +0 -0
  131. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/code_compressor.rs +0 -0
  132. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/diff_compressor.rs +0 -0
  133. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/log_compressor.rs +0 -0
  134. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/search_compressor.rs +0 -0
  135. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/analyzer.rs +0 -0
  136. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/anchors.rs +0 -0
  137. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/builder.rs +0 -0
  138. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/classifier.rs +0 -0
  139. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/classifier.rs +0 -0
  140. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/compactor.rs +0 -0
  141. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/formatter.rs +0 -0
  142. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/ir.rs +0 -0
  143. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/mod.rs +0 -0
  144. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/walker.rs +0 -0
  145. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/config.rs +0 -0
  146. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/constraints.rs +0 -0
  147. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crusher.rs +0 -0
  148. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crushers.rs +0 -0
  149. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/error_keywords.rs +0 -0
  150. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/field_detect.rs +0 -0
  151. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/hashing.rs +0 -0
  152. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/mod.rs +0 -0
  153. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/observer.rs +0 -0
  154. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/orchestration.rs +0 -0
  155. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/outliers.rs +0 -0
  156. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/planning.rs +0 -0
  157. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/statistics.rs +0 -0
  158. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/stats_math.rs +0 -0
  159. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/traits.rs +0 -0
  160. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/types.rs +0 -0
  161. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/rust/synapse-tool-compress-core/src/lib.rs +0 -0
  162. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/scripts/build_check_rust_openai.py +0 -0
  163. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/scripts/install.ps1 +0 -0
  164. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/scripts/release.ps1 +0 -0
  165. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/scripts/serve_web.py +0 -0
  166. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/slash_cmds_upstream.txt +0 -0
  167. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/__init__.py +0 -0
  168. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/__main__.py +0 -0
  169. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/acp/__init__.py +0 -0
  170. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/acp/agent.py +0 -0
  171. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/acp/client_services.py +0 -0
  172. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/acp/content.py +0 -0
  173. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/acp/events.py +0 -0
  174. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/acp/lifecycle.py +0 -0
  175. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/acp/mcp.py +0 -0
  176. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/acp/permissions.py +0 -0
  177. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/acp/server.py +0 -0
  178. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/acp/sessions.py +0 -0
  179. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/acp/updates.py +0 -0
  180. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/app/__init__.py +0 -0
  181. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/app/agent.py +0 -0
  182. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/app/agent_assembly.py +0 -0
  183. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/app/agent_md.py +0 -0
  184. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/cli.py +0 -0
  185. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/commands/__init__.py +0 -0
  186. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/commands/compression.py +0 -0
  187. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/commands/goal.py +0 -0
  188. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/commands/helpers.py +0 -0
  189. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/commands/mcp.py +0 -0
  190. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/commands/model.py +0 -0
  191. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/commands/result.py +0 -0
  192. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/commands/sessions.py +0 -0
  193. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/commands/slash_cmds.py +0 -0
  194. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/commands/theme.py +0 -0
  195. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/config.py +0 -0
  196. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/content/__init__.py +0 -0
  197. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/content/input_history.py +0 -0
  198. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/content/multimodal.py +0 -0
  199. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/content/prompts.py +0 -0
  200. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/content/skills_catalog.py +0 -0
  201. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/entry.py +0 -0
  202. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/goals/__init__.py +0 -0
  203. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/goals/middleware.py +0 -0
  204. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/goals/model.py +0 -0
  205. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/goals/runtime.py +0 -0
  206. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/goals/steering.py +0 -0
  207. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/goals/store.py +0 -0
  208. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/goals/tools.py +0 -0
  209. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/integrations/__init__.py +0 -0
  210. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/integrations/checkpoint_seed.py +0 -0
  211. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/integrations/codex_config.py +0 -0
  212. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/integrations/codex_history.py +0 -0
  213. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/integrations/codex_import.py +0 -0
  214. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/integrations/codex_sessions.py +0 -0
  215. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/integrations/describe_image.py +0 -0
  216. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/integrations/herdr.py +0 -0
  217. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/integrations/http_clients.py +0 -0
  218. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/integrations/llm_openai_compat.py +0 -0
  219. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/integrations/llm_openai_websocket.py +0 -0
  220. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/integrations/mcp_client.py +0 -0
  221. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/integrations/openai_oauth.py +0 -0
  222. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/integrations/openai_oauth_middleware.py +0 -0
  223. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/integrations/openai_usage.py +0 -0
  224. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/integrations/turbo.py +0 -0
  225. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/integrations/vision_middleware.py +0 -0
  226. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/memory/__init__.py +0 -0
  227. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/memory/auto_recorder.py +0 -0
  228. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/memory/embedder.py +0 -0
  229. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/memory/long_term.py +0 -0
  230. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/models/__init__.py +0 -0
  231. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/models/config.py +0 -0
  232. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/models/helpers.py +0 -0
  233. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/models/persist.py +0 -0
  234. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/models/profile.py +0 -0
  235. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/models/providers.py +0 -0
  236. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/models/registry.py +0 -0
  237. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/models/rust_openai.py +0 -0
  238. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/models_registry.py +0 -0
  239. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/observability/__init__.py +0 -0
  240. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/observability/debug_inspector.html +0 -0
  241. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/observability/debug_server.py +0 -0
  242. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/observability/exit_trace.py +0 -0
  243. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/observability/heap_dump.py +0 -0
  244. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/observability/llm_debug.py +0 -0
  245. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/observability/startup_trace.py +0 -0
  246. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/planner/__init__.py +0 -0
  247. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/planner/task_planner.py +0 -0
  248. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/projects/__init__.py +0 -0
  249. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/projects/catalog.py +0 -0
  250. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/rag/__init__.py +0 -0
  251. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/rag/knowledge_base.py +0 -0
  252. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/__init__.py +0 -0
  253. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/agent_loop/__init__.py +0 -0
  254. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/agent_loop/model.py +0 -0
  255. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/agent_loop/request.py +0 -0
  256. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/agent_loop/turn.py +0 -0
  257. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/async_runtime.py +0 -0
  258. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/cancellation.py +0 -0
  259. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/context_compact.py +0 -0
  260. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/debug_capture_middleware.py +0 -0
  261. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/execute_capture.py +0 -0
  262. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/filesystem_tool_prompt_middleware.py +0 -0
  263. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/fs_permissions.py +0 -0
  264. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/harness.py +0 -0
  265. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/hitl.py +0 -0
  266. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/interaction_ledger.py +0 -0
  267. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/middleware.py +0 -0
  268. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/model_request_compression_middleware.py +0 -0
  269. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/pathing.py +0 -0
  270. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/projects/__init__.py +0 -0
  271. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/projects/identity.py +0 -0
  272. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/projects/runtime.py +0 -0
  273. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/safety.py +0 -0
  274. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/session_header_middleware.py +0 -0
  275. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/session_headers.py +0 -0
  276. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/session_prewarm.py +0 -0
  277. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/sessions/__init__.py +0 -0
  278. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/sessions/events.py +0 -0
  279. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/sessions/manager.py +0 -0
  280. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/sessions/persistence.py +0 -0
  281. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/sessions/ref.py +0 -0
  282. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/sessions/runtime.py +0 -0
  283. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/steer.py +0 -0
  284. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/streaming/__init__.py +0 -0
  285. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/streaming/accumulator.py +0 -0
  286. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/streaming/adapters.py +0 -0
  287. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/streaming/events.py +0 -0
  288. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/streaming/parser.py +0 -0
  289. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/streaming/protocol.py +0 -0
  290. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/streaming/runtime.py +0 -0
  291. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/streaming/stream_events.py +0 -0
  292. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/streaming/tool_model.py +0 -0
  293. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/subagent_config_persist.py +0 -0
  294. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/subagent_specs.py +0 -0
  295. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/subagents.py +0 -0
  296. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/timeline.py +0 -0
  297. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/token_rate.py +0 -0
  298. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/tool_ignore.py +0 -0
  299. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/tool_output_eval.py +0 -0
  300. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/tool_output_middleware.py +0 -0
  301. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/runtime/tool_output_usage_middleware.py +0 -0
  302. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/sessions/__init__.py +0 -0
  303. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/sessions/cancel_repair.py +0 -0
  304. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/sessions/search_index.py +0 -0
  305. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/sessions/store.py +0 -0
  306. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/sessions/summary.py +0 -0
  307. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/sessions/transcript.py +0 -0
  308. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/sessions/transcript_migration.py +0 -0
  309. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/sessions/transcript_projection.py +0 -0
  310. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/settings/__init__.py +0 -0
  311. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/settings/config_paths.py +0 -0
  312. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/settings/schema.py +0 -0
  313. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/subagents.py +0 -0
  314. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/tool_output/__init__.py +0 -0
  315. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/tool_output/detection.py +0 -0
  316. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/tool_output/metrics.py +0 -0
  317. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/tool_output/models.py +0 -0
  318. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/tool_output/pipeline.py +0 -0
  319. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/tool_output/repository.py +0 -0
  320. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/tool_output/transformers.py +0 -0
  321. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/tools/__init__.py +0 -0
  322. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/tools/describe_image.py +0 -0
  323. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/tools/filesystem_patch.py +0 -0
  324. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/tools/filesystem_search.py +0 -0
  325. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/tools/session_tools.py +0 -0
  326. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/__init__.py +0 -0
  327. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/agent_lifecycle.py +0 -0
  328. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/answer_divider.py +0 -0
  329. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/approval.py +0 -0
  330. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/bottombar/__init__.py +0 -0
  331. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/bottombar/components/__init__.py +0 -0
  332. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/bottombar/components/codex_usage.py +0 -0
  333. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/bottombar/components/fast.py +0 -0
  334. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/bottombar/components/goal.py +0 -0
  335. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/bottombar/components/key_hints.py +0 -0
  336. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/bottombar/components/mcp.py +0 -0
  337. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/bottombar/components/mode.py +0 -0
  338. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/bottombar/components/model.py +0 -0
  339. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/bottombar/components/thread.py +0 -0
  340. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/bottombar/components/turbo.py +0 -0
  341. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/bottombar/components/turn_stats.py +0 -0
  342. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/bottombar/context.py +0 -0
  343. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/bottombar/core.py +0 -0
  344. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/chrome/__init__.py +0 -0
  345. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/clipboard.py +0 -0
  346. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/dialogs/__init__.py +0 -0
  347. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/dialogs/active_session_switcher.py +0 -0
  348. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/dialogs/base.py +0 -0
  349. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/dialogs/codex_config_import.py +0 -0
  350. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/dialogs/codex_reset.py +0 -0
  351. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/dialogs/codex_session_list.py +0 -0
  352. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/dialogs/compression_diagnostics.py +0 -0
  353. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/dialogs/controller.py +0 -0
  354. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/dialogs/git_explore.py +0 -0
  355. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/dialogs/mcp_panel.py +0 -0
  356. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/dialogs/model_form.py +0 -0
  357. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/dialogs/model_manager.py +0 -0
  358. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/dialogs/model_picker.py +0 -0
  359. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/dialogs/provider_catalog.py +0 -0
  360. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/dialogs/safety_panel.py +0 -0
  361. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/dialogs/session_list.py +0 -0
  362. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/dialogs/subagent_config.py +0 -0
  363. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/dialogs/theme_designer.py +0 -0
  364. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/dialogs/theme_picker.py +0 -0
  365. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/drawer.py +0 -0
  366. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/formatters.py +0 -0
  367. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/git_explore/__init__.py +0 -0
  368. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/git_explore/engine.py +0 -0
  369. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/git_explore/provider.py +0 -0
  370. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/git_explore/unified.py +0 -0
  371. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/image_preview.py +0 -0
  372. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/image_render.py +0 -0
  373. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/image_viewer.py +0 -0
  374. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/math_image.py +0 -0
  375. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/mermaid_image.py +0 -0
  376. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/prompt_controller.py +0 -0
  377. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/rendering.py +0 -0
  378. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/selectable_static.py +0 -0
  379. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/selectable_text.py +0 -0
  380. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/sink.py +0 -0
  381. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/status_controller.py +0 -0
  382. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/steer_controller.py +0 -0
  383. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/steer_widget.py +0 -0
  384. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/stream.py +0 -0
  385. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/stream_events.py +0 -0
  386. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/stream_runtime.py +0 -0
  387. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/textual_lifecycle.py +0 -0
  388. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/textual_stream_sink.py +0 -0
  389. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/theme.py +0 -0
  390. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/theme_controller.py +0 -0
  391. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/timeline.py +0 -0
  392. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/tool_blocks.py +0 -0
  393. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/topbar/__init__.py +0 -0
  394. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/topbar/components/__init__.py +0 -0
  395. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/topbar/components/title.py +0 -0
  396. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/topbar/components/tool_output.py +0 -0
  397. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/topbar/components/usage.py +0 -0
  398. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/topbar/context.py +0 -0
  399. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/topbar/git_changes_popover.py +0 -0
  400. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/topbar/git_chrome.py +0 -0
  401. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/topbar/tool_output_popover.py +0 -0
  402. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/topbar/widget.py +0 -0
  403. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/transcript/__init__.py +0 -0
  404. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/transcript/controller.py +0 -0
  405. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/transcript/factory.py +0 -0
  406. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/transcript/history.py +0 -0
  407. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/transcript/state.py +0 -0
  408. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/transcript_blocks.py +0 -0
  409. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/tui_launch.py +0 -0
  410. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/tui_styles.py +0 -0
  411. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/turn/__init__.py +0 -0
  412. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/turn/controller.py +0 -0
  413. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/turn/event_bridge.py +0 -0
  414. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/turn/event_renderer.py +0 -0
  415. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/turn/persistence.py +0 -0
  416. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/turn/request.py +0 -0
  417. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/turn_rail.py +0 -0
  418. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/turn_rail_widgets.py +0 -0
  419. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/user_turn.py +0 -0
  420. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/user_turn_block.py +0 -0
  421. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/welcome.py +0 -0
  422. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/ui/workspace.py +0 -0
  423. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/src/synapse/web.py +0 -0
  424. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/synapse.cmd +0 -0
  425. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/__init__.py +0 -0
  426. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/fixtures/acp/initialize.jsonl +0 -0
  427. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/fixtures/agent_stream/core_scenarios.json +0 -0
  428. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/fixtures/codex_rollouts/duplicate_response_item.jsonl +0 -0
  429. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/fixtures/codex_rollouts/incomplete_and_aborted.jsonl +0 -0
  430. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/fixtures/codex_rollouts/legacy_compaction.jsonl +0 -0
  431. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/fixtures/codex_rollouts/normal_completed.jsonl +0 -0
  432. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/fixtures/codex_rollouts/replacement_history.jsonl +0 -0
  433. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/fixtures/codex_rollouts/rollback.jsonl +0 -0
  434. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/fixtures/codex_rollouts/unsupported_replacement.jsonl +0 -0
  435. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/fixtures/sample_repo/calculator.py +0 -0
  436. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/fixtures/sample_repo/test_calculator.py +0 -0
  437. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/fixtures/tool_output_eval.json +0 -0
  438. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test.py +0 -0
  439. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_acp_p0_baseline.py +0 -0
  440. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_acp_p1_core.py +0 -0
  441. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_acp_p1_transport.py +0 -0
  442. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_acp_p2_content.py +0 -0
  443. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_acp_p2_events.py +0 -0
  444. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_acp_p2_updates.py +0 -0
  445. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_acp_p3_agent.py +0 -0
  446. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_acp_p3_permissions.py +0 -0
  447. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_acp_p4_history.py +0 -0
  448. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_acp_p4_lifecycle.py +0 -0
  449. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_acp_p5_mcp.py +0 -0
  450. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_acp_p6_client_services.py +0 -0
  451. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_acp_p8_compliance.py +0 -0
  452. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_agent_factory.py +0 -0
  453. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_agent_lifecycle.py +0 -0
  454. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_agent_turn_runtime.py +0 -0
  455. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_approval.py +0 -0
  456. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_async_checkpointer.py +0 -0
  457. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_bottombar_registry.py +0 -0
  458. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_cancel_repair.py +0 -0
  459. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_capabilities.py +0 -0
  460. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_checkpoint_seed.py +0 -0
  461. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_chrome_controller.py +0 -0
  462. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_cli.py +0 -0
  463. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_cli_codex_import.py +0 -0
  464. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_clipboard.py +0 -0
  465. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_codex_config.py +0 -0
  466. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_codex_history.py +0 -0
  467. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_codex_import.py +0 -0
  468. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_codex_sessions.py +0 -0
  469. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_codex_sessions_windows.py +0 -0
  470. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_compact_tool_descriptions.py +0 -0
  471. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_config.py +0 -0
  472. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_context_compact.py +0 -0
  473. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_context_window.py +0 -0
  474. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_debug_capture_middleware.py +0 -0
  475. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_debug_inspector.py +0 -0
  476. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_describe_image.py +0 -0
  477. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_dialogs.py +0 -0
  478. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_entry.py +0 -0
  479. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_filesystem_patch_tool.py +0 -0
  480. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_filesystem_search_tools.py +0 -0
  481. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_git_changes_popover.py +0 -0
  482. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_git_chrome.py +0 -0
  483. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_git_explore.py +0 -0
  484. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_goal_live_tui.py +0 -0
  485. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_goals.py +0 -0
  486. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_heap_dump.py +0 -0
  487. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_herdr_integration.py +0 -0
  488. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_http_clients.py +0 -0
  489. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_image_render.py +0 -0
  490. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_image_viewer.py +0 -0
  491. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_input_history.py +0 -0
  492. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_iteration_abc.py +0 -0
  493. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_layered_config.py +0 -0
  494. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_markdown_image.py +0 -0
  495. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_math_image_render.py +0 -0
  496. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_mcp_schema.py +0 -0
  497. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_mermaid_image.py +0 -0
  498. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_mermaid_render.py +0 -0
  499. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_middleware_async.py +0 -0
  500. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_model_dialogs.py +0 -0
  501. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_model_providers.py +0 -0
  502. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_model_request_compression_middleware.py +0 -0
  503. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_model_retry.py +0 -0
  504. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_models_persist.py +0 -0
  505. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_multimodal.py +0 -0
  506. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_native_math_render.py +0 -0
  507. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_openai_compat_reasoning.py +0 -0
  508. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_openai_oauth.py +0 -0
  509. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_openai_oauth_middleware.py +0 -0
  510. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_openai_usage.py +0 -0
  511. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_openai_websocket.py +0 -0
  512. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_pathing.py +0 -0
  513. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_project_catalog.py +0 -0
  514. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_project_drawer.py +0 -0
  515. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_project_runtime.py +0 -0
  516. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_project_switch.py +0 -0
  517. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_prompt_controller.py +0 -0
  518. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_prompts.py +0 -0
  519. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_runtime_hardening.py +0 -0
  520. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_runtime_manager.py +0 -0
  521. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_runtime_streaming.py +0 -0
  522. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_rust_openai_model.py +0 -0
  523. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_safety.py +0 -0
  524. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_search_index.py +0 -0
  525. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_session_headers.py +0 -0
  526. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_session_persistence.py +0 -0
  527. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_session_prewarm.py +0 -0
  528. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_session_runtime.py +0 -0
  529. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_session_store.py +0 -0
  530. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_session_summary.py +0 -0
  531. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_slash_and_mcp.py +0 -0
  532. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_slash_effects.py +0 -0
  533. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_startup_trace.py +0 -0
  534. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_status_controller.py +0 -0
  535. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_steer.py +0 -0
  536. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_steer_controller.py +0 -0
  537. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_stream_cancel.py +0 -0
  538. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_stream_semantic_fixtures.py +0 -0
  539. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_stream_tool_items.py +0 -0
  540. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_stream_ui.py +0 -0
  541. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_subagent_config_dialog.py +0 -0
  542. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_subagent_config_persist.py +0 -0
  543. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_subagent_status.py +0 -0
  544. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_subagents.py +0 -0
  545. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_textual_stream_sink.py +0 -0
  546. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_theme.py +0 -0
  547. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_theme_controller.py +0 -0
  548. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_timeline.py +0 -0
  549. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_token_rate.py +0 -0
  550. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_tool_blocks.py +0 -0
  551. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_tool_ignore.py +0 -0
  552. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_tool_intent.py +0 -0
  553. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_tool_output.py +0 -0
  554. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_tool_output_eval.py +0 -0
  555. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_tool_output_slash.py +0 -0
  556. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_tool_output_usage_middleware.py +0 -0
  557. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_topbar_context_ratio.py +0 -0
  558. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_topbar_registry.py +0 -0
  559. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_transcript.py +0 -0
  560. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_transcript_controller.py +0 -0
  561. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_transcript_history.py +0 -0
  562. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_transcript_history_controller.py +0 -0
  563. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_transcript_migration.py +0 -0
  564. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_transcript_projection.py +0 -0
  565. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_tui_active_session_switcher.py +0 -0
  566. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_tui_codex_import.py +0 -0
  567. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_tui_paste.py +0 -0
  568. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_tui_selection.py +0 -0
  569. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_turn_controller.py +0 -0
  570. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_turn_event_renderer.py +0 -0
  571. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_turn_rail_minimap.py +0 -0
  572. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_turn_request.py +0 -0
  573. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_usage_restore.py +0 -0
  574. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_user_turn_style.py +0 -0
  575. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/test_welcome.py +0 -0
  576. {synapse_cli_agent-0.1.42 → synapse_cli_agent-0.1.44}/tests/tool_output_plugin_fixture.py +0 -0
@@ -118,11 +118,20 @@ jobs:
118
118
  if: runner.os != 'Windows'
119
119
  run: chmod +x "dist/${{ matrix.binname }}"
120
120
 
121
+ - name: Generate SHA256 checksum
122
+ shell: pwsh
123
+ run: |
124
+ $hash = (Get-FileHash -Algorithm SHA256 -LiteralPath "dist/${{ matrix.binname }}").Hash.ToLower()
125
+ Set-Content -LiteralPath "dist/${{ matrix.binname }}.sha256" -Value $hash -NoNewline
126
+ Write-Host "sha256 for ${{ matrix.binname }}: $hash"
127
+
121
128
  - name: Upload executable artifact
122
129
  uses: actions/upload-artifact@v4
123
130
  with:
124
131
  name: ${{ matrix.artifact }}
125
- path: dist/${{ matrix.binname }}
132
+ path: |
133
+ dist/${{ matrix.binname }}
134
+ dist/${{ matrix.binname }}.sha256
126
135
  if-no-files-found: error
127
136
 
128
137
  release:
@@ -35,6 +35,11 @@ conversation_history/
35
35
  /ear-anatomy-exploded.html
36
36
  /ear-models/
37
37
 
38
+ # Local scratch output (untracked scratch files)
39
+ /article-translation/
40
+ /article_ltt.html
41
+ /twitter-replica/
42
+
38
43
  # IDE
39
44
  .idea/
40
45
  .vscode/
@@ -8,6 +8,38 @@ All entries are written in English.
8
8
 
9
9
  ---
10
10
 
11
+ ## v0.1.44
12
+
13
+ ### New Features
14
+
15
+ - Centered the topbar title and elided topbar components by width.
16
+
17
+ ### Bug Fixes
18
+
19
+ - Slash path completion now stops once whitespace follows the active `@` token, avoiding spurious path suggestions mid-line.
20
+ - Reworked process-tree termination: on Windows the runtime falls back to `proc.kill()` when `taskkill` fails, and on Unix it kills the whole process group so descendants cannot survive. Commands are also detached from the TUI's controlling terminal (`start_new_session` on Unix, `CREATE_NO_WINDOW` on Windows) so non-interactive tools such as `ssh` cannot block on a hidden console.
21
+ - Re-probe git chrome after mount to retry transient probe failures.
22
+
23
+ ### Engineering
24
+
25
+ - Ignored local scratch output files.
26
+ - Updated the Scoop manifest.
27
+
28
+ ---
29
+
30
+ ## v0.1.43
31
+
32
+ ### New Features
33
+
34
+ - Added Scoop distribution support: a new `bucket/synapse.json` manifest (with `checkver`/`autoupdate`) and a single-file Windows executable let Windows users install and auto-update Synapse via Scoop (`scoop install synapse`).
35
+
36
+ ### Engineering
37
+
38
+ - The release workflow now publishes a SHA-256 checksum (`<bin>.sha256`) alongside each platform executable, so Scoop's `autoupdate` can verify downloads without manual hash maintenance.
39
+ - Documented Scoop installation in the README.
40
+
41
+ ---
42
+
11
43
  ## v0.1.42
12
44
 
13
45
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: synapse-cli-agent
3
- Version: 0.1.42
3
+ Version: 0.1.44
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
@@ -270,6 +270,20 @@ One command, no clone required:
270
270
  uv tool install synapse-cli-agent
271
271
  ```
272
272
 
273
+ Windows users can also install via Scoop (single-file executable, auto-updated
274
+ through `checkver`): add the bucket, then install:
275
+
276
+ ```powershell
277
+ scoop bucket add synapse https://github.com/alex8224/synapse-agent
278
+ scoop install synapse
279
+ ```
280
+
281
+ Or install directly from the manifest URL:
282
+
283
+ ```powershell
284
+ scoop install https://raw.githubusercontent.com/alex8224/synapse-agent/main/bucket/synapse.json
285
+ ```
286
+
273
287
  Then start the TUI from anywhere:
274
288
 
275
289
  ```bash
@@ -37,6 +37,20 @@ One command, no clone required:
37
37
  uv tool install synapse-cli-agent
38
38
  ```
39
39
 
40
+ Windows users can also install via Scoop (single-file executable, auto-updated
41
+ through `checkver`): add the bucket, then install:
42
+
43
+ ```powershell
44
+ scoop bucket add synapse https://github.com/alex8224/synapse-agent
45
+ scoop install synapse
46
+ ```
47
+
48
+ Or install directly from the manifest URL:
49
+
50
+ ```powershell
51
+ scoop install https://raw.githubusercontent.com/alex8224/synapse-agent/main/bucket/synapse.json
52
+ ```
53
+
40
54
  Then start the TUI from anywhere:
41
55
 
42
56
  ```bash
@@ -0,0 +1,29 @@
1
+ {
2
+ "version": "0.1.43",
3
+ "description": "Local coding agent built on LangChain Deep Agents (LocalShell, no sandbox)",
4
+ "homepage": "https://github.com/alex8224/synapse-agent",
5
+ "license": "Apache-2.0",
6
+ "bin": [
7
+ ["synapse-windows-x64.exe", "synapse"]
8
+ ],
9
+ "checkver": {
10
+ "github": "https://github.com/alex8224/synapse-agent"
11
+ },
12
+ "architecture": {
13
+ "64bit": {
14
+ "url": "https://github.com/alex8224/synapse-agent/releases/download/v0.1.43/synapse-windows-x64.exe",
15
+ "hash": "c1fcc815af508e1051440dd944dc735ce1102e98b71e4cea40f3cdd31bababd3"
16
+ }
17
+ },
18
+ "autoupdate": {
19
+ "architecture": {
20
+ "64bit": {
21
+ "url": "https://github.com/alex8224/synapse-agent/releases/download/v$version/synapse-windows-x64.exe",
22
+ "hash": {
23
+ "url": "$baseurl/synapse-windows-x64.exe.sha256",
24
+ "mode": "extract"
25
+ }
26
+ }
27
+ }
28
+ }
29
+ }
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "synapse-cli-agent"
3
- version = "0.1.42"
3
+ version = "0.1.44"
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,18 @@
1
+ ## v0.1.44
2
+
3
+ ### New Features
4
+
5
+ - Centered the topbar title and elided topbar components by width.
6
+
7
+ ### Bug Fixes
8
+
9
+ - Slash path completion now stops once whitespace follows the active `@` token, avoiding spurious path suggestions mid-line.
10
+ - Reworked process-tree termination: on Windows the runtime falls back to `proc.kill()` when `taskkill` fails, and on Unix it kills the whole process group so descendants cannot survive. Commands are also detached from the TUI's controlling terminal (`start_new_session` on Unix, `CREATE_NO_WINDOW` on Windows) so non-interactive tools such as `ssh` cannot block on a hidden console.
11
+ - Re-probe git chrome after mount to retry transient probe failures.
12
+
13
+ ### Engineering
14
+
15
+ - Ignored local scratch output files.
16
+ - Updated the Scoop manifest.
17
+
18
+ ---
@@ -583,17 +583,16 @@ def _find_at(value: str) -> tuple[int, str] | None:
583
583
  """Find the last ``@`` and extract the path token after it.
584
584
 
585
585
  Returns ``(at_index, path_prefix)``, e.g. for ``"cat @src/main"``
586
- returns ``(4, "src/main")``. Returns ``None`` when there is no ``@``.
586
+ returns ``(4, "src/main")``. Returns ``None`` when there is no ``@`` or
587
+ whitespace after the active ``@`` token has ended path completion.
587
588
  """
588
589
  idx = value.rfind("@")
589
590
  if idx < 0:
590
591
  return None
591
- # Everything after @ until end or next whitespace.
592
592
  rest = value[idx + 1 :]
593
- # Split on whitespace to get the path token.
594
- parts = rest.split(maxsplit=1)
595
- token = parts[0] if parts else ""
596
- return idx, token
593
+ if any(char.isspace() for char in rest):
594
+ return None
595
+ return idx, rest
597
596
 
598
597
 
599
598
  def _at_path_prefix(token: str) -> str:
@@ -16,6 +16,7 @@ from __future__ import annotations
16
16
 
17
17
  import os
18
18
  import shutil
19
+ import signal
19
20
  import subprocess
20
21
  import sys
21
22
  from pathlib import Path
@@ -121,20 +122,36 @@ def _kill_process_tree(proc: subprocess.Popen[Any] | None) -> None:
121
122
  if pid is None:
122
123
  return
123
124
  if os.name == "nt":
125
+ taskkill_succeeded = False
124
126
  try:
125
- subprocess.run(
127
+ completed = subprocess.run(
126
128
  ["taskkill", "/T", "/F", "/PID", str(pid)],
129
+ stdin=subprocess.DEVNULL,
127
130
  capture_output=True,
128
131
  timeout=10,
129
132
  check=False,
130
133
  )
134
+ taskkill_succeeded = completed.returncode == 0
131
135
  except Exception: # noqa: BLE001
132
136
  pass
137
+ if not taskkill_succeeded:
138
+ try:
139
+ proc.kill()
140
+ except Exception: # noqa: BLE001
141
+ pass
133
142
  else:
134
143
  try:
135
- proc.kill()
136
- except Exception: # noqa: BLE001
144
+ # execute starts each command in a new session, whose process-group
145
+ # ID is the shell PID. Kill the group so descendants cannot survive
146
+ # while retaining stdout/stderr pipe handles.
147
+ os.killpg(pid, signal.SIGKILL)
148
+ except ProcessLookupError:
137
149
  pass
150
+ except Exception: # noqa: BLE001
151
+ try:
152
+ proc.kill()
153
+ except Exception: # noqa: BLE001
154
+ pass
138
155
  # Drain pipes with a short timeout so we don't hang forever if child
139
156
  # processes still hold them open.
140
157
  try:
@@ -426,6 +443,14 @@ class CodingLocalShellBackend(LocalShellBackend):
426
443
  "env": self._env,
427
444
  "cwd": str(self.cwd),
428
445
  }
446
+ if os.name == "nt":
447
+ # execute is non-interactive. Do not let commands such as ssh attach
448
+ # to the TUI console and wait for credentials outside captured stdin.
449
+ run_kwargs["creationflags"] = subprocess.CREATE_NO_WINDOW
450
+ else:
451
+ # Detach from the TUI's controlling terminal. Programs that bypass
452
+ # stdin and open /dev/tty then fail instead of blocking invisibly.
453
+ run_kwargs["start_new_session"] = True
429
454
  if executable:
430
455
  run_kwargs["executable"] = executable
431
456
 
@@ -656,6 +656,12 @@ class ChromeController:
656
656
  "min_width": 0,
657
657
  "priority": 40,
658
658
  "gap_after": gap,
659
+ # Fallback cap only: keep the left chrome (workspace + branch +
660
+ # diff stats like "6f +314 -13") fully visible for normal
661
+ # projects, and reserve room for the centered title on wide
662
+ # terminals. A very long branch/workspace elides via
663
+ # render_for_width only when it exceeds this fallback.
664
+ "max_width": 80,
659
665
  },
660
666
  "center": {
661
667
  "flex": 1,
@@ -684,6 +690,7 @@ class ChromeController:
684
690
  min_width=int(conf.get("min_width", 0)),
685
691
  priority=int(conf.get("priority", 0)),
686
692
  gap_after=int(conf.get("gap_after", 0)),
693
+ max_width=int(conf.get("max_width", 0)),
687
694
  )
688
695
 
689
696
  def install_default_bottombar(self) -> None:
@@ -5,7 +5,12 @@ from __future__ import annotations
5
5
  from rich.text import Text
6
6
 
7
7
  from synapse.ui.topbar.context import TopBarContext
8
- from synapse.ui.topbar.core import TopBarRegion, TopBarRegistry
8
+ from synapse.ui.topbar.core import (
9
+ TopBarRegion,
10
+ TopBarRegistry,
11
+ display_width,
12
+ truncate_to_width,
13
+ )
9
14
 
10
15
  ID = "branch"
11
16
  REGION = TopBarRegion.LEFT
@@ -31,6 +36,23 @@ def install(registry: TopBarRegistry, ctx: TopBarContext) -> None:
31
36
  mark = (ctx.branch_mark or "").strip()
32
37
  return f"{mark} {name}" if mark else name
33
38
 
39
+ def render_for_width(width: int) -> str | Text:
40
+ """Adapt to available width.
41
+
42
+ Keep the fully styled chrome (name + dirty + diff stats) when it fits;
43
+ otherwise truncate the *prefix* so the meaningful head (branch name and
44
+ the ``…f +n -n`` stats) survives and only the trailing ahead/behind
45
+ indicators are dropped.
46
+ """
47
+ raw = ctx.branch()
48
+ plain = raw.plain if isinstance(raw, Text) else str(raw or "")
49
+ max_w = max(0, int(width))
50
+ if not plain:
51
+ return raw if isinstance(raw, Text) else ""
52
+ if display_width(plain) <= max_w:
53
+ return raw
54
+ return truncate_to_width(plain, max_w)
55
+
34
56
  registry.register_fn(
35
57
  ID,
36
58
  render,
@@ -38,4 +60,5 @@ def install(registry: TopBarRegistry, ctx: TopBarContext) -> None:
38
60
  order=ORDER,
39
61
  priority=PRIORITY,
40
62
  min_width=MIN_WIDTH,
63
+ render_for_width=render_for_width,
41
64
  )
@@ -3,7 +3,12 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  from synapse.ui.topbar.context import TopBarContext
6
- from synapse.ui.topbar.core import TopBarRegion, TopBarRegistry
6
+ from synapse.ui.topbar.core import (
7
+ TopBarRegion,
8
+ TopBarRegistry,
9
+ _elide_tail,
10
+ display_width,
11
+ )
7
12
 
8
13
  ID = "workspace"
9
14
  REGION = TopBarRegion.LEFT
@@ -22,6 +27,19 @@ def install(registry: TopBarRegistry, ctx: TopBarContext) -> None:
22
27
  mark = (ctx.workspace_mark or "").strip()
23
28
  return f"{mark} {label}" if mark else label
24
29
 
30
+ def render_for_width(width: int) -> str:
31
+ """Adapt to available width: keep the full label when it fits, otherwise
32
+ elide to the trailing (meaningful) path segment."""
33
+ label = (ctx.workspace() or "").strip()
34
+ if not label:
35
+ return ""
36
+ mark = (ctx.workspace_mark or "").strip()
37
+ head = f"{mark} {label}" if mark else label
38
+ max_w = max(0, int(width))
39
+ if display_width(head) <= max_w:
40
+ return head
41
+ return _elide_tail(head, max_w)
42
+
25
43
  registry.register_fn(
26
44
  ID,
27
45
  render,
@@ -29,4 +47,5 @@ def install(registry: TopBarRegistry, ctx: TopBarContext) -> None:
29
47
  order=ORDER,
30
48
  priority=PRIORITY,
31
49
  min_width=MIN_WIDTH,
50
+ render_for_width=render_for_width,
32
51
  )