synapse-cli-agent 0.1.21__tar.gz → 0.1.22__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 (361) hide show
  1. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/CHANGELOG.md +17 -0
  2. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/PKG-INFO +20 -20
  3. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/config.md +1 -0
  4. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/sessions.md +11 -0
  5. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/pyproject.toml +20 -20
  6. synapse_cli_agent-0.1.22/release_body.md +16 -0
  7. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/sessions/transcript.py +105 -0
  8. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/settings/schema.py +5 -0
  9. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/tui.py +368 -30
  10. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_config.py +10 -0
  11. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_layered_config.py +5 -1
  12. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_transcript.py +74 -0
  13. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_tui_selection.py +20 -0
  14. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/uv.lock +20 -20
  15. synapse_cli_agent-0.1.21/release_body.md +0 -24
  16. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/.github/workflows/ci.yml +0 -0
  17. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/.github/workflows/docs.yml +0 -0
  18. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/.github/workflows/native-compression-wheels.yml +0 -0
  19. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/.github/workflows/native-core-tool-wheels.yml +0 -0
  20. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/.github/workflows/release.yml +0 -0
  21. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/.gitignore +0 -0
  22. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/.python-version +0 -0
  23. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/.readthedocs.yaml +0 -0
  24. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/AGENTS.md +0 -0
  25. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/README.md +0 -0
  26. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/agent_upstream.txt +0 -0
  27. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/cli_upstream.txt +0 -0
  28. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/decode_screenshot.py +0 -0
  29. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/agent-development-guide.md +0 -0
  30. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/architecture-flow.md +0 -0
  31. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/architecture.md +0 -0
  32. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/cli.md +0 -0
  33. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/codex-session-discovery-phase-1.md +0 -0
  34. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/codex-session-import-phase-2.md +0 -0
  35. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/design.md +0 -0
  36. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/index.md +0 -0
  37. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/install.md +0 -0
  38. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/mcp.md +0 -0
  39. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/models.md +0 -0
  40. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/native-compression-core.md +0 -0
  41. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/native-core-tool.md +0 -0
  42. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/permissions.md +0 -0
  43. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/quickstart.md +0 -0
  44. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/skills.md +0 -0
  45. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/smith_output.md +0 -0
  46. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/tool-output-transform.md +0 -0
  47. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/tui-cursor-refactor.md +0 -0
  48. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/tutorial.md +0 -0
  49. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/x-agent-development-guide.md +0 -0
  50. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/examples/mcp.example.json +0 -0
  51. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/examples/models.example.json +0 -0
  52. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/examples/settings.example.json +0 -0
  53. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/middleware_upstream.txt +0 -0
  54. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/mkdocs.yml +0 -0
  55. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/Cargo.lock +0 -0
  56. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/Cargo.toml +0 -0
  57. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/LICENSE +0 -0
  58. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/NOTICE +0 -0
  59. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/README.md +0 -0
  60. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/pyproject.toml +0 -0
  61. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/python/synapse_core_tool/__init__.py +0 -0
  62. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/src/file_access.rs +0 -0
  63. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/src/file_tools.rs +0 -0
  64. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/src/lib.rs +0 -0
  65. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/src/search.rs +0 -0
  66. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/uv.lock +0 -0
  67. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/Cargo.lock +0 -0
  68. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/Cargo.toml +0 -0
  69. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/LICENSE +0 -0
  70. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/NOTICE +0 -0
  71. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/README.md +0 -0
  72. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/pyproject.toml +0 -0
  73. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/python/synapse_tool_compress_core/__init__.py +0 -0
  74. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/ccr.rs +0 -0
  75. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/ccr_in_memory.rs +0 -0
  76. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/mod.rs +0 -0
  77. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/relevance/base.rs +0 -0
  78. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/relevance/bm25.rs +0 -0
  79. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/signals/keyword_detector.rs +0 -0
  80. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/signals/line_importance.rs +0 -0
  81. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/adaptive_sizer.rs +0 -0
  82. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/anchor_selector.rs +0 -0
  83. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/code_compressor.rs +0 -0
  84. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/diff_compressor.rs +0 -0
  85. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/log_compressor.rs +0 -0
  86. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/search_compressor.rs +0 -0
  87. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/analyzer.rs +0 -0
  88. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/anchors.rs +0 -0
  89. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/builder.rs +0 -0
  90. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/classifier.rs +0 -0
  91. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/classifier.rs +0 -0
  92. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/compactor.rs +0 -0
  93. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/formatter.rs +0 -0
  94. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/ir.rs +0 -0
  95. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/mod.rs +0 -0
  96. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/walker.rs +0 -0
  97. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/config.rs +0 -0
  98. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/constraints.rs +0 -0
  99. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crusher.rs +0 -0
  100. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crushers.rs +0 -0
  101. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/error_keywords.rs +0 -0
  102. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/field_detect.rs +0 -0
  103. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/hashing.rs +0 -0
  104. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/mod.rs +0 -0
  105. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/observer.rs +0 -0
  106. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/orchestration.rs +0 -0
  107. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/outliers.rs +0 -0
  108. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/planning.rs +0 -0
  109. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/statistics.rs +0 -0
  110. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/stats_math.rs +0 -0
  111. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/traits.rs +0 -0
  112. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/types.rs +0 -0
  113. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/lib.rs +0 -0
  114. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/scripts/install.ps1 +0 -0
  115. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/scripts/release.ps1 +0 -0
  116. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/slash_cmds_upstream.txt +0 -0
  117. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/__init__.py +0 -0
  118. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/__main__.py +0 -0
  119. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/app/__init__.py +0 -0
  120. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/app/agent.py +0 -0
  121. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/app/agent_md.py +0 -0
  122. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/cli.py +0 -0
  123. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/commands/__init__.py +0 -0
  124. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/commands/compression.py +0 -0
  125. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/commands/helpers.py +0 -0
  126. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/commands/mcp.py +0 -0
  127. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/commands/model.py +0 -0
  128. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/commands/result.py +0 -0
  129. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/commands/sessions.py +0 -0
  130. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/commands/slash_cmds.py +0 -0
  131. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/commands/slash_complete.py +0 -0
  132. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/commands/theme.py +0 -0
  133. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/config.py +0 -0
  134. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/content/__init__.py +0 -0
  135. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/content/input_history.py +0 -0
  136. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/content/multimodal.py +0 -0
  137. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/content/prompts.py +0 -0
  138. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/content/skills_catalog.py +0 -0
  139. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/__init__.py +0 -0
  140. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/checkpoint_seed.py +0 -0
  141. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/codex_history.py +0 -0
  142. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/codex_import.py +0 -0
  143. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/codex_sessions.py +0 -0
  144. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/describe_image.py +0 -0
  145. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/http_clients.py +0 -0
  146. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/llm_openai_compat.py +0 -0
  147. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/llm_openai_websocket.py +0 -0
  148. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/mcp_client.py +0 -0
  149. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/openai_oauth.py +0 -0
  150. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/openai_oauth_middleware.py +0 -0
  151. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/openai_usage.py +0 -0
  152. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/vision_middleware.py +0 -0
  153. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/memory/__init__.py +0 -0
  154. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/memory/auto_recorder.py +0 -0
  155. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/memory/embedder.py +0 -0
  156. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/memory/long_term.py +0 -0
  157. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/models/__init__.py +0 -0
  158. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/models/config.py +0 -0
  159. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/models/helpers.py +0 -0
  160. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/models/profile.py +0 -0
  161. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/models/registry.py +0 -0
  162. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/models_registry.py +0 -0
  163. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/observability/__init__.py +0 -0
  164. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/observability/debug_inspector.html +0 -0
  165. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/observability/debug_server.py +0 -0
  166. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/observability/llm_debug.py +0 -0
  167. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/observability/startup_trace.py +0 -0
  168. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/parallel_subagents.py +0 -0
  169. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/planner/__init__.py +0 -0
  170. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/planner/task_planner.py +0 -0
  171. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/rag/__init__.py +0 -0
  172. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/rag/knowledge_base.py +0 -0
  173. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/__init__.py +0 -0
  174. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/async_runtime.py +0 -0
  175. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/backends.py +0 -0
  176. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/context_compact.py +0 -0
  177. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/debug_capture_middleware.py +0 -0
  178. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/execute_capture.py +0 -0
  179. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/filesystem_tool_prompt_middleware.py +0 -0
  180. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/fs_permissions.py +0 -0
  181. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/harness.py +0 -0
  182. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/hitl.py +0 -0
  183. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/interaction_ledger.py +0 -0
  184. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/middleware.py +0 -0
  185. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/model_request_compression_middleware.py +0 -0
  186. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/pathing.py +0 -0
  187. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/safety.py +0 -0
  188. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/steer.py +0 -0
  189. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/subagent_routing.py +0 -0
  190. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/subagents.py +0 -0
  191. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/tool_ignore.py +0 -0
  192. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/tool_output_eval.py +0 -0
  193. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/tool_output_middleware.py +0 -0
  194. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/tool_output_usage_middleware.py +0 -0
  195. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/sessions/__init__.py +0 -0
  196. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/sessions/cancel_repair.py +0 -0
  197. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/sessions/search_index.py +0 -0
  198. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/sessions/session_recap.py +0 -0
  199. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/sessions/store.py +0 -0
  200. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/settings/__init__.py +0 -0
  201. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/settings/config_paths.py +0 -0
  202. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/subagent_monitor.py +0 -0
  203. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/subagents.py +0 -0
  204. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tool_output/__init__.py +0 -0
  205. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tool_output/detection.py +0 -0
  206. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tool_output/metrics.py +0 -0
  207. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tool_output/models.py +0 -0
  208. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tool_output/pipeline.py +0 -0
  209. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tool_output/repository.py +0 -0
  210. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tool_output/transformers.py +0 -0
  211. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tools/__init__.py +0 -0
  212. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tools/describe_image.py +0 -0
  213. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tools/filesystem_patch.py +0 -0
  214. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tools/filesystem_search.py +0 -0
  215. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tools/session_tools.py +0 -0
  216. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/__init__.py +0 -0
  217. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/answer_divider.py +0 -0
  218. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/bottombar/__init__.py +0 -0
  219. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/bottombar/components/__init__.py +0 -0
  220. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/bottombar/components/codex_usage.py +0 -0
  221. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/bottombar/components/key_hints.py +0 -0
  222. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/bottombar/components/mcp.py +0 -0
  223. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/bottombar/components/mode.py +0 -0
  224. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/bottombar/components/model.py +0 -0
  225. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/bottombar/components/thread.py +0 -0
  226. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/bottombar/context.py +0 -0
  227. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/bottombar/core.py +0 -0
  228. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/clipboard.py +0 -0
  229. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/__init__.py +0 -0
  230. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/base.py +0 -0
  231. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/codex_reset.py +0 -0
  232. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/codex_session_list.py +0 -0
  233. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/compression_diagnostics.py +0 -0
  234. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/git_explore.py +0 -0
  235. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/mcp_panel.py +0 -0
  236. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/model_picker.py +0 -0
  237. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/safety_panel.py +0 -0
  238. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/session_list.py +0 -0
  239. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/subagent_monitor.py +0 -0
  240. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/theme_designer.py +0 -0
  241. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/theme_picker.py +0 -0
  242. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/formatters.py +0 -0
  243. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/git_explore/__init__.py +0 -0
  244. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/git_explore/engine.py +0 -0
  245. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/git_explore/provider.py +0 -0
  246. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/git_explore/unified.py +0 -0
  247. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/rendering.py +0 -0
  248. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/selectable_static.py +0 -0
  249. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/selectable_text.py +0 -0
  250. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/sink.py +0 -0
  251. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/steer_widget.py +0 -0
  252. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/stream.py +0 -0
  253. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/stream_events.py +0 -0
  254. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/stream_runtime.py +0 -0
  255. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/textual_stream_sink.py +0 -0
  256. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/theme.py +0 -0
  257. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/timeline.py +0 -0
  258. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/tool_blocks.py +0 -0
  259. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/__init__.py +0 -0
  260. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/components/__init__.py +0 -0
  261. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/components/branch.py +0 -0
  262. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/components/title.py +0 -0
  263. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/components/tool_output.py +0 -0
  264. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/components/usage.py +0 -0
  265. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/components/workspace.py +0 -0
  266. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/context.py +0 -0
  267. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/core.py +0 -0
  268. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/git_changes_popover.py +0 -0
  269. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/git_chrome.py +0 -0
  270. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/tool_output_popover.py +0 -0
  271. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/widget.py +0 -0
  272. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/transcript_blocks.py +0 -0
  273. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/turn_rail.py +0 -0
  274. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/turn_rail_widgets.py +0 -0
  275. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/user_turn.py +0 -0
  276. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/user_turn_block.py +0 -0
  277. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/welcome.py +0 -0
  278. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/synapse.cmd +0 -0
  279. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/__init__.py +0 -0
  280. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/fixtures/codex_rollouts/duplicate_response_item.jsonl +0 -0
  281. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/fixtures/codex_rollouts/incomplete_and_aborted.jsonl +0 -0
  282. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/fixtures/codex_rollouts/legacy_compaction.jsonl +0 -0
  283. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/fixtures/codex_rollouts/normal_completed.jsonl +0 -0
  284. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/fixtures/codex_rollouts/replacement_history.jsonl +0 -0
  285. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/fixtures/codex_rollouts/rollback.jsonl +0 -0
  286. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/fixtures/codex_rollouts/unsupported_replacement.jsonl +0 -0
  287. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/fixtures/sample_repo/calculator.py +0 -0
  288. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/fixtures/sample_repo/test_calculator.py +0 -0
  289. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/fixtures/tool_output_eval.json +0 -0
  290. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test.py +0 -0
  291. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_agent_factory.py +0 -0
  292. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_async_checkpointer.py +0 -0
  293. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_backends.py +0 -0
  294. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_bottombar_registry.py +0 -0
  295. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_cancel_repair.py +0 -0
  296. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_capabilities.py +0 -0
  297. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_checkpoint_seed.py +0 -0
  298. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_cli.py +0 -0
  299. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_cli_codex_import.py +0 -0
  300. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_codex_history.py +0 -0
  301. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_codex_import.py +0 -0
  302. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_codex_sessions.py +0 -0
  303. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_codex_sessions_windows.py +0 -0
  304. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_compact_tool_descriptions.py +0 -0
  305. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_context_compact.py +0 -0
  306. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_context_window.py +0 -0
  307. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_dag_parallel.py +0 -0
  308. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_debug_capture_middleware.py +0 -0
  309. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_debug_inspector.py +0 -0
  310. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_describe_image.py +0 -0
  311. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_dialogs.py +0 -0
  312. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_filesystem_patch_tool.py +0 -0
  313. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_filesystem_search_tools.py +0 -0
  314. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_git_changes_popover.py +0 -0
  315. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_git_chrome.py +0 -0
  316. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_git_explore.py +0 -0
  317. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_http_clients.py +0 -0
  318. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_input_history.py +0 -0
  319. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_iteration_abc.py +0 -0
  320. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_mcp_schema.py +0 -0
  321. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_mermaid_render.py +0 -0
  322. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_middleware_async.py +0 -0
  323. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_model_request_compression_middleware.py +0 -0
  324. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_model_retry.py +0 -0
  325. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_multimodal.py +0 -0
  326. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_openai_compat_reasoning.py +0 -0
  327. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_openai_oauth.py +0 -0
  328. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_openai_oauth_middleware.py +0 -0
  329. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_openai_usage.py +0 -0
  330. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_openai_websocket.py +0 -0
  331. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_pathing.py +0 -0
  332. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_prompts.py +0 -0
  333. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_safety.py +0 -0
  334. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_search_index.py +0 -0
  335. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_session_recap.py +0 -0
  336. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_slash_and_mcp.py +0 -0
  337. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_slash_complete.py +0 -0
  338. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_startup_defer.py +0 -0
  339. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_steer.py +0 -0
  340. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_stream_cancel.py +0 -0
  341. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_stream_tool_items.py +0 -0
  342. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_stream_ui.py +0 -0
  343. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_subagent_monitor_dialog.py +0 -0
  344. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_subagent_status.py +0 -0
  345. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_textual_stream_sink.py +0 -0
  346. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_theme.py +0 -0
  347. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_timeline.py +0 -0
  348. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_tool_ignore.py +0 -0
  349. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_tool_intent.py +0 -0
  350. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_tool_output.py +0 -0
  351. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_tool_output_eval.py +0 -0
  352. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_tool_output_slash.py +0 -0
  353. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_tool_output_usage_middleware.py +0 -0
  354. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_topbar_context_ratio.py +0 -0
  355. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_topbar_registry.py +0 -0
  356. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_tui_codex_import.py +0 -0
  357. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_turn_rail_minimap.py +0 -0
  358. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_usage_restore.py +0 -0
  359. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_user_turn_style.py +0 -0
  360. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_welcome.py +0 -0
  361. {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/tool_output_plugin_fixture.py +0 -0
@@ -7,6 +7,23 @@ The release workflow automatically extracts the matching section as release note
7
7
 
8
8
  ---
9
9
 
10
+ ## v0.1.22
11
+
12
+ ### 新增功能
13
+
14
+ - TUI 恢复会话时改为分页加载:启动只渲染最近 `AGENT_HISTORY_TAIL_TURNS` 轮(默认 20),滚动到 transcript 顶部时异步加载更早历史并保持滚动位置,避免超长会话导致启动卡顿。
15
+ - 新增 `AGENT_HISTORY_TAIL_TURNS` 设置,控制 TUI 启动时初始渲染的最近可见会话轮数(支持环境变量与分层 `settings.json`)。
16
+
17
+ ### 修复
18
+
19
+ - 修复历史分页异步加载的请求代际竞争:切换/重新加载会话后,旧分页 worker 的回调不再清除当前请求的加载状态或插入过期数据。
20
+
21
+ ### 工程改进
22
+
23
+ - 直接依赖版本固定到 `uv.lock` 对应版本。
24
+
25
+ ---
26
+
10
27
  ## v0.1.21
11
28
 
12
29
  ### 新增功能
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synapse-cli-agent
3
- Version: 0.1.21
3
+ Version: 0.1.22
4
4
  Summary: Local coding agent built on LangChain Deep Agents (LocalShell, no sandbox)
5
5
  Project-URL: Homepage, https://github.com/alex8224/synapse-agent
6
6
  Project-URL: Repository, https://github.com/alex8224/synapse-agent
@@ -8,26 +8,26 @@ Project-URL: Issues, https://github.com/alex8224/synapse-agent/issues
8
8
  Project-URL: Changelog, https://github.com/alex8224/synapse-agent/blob/main/CHANGELOG.md
9
9
  Author-email: alex8224 <alex8224@gmail.com>
10
10
  Requires-Python: >=3.12
11
- Requires-Dist: aiosqlite>=0.20.0
12
- Requires-Dist: deepagents>=0.6.12
13
- Requires-Dist: httpx[socks]>=0.28.1
14
- Requires-Dist: langchain-anthropic>=1.4.8
15
- Requires-Dist: langchain-openai>=1.3.5
16
- Requires-Dist: langchain>=1.3.14
17
- Requires-Dist: langgraph-checkpoint-sqlite>=3.1.0
18
- Requires-Dist: langgraph>=1.2.9
19
- Requires-Dist: mcp>=1.28.0
20
- Requires-Dist: pydantic-settings>=2.14.2
21
- Requires-Dist: python-dotenv>=1.2.2
22
- Requires-Dist: rich>=15.0.0
11
+ Requires-Dist: aiosqlite==0.22.1
12
+ Requires-Dist: deepagents==0.6.12
13
+ Requires-Dist: httpx[socks]==0.28.1
14
+ Requires-Dist: langchain-anthropic==1.4.8
15
+ Requires-Dist: langchain-openai==1.3.5
16
+ Requires-Dist: langchain==1.3.14
17
+ Requires-Dist: langgraph-checkpoint-sqlite==3.1.0
18
+ Requires-Dist: langgraph==1.2.9
19
+ Requires-Dist: mcp==1.28.1
20
+ Requires-Dist: pydantic-settings==2.14.2
21
+ Requires-Dist: python-dotenv==1.2.2
22
+ Requires-Dist: rich==15.0.0
23
23
  Requires-Dist: synapse-core-tool<0.2.0,>=0.1.0
24
- Requires-Dist: termaid>=0.7.1
25
- Requires-Dist: texicode>=1.0.3
26
- Requires-Dist: textual-diff-view>=0.1.5
27
- Requires-Dist: textual>=1.0.0
28
- Requires-Dist: typer>=0.27.0
29
- Requires-Dist: websockets<16,>=13
30
- Requires-Dist: zstandard>=0.23.0
24
+ Requires-Dist: termaid==0.7.1
25
+ Requires-Dist: texicode==1.0.3
26
+ Requires-Dist: textual-diff-view==0.1.5
27
+ Requires-Dist: textual==8.2.8
28
+ Requires-Dist: typer==0.27.0
29
+ Requires-Dist: websockets==15.0.1
30
+ Requires-Dist: zstandard==0.25.0
31
31
  Provides-Extra: dev
32
32
  Requires-Dist: mkdocs-material>=9.7.7; extra == 'dev'
33
33
  Requires-Dist: mkdocs>=1.6.1; extra == 'dev'
@@ -70,6 +70,7 @@ Synapse 使用 **Pydantic Settings** 实现分层配置系统。
70
70
  | `CHECKPOINT_BACKEND` | `sqlite` | 检查点后端(`sqlite`/`memory`) |
71
71
  | `CHECKPOINT_PATH` | `.coding-agent/checkpoints.sqlite` | 检查点存储路径 |
72
72
  | `SESSIONS_PATH` | — | 会话元数据路径 |
73
+ | `AGENT_HISTORY_TAIL_TURNS` | `20` | TUI 启动时初始渲染的最近可见会话轮数;滚动到顶部后加载更早历史 |
73
74
 
74
75
  ### 子代理
75
76
 
@@ -34,6 +34,17 @@ synapse run "继续刚才的工作" --thread-id <thread_id> -w .
34
34
 
35
35
  TUI 模式下也可以在界面内浏览和切换历史会话。
36
36
 
37
+ ### TUI 恢复会话的分页加载
38
+
39
+ TUI 启动恢复会话时不会一次性渲染整个 transcript,而是只绘制最后
40
+ `history_tail_turns` 轮(默认 20 轮,可在配置中覆盖),避免超长会话
41
+ 导致启动卡顿。更早的历史通过滚动分页加载:
42
+
43
+ - 启动后自动滚动到 transcript 底部,显示最近 N 轮。
44
+ - 滚动到 transcript 顶部时,异步加载更早的一批历史并插入到当前内容上方,
45
+ 滚动位置保持不变,直到加载完整个会话。
46
+ - 切换会话(`/session`)或重新加载后,分页状态随 transcript 一起重置。
47
+
37
48
  ## 导出会话
38
49
 
39
50
  将对话记录导出为 Markdown:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "synapse-cli-agent"
3
- version = "0.1.21"
3
+ version = "0.1.22"
4
4
  description = "Local coding agent built on LangChain Deep Agents (LocalShell, no sandbox)"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -10,25 +10,25 @@ requires-python = ">=3.12"
10
10
 
11
11
  dependencies = [
12
12
  "synapse-core-tool>=0.1.0,<0.2.0",
13
- "aiosqlite>=0.20.0",
14
- "deepagents>=0.6.12",
15
- "httpx[socks]>=0.28.1",
16
- "langchain>=1.3.14",
17
- "langchain-anthropic>=1.4.8",
18
- "langchain-openai>=1.3.5",
19
- "langgraph>=1.2.9",
20
- "langgraph-checkpoint-sqlite>=3.1.0",
21
- "mcp>=1.28.0",
22
- "pydantic-settings>=2.14.2",
23
- "python-dotenv>=1.2.2",
24
- "rich>=15.0.0",
25
- "termaid>=0.7.1",
26
- "texicode>=1.0.3",
27
- "textual>=1.0.0",
28
- "textual-diff-view>=0.1.5",
29
- "typer>=0.27.0",
30
- "websockets>=13,<16",
31
- "zstandard>=0.23.0",
13
+ "aiosqlite==0.22.1",
14
+ "deepagents==0.6.12",
15
+ "httpx[socks]==0.28.1",
16
+ "langchain==1.3.14",
17
+ "langchain-anthropic==1.4.8",
18
+ "langchain-openai==1.3.5",
19
+ "langgraph==1.2.9",
20
+ "langgraph-checkpoint-sqlite==3.1.0",
21
+ "mcp==1.28.1",
22
+ "pydantic-settings==2.14.2",
23
+ "python-dotenv==1.2.2",
24
+ "rich==15.0.0",
25
+ "termaid==0.7.1",
26
+ "texicode==1.0.3",
27
+ "textual==8.2.8",
28
+ "textual-diff-view==0.1.5",
29
+ "typer==0.27.0",
30
+ "websockets==15.0.1",
31
+ "zstandard==0.25.0",
32
32
  ]
33
33
 
34
34
  [project.urls]
@@ -0,0 +1,16 @@
1
+ ## v0.1.22
2
+
3
+ ### 新增功能
4
+
5
+ - TUI 恢复会话时改为分页加载:启动只渲染最近 `AGENT_HISTORY_TAIL_TURNS` 轮(默认 20),滚动到 transcript 顶部时异步加载更早历史并保持滚动位置,避免超长会话导致启动卡顿。
6
+ - 新增 `AGENT_HISTORY_TAIL_TURNS` 设置,控制 TUI 启动时初始渲染的最近可见会话轮数(支持环境变量与分层 `settings.json`)。
7
+
8
+ ### 修复
9
+
10
+ - 修复历史分页异步加载的请求代际竞争:切换/重新加载会话后,旧分页 worker 的回调不再清除当前请求的加载状态或插入过期数据。
11
+
12
+ ### 工程改进
13
+
14
+ - 直接依赖版本固定到 `uv.lock` 对应版本。
15
+
16
+ ---
@@ -605,6 +605,111 @@ def fold_messages_for_ui(messages: list[Any]) -> list[UiTranscriptEvent]:
605
605
  return events
606
606
 
607
607
 
608
+ @dataclass
609
+ class TranscriptWindow:
610
+ """A foldable slice of a thread plus the paging boundary.
611
+
612
+ Attributes:
613
+ events: UI events folded from ``messages[start_idx:end_idx]``.
614
+ start_idx: message index where this window starts.
615
+ has_more: True when older visible user turns exist before ``start_idx``.
616
+ """
617
+
618
+ events: list[UiTranscriptEvent] = field(default_factory=list)
619
+ start_idx: int = 0
620
+ has_more: bool = False
621
+
622
+
623
+ def _is_steer_message_noise(msg: Any) -> bool:
624
+ """True when ``msg`` is model-only steer chrome (never painted)."""
625
+ try:
626
+ from synapse.runtime.steer import is_steer_message
627
+
628
+ return is_steer_message(msg)
629
+ except Exception: # noqa: BLE001
630
+ return False
631
+
632
+
633
+ def turn_start_indexes(messages: list[Any]) -> list[int]:
634
+ """Indexes of human messages that fold into a visible ``user`` turn.
635
+
636
+ Mirrors the filtering inside ``fold_messages_for_ui`` (summarization /
637
+ steer / context-compaction wrappers never start a visible turn), so the
638
+ paging boundaries stay aligned with what the TUI actually paints.
639
+ """
640
+ out: list[int] = []
641
+ for i, msg in enumerate(messages or []):
642
+ if _message_role(msg) not in {"human", "user"}:
643
+ continue
644
+ if is_lc_summarization_message(msg):
645
+ continue
646
+ if _is_steer_message_noise(msg):
647
+ continue
648
+ text = _message_content(msg).strip()
649
+ if is_context_compact_text(text):
650
+ continue
651
+ try:
652
+ from synapse.runtime.steer import is_steer_message as _is_steer
653
+
654
+ if _is_steer(text=text):
655
+ continue
656
+ except Exception: # noqa: BLE001
657
+ pass
658
+ if not text and not _message_images(msg):
659
+ continue
660
+ out.append(i)
661
+ return out
662
+
663
+
664
+ def fold_tail_window(
665
+ messages: list[Any],
666
+ *,
667
+ tail_turns: int = 20,
668
+ ) -> TranscriptWindow:
669
+ """Fold only the last ``tail_turns`` visible user turns of a thread.
670
+
671
+ Used at TUI startup so huge threads paint a bounded window instead of the
672
+ full transcript; ``has_more`` tells the UI that older turns exist and can
673
+ be fetched page by page via ``fold_earlier_window``.
674
+ """
675
+ starts = turn_start_indexes(messages or [])
676
+ if not starts:
677
+ return TranscriptWindow(events=[], start_idx=0, has_more=False)
678
+ n = min(len(starts), max(1, int(tail_turns)))
679
+ boundary = starts[len(starts) - n]
680
+ events = fold_messages_for_ui(messages[boundary:])
681
+ return TranscriptWindow(
682
+ events=events,
683
+ start_idx=boundary,
684
+ has_more=any(i < boundary for i in starts),
685
+ )
686
+
687
+
688
+ def fold_earlier_window(
689
+ messages: list[Any],
690
+ *,
691
+ before_idx: int,
692
+ tail_turns: int = 20,
693
+ ) -> TranscriptWindow:
694
+ """Fold up to ``tail_turns`` visible user turns strictly before ``before_idx``.
695
+
696
+ Used for scroll-up paging: returns the next older page (the newest page of
697
+ the history already painted by the UI). ``start_idx`` is the message index
698
+ where the returned page begins; ``has_more`` indicates older pages remain.
699
+ """
700
+ starts = [i for i in turn_start_indexes(messages or []) if i < int(before_idx)]
701
+ if not starts:
702
+ return TranscriptWindow(events=[], start_idx=0, has_more=False)
703
+ n = min(len(starts), max(1, int(tail_turns)))
704
+ boundary = starts[len(starts) - n]
705
+ events = fold_messages_for_ui(messages[boundary:int(before_idx)])
706
+ return TranscriptWindow(
707
+ events=events,
708
+ start_idx=boundary,
709
+ has_more=any(i < boundary for i in starts),
710
+ )
711
+
712
+
608
713
  def _looks_error(content: str) -> bool:
609
714
  low = (content or "").casefold()
610
715
  return low.startswith("error") or "traceback" in low or "exception:" in low
@@ -264,6 +264,11 @@ class Settings(BaseSettings):
264
264
  session_recap_min_turns: int = Field(
265
265
  default=3, validation_alias="AGENT_SESSION_RECAP_MIN_TURNS"
266
266
  )
267
+ # TUI transcript restore: number of recent visible turns rendered initially.
268
+ # Older turns are loaded when the user scrolls to the top.
269
+ history_tail_turns: int = Field(
270
+ default=20, ge=1, validation_alias="AGENT_HISTORY_TAIL_TURNS"
271
+ )
267
272
  # DeepSeek V4 thinking / other reasoning models via OpenAI-compatible API
268
273
  enable_thinking: bool = Field(default=True, validation_alias="ENABLE_THINKING")
269
274
  reasoning_effort: str = Field(default="high", validation_alias="REASONING_EFFORT")