synapse-cli-agent 0.1.32__tar.gz → 0.1.34__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 (565) hide show
  1. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/.gitignore +5 -0
  2. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/CHANGELOG.md +37 -0
  3. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/PKG-INFO +2 -2
  4. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/README.md +1 -1
  5. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/README.zh-CN.md +2 -0
  6. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/architecture-flow.md +27 -32
  7. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/architecture.md +43 -64
  8. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/config.md +37 -0
  9. synapse_cli_agent-0.1.34/docs/subagents.md +246 -0
  10. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/tutorial.md +11 -76
  11. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/mkdocs.yml +6 -2
  12. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/pyproject.toml +1 -1
  13. synapse_cli_agent-0.1.34/release_body.md +13 -0
  14. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/Cargo.lock +1 -1
  15. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/Cargo.toml +1 -1
  16. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/pyproject.toml +1 -1
  17. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/src/search.rs +38 -0
  18. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/acp/agent.py +0 -1
  19. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/app/agent.py +190 -57
  20. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/app/agent_assembly.py +0 -5
  21. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/commands/slash_cmds.py +1 -32
  22. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/commands/slash_complete.py +1 -1
  23. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/content/multimodal.py +67 -7
  24. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/content/prompts.py +21 -0
  25. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/describe_image.py +136 -27
  26. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/openai_usage.py +8 -11
  27. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/vision_middleware.py +9 -10
  28. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/agent_loop/request.py +0 -5
  29. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/agent_loop/turn.py +10 -1
  30. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/backends.py +4 -43
  31. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/sessions/persistence.py +60 -1
  32. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/sessions/runtime.py +0 -2
  33. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/streaming/__init__.py +2 -0
  34. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/streaming/adapters.py +22 -0
  35. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/streaming/events.py +42 -0
  36. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/streaming/parser.py +71 -7
  37. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/streaming/tool_model.py +8 -0
  38. synapse_cli_agent-0.1.34/src/synapse/runtime/subagent_config_persist.py +115 -0
  39. synapse_cli_agent-0.1.34/src/synapse/runtime/subagent_specs.py +458 -0
  40. synapse_cli_agent-0.1.34/src/synapse/runtime/subagents.py +458 -0
  41. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/timeline.py +75 -5
  42. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/settings/config_paths.py +44 -0
  43. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/settings/schema.py +81 -4
  44. synapse_cli_agent-0.1.34/src/synapse/subagents.py +18 -0
  45. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/chrome/controller.py +62 -11
  46. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/__init__.py +3 -2
  47. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/base.py +27 -1
  48. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/controller.py +79 -8
  49. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/model_picker.py +80 -13
  50. synapse_cli_agent-0.1.34/src/synapse/ui/dialogs/subagent_config.py +347 -0
  51. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/image_viewer.py +1 -1
  52. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/prompt_controller.py +64 -28
  53. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/selectable_text.py +14 -13
  54. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/steer_widget.py +3 -3
  55. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/textual_stream_sink.py +11 -32
  56. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/timeline.py +2 -0
  57. synapse_cli_agent-0.1.34/src/synapse/ui/tool_blocks.py +537 -0
  58. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/transcript/controller.py +36 -40
  59. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/transcript_blocks.py +75 -6
  60. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/tui.py +84 -82
  61. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/tui_styles.py +0 -11
  62. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/turn/controller.py +17 -35
  63. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/turn/event_bridge.py +41 -12
  64. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/turn/event_renderer.py +22 -0
  65. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/turn/persistence.py +24 -1
  66. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/turn/request.py +0 -3
  67. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_agent_factory.py +109 -1
  68. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_agent_turn_runtime.py +60 -0
  69. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_backends.py +9 -16
  70. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_capabilities.py +1 -25
  71. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_chrome_controller.py +70 -12
  72. synapse_cli_agent-0.1.34/tests/test_clipboard.py +94 -0
  73. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_config.py +37 -0
  74. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_describe_image.py +64 -0
  75. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_dialogs.py +296 -11
  76. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_goals.py +1 -2
  77. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_layered_config.py +36 -0
  78. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_prompt_controller.py +51 -0
  79. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_prompts.py +14 -1
  80. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_session_runtime.py +157 -2
  81. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_slash_and_mcp.py +5 -34
  82. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_slash_complete.py +1 -0
  83. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_stream_tool_items.py +516 -3
  84. synapse_cli_agent-0.1.34/tests/test_subagent_config_dialog.py +372 -0
  85. synapse_cli_agent-0.1.34/tests/test_subagent_config_persist.py +306 -0
  86. synapse_cli_agent-0.1.34/tests/test_subagents.py +942 -0
  87. synapse_cli_agent-0.1.34/tests/test_timeline.py +365 -0
  88. synapse_cli_agent-0.1.34/tests/test_tool_blocks.py +300 -0
  89. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_transcript_controller.py +0 -79
  90. synapse_cli_agent-0.1.34/tests/test_tui_paste.py +56 -0
  91. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_turn_controller.py +10 -13
  92. synapse_cli_agent-0.1.34/tests/test_turn_event_renderer.py +809 -0
  93. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_turn_request.py +1 -4
  94. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/uv.lock +2 -2
  95. synapse_cli_agent-0.1.32/docs/subagent-architecture-survey.md +0 -373
  96. synapse_cli_agent-0.1.32/release_body.md +0 -21
  97. synapse_cli_agent-0.1.32/src/synapse/parallel_subagents.py +0 -1237
  98. synapse_cli_agent-0.1.32/src/synapse/runtime/subagent_routing.py +0 -121
  99. synapse_cli_agent-0.1.32/src/synapse/runtime/subagents.py +0 -215
  100. synapse_cli_agent-0.1.32/src/synapse/subagent_monitor.py +0 -664
  101. synapse_cli_agent-0.1.32/src/synapse/subagents.py +0 -5
  102. synapse_cli_agent-0.1.32/src/synapse/ui/dialogs/subagent_monitor.py +0 -329
  103. synapse_cli_agent-0.1.32/src/synapse/ui/subagent_status_bar.py +0 -23
  104. synapse_cli_agent-0.1.32/src/synapse/ui/tool_blocks.py +0 -317
  105. synapse_cli_agent-0.1.32/tests/test_dag_parallel.py +0 -980
  106. synapse_cli_agent-0.1.32/tests/test_subagent_monitor_dialog.py +0 -99
  107. synapse_cli_agent-0.1.32/tests/test_timeline.py +0 -179
  108. synapse_cli_agent-0.1.32/tests/test_turn_event_renderer.py +0 -372
  109. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/.dockerignore +0 -0
  110. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/.github/workflows/ci.yml +0 -0
  111. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/.github/workflows/docs.yml +0 -0
  112. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/.github/workflows/native-compression-wheels.yml +0 -0
  113. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/.github/workflows/native-core-tool-wheels.yml +0 -0
  114. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/.github/workflows/release.yml +0 -0
  115. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/.python-version +0 -0
  116. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/.readthedocs.yaml +0 -0
  117. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/.zed/settings.json +0 -0
  118. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/AGENTS.md +0 -0
  119. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/Dockerfile.web +0 -0
  120. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/LICENSE +0 -0
  121. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/agent-studio-prototype/favicon.svg +0 -0
  122. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/agent-studio-prototype/index.html +0 -0
  123. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/agent-studio-prototype/script.js +0 -0
  124. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/agent-studio-prototype/styles.css +0 -0
  125. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/agent_upstream.txt +0 -0
  126. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/assets/demo.gif +0 -0
  127. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/assets/synapse-logo.svg +0 -0
  128. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/assets/tui-preview.png +0 -0
  129. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/cli_upstream.txt +0 -0
  130. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/debug_compact.py +0 -0
  131. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/decode_screenshot.py +0 -0
  132. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/capability-matrix.md +0 -0
  133. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/decisions.md +0 -0
  134. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/index.md +0 -0
  135. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/phase-0-protocol-baseline.md +0 -0
  136. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/phase-1-core-transport.md +0 -0
  137. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/phase-2-prompt-semantics.md +0 -0
  138. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/phase-3-permissions.md +0 -0
  139. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/phase-4-session-lifecycle.md +0 -0
  140. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/phase-5-session-mcp.md +0 -0
  141. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/phase-6-client-services.md +0 -0
  142. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/phase-7-advanced-capabilities.md +0 -0
  143. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/phase-8-compliance.md +0 -0
  144. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/progress.md +0 -0
  145. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-development-guide.md +0 -0
  146. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/baseline-report.md +0 -0
  147. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/decisions.md +0 -0
  148. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/index.md +0 -0
  149. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/migration.md +0 -0
  150. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/phase-0-baseline.md +0 -0
  151. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/phase-1-streaming-core.md +0 -0
  152. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/phase-2-turn-runtime.md +0 -0
  153. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/phase-3-tui-cutover.md +0 -0
  154. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/phase-4-session-runtime.md +0 -0
  155. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/phase-5-multi-session.md +0 -0
  156. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/phase-6-project-runtime.md +0 -0
  157. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/phase-7-global-control-plane.md +0 -0
  158. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/phase-8-hardening.md +0 -0
  159. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/post-review-fix-plan.md +0 -0
  160. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/progress.md +0 -0
  161. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/cli.md +0 -0
  162. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/codex-session-discovery-phase-1.md +0 -0
  163. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/codex-session-import-phase-2.md +0 -0
  164. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/design.md +0 -0
  165. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/docker-web.md +0 -0
  166. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/index.md +0 -0
  167. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/install.md +0 -0
  168. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/math-formulas-test.md +0 -0
  169. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/mcp.md +0 -0
  170. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/models.md +0 -0
  171. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/native-compression-core.md +0 -0
  172. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/native-core-tool.md +0 -0
  173. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/permissions.md +0 -0
  174. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/quickstart.md +0 -0
  175. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/sessions.md +0 -0
  176. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/skills.md +0 -0
  177. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/smith_output.md +0 -0
  178. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/tool-output-transform.md +0 -0
  179. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/tui-cursor-refactor.md +0 -0
  180. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/x-agent-development-guide.md +0 -0
  181. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/examples/mcp.example.json +0 -0
  182. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/examples/models.example.json +0 -0
  183. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/examples/settings.example.json +0 -0
  184. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/middleware_upstream.txt +0 -0
  185. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/LICENSE +0 -0
  186. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/NOTICE +0 -0
  187. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/README.md +0 -0
  188. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/python/synapse_core_tool/__init__.py +0 -0
  189. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/src/file_access.rs +0 -0
  190. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/src/file_tools.rs +0 -0
  191. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/src/lib.rs +0 -0
  192. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/src/math_render.rs +0 -0
  193. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/uv.lock +0 -0
  194. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/Cargo.lock +0 -0
  195. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/Cargo.toml +0 -0
  196. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/LICENSE +0 -0
  197. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/NOTICE +0 -0
  198. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/README.md +0 -0
  199. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/pyproject.toml +0 -0
  200. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/python/synapse_tool_compress_core/__init__.py +0 -0
  201. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/ccr.rs +0 -0
  202. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/ccr_in_memory.rs +0 -0
  203. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/mod.rs +0 -0
  204. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/relevance/base.rs +0 -0
  205. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/relevance/bm25.rs +0 -0
  206. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/signals/keyword_detector.rs +0 -0
  207. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/signals/line_importance.rs +0 -0
  208. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/adaptive_sizer.rs +0 -0
  209. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/anchor_selector.rs +0 -0
  210. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/code_compressor.rs +0 -0
  211. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/diff_compressor.rs +0 -0
  212. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/log_compressor.rs +0 -0
  213. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/search_compressor.rs +0 -0
  214. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/analyzer.rs +0 -0
  215. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/anchors.rs +0 -0
  216. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/builder.rs +0 -0
  217. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/classifier.rs +0 -0
  218. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/classifier.rs +0 -0
  219. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/compactor.rs +0 -0
  220. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/formatter.rs +0 -0
  221. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/ir.rs +0 -0
  222. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/mod.rs +0 -0
  223. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/walker.rs +0 -0
  224. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/config.rs +0 -0
  225. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/constraints.rs +0 -0
  226. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crusher.rs +0 -0
  227. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crushers.rs +0 -0
  228. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/error_keywords.rs +0 -0
  229. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/field_detect.rs +0 -0
  230. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/hashing.rs +0 -0
  231. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/mod.rs +0 -0
  232. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/observer.rs +0 -0
  233. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/orchestration.rs +0 -0
  234. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/outliers.rs +0 -0
  235. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/planning.rs +0 -0
  236. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/statistics.rs +0 -0
  237. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/stats_math.rs +0 -0
  238. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/traits.rs +0 -0
  239. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/types.rs +0 -0
  240. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/lib.rs +0 -0
  241. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/scripts/install.ps1 +0 -0
  242. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/scripts/release.ps1 +0 -0
  243. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/scripts/serve_web.py +0 -0
  244. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/slash_cmds_upstream.txt +0 -0
  245. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/__init__.py +0 -0
  246. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/__main__.py +0 -0
  247. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/acp/__init__.py +0 -0
  248. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/acp/client_services.py +0 -0
  249. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/acp/content.py +0 -0
  250. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/acp/events.py +0 -0
  251. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/acp/lifecycle.py +0 -0
  252. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/acp/mcp.py +0 -0
  253. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/acp/permissions.py +0 -0
  254. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/acp/server.py +0 -0
  255. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/acp/sessions.py +0 -0
  256. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/acp/updates.py +0 -0
  257. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/app/__init__.py +0 -0
  258. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/app/agent_md.py +0 -0
  259. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/cli.py +0 -0
  260. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/commands/__init__.py +0 -0
  261. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/commands/compression.py +0 -0
  262. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/commands/goal.py +0 -0
  263. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/commands/helpers.py +0 -0
  264. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/commands/mcp.py +0 -0
  265. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/commands/model.py +0 -0
  266. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/commands/result.py +0 -0
  267. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/commands/sessions.py +0 -0
  268. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/commands/theme.py +0 -0
  269. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/config.py +0 -0
  270. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/content/__init__.py +0 -0
  271. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/content/input_history.py +0 -0
  272. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/content/skills_catalog.py +0 -0
  273. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/entry.py +0 -0
  274. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/goals/__init__.py +0 -0
  275. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/goals/middleware.py +0 -0
  276. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/goals/model.py +0 -0
  277. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/goals/runtime.py +0 -0
  278. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/goals/steering.py +0 -0
  279. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/goals/store.py +0 -0
  280. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/goals/tools.py +0 -0
  281. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/__init__.py +0 -0
  282. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/checkpoint_seed.py +0 -0
  283. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/codex_history.py +0 -0
  284. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/codex_import.py +0 -0
  285. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/codex_sessions.py +0 -0
  286. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/herdr.py +0 -0
  287. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/http_clients.py +0 -0
  288. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/llm_openai_compat.py +0 -0
  289. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/llm_openai_websocket.py +0 -0
  290. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/mcp_client.py +0 -0
  291. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/openai_oauth.py +0 -0
  292. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/openai_oauth_middleware.py +0 -0
  293. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/memory/__init__.py +0 -0
  294. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/memory/auto_recorder.py +0 -0
  295. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/memory/embedder.py +0 -0
  296. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/memory/long_term.py +0 -0
  297. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/models/__init__.py +0 -0
  298. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/models/config.py +0 -0
  299. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/models/helpers.py +0 -0
  300. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/models/profile.py +0 -0
  301. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/models/registry.py +0 -0
  302. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/models_registry.py +0 -0
  303. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/observability/__init__.py +0 -0
  304. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/observability/debug_inspector.html +0 -0
  305. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/observability/debug_server.py +0 -0
  306. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/observability/exit_trace.py +0 -0
  307. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/observability/heap_dump.py +0 -0
  308. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/observability/llm_debug.py +0 -0
  309. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/observability/startup_trace.py +0 -0
  310. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/planner/__init__.py +0 -0
  311. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/planner/task_planner.py +0 -0
  312. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/projects/__init__.py +0 -0
  313. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/projects/catalog.py +0 -0
  314. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/rag/__init__.py +0 -0
  315. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/rag/knowledge_base.py +0 -0
  316. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/__init__.py +0 -0
  317. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/agent_loop/__init__.py +0 -0
  318. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/agent_loop/model.py +0 -0
  319. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/async_runtime.py +0 -0
  320. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/cancellation.py +0 -0
  321. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/context_compact.py +0 -0
  322. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/debug_capture_middleware.py +0 -0
  323. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/execute_capture.py +0 -0
  324. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/filesystem_tool_prompt_middleware.py +0 -0
  325. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/fs_permissions.py +0 -0
  326. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/harness.py +0 -0
  327. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/hitl.py +0 -0
  328. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/interaction_ledger.py +0 -0
  329. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/middleware.py +0 -0
  330. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/model_request_compression_middleware.py +0 -0
  331. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/pathing.py +0 -0
  332. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/projects/__init__.py +0 -0
  333. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/projects/identity.py +0 -0
  334. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/projects/runtime.py +0 -0
  335. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/safety.py +0 -0
  336. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/session_prewarm.py +0 -0
  337. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/sessions/__init__.py +0 -0
  338. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/sessions/events.py +0 -0
  339. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/sessions/manager.py +0 -0
  340. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/sessions/ref.py +0 -0
  341. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/steer.py +0 -0
  342. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/streaming/accumulator.py +0 -0
  343. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/streaming/protocol.py +0 -0
  344. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/streaming/runtime.py +0 -0
  345. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/streaming/stream_events.py +0 -0
  346. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/token_rate.py +0 -0
  347. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/tool_ignore.py +0 -0
  348. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/tool_output_eval.py +0 -0
  349. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/tool_output_middleware.py +0 -0
  350. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/tool_output_usage_middleware.py +0 -0
  351. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/tool_response_truncate_middleware.py +0 -0
  352. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/sessions/__init__.py +0 -0
  353. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/sessions/cancel_repair.py +0 -0
  354. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/sessions/search_index.py +0 -0
  355. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/sessions/store.py +0 -0
  356. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/sessions/summary.py +0 -0
  357. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/sessions/transcript.py +0 -0
  358. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/sessions/transcript_migration.py +0 -0
  359. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/sessions/transcript_projection.py +0 -0
  360. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/settings/__init__.py +0 -0
  361. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tool_output/__init__.py +0 -0
  362. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tool_output/detection.py +0 -0
  363. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tool_output/metrics.py +0 -0
  364. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tool_output/models.py +0 -0
  365. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tool_output/pipeline.py +0 -0
  366. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tool_output/repository.py +0 -0
  367. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tool_output/transformers.py +0 -0
  368. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tools/__init__.py +0 -0
  369. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tools/describe_image.py +0 -0
  370. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tools/filesystem_patch.py +0 -0
  371. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tools/filesystem_search.py +0 -0
  372. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tools/session_tools.py +0 -0
  373. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/__init__.py +0 -0
  374. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/agent_lifecycle.py +0 -0
  375. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/answer_divider.py +0 -0
  376. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/__init__.py +0 -0
  377. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/components/__init__.py +0 -0
  378. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/components/codex_usage.py +0 -0
  379. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/components/fast.py +0 -0
  380. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/components/goal.py +0 -0
  381. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/components/key_hints.py +0 -0
  382. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/components/mcp.py +0 -0
  383. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/components/mode.py +0 -0
  384. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/components/model.py +0 -0
  385. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/components/thread.py +0 -0
  386. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/context.py +0 -0
  387. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/core.py +0 -0
  388. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/chrome/__init__.py +0 -0
  389. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/clipboard.py +0 -0
  390. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/active_session_switcher.py +0 -0
  391. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/codex_reset.py +0 -0
  392. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/codex_session_list.py +0 -0
  393. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/compression_diagnostics.py +0 -0
  394. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/git_explore.py +0 -0
  395. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/mcp_panel.py +0 -0
  396. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/safety_panel.py +0 -0
  397. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/session_list.py +0 -0
  398. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/theme_designer.py +0 -0
  399. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/theme_picker.py +0 -0
  400. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/drawer.py +0 -0
  401. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/formatters.py +0 -0
  402. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/git_explore/__init__.py +0 -0
  403. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/git_explore/engine.py +0 -0
  404. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/git_explore/provider.py +0 -0
  405. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/git_explore/unified.py +0 -0
  406. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/image_preview.py +0 -0
  407. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/image_render.py +0 -0
  408. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/math_image.py +0 -0
  409. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/mermaid_image.py +0 -0
  410. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/rendering.py +0 -0
  411. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/selectable_static.py +0 -0
  412. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/sink.py +0 -0
  413. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/status_controller.py +0 -0
  414. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/steer_controller.py +0 -0
  415. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/stream.py +0 -0
  416. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/stream_events.py +0 -0
  417. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/stream_runtime.py +0 -0
  418. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/textual_lifecycle.py +0 -0
  419. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/theme.py +0 -0
  420. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/theme_controller.py +0 -0
  421. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/__init__.py +0 -0
  422. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/components/__init__.py +0 -0
  423. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/components/branch.py +0 -0
  424. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/components/title.py +0 -0
  425. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/components/tool_output.py +0 -0
  426. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/components/usage.py +0 -0
  427. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/components/workspace.py +0 -0
  428. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/context.py +0 -0
  429. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/core.py +0 -0
  430. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/git_changes_popover.py +0 -0
  431. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/git_chrome.py +0 -0
  432. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/tool_output_popover.py +0 -0
  433. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/widget.py +0 -0
  434. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/transcript/__init__.py +0 -0
  435. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/transcript/factory.py +0 -0
  436. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/transcript/history.py +0 -0
  437. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/transcript/state.py +0 -0
  438. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/tui_launch.py +0 -0
  439. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/turn/__init__.py +0 -0
  440. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/turn_rail.py +0 -0
  441. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/turn_rail_widgets.py +0 -0
  442. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/user_turn.py +0 -0
  443. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/user_turn_block.py +0 -0
  444. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/welcome.py +0 -0
  445. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/web.py +0 -0
  446. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/synapse.cmd +0 -0
  447. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/__init__.py +0 -0
  448. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/acp/initialize.jsonl +0 -0
  449. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/agent_stream/core_scenarios.json +0 -0
  450. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/codex_rollouts/duplicate_response_item.jsonl +0 -0
  451. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/codex_rollouts/incomplete_and_aborted.jsonl +0 -0
  452. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/codex_rollouts/legacy_compaction.jsonl +0 -0
  453. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/codex_rollouts/normal_completed.jsonl +0 -0
  454. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/codex_rollouts/replacement_history.jsonl +0 -0
  455. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/codex_rollouts/rollback.jsonl +0 -0
  456. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/codex_rollouts/unsupported_replacement.jsonl +0 -0
  457. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/sample_repo/calculator.py +0 -0
  458. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/sample_repo/test_calculator.py +0 -0
  459. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/tool_output_eval.json +0 -0
  460. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test.py +0 -0
  461. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p0_baseline.py +0 -0
  462. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p1_core.py +0 -0
  463. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p1_transport.py +0 -0
  464. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p2_content.py +0 -0
  465. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p2_events.py +0 -0
  466. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p2_updates.py +0 -0
  467. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p3_agent.py +0 -0
  468. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p3_permissions.py +0 -0
  469. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p4_history.py +0 -0
  470. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p4_lifecycle.py +0 -0
  471. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p5_mcp.py +0 -0
  472. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p6_client_services.py +0 -0
  473. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p8_compliance.py +0 -0
  474. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_agent_lifecycle.py +0 -0
  475. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_async_checkpointer.py +0 -0
  476. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_bottombar_registry.py +0 -0
  477. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_cancel_repair.py +0 -0
  478. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_checkpoint_seed.py +0 -0
  479. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_cli.py +0 -0
  480. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_cli_codex_import.py +0 -0
  481. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_codex_history.py +0 -0
  482. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_codex_import.py +0 -0
  483. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_codex_sessions.py +0 -0
  484. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_codex_sessions_windows.py +0 -0
  485. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_compact_tool_descriptions.py +0 -0
  486. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_context_compact.py +0 -0
  487. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_context_window.py +0 -0
  488. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_debug_capture_middleware.py +0 -0
  489. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_debug_inspector.py +0 -0
  490. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_entry.py +0 -0
  491. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_filesystem_patch_tool.py +0 -0
  492. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_filesystem_search_tools.py +0 -0
  493. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_git_changes_popover.py +0 -0
  494. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_git_chrome.py +0 -0
  495. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_git_explore.py +0 -0
  496. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_goal_live_tui.py +0 -0
  497. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_heap_dump.py +0 -0
  498. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_herdr_integration.py +0 -0
  499. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_http_clients.py +0 -0
  500. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_image_render.py +0 -0
  501. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_image_viewer.py +0 -0
  502. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_input_history.py +0 -0
  503. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_iteration_abc.py +0 -0
  504. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_math_image_render.py +0 -0
  505. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_mcp_schema.py +0 -0
  506. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_mermaid_image.py +0 -0
  507. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_mermaid_render.py +0 -0
  508. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_middleware_async.py +0 -0
  509. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_model_request_compression_middleware.py +0 -0
  510. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_model_retry.py +0 -0
  511. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_multimodal.py +0 -0
  512. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_native_math_render.py +0 -0
  513. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_openai_compat_reasoning.py +0 -0
  514. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_openai_oauth.py +0 -0
  515. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_openai_oauth_middleware.py +0 -0
  516. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_openai_usage.py +0 -0
  517. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_openai_websocket.py +0 -0
  518. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_pathing.py +0 -0
  519. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_project_catalog.py +0 -0
  520. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_project_drawer.py +0 -0
  521. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_project_runtime.py +0 -0
  522. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_project_switch.py +0 -0
  523. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_runtime_hardening.py +0 -0
  524. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_runtime_manager.py +0 -0
  525. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_runtime_streaming.py +0 -0
  526. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_safety.py +0 -0
  527. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_search_index.py +0 -0
  528. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_session_prewarm.py +0 -0
  529. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_session_store.py +0 -0
  530. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_session_summary.py +0 -0
  531. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_slash_effects.py +0 -0
  532. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_startup_defer.py +0 -0
  533. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_startup_trace.py +0 -0
  534. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_steer.py +0 -0
  535. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_steer_controller.py +0 -0
  536. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_stream_cancel.py +0 -0
  537. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_stream_semantic_fixtures.py +0 -0
  538. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_stream_ui.py +0 -0
  539. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_subagent_status.py +0 -0
  540. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_textual_stream_sink.py +0 -0
  541. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_theme.py +0 -0
  542. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_theme_controller.py +0 -0
  543. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_token_rate.py +0 -0
  544. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_tool_ignore.py +0 -0
  545. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_tool_intent.py +0 -0
  546. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_tool_output.py +0 -0
  547. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_tool_output_eval.py +0 -0
  548. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_tool_output_slash.py +0 -0
  549. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_tool_output_usage_middleware.py +0 -0
  550. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_tool_response_truncate_middleware.py +0 -0
  551. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_topbar_context_ratio.py +0 -0
  552. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_topbar_registry.py +0 -0
  553. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_transcript.py +0 -0
  554. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_transcript_history.py +0 -0
  555. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_transcript_history_controller.py +0 -0
  556. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_transcript_migration.py +0 -0
  557. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_transcript_projection.py +0 -0
  558. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_tui_active_session_switcher.py +0 -0
  559. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_tui_codex_import.py +0 -0
  560. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_tui_selection.py +0 -0
  561. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_turn_rail_minimap.py +0 -0
  562. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_usage_restore.py +0 -0
  563. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_user_turn_style.py +0 -0
  564. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_welcome.py +0 -0
  565. {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/tool_output_plugin_fixture.py +0 -0
@@ -19,6 +19,7 @@ wheels/
19
19
  .coding-agent/
20
20
  .cmd-agent/
21
21
  .tmp/
22
+ .tmp-pytest/
22
23
  .synapse/
23
24
  .pytest_cache/
24
25
  .ruff_cache/
@@ -30,6 +31,10 @@ htmlcov/
30
31
  large_tool_results/
31
32
  conversation_history/
32
33
 
34
+ # Local misc files (unrelated to the repo)
35
+ /ear-anatomy-exploded.html
36
+ /ear-models/
37
+
33
38
  # IDE
34
39
  .idea/
35
40
  .vscode/
@@ -8,6 +8,43 @@ All entries are written in English.
8
8
 
9
9
  ---
10
10
 
11
+ ## v0.1.34
12
+
13
+ ### Bug Fixes
14
+
15
+ - Fixed clipboard image paste on Linux/WSLg: WSLg syncs Windows screenshots as `image/bmp`, so the Linux reader now tries `image/png`, `image/bmp`, and `image/jpeg` and normalizes non-PNG data to PNG.
16
+ - Fixed pasted image bytes being rendered as a text placeholder (`[BP... chars]`) instead of an image attachment by detecting mangled image signatures with binary noise and falling back to a clipboard image re-read.
17
+ - Fixed multi-line and long Shift+Insert pastes being truncated to the first line; full content is preserved and expanded on submit.
18
+
19
+ ### Engineering
20
+
21
+ - Added clipboard unit tests for BMP normalization, explicit text MIME requests, and mangled-prefix detection.
22
+
23
+ ---
24
+
25
+ ## v0.1.33
26
+
27
+ ### New Features
28
+
29
+ - Added per-subagent model and reasoning-effort configuration in the TUI, with layered configuration and display metadata for subagent tool calls.
30
+ - Improved subagent activity rendering with live reasoning, tool-calling, and answering phases, including attribution for concurrent activity.
31
+
32
+ ### Bug Fixes
33
+
34
+ - Fixed subagent tool-call inheritance and model selection behavior.
35
+ - Enforced non-overridable file-tool path rules in subagent prompts.
36
+ - Fixed TUI model and subagent picker keyboard interactions.
37
+ - Fixed subagent sub-call display windows so recent calls remain visible as new calls arrive.
38
+ - Fixed long-line Ruff violations in selectable-text and cancellation status rendering.
39
+
40
+ ### Engineering
41
+
42
+ - Simplified subagent specifications and removed the obsolete DAG parallel-subagent runtime.
43
+ - Improved TUI responsiveness by batching session replay and moving blocking work off the event loop.
44
+ - Updated the bundled `synapse-core-tool` dependency metadata to v0.1.3.
45
+
46
+ ---
47
+
11
48
  ## v0.1.32
12
49
 
13
50
  ### New Features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: synapse-cli-agent
3
- Version: 0.1.32
3
+ Version: 0.1.34
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
@@ -339,7 +339,7 @@ Three ways to talk to it:
339
339
  - **MCP built in** — attach MCP servers and their tools appear in the agent automatically.
340
340
  - **Sessions that resume** — SQLite checkpoints, a global project catalog across all your projects, and a lightweight paged transcript so even huge sessions reopen fast.
341
341
  - **Memory and skills** — `AGENTS.md` memory plus Agent Skills (`skills/**`) that load only when relevant.
342
- - **Sub-agents** — built-in `researcher`, `tester`, and `reviewer` roles for parallel delegation.
342
+ - **Sub-agents** — built-in `researcher`, `tester`, and `reviewer` roles for parallel delegation, plus user-defined subagents from `.synapse/agents/*.md`.
343
343
  - **Approvals when you want them** — optional human-in-the-loop (`--require-approval`) and safety profiles.
344
344
 
345
345
  ## Slash commands
@@ -107,7 +107,7 @@ Three ways to talk to it:
107
107
  - **MCP built in** — attach MCP servers and their tools appear in the agent automatically.
108
108
  - **Sessions that resume** — SQLite checkpoints, a global project catalog across all your projects, and a lightweight paged transcript so even huge sessions reopen fast.
109
109
  - **Memory and skills** — `AGENTS.md` memory plus Agent Skills (`skills/**`) that load only when relevant.
110
- - **Sub-agents** — built-in `researcher`, `tester`, and `reviewer` roles for parallel delegation.
110
+ - **Sub-agents** — built-in `researcher`, `tester`, and `reviewer` roles for parallel delegation, plus user-defined subagents from `.synapse/agents/*.md`.
111
111
  - **Approvals when you want them** — optional human-in-the-loop (`--require-approval`) and safety profiles.
112
112
 
113
113
  ## Slash commands
@@ -125,6 +125,7 @@ Synapse 采用**分层配置**策略:用户全局配置(`~/.synapse/`)与
125
125
  mcp.json # MCP Server 定义
126
126
  settings.json # 非敏感 Settings 覆盖
127
127
  themes.json # 自定义 UI 主题
128
+ agents/ # 自定义子代理定义(*.md,YAML frontmatter + system prompt 正文)
128
129
 
129
130
  <workspace>/.synapse/ # 项目层(优先级高,覆盖用户层)
130
131
  models.json
@@ -132,6 +133,7 @@ Synapse 采用**分层配置**策略:用户全局配置(`~/.synapse/`)与
132
133
  settings.json
133
134
  themes.json
134
135
  system_prompt.md # 自定义系统提示
136
+ agents/ # 项目级子代理定义(同名覆盖用户层)
135
137
  sessions.sqlite
136
138
  checkpoints.sqlite
137
139
  ```
@@ -2,7 +2,7 @@
2
2
 
3
3
  > 基于 `src/synapse/**/*.py` 全部源文件分析,版本 v0.1.10+
4
4
  > 侧重**运行时流程与组件交互**。结构总览参见 `docs/architecture.md`
5
- > 第四轮更新:完整15中间件栈 / 工具输出变换管道 / DAG子代理调度 / MCP SessionPool / 交互账本 / Steer中程引导(2025-07)
5
+ > 第四轮更新:完整15中间件栈 / 工具输出变换管道 / MCP SessionPool / 交互账本 / Steer中程引导(2025-07)
6
6
 
7
7
  ---
8
8
 
@@ -85,21 +85,20 @@ Settings
85
85
  ├─ 8. _build_checkpointer(settings) ← AsyncSqliteSaver / MemorySaver
86
86
  ├─ 9. 解析 memory_paths / skills_paths
87
87
  ├─ 10. build_default_subagents(...) ← researcher / tester / reviewer
88
- ├─ 11. DAGSubAgentMiddleware (可选, 并行模式)
89
- ├─ 12. build_filesystem_permissions(...) ← 默认 None (LocalShellBackend)
90
- ├─ 13. 构造工具列表: session_tools + MCP tools + extra_tools
91
- ├─ 14. MCP 加载决策 (eager / deferred)
92
- ├─ 15. 初始化 ToolOutputRepository + ToolOutputTransformPipeline
93
- ├─ 16. 组装 middleware 列表 (15个中间件, 见第三节)
94
- ├─ 17. 可选: RAG (ProjectKnowledgeBase) / LTM (LongTermMemory)
88
+ ├─ 11. build_filesystem_permissions(...) ← 默认 None (LocalShellBackend)
89
+ ├─ 12. 构造工具列表: session_tools + MCP tools + extra_tools
90
+ ├─ 13. MCP 加载决策 (eager / deferred)
91
+ ├─ 14. 初始化 ToolOutputRepository + ToolOutputTransformPipeline
92
+ ├─ 15. 组装 middleware 列表 (14个中间件, 见第三节)
93
+ ├─ 16. 可选: RAG (ProjectKnowledgeBase) / LTM (LongTermMemory)
95
94
  │
96
- └─ 18. create_deep_agent(
95
+ └─ 17. create_deep_agent(
97
96
  model=model,
98
97
  system_prompt=build_system_prompt(root),
99
98
  backend=backend, tools=tools,
100
- middleware=middleware, ← 15个中间件
99
+ middleware=middleware, ← 14个中间件
101
100
  memory=memory_paths, skills=skills_paths,
102
- subagents=None, ← DAGSubAgentMiddleware 接管
101
+ subagents=subagents, ← deepagents 原生委派
103
102
  permissions=None, ← LocalShellBackend 不兼容
104
103
  interrupt_on=None, ← dev-autopass 无中断
105
104
  checkpointer=saver, debug=settings.debug,
@@ -136,7 +135,6 @@ deferred → 仅读服务器名称(UI状态栏), 后续 /mcp reload 触发 hot-a
136
135
  | `_coding_checkpointer` | AsyncSqliteSaver 实例 |
137
136
  | `_coding_steer_queue` | SteerQueue (跨图重建保持) |
138
137
  | `_coding_subagents` | subagent 声明列表 |
139
- | `_coding_parallel_subagents` | DAG 并行模式是否激活 |
140
138
  | `_coding_async_only` | 是否仅支持异步调用 |
141
139
  | `_coding_mcp_attached` | MCP 是否已连接 |
142
140
  | `_coding_knowledge_base` | ProjectKnowledgeBase (可选) |
@@ -161,12 +159,12 @@ deferred → 仅读服务器名称(UI状态栏), 后续 /mcp reload 触发 hot-a
161
159
  | 9 | **IntentSchemaMiddleware** (x2) | `build_intent_schema_middleware()` | before_model+after_tool | 注入/剥离 intent 字段 |
162
160
  | 10 | **SteerMiddleware** | `build_steer_middleware(steer_queue)` | before_model | 中程用户引导注入 |
163
161
  | 11 | **CompactToolMiddleware** | `build_compact_tool_middleware()` | after_tool | compact_conversation 工具 |
164
- | 12 | **DAGSubAgentMiddleware** (可选) | `DAGSubAgentMiddleware(...)` | before_model | DAG并行子代理调度 |
165
- | 13 | **StripRedundantPromptMiddleware** | `build_strip_redundant_prompt_blocks()` | before_model | 移除冗余 blocks |
166
- | 14 | **CompactToolDescriptionsMiddleware** | `build_compact_tool_descriptions()` | before_model | 压缩工具描述(~30K token) |
167
- | 15 | **ModelRequestCompressionMiddleware** | `build_model_request_compression_middleware()` | before_model | 诊断:token计数,stale替换 |
162
+ > 注:仓库曾引入自研 `DAGSubAgentMiddleware`(第12位,可选),已回退。当前子代理走 deepagents 原生 `SubAgentMiddleware`(框架内置,不在本表)。
163
+ | 12 | **StripRedundantPromptMiddleware** | `build_strip_redundant_prompt_blocks()` | before_model | 移除冗余 blocks |
164
+ | 13 | **CompactToolDescriptionsMiddleware** | `build_compact_tool_descriptions()` | before_model | 压缩工具描述(~30K token) |
165
+ | 14 | **ModelRequestCompressionMiddleware** | `build_model_request_compression_middleware()` | before_model | 诊断:token计数,stale替换 |
168
166
 
169
- > deepagents 内置中间件(框架自动添加): SummarizationMiddleware, FilesystemMiddleware, TodoListMiddleware, SkillsMiddleware, MemoryMiddleware。DAGSubAgentMiddleware 替代内置 SubAgentMiddleware。
167
+ > deepagents 内置中间件(框架自动添加): SummarizationMiddleware, FilesystemMiddleware, TodoListMiddleware, SkillsMiddleware, MemoryMiddleware, SubAgentMiddleware。
170
168
 
171
169
  ### 3.2 洋葱模型执行顺序
172
170
 
@@ -242,7 +240,7 @@ before_model:
242
240
  │ 4. LangGraph ToolNode 路由 │
243
241
  │ ├─ 文件工具 → FilesystemMiddleware → backend │
244
242
  │ ├─ execute → CodingLocalShellBackend._execute() │
245
- │ ├─ task → DAGSubAgentMiddleware │
243
+ │ ├─ task → SubAgentMiddleware (原生) │
246
244
  │ └─ compact_conversation → SummarizationMiddleware │
247
245
  │ 5. wrap_tool_call 洋葱层 │
248
246
  │ PathNormalize → Intent(strip) → ErrorRecovery → │
@@ -369,20 +367,17 @@ interaction_events ← 模型/工具交互事件
369
367
  | **自定义 model** | researcher_model | tester_model | reviewer_model |
370
368
  | **共同排除** | write_todos | write_todos | write_todos |
371
369
 
372
- ### 7.2 DAGSubAgentMiddleware 调度算法
370
+ ### 7.2 子 Agent 调度(deepagents 原生 SubAgentMiddleware)
373
371
 
374
372
  ```
375
- _execute_dag(task_calls):
376
- 1. 解析 task 调用 → tasks 列表
377
- 2. while remaining:
378
- ready, remaining = _topological_waves(remaining, completed)
379
- if not ready and remaining → 死锁报错
380
- batch = ready[:max_parallel] (默认6)
381
- ★ asyncio.gather(*batch) 并行执行
382
- 3. 返回 (results, task_wave, task_deps, total_waves)
373
+ SubAgentMiddleware (deepagents 内置):
374
+ 1. 主 Agent 在模型输出中调用 task(subagent_type, description)
375
+ 2. ToolNode 阶段执行: 每个 task 编译为独立子图 (独立上下文)
376
+ 3. 子 Agent 完成后仅返回最终文本 → ToolMessage
377
+ 4. 主 Agent 收到所有 task 结果后继续推理
383
378
  ```
384
379
 
385
- **depends_on 语义**: 依赖任务输出注入下游描述;循环依赖→ValueError;task() 同步阻塞: 同轮 task 在本轮内全部执行完。
380
+ 子 Agent 工具隔离由 `build_default_subagents()` 的 tool-exclusion middleware 实现;无 depends_on / task_id / 波次并行。
386
381
 
387
382
  ---
388
383
 
@@ -473,7 +468,7 @@ load_settings(**overrides):
473
468
  | 安全 | require_approval(False), safety_profile("dev-autopass") | -- |
474
469
  | 检查点 | checkpoint_backend("sqlite") | project/.synapse/ |
475
470
  | 工具输出 | enable_tool_output_transform(True), threshold_bytes(512) | -- |
476
- | 子代理 | enable_subagents(True), parallel_subagents(False), max_parallel(6) | -- |
471
+ | 子代理 | enable_subagents(True) | -- |
477
472
  | MCP | enable_mcp(True), mcp_eager(False) | -- |
478
473
  | UI | theme("cursor-dark"), history_tail_turns(20) | -- |
479
474
  | 记忆/RAG | enable_memory(False), enable_rag(False) | -- |
@@ -570,8 +565,8 @@ Tab 补全: slash_complete.py 按命令分派,支持模型名/会话ID/服务
570
565
  │ build_coding_agent() │
571
566
  │ Middleware: 15 个中间件 (洋葱模型) │
572
567
  │ Tools: session_tools + MCP tools │
573
- │ Subagents: DAGSubAgentMiddleware (researcher/tester/ │
574
- │ reviewer, max_parallel=6) │
568
+ │ Subagents: deepagents 原生委派 (researcher/tester/ │
569
+ │ reviewer) │
575
570
  │ Backend: CodingLocalShellBackend (UTF-8, pwsh) │
576
571
  │ Checkpointer: AsyncSqliteSaver (WAL) │
577
572
  └──────────────────────────┬──────────────────────────────┘
@@ -611,7 +606,7 @@ agent.py ──────┬──▶ agent_md.py (AgentMdMiddleware)
611
606
  ├──▶ middleware.py (retry, path_normalize, intent, ...)
612
607
  ├──▶ steer.py (SteerQueue → SteerMiddleware)
613
608
  ├──▶ context_compact.py (SummarizationToolMiddleware)
614
- ├──▶ subagents.py → parallel_subagents.py (DAG)
609
+ ├──▶ subagents.py (researcher/tester/reviewer specs)
615
610
  ├──▶ fs_permissions.py (None for LocalShell)
616
611
  ├──▶ model_request_compression_middleware.py
617
612
  ├──▶ tool_output_middleware.py
@@ -108,10 +108,9 @@
108
108
  │ │ │ 9. IntentSchema (x2) 工具注入/剥离 intent 字段 │ │ │
109
109
  │ │ │ 10. SteerMiddleware 中程用户引导注入 │ │ │
110
110
  │ │ │ 11. CompactTool compact_conversation 工具 │ │ │
111
- │ │ │ 12. DAGSubAgentMiddleware DAG 并行子Agent 调度 │ │ │
112
- │ │ │ 13. StripRedundantPrompt 移除冗余 prompt blocks │ │ │
113
- │ │ │ 14. CompactToolDescriptions 压缩冗长工具描述 │ │ │
114
- │ │ │ 15. ModelRequestCompression 诊断:token计数,stale替换 │ │ │
111
+ │ │ │ 12. StripRedundantPrompt 移除冗余 prompt blocks │ │ │
112
+ │ │ │ 13. CompactToolDescriptions 压缩冗长工具描述 │ │ │
113
+ │ │ │ 14. ModelRequestCompression 诊断:token计数,stale替换 │ │ │
115
114
  │ │ └─────────────────────────────────────────────────────────┘ │ │
116
115
  │ │ │ │
117
116
  │ │ deepagents 内置中间件 (框架自动添加): │ │
@@ -122,7 +121,7 @@
122
121
  │ │ ├─ model: BaseChatModel (来自 models_registry) │ │
123
122
  │ │ ├─ backend: CodingLocalShellBackend │ │
124
123
  │ │ ├─ tools: [session_tools] + [MCP tools] │ │
125
- │ │ ├─ subagents: None (由 DAGSubAgentMiddleware 接管) │ │
124
+ │ │ ├─ subagents: subagents (deepagents 原生委派) │ │
126
125
  │ │ ├─ checkpointer: AsyncSqliteSaver / MemorySaver │ │
127
126
  │ │ ├─ interrupt_on: None (dev-autopass 默认无HITL) │ │
128
127
  │ │ └─ permissions: FilesystemPermission (非shell模式) │ │
@@ -130,19 +129,26 @@
130
129
  │ │
131
130
  │ ┌──────────────────── 子Agent 系统 ──────────────────────────┐ │
132
131
  │ │ │ │
133
- │ │ subagents.py parallel_subagents.py │ │
134
- │ │ build_default_subagents() → 3 种规范: │ │
135
- │ │ ┌──────────┬──────────┬──────────┐ │ │
136
- │ │ │researcher│ tester │ reviewer │ │ │
137
- │ │ │ 只读分析 │ 运行测试 │ 代码审查 │ │ │
138
- │ │ │ 无execute│ execute │ 无write │ │ │
139
- │ │ └──────────┴──────────┴──────────┘ │ │
132
+ │ │ subagent_specs.py (定义/注册/编译 三层) │ │
133
+ │ │ ├─ SubAgentDefinition: 拓扑无关声明 │ │
134
+ │ │ │ name/description/system_prompt/model/tools │ │
135
+ │ │ │ ownership(预留 handoff)/output_schema(预留 workflow) │ │
136
+ │ │ ├─ SubagentRegistry: 分层加载 .synapse/agents/*.md │ │
137
+ │ │ │ user → project 同名覆盖 · 坏文件降级跳过 │ │
138
+ │ │ └─ compile_task_specs: Definition → deepagents SubAgent │ │
140
139
  │ │ │ │
141
- │ │ DAGSubAgentMiddleware │ │
142
- │ │ ├─ _execute_dag() 解析 task() tool_calls │ │
143
- │ │ ├─ _topological_waves() 拓扑排序→波次分组 │ │
144
- │ │ ├─ asyncio.gather(*batch) 波次内并行 │ │
145
- │ │ └─ depends_on 声明依赖关系 │ │
140
+ │ │ subagents.py │ │
141
+ │ │ build_default_subagents() → 内置 + 自定义合并 → 3+ 规范: │ │
142
+ │ │ ┌──────────┬──────────┬──────────┬──────────────┐ │ │
143
+ │ │ │researcher│ tester │ reviewer │ 自定义... │ │ │
144
+ │ │ │ 只读分析 │ 运行测试 │ 代码审查 │ 用户定义 │ │ │
145
+ │ │ │ 无execute│ execute │ 无write │ 覆盖/追加 │ │ │
146
+ │ │ └──────────┴──────────┴──────────┴──────────────┘ │ │
147
+ │ │ │ │
148
+ │ │ deepagents SubAgentMiddleware (原生) │ │
149
+ │ │ ├─ task 工具 → ToolNode 阶段执行 │ │
150
+ │ │ ├─ 子 Agent 在独立子图上下文运行 │ │
151
+ │ │ └─ 结果仅返回最终文本给主 Agent │ │
146
152
  │ └──────────────────────────────────────────────────────────────┘ │
147
153
  │ │
148
154
  │ ┌──────────────────── 工具系统 ──────────────────────────────┐ │
@@ -265,7 +271,6 @@ cli.py
265
271
  ├── backends.py ← CodingLocalShellBackend
266
272
  ├── middleware.py ← 中间件工厂
267
273
  ├── subagents.py ← 子Agent 规范
268
- ├── parallel_subagents.py ← DAG 调度
269
274
  ├── mcp_client.py ← MCP 集成
270
275
  ├── safety.py ── hitl.py ── fs_permissions.py
271
276
  ├── vision_middleware.py ── describe_image.py ── multimodal.py
@@ -299,7 +304,7 @@ cli.py
299
304
  ├─ vision: 图片→文字 (非视觉模型)
300
305
  ├─ retry: 429/5xx 重试
301
306
  ├─ steer: 注入用户引导
302
- ├─ DAG: 发现 task() 调用 → 拓扑排序 → 波次并行子Agent
307
+ ├─ task: 发现 task() 调用 → SubAgentMiddleware 原生委派
303
308
  └─ compact: 自动压缩 (token阈值触发)
304
309
  │
305
310
  ▼
@@ -312,7 +317,7 @@ cli.py
312
317
  ├─ read_file/write_file/edit_file/glob/grep/execute
313
318
  │ └→ CodingLocalShellBackend (subprocess)
314
319
  ├─ task (子Agent)
315
- │ └→ DAGSubAgentMiddleware (缓存结果)
320
+ │ └→ SubAgentMiddleware (原生子图执行)
316
321
  ├─ search_session/read_session
317
322
  │ └→ SessionStore (SQLite)
318
323
  ├─ MCP tools
@@ -361,12 +366,11 @@ cli.py
361
366
  | **工厂模式** | `build_coding_agent()`, `build_backend()`, `build_default_subagents()`, `build_session_tools()` |
362
367
  | **中间件链** | `AgentMiddleware.awrap_model_call` 链式拦截 (9 个中间件) |
363
368
  | **依赖注入** | `SessionStore` 闭包注入工具; 子Agent 中间件注入 Backend |
364
- | **拓扑排序+DAG** | `DAGSubAgentMiddleware._topological_waves()` 波次并行 |
365
- | **预编译缓存** | `compile_subagent_runnables()` 预编译子Agent图 |
369
+ | **原生委派** | deepagents `SubAgentMiddleware` 子Agent独立子图执行 |
366
370
  | **3层覆盖配置** | 用户 `~/.synapse/` -> 便携包 -> 项目 `.synapse/` |
367
371
  | **幂等三态机** | `CodexImportLedger.claim()` (new/completed/recover) |
368
372
  | **自适应节流** | `_stream_interval()` 0.12s~0.40s 动态间隔 |
369
- | **退化保护** | TaskPlanner 快速启发式; MCP 连接断开自动移除; DAG 未启用时回退原生 |
373
+ | **退化保护** | TaskPlanner 快速启发式; MCP 连接断开自动移除 |
370
374
 
371
375
  ---
372
376
 
@@ -381,7 +385,6 @@ cli.py
381
385
  | `backends.py` | `CodingLocalShellBackend`, `build_backend` | 本地 Shell 执行 |
382
386
  | `middleware.py` | `build_*_middleware` 工厂函数 | 中间件构造 |
383
387
  | `subagents.py` | `build_default_subagents` | 3 种子Agent 规范 |
384
- | `parallel_subagents.py` | `DAGSubAgentMiddleware` | DAG 拓扑调度 |
385
388
  | `tools/session_tools.py` | `build_session_tools` | 会话查阅工具 |
386
389
  | `mcp_client.py` | `McpSessionPool`, `load_mcp_tools` | MCP 协议集成 |
387
390
  | `planner/task_planner.py` | `TaskPlanner`, `TaskPlan` | 任务分解规划 |
@@ -463,7 +466,6 @@ TurnRail (Vertical, id="turn-rail", dock:right, overlay, width:34)
463
466
  | McpPanelDialog | `("mcp-toggle", name)` 或 `("mcp-reload", None)` | `r` 键重载 MCP 配置 |
464
467
  | SafetyPanelDialog | `("safety", key)` | 三选一 profile (dev-autopass/dev-approve/readonly) |
465
468
  | CodexSessionListDialog | `("codex-import", native_id)` | 扫描 Codex 目录,只列可导入会话 |
466
- | SubagentMonitorDialog | (只读) | 独占 ModalScreen,不走 DialogBase,显示 DAG 列表+详情 |
467
469
  | ThemeDesignerDialog | (直接写文件) | 独占 ModalScreen,HSV 选择器+JSON 预览+实时 CSS 刷新 |
468
470
 
469
471
  统一调用模式:`self.push_screen(SomeDialog(...), self._on_some_dialog_done)`,回调中解包 `(action, value)` 元组。
@@ -664,7 +666,7 @@ ledger.claim(source_id, digest, proposed_thread_id):
664
666
  | **上下文** | `/compact`, `/context` | 手动压缩 + 上下文状态 |
665
667
  | **安全** | `/safety [profile]`, `/approve`, `/reject [reason]` | 安全 profile + HITL 审批 |
666
668
  | **主题** | `/theme [name]` | 主题切换 |
667
- | **其他** | `/skills`, `/memory`, `/subagents` | 技能/记忆/子代理状态 |
669
+ | **其他** | `/skills`, `/memory`, `/subagent` | 技能/记忆/子代理模型配置(`/subagent` 仅 TUI) |
668
670
 
669
671
  **SlashResult 三种逻辑状态**: `handled`(已处理,显示 lines)→ `passthru`(非斜杠命令,传递给 LLM)→ `rebuild`(agent 非 None,模型/MCP/安全变更需重建图)。
670
672
 
@@ -680,22 +682,6 @@ ledger.claim(source_id, digest, proposed_thread_id):
680
682
 
681
683
  **实现原理**: 7x5 像素位图 → Unicode Braille 字符(每个 Braille 格编码 4x2 点阵)。`_breathing_intensity()` 计算每个字符亮度:呼吸分量 `sin(2π*t/5.0)` + 涟漪分量(基于距离的正弦波)+ 渐入分量(从中心扩散,0.5s 完全显现)。定时器 12 FPS(~83ms),CSS class `#main.welcome` 控制显示/隐藏。
682
684
 
683
- ### Subagent Monitor 状态机
684
-
685
- ```
686
- SubagentMonitor (线程安全,RLock 保护)
687
- ├─ start_task() → status="running" (revision += 1)
688
- ├─ finish_task(error=False) → status="ok"
689
- ├─ finish_task(error=True) → status="error"
690
- └─ reset() → 清空所有 runs
691
-
692
- SubagentMonitorDialog (0.35s 轮询 snapshot,revision 去重)
693
- ├─ 左侧列表: task_id / type / wave / depends_on / status
694
- └─ 右侧详情: description + event 层级树
695
- ```
696
-
697
- `SubagentMonitorCallback(BaseCallbackHandler)` 注入到子 Agent 的 callbacks 中:`on_llm_end` 捕获 tool_calls → `on_tool_start/end/error` 实时产生 events。通过全局 `_REGISTRY` + `monitor_from_config(config)` 查找 Monitor 实例。
698
-
699
685
  ---
700
686
 
701
687
  ## 补充架构流程细节
@@ -716,10 +702,9 @@ SubagentMonitorDialog (0.35s 轮询 snapshot,revision 去重)
716
702
  9. build_intent_schema_middleware() # 注入/剥离 intent 字段 (双面中间件)
717
703
  10. build_steer_middleware() # 中运行用户引导 (SteerQueue)
718
704
  11. build_compact_tool_middleware() # compact_conversation 工具 (SummarizationTool)
719
- 12. [DAG 子 Agent 中间件] # 可选: ParallelSubagentMiddleware
720
- 13. build_strip_redundant_prompt_blocks() # 移除 deepagents 冗余 prompt (~720 tokens)
721
- 14. build_compact_tool_descriptions() # 精简工具描述 (~30K tokens)
722
- 15. build_model_request_compression_middleware() # 请求级压缩诊断 + token 分桶
705
+ 12. build_strip_redundant_prompt_blocks() # 移除 deepagents 冗余 prompt (~720 tokens)
706
+ 13. build_compact_tool_descriptions() # 精简工具描述 (~30K tokens)
707
+ 14. build_model_request_compression_middleware() # 请求级压缩诊断 + token 分桶
723
708
  ```
724
709
 
725
710
  **执行语义**:
@@ -959,31 +944,25 @@ repair_thread_after_cancel(agent, config) → list[str] (日志)
959
944
  └─ SessionStore.touch() 更新元数据
960
945
  ```
961
946
 
962
- ### 子 Agent DAG 调度流程
947
+ ### 子 Agent 委派流程
963
948
 
964
949
  ```
965
950
  用户输入: "分析 bug 并写测试和审查修复"
966
951
  │
967
- ├─ decide_subagent_routing(text) → 启发式判断是否适合 DAG 并行
968
- │ (检查关键词: "并"/"同时"/"并行"/多个任务...)
969
- │
970
- ├─ 适合 → 注入 DAG 规划指令到 system prompt
952
+ ├─ build_coding_agent() 把 subagents 传给 create_deep_agent(subagents=...)
953
+ │ (researcher / tester / reviewer, deepagents 原生 SubAgentMiddleware)
971
954
  │
972
- ├─ 模型输出多个 task() tool_calls, 含 depends_on 声明:
973
- │ task("researcher", "搜索 bug 原因", task_id="search")
974
- │ task("tester", "基于搜索结果写测试", depends_on=["search"], task_id="test")
975
- │ task("reviewer", "审查修复", depends_on=["test"], task_id="review")
955
+ ├─ 模型按需输出 task() tool_calls:
956
+ │ task("researcher", "搜索 bug 原因")
957
+ │ task("tester", "运行测试并诊断失败")
958
+ │ task("reviewer", "审查修复")
976
959
  │
977
- ├─ DAGSubAgentMiddleware 拦截 tool_calls:
978
- │ ├─ _parse_dag() → 提取 task_id / depends_on
979
- │ ├─ _topological_waves() → 拓扑排序:
980
- │ │ Wave 1: [search] ← 无依赖
981
- │ │ Wave 2: [test] ← 依赖 search
982
- │ │ Wave 3: [review] ← 依赖 test
983
- │ └─ 波次内并行: asyncio.gather(*wave_tasks)
984
- │ 波次间串行: 等待上一波完成
960
+ ├─ SubAgentMiddleware 在 ToolNode 阶段执行:
961
+ │ ├─ 每个子 Agent 在独立子图上下文运行
962
+ │ ├─ 只读工具集由 tool-exclusion middleware 约束
963
+ │ └─ 结果仅返回最终文本给主 Agent
985
964
  │
986
- └─ 不适合 → 回退原生顺序执行 (depends_on 仍被遵守,只是不并行)
965
+ └─ 主 Agent 汇总所有子 Agent 结果后继续推理
987
966
  ```
988
967
 
989
968
  ### SteerQueue — 中运行用户引导
@@ -101,6 +101,43 @@ Synapse 使用 **Pydantic Settings** 实现分层配置系统。
101
101
  | `AGENT_ENABLE_SUBAGENTS` | `true` | 启用子代理 |
102
102
  | `AGENT_SUBAGENT_TESTER_MODEL` | — | Tester 子代理模型 |
103
103
  | `AGENT_SUBAGENT_REVIEWER_MODEL` | — | Reviewer 子代理模型 |
104
+ | `AGENT_SUBAGENT_RESEARCHER_MODEL` | — | Researcher 子代理模型 |
105
+ | `AGENT_ENABLE_CUSTOM_SUBAGENTS` | `true` | 加载用户自定义子代理(`.synapse/agents/*.md`) |
106
+ | `AGENT_CUSTOM_AGENTS_DIRS` | `[]` | 额外扫描的子代理定义目录(JSON 数组,绝对路径或相对 workspace) |
107
+ | `AGENT_DISABLE_BUILTIN_SUBAGENTS` | `[]` | 禁用的内置子代理名(JSON 数组,如 `["tester"]`) |
108
+ | `AGENT_SUBAGENT_DEFAULT_MODEL` | — | 所有子代理的全局默认模型;未配置时继承主 Agent 模型 |
109
+ | `AGENT_SUBAGENT_DEFAULT_REASONING_EFFORT` | — | 所有子代理的全局默认推理级别(`off`/`minimal`/`low`/`medium`/`high`/`max`) |
110
+ | `AGENT_SUBAGENT_MODEL_OVERRIDES_JSON` | `{}` | 按子代理名覆盖模型(JSON 对象,如 `{"tester":"algo:1"}`) |
111
+ | `AGENT_SUBAGENT_REASONING_EFFORT_OVERRIDES_JSON` | `{}` | 按子代理名覆盖推理级别(JSON 对象) |
112
+
113
+ #### 自定义子代理
114
+
115
+ 在用户层 `~/.synapse/agents/*.md` 或项目层 `<workspace>/.synapse/agents/*.md` 放置
116
+ Markdown 文件即可新增子代理(项目层覆盖用户层同名定义)。YAML frontmatter 提供元数据,
117
+ 文件正文是子代理的 system prompt:
118
+
119
+ ```markdown
120
+ ---
121
+ name: security-reviewer
122
+ description: Use after security-sensitive changes. Reviews for injection and secret leaks.
123
+ model: inherit # 或 "provider:model-name"
124
+ reasoning_effort: high # 可选:off/minimal/low/medium/high/max;缺省继承主 Agent
125
+ tools: [read_file, search_files, find_files, execute] # 可选 allowlist;省略则继承 find_files/search_files
126
+ disallowed_tools: [write_file, edit_file] # 可选 denylist
127
+ ownership: task # 预留字段,仅支持 task
128
+ ---
129
+
130
+ You are a security reviewer. Inspect diffs for...
131
+ ```
132
+
133
+ - `name` 与内置(researcher/tester/reviewer)同名时覆盖内置定义。
134
+ - `tools: []` 表示仅使用 deepagents 内置工具(不继承主代理工具)。
135
+ - 解析失败的文件会被跳过并记录 warning,不会导致启动失败。
136
+ - `ownership` / `output_schema` 为未来 handoff 与 workflow 编排预留,当前仅支持 `task`。
137
+ - 首次启动会在 `~/.synapse/agents/` 生成 `researcher.md` / `tester.md` / `reviewer.md`
138
+ 种子文件,编辑即可覆盖内置;已编辑内容不会被覆盖。同名文件存在但未显式写 `model`
139
+ 时,`AGENT_SUBAGENT_*_MODEL` 仍会注入;在文件里显式写 `model`(或 `model: inherit`)
140
+ 后由文件接管。
104
141
 
105
142
  ### MCP
106
143