synapse-cli-agent 0.1.13__tar.gz → 0.1.15__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 (326) hide show
  1. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/AGENTS.md +22 -0
  2. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/CHANGELOG.md +18 -0
  3. synapse_cli_agent-0.1.13/README.md → synapse_cli_agent-0.1.15/PKG-INFO +101 -1
  4. synapse_cli_agent-0.1.13/PKG-INFO → synapse_cli_agent-0.1.15/README.md +66 -32
  5. synapse_cli_agent-0.1.15/docs/agent-development-guide.md +660 -0
  6. synapse_cli_agent-0.1.15/docs/architecture-flow.md +1165 -0
  7. synapse_cli_agent-0.1.15/docs/architecture.md +685 -0
  8. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/docs/config.md +1 -1
  9. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/docs/models.md +70 -0
  10. synapse_cli_agent-0.1.15/docs/smith_output.md +389 -0
  11. synapse_cli_agent-0.1.15/docs/tutorial.md +1879 -0
  12. synapse_cli_agent-0.1.15/docs/x-agent-development-guide.md +890 -0
  13. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/pyproject.toml +8 -1
  14. synapse_cli_agent-0.1.15/release_body.md +9 -0
  15. synapse_cli_agent-0.1.15/src/synapse/app/agent.py +554 -0
  16. synapse_cli_agent-0.1.15/src/synapse/cli.py +968 -0
  17. synapse_cli_agent-0.1.15/src/synapse/commands/slash_cmds.py +526 -0
  18. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/content/prompts.py +0 -9
  19. synapse_cli_agent-0.1.15/src/synapse/integrations/llm_openai_websocket.py +270 -0
  20. synapse_cli_agent-0.1.15/src/synapse/integrations/openai_oauth.py +386 -0
  21. synapse_cli_agent-0.1.15/src/synapse/integrations/openai_oauth_middleware.py +65 -0
  22. synapse_cli_agent-0.1.15/src/synapse/memory/__init__.py +30 -0
  23. synapse_cli_agent-0.1.15/src/synapse/memory/auto_recorder.py +236 -0
  24. synapse_cli_agent-0.1.15/src/synapse/memory/embedder.py +168 -0
  25. synapse_cli_agent-0.1.15/src/synapse/memory/long_term.py +214 -0
  26. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/models/config.py +1 -1
  27. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/models/profile.py +4 -0
  28. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/models/registry.py +109 -5
  29. synapse_cli_agent-0.1.15/src/synapse/parallel_subagents.py +1206 -0
  30. synapse_cli_agent-0.1.15/src/synapse/planner/__init__.py +9 -0
  31. synapse_cli_agent-0.1.15/src/synapse/planner/task_planner.py +147 -0
  32. synapse_cli_agent-0.1.15/src/synapse/rag/__init__.py +12 -0
  33. synapse_cli_agent-0.1.15/src/synapse/rag/knowledge_base.py +329 -0
  34. synapse_cli_agent-0.1.15/src/synapse/runtime/middleware.py +883 -0
  35. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/runtime/subagents.py +11 -4
  36. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/settings/schema.py +45 -0
  37. synapse_cli_agent-0.1.15/src/synapse/subagent_monitor.py +564 -0
  38. synapse_cli_agent-0.1.15/src/synapse/ui/answer_divider.py +78 -0
  39. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/bottombar/components/__init__.py +4 -1
  40. synapse_cli_agent-0.1.15/src/synapse/ui/clipboard.py +72 -0
  41. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/dialogs/__init__.py +2 -0
  42. synapse_cli_agent-0.1.15/src/synapse/ui/dialogs/subagent_monitor.py +304 -0
  43. synapse_cli_agent-0.1.15/src/synapse/ui/formatters.py +193 -0
  44. synapse_cli_agent-0.1.15/src/synapse/ui/selectable_static.py +235 -0
  45. synapse_cli_agent-0.1.15/src/synapse/ui/selectable_text.py +210 -0
  46. synapse_cli_agent-0.1.15/src/synapse/ui/textual_stream_sink.py +524 -0
  47. synapse_cli_agent-0.1.15/src/synapse/ui/tool_blocks.py +317 -0
  48. synapse_cli_agent-0.1.15/src/synapse/ui/transcript_blocks.py +244 -0
  49. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/tui.py +169 -1745
  50. synapse_cli_agent-0.1.15/src/synapse/ui/turn_rail_widgets.py +169 -0
  51. synapse_cli_agent-0.1.15/src/synapse/ui/user_turn_block.py +177 -0
  52. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_capabilities.py +25 -1
  53. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_cli.py +8 -0
  54. synapse_cli_agent-0.1.15/tests/test_context_window.py +208 -0
  55. synapse_cli_agent-0.1.15/tests/test_dag_parallel.py +931 -0
  56. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_dialogs.py +7 -1
  57. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_layered_config.py +30 -0
  58. synapse_cli_agent-0.1.15/tests/test_openai_oauth.py +105 -0
  59. synapse_cli_agent-0.1.15/tests/test_openai_oauth_middleware.py +52 -0
  60. synapse_cli_agent-0.1.15/tests/test_openai_websocket.py +436 -0
  61. synapse_cli_agent-0.1.15/tests/test_subagent_monitor_dialog.py +26 -0
  62. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/uv.lock +1065 -1057
  63. synapse_cli_agent-0.1.13/release_body.md +0 -11
  64. synapse_cli_agent-0.1.13/src/synapse/integrations/llm_openai_websocket.py +0 -187
  65. synapse_cli_agent-0.1.13/tests/test_context_window.py +0 -88
  66. synapse_cli_agent-0.1.13/tests/test_openai_websocket.py +0 -178
  67. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/.github/workflows/ci.yml +0 -0
  68. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/.github/workflows/docs.yml +0 -0
  69. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/.github/workflows/native-compression-wheels.yml +0 -0
  70. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/.github/workflows/release.yml +0 -0
  71. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/.gitignore +0 -0
  72. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/.python-version +0 -0
  73. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/.readthedocs.yaml +0 -0
  74. /synapse_cli_agent-0.1.13/src/synapse/app/agent.py → /synapse_cli_agent-0.1.15/agent_upstream.txt +0 -0
  75. /synapse_cli_agent-0.1.13/src/synapse/cli.py → /synapse_cli_agent-0.1.15/cli_upstream.txt +0 -0
  76. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/docs/cli.md +0 -0
  77. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/docs/codex-session-discovery-phase-1.md +0 -0
  78. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/docs/codex-session-import-phase-2.md +0 -0
  79. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/docs/design.md +0 -0
  80. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/docs/index.md +0 -0
  81. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/docs/install.md +0 -0
  82. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/docs/mcp.md +0 -0
  83. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/docs/native-compression-core.md +0 -0
  84. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/docs/permissions.md +0 -0
  85. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/docs/quickstart.md +0 -0
  86. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/docs/sessions.md +0 -0
  87. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/docs/skills.md +0 -0
  88. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/docs/tool-output-transform.md +0 -0
  89. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/docs/tui-cursor-refactor.md +0 -0
  90. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/examples/mcp.example.json +0 -0
  91. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/examples/models.example.json +0 -0
  92. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/examples/settings.example.json +0 -0
  93. /synapse_cli_agent-0.1.13/src/synapse/runtime/middleware.py → /synapse_cli_agent-0.1.15/middleware_upstream.txt +0 -0
  94. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/mkdocs.yml +0 -0
  95. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/Cargo.lock +0 -0
  96. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/Cargo.toml +0 -0
  97. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/LICENSE +0 -0
  98. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/NOTICE +0 -0
  99. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/README.md +0 -0
  100. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/pyproject.toml +0 -0
  101. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/python/synapse_tool_compress_core/__init__.py +0 -0
  102. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/ccr.rs +0 -0
  103. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/ccr_in_memory.rs +0 -0
  104. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/mod.rs +0 -0
  105. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/relevance/base.rs +0 -0
  106. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/relevance/bm25.rs +0 -0
  107. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/signals/keyword_detector.rs +0 -0
  108. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/signals/line_importance.rs +0 -0
  109. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/adaptive_sizer.rs +0 -0
  110. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/anchor_selector.rs +0 -0
  111. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/code_compressor.rs +0 -0
  112. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/diff_compressor.rs +0 -0
  113. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/log_compressor.rs +0 -0
  114. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/search_compressor.rs +0 -0
  115. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/analyzer.rs +0 -0
  116. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/anchors.rs +0 -0
  117. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/builder.rs +0 -0
  118. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/classifier.rs +0 -0
  119. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/classifier.rs +0 -0
  120. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/compactor.rs +0 -0
  121. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/formatter.rs +0 -0
  122. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/ir.rs +0 -0
  123. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/mod.rs +0 -0
  124. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/walker.rs +0 -0
  125. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/config.rs +0 -0
  126. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/constraints.rs +0 -0
  127. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crusher.rs +0 -0
  128. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crushers.rs +0 -0
  129. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/error_keywords.rs +0 -0
  130. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/field_detect.rs +0 -0
  131. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/hashing.rs +0 -0
  132. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/mod.rs +0 -0
  133. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/observer.rs +0 -0
  134. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/orchestration.rs +0 -0
  135. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/outliers.rs +0 -0
  136. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/planning.rs +0 -0
  137. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/statistics.rs +0 -0
  138. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/stats_math.rs +0 -0
  139. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/traits.rs +0 -0
  140. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/types.rs +0 -0
  141. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/rust/synapse-tool-compress-core/src/lib.rs +0 -0
  142. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/scripts/install.ps1 +0 -0
  143. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/scripts/release.ps1 +0 -0
  144. /synapse_cli_agent-0.1.13/src/synapse/commands/slash_cmds.py → /synapse_cli_agent-0.1.15/slash_cmds_upstream.txt +0 -0
  145. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/__init__.py +0 -0
  146. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/__main__.py +0 -0
  147. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/app/__init__.py +0 -0
  148. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/app/agent_md.py +0 -0
  149. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/commands/__init__.py +0 -0
  150. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/commands/compression.py +0 -0
  151. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/commands/helpers.py +0 -0
  152. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/commands/mcp.py +0 -0
  153. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/commands/model.py +0 -0
  154. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/commands/result.py +0 -0
  155. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/commands/sessions.py +0 -0
  156. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/commands/slash_complete.py +0 -0
  157. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/commands/theme.py +0 -0
  158. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/config.py +0 -0
  159. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/content/__init__.py +0 -0
  160. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/content/input_history.py +0 -0
  161. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/content/multimodal.py +0 -0
  162. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/content/skills_catalog.py +0 -0
  163. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/integrations/__init__.py +0 -0
  164. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/integrations/checkpoint_seed.py +0 -0
  165. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/integrations/codex_history.py +0 -0
  166. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/integrations/codex_import.py +0 -0
  167. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/integrations/codex_sessions.py +0 -0
  168. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/integrations/describe_image.py +0 -0
  169. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/integrations/http_clients.py +0 -0
  170. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/integrations/llm_openai_compat.py +0 -0
  171. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/integrations/mcp_client.py +0 -0
  172. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/integrations/vision_middleware.py +0 -0
  173. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/models/__init__.py +0 -0
  174. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/models/helpers.py +0 -0
  175. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/models_registry.py +0 -0
  176. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/observability/__init__.py +0 -0
  177. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/observability/startup_trace.py +0 -0
  178. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/runtime/__init__.py +0 -0
  179. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/runtime/async_runtime.py +0 -0
  180. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/runtime/backends.py +0 -0
  181. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/runtime/context_compact.py +0 -0
  182. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/runtime/execute_capture.py +0 -0
  183. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/runtime/fs_permissions.py +0 -0
  184. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/runtime/harness.py +0 -0
  185. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/runtime/hitl.py +0 -0
  186. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/runtime/interaction_ledger.py +0 -0
  187. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/runtime/model_request_compression_middleware.py +0 -0
  188. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/runtime/pathing.py +0 -0
  189. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/runtime/safety.py +0 -0
  190. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/runtime/steer.py +0 -0
  191. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/runtime/tool_ignore.py +0 -0
  192. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/runtime/tool_output_eval.py +0 -0
  193. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/runtime/tool_output_middleware.py +0 -0
  194. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/runtime/tool_output_usage_middleware.py +0 -0
  195. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/sessions/__init__.py +0 -0
  196. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/sessions/cancel_repair.py +0 -0
  197. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/sessions/session_recap.py +0 -0
  198. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/sessions/store.py +0 -0
  199. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/sessions/transcript.py +0 -0
  200. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/settings/__init__.py +0 -0
  201. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/settings/config_paths.py +0 -0
  202. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/tool_output/__init__.py +0 -0
  203. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/tool_output/detection.py +0 -0
  204. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/tool_output/metrics.py +0 -0
  205. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/tool_output/models.py +0 -0
  206. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/tool_output/pipeline.py +0 -0
  207. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/tool_output/repository.py +0 -0
  208. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/tool_output/transformers.py +0 -0
  209. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/tools/__init__.py +0 -0
  210. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/tools/session_tools.py +0 -0
  211. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/__init__.py +0 -0
  212. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/bottombar/__init__.py +0 -0
  213. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/bottombar/components/key_hints.py +0 -0
  214. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/bottombar/components/mcp.py +0 -0
  215. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/bottombar/components/mode.py +0 -0
  216. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/bottombar/components/model.py +0 -0
  217. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/bottombar/components/thread.py +0 -0
  218. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/bottombar/context.py +0 -0
  219. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/bottombar/core.py +0 -0
  220. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/dialogs/base.py +0 -0
  221. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/dialogs/codex_session_list.py +0 -0
  222. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/dialogs/compression_diagnostics.py +0 -0
  223. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/dialogs/git_explore.py +0 -0
  224. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/dialogs/mcp_panel.py +0 -0
  225. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/dialogs/model_picker.py +0 -0
  226. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/dialogs/safety_panel.py +0 -0
  227. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/dialogs/session_list.py +0 -0
  228. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/dialogs/theme_designer.py +0 -0
  229. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/dialogs/theme_picker.py +0 -0
  230. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/git_explore/__init__.py +0 -0
  231. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/git_explore/engine.py +0 -0
  232. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/git_explore/provider.py +0 -0
  233. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/git_explore/unified.py +0 -0
  234. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/rendering.py +0 -0
  235. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/sink.py +0 -0
  236. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/steer_widget.py +0 -0
  237. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/stream.py +0 -0
  238. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/stream_events.py +0 -0
  239. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/stream_runtime.py +0 -0
  240. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/theme.py +0 -0
  241. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/timeline.py +0 -0
  242. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/topbar/__init__.py +0 -0
  243. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/topbar/components/__init__.py +0 -0
  244. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/topbar/components/branch.py +0 -0
  245. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/topbar/components/title.py +0 -0
  246. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/topbar/components/tool_output.py +0 -0
  247. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/topbar/components/usage.py +0 -0
  248. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/topbar/components/workspace.py +0 -0
  249. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/topbar/context.py +0 -0
  250. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/topbar/core.py +0 -0
  251. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/topbar/git_changes_popover.py +0 -0
  252. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/topbar/git_chrome.py +0 -0
  253. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/topbar/tool_output_popover.py +0 -0
  254. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/topbar/widget.py +0 -0
  255. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/turn_rail.py +0 -0
  256. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/user_turn.py +0 -0
  257. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/src/synapse/ui/welcome.py +0 -0
  258. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/synapse.cmd +0 -0
  259. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/fixtures/codex_rollouts/duplicate_response_item.jsonl +0 -0
  260. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/fixtures/codex_rollouts/incomplete_and_aborted.jsonl +0 -0
  261. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/fixtures/codex_rollouts/legacy_compaction.jsonl +0 -0
  262. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/fixtures/codex_rollouts/normal_completed.jsonl +0 -0
  263. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/fixtures/codex_rollouts/replacement_history.jsonl +0 -0
  264. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/fixtures/codex_rollouts/rollback.jsonl +0 -0
  265. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/fixtures/codex_rollouts/unsupported_replacement.jsonl +0 -0
  266. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/fixtures/sample_repo/calculator.py +0 -0
  267. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/fixtures/sample_repo/test_calculator.py +0 -0
  268. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/fixtures/tool_output_eval.json +0 -0
  269. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_agent_factory.py +0 -0
  270. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_async_checkpointer.py +0 -0
  271. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_backends.py +0 -0
  272. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_bottombar_registry.py +0 -0
  273. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_cancel_repair.py +0 -0
  274. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_checkpoint_seed.py +0 -0
  275. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_cli_codex_import.py +0 -0
  276. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_codex_history.py +0 -0
  277. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_codex_import.py +0 -0
  278. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_codex_sessions.py +0 -0
  279. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_codex_sessions_windows.py +0 -0
  280. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_compact_tool_descriptions.py +0 -0
  281. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_config.py +0 -0
  282. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_context_compact.py +0 -0
  283. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_describe_image.py +0 -0
  284. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_git_changes_popover.py +0 -0
  285. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_git_chrome.py +0 -0
  286. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_git_explore.py +0 -0
  287. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_http_clients.py +0 -0
  288. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_input_history.py +0 -0
  289. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_iteration_abc.py +0 -0
  290. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_mcp_schema.py +0 -0
  291. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_mermaid_render.py +0 -0
  292. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_middleware_async.py +0 -0
  293. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_model_request_compression_middleware.py +0 -0
  294. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_model_retry.py +0 -0
  295. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_multimodal.py +0 -0
  296. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_openai_compat_reasoning.py +0 -0
  297. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_pathing.py +0 -0
  298. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_safety.py +0 -0
  299. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_session_recap.py +0 -0
  300. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_slash_and_mcp.py +0 -0
  301. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_slash_complete.py +0 -0
  302. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_startup_defer.py +0 -0
  303. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_steer.py +0 -0
  304. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_stream_cancel.py +0 -0
  305. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_stream_tool_items.py +0 -0
  306. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_stream_ui.py +0 -0
  307. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_subagent_status.py +0 -0
  308. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_theme.py +0 -0
  309. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_timeline.py +0 -0
  310. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_tool_ignore.py +0 -0
  311. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_tool_intent.py +0 -0
  312. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_tool_output.py +0 -0
  313. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_tool_output_eval.py +0 -0
  314. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_tool_output_slash.py +0 -0
  315. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_tool_output_usage_middleware.py +0 -0
  316. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_topbar_context_ratio.py +0 -0
  317. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_topbar_registry.py +0 -0
  318. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_transcript.py +0 -0
  319. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_tui_codex_import.py +0 -0
  320. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_tui_selection.py +0 -0
  321. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_tui_sink.py +0 -0
  322. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_turn_rail_minimap.py +0 -0
  323. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_usage_restore.py +0 -0
  324. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_user_turn_style.py +0 -0
  325. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/test_welcome.py +0 -0
  326. {synapse_cli_agent-0.1.13 → synapse_cli_agent-0.1.15}/tests/tool_output_plugin_fixture.py +0 -0
@@ -1,5 +1,27 @@
1
1
  # Synapse 项目协作指南
2
2
 
3
+ ## 用户信息
4
+ - 姓名:肖前程
5
+ - 年龄:35 岁
6
+ - 职业:Java 程序员
7
+ - 当前学习方向:Agent 应用开发
8
+ - 主语言背景:Java → 正在学习 Python/LangChain Agent 生态
9
+
10
+ ## 用户信息
11
+ - 姓名:肖前程
12
+ - 年龄:35 岁
13
+ - 职业:Java 程序员
14
+ - 当前学习方向:Agent 应用开发
15
+ - 主语言背景:Java → 正在学习 Python/LangChain Agent 生态
16
+
17
+ ## 约定
18
+ - Python 依赖使用 `uv` 管理。
19
+ - 优先小步、可测试的改动。
20
+ - CLI 输出简洁,不使用 emoji。
21
+ - 默认关闭人工审批(自动放行);除非用户要求,不要自行加审批门槛。
22
+ - Backend 仅使用 `LocalShellBackend`,无远程 sandbox。
23
+ - 对用户回复与模型思考过程使用中文;代码标识符/路径/命令可保留原文。
24
+
3
25
  ## 当前仓库结构
4
26
 
5
27
  | 路径 | 主要职责 |
@@ -7,6 +7,24 @@ The release workflow automatically extracts the matching section as release note
7
7
 
8
8
  ---
9
9
 
10
+ ## v0.1.15
11
+
12
+ ### 工程改进
13
+
14
+ - 拆分 TUI transcript、工具组、待办清单、用户消息和 turn rail widget,缩小 `tui.py` 的职责范围。
15
+ - 保留 `synapse.ui.tui` 的既有组件、格式化函数和 timeline 符号兼容导出。
16
+ - 保持动态主题、流式展示、文本选择、复制与 turn rail 交互行为,并覆盖相关 TUI 回归测试。
17
+
18
+ ---
19
+
20
+ ## v0.1.14
21
+
22
+ ### 工程改进
23
+
24
+ - PyPI 项目页增加主页、源代码仓库、问题追踪和变更日志链接。
25
+
26
+ ---
27
+
10
28
  ## v0.1.13
11
29
 
12
30
  ### 新功能
@@ -1,3 +1,38 @@
1
+ Metadata-Version: 2.4
2
+ Name: synapse-cli-agent
3
+ Version: 0.1.15
4
+ Summary: Local coding agent built on LangChain Deep Agents (LocalShell, no sandbox)
5
+ Project-URL: Homepage, https://github.com/alex8224/synapse-agent
6
+ Project-URL: Repository, https://github.com/alex8224/synapse-agent
7
+ Project-URL: Issues, https://github.com/alex8224/synapse-agent/issues
8
+ Project-URL: Changelog, https://github.com/alex8224/synapse-agent/blob/main/CHANGELOG.md
9
+ Author-email: alex8224 <alex8224@gmail.com>
10
+ Requires-Python: >=3.12
11
+ Requires-Dist: aiosqlite>=0.20.0
12
+ Requires-Dist: deepagents>=0.6.12
13
+ Requires-Dist: langchain-anthropic>=1.4.8
14
+ Requires-Dist: langchain-openai>=1.3.5
15
+ Requires-Dist: langchain>=1.3.14
16
+ Requires-Dist: langgraph-checkpoint-sqlite>=3.1.0
17
+ Requires-Dist: langgraph>=1.2.9
18
+ Requires-Dist: mcp>=1.28.0
19
+ Requires-Dist: pydantic-settings>=2.14.2
20
+ Requires-Dist: python-dotenv>=1.2.2
21
+ Requires-Dist: rich>=15.0.0
22
+ Requires-Dist: termaid>=0.7.1
23
+ Requires-Dist: texicode>=1.0.3
24
+ Requires-Dist: textual-diff-view>=0.1.5
25
+ Requires-Dist: textual>=1.0.0
26
+ Requires-Dist: typer>=0.27.0
27
+ Requires-Dist: websockets<16,>=13
28
+ Requires-Dist: zstandard>=0.23.0
29
+ Provides-Extra: dev
30
+ Requires-Dist: mkdocs-material>=9.7.7; extra == 'dev'
31
+ Requires-Dist: mkdocs>=1.6.1; extra == 'dev'
32
+ Requires-Dist: pytest>=9.1.1; extra == 'dev'
33
+ Requires-Dist: ruff>=0.15.22; extra == 'dev'
34
+ Description-Content-Type: text/markdown
35
+
1
36
  # Synapse
2
37
 
3
38
  基于 **LangChain Deep Agents** 的本地 Synapse。
@@ -145,7 +180,7 @@ cp .env.example .env
145
180
  | `MODEL` | 是 | 模型标识,如 `openai:gpt-4.1`、`openai:deepseek-chat` |
146
181
  | `OPENAI_API_KEY` | 是* | OpenAI 兼容 API 密钥 |
147
182
  | `OPENAI_BASE_URL` | 否 | 自定义 API 端点(中转/本地服务需填) |
148
- | `OPENAI_WEBSOCKET` | 否 | 普通 Responses API 使用 WebSocket;默认 `false`(HTTP/SSE) |
183
+ | `OPENAI_WEBSOCKET` | 否 | 普通 Responses API 使用 WebSocket;默认 `false`(HTTP/SSE)。瞬时断流按模型 `max_retries` 重连,耗尽后在尚未输出内容时回退 HTTP/SSE |
149
184
  | `ANTHROPIC_API_KEY` | 否 | Anthropic 原生 API 密钥 |
150
185
  | `WORKSPACE` | 否 | 工作区路径,默认 `.` |
151
186
  | `SHELL_EXECUTABLE` | 否 | Shell 类型,默认 `pwsh`(可选 `cmd`/`bash`) |
@@ -155,6 +190,42 @@ cp .env.example .env
155
190
 
156
191
  完整变量列表见 `.env.example`。
157
192
 
193
+ ### OpenAI Codex OAuth(ChatGPT Plus/Pro)
194
+
195
+ 除普通 API Key 外,Synapse 可使用 Codex 的 ChatGPT OAuth 登录。凭据仅保存到用户目录
196
+ `~/.synapse/openai_oauth.json`,不会写入项目配置或显示在终端中。
197
+
198
+ ```bash
199
+ # 浏览器登录;也可加 --no-browser 手动打开终端打印的链接
200
+ synapse auth openai login
201
+
202
+ # 若本机已通过 Codex CLI 登录,安全导入其现有登录态
203
+ synapse auth openai login --import-codex
204
+
205
+ synapse auth openai status
206
+ synapse auth openai logout
207
+ ```
208
+
209
+ 然后在 `~/.synapse/models.json` 或 `<workspace>/.synapse/models.json` 配置模型:
210
+
211
+ ```json
212
+ {
213
+ "default": "codex",
214
+ "models": {
215
+ "codex": {
216
+ "model": "openai:gpt-5",
217
+ "auth": "openai_oauth"
218
+ }
219
+ }
220
+ }
221
+ ```
222
+
223
+ OAuth profile 强制使用 Codex backend,不能通过 `base_url` 覆盖。该登录方式不能用于第三方
224
+ OpenAI 兼容网关,也不需要设置 `OPENAI_API_KEY`。浏览器授权回调固定使用
225
+ `http://localhost:1455/auth/callback`;若端口被占用,请关闭占用进程后重试。Synapse 会自动将
226
+ Agent 的 OpenAI `system` 消息转换为 Codex backend 接受的 `developer` 消息,并移除 DeepSeek
227
+ 兼容的 `extra_body.thinking` 字段,只发送 Codex 支持的 reasoning 参数,并强制设置 `store: false`。
228
+
158
229
  ### 方式二:models.json(多模型 profiles,推荐)
159
230
 
160
231
  在 `~/.synapse/` 或 `<workspace>/.synapse/` 下创建 `models.json`。支持多 profile、自定义模型参数(temperature、max_tokens、thinking 等)。
@@ -294,6 +365,8 @@ OpenAI Responses API 同时支持 HTTP/SSE 与普通 LLM WebSocket。profile 中
294
365
  |---|---|
295
366
  | `api_key` | **推荐**:密钥直接写在 models.json |
296
367
  | `api_key_env` | 旧方式:从环境变量读密钥 |
368
+ | `auth` | 认证方式;设为 `openai_oauth` 时使用 `synapse auth openai login` 保存的 Codex OAuth 登录态 |
369
+ | `headers` | 模型级 HTTP 请求头对象;同名头覆盖顶层 `headers`,适用于自定义 `User-Agent` 等请求指纹 |
297
370
  | `thinking` / `thinking_level` / `reasoning_effort` | 思考级别:`off\|minimal\|low\|medium\|high\|max` |
298
371
  | `enable_thinking` | 兼容旧字段 bool |
299
372
  | `temperature` / `max_tokens` / `timeout` 等 | 直接传给 ChatModel |
@@ -301,6 +374,33 @@ OpenAI Responses API 同时支持 HTTP/SSE 与普通 LLM WebSocket。profile 中
301
374
  | `model_kwargs` | 请求体 kwargs |
302
375
  | `extra_body` | 厂商扩展体(与 thinking 合并) |
303
376
 
377
+ ### 自定义请求头与请求指纹
378
+
379
+ 参考 `cmd-agent` 的配置方式,`models.json` 顶层 `headers` 会应用到全部 OpenAI 兼容模型;
380
+ 模型内 `headers` 按 HTTP 头名称(不区分大小写)覆盖全局值。分层配置的优先级为:
381
+ 项目模型 > 用户模型 > 项目全局 > 用户全局。可用于设置 `User-Agent`、客户端标识等请求指纹。
382
+
383
+ ```json
384
+ {
385
+ "headers": {
386
+ "User-Agent": "synapse-global/1.0",
387
+ "X-Client-Channel": "desktop"
388
+ },
389
+ "models": {
390
+ "codex": {
391
+ "model": "openai:gpt-5",
392
+ "auth": "openai_oauth",
393
+ "headers": {
394
+ "User-Agent": "synapse-codex/1.0"
395
+ }
396
+ }
397
+ }
398
+ }
399
+ ```
400
+
401
+ OAuth 模式中 `ChatGPT-Account-Id`、`originator` 等协议认证头由运行时强制设置,不能被配置覆盖。
402
+ 请求头值支持 `${ENV_NAME}` / `$ENV_NAME` 环境变量展开;不要将私密 token 写入项目级配置。
403
+
304
404
  `.env` 仍可读,仅作迁移/CI 兼容,**不推荐**作为常规分发方式。
305
405
 
306
406
  ## 示例:修复 sample_repo
@@ -1,34 +1,3 @@
1
- Metadata-Version: 2.4
2
- Name: synapse-cli-agent
3
- Version: 0.1.13
4
- Summary: Local coding agent built on LangChain Deep Agents (LocalShell, no sandbox)
5
- Author-email: alex8224 <alex8224@gmail.com>
6
- Requires-Python: >=3.12
7
- Requires-Dist: aiosqlite>=0.20.0
8
- Requires-Dist: deepagents>=0.6.12
9
- Requires-Dist: langchain-anthropic>=1.4.8
10
- Requires-Dist: langchain-openai>=1.3.5
11
- Requires-Dist: langchain>=1.3.14
12
- Requires-Dist: langgraph-checkpoint-sqlite>=3.1.0
13
- Requires-Dist: langgraph>=1.2.9
14
- Requires-Dist: mcp>=1.28.0
15
- Requires-Dist: pydantic-settings>=2.14.2
16
- Requires-Dist: python-dotenv>=1.2.2
17
- Requires-Dist: rich>=15.0.0
18
- Requires-Dist: termaid>=0.7.1
19
- Requires-Dist: texicode>=1.0.3
20
- Requires-Dist: textual-diff-view>=0.1.5
21
- Requires-Dist: textual>=1.0.0
22
- Requires-Dist: typer>=0.27.0
23
- Requires-Dist: websockets<16,>=13
24
- Requires-Dist: zstandard>=0.23.0
25
- Provides-Extra: dev
26
- Requires-Dist: mkdocs-material>=9.7.7; extra == 'dev'
27
- Requires-Dist: mkdocs>=1.6.1; extra == 'dev'
28
- Requires-Dist: pytest>=9.1.1; extra == 'dev'
29
- Requires-Dist: ruff>=0.15.22; extra == 'dev'
30
- Description-Content-Type: text/markdown
31
-
32
1
  # Synapse
33
2
 
34
3
  基于 **LangChain Deep Agents** 的本地 Synapse。
@@ -176,7 +145,7 @@ cp .env.example .env
176
145
  | `MODEL` | 是 | 模型标识,如 `openai:gpt-4.1`、`openai:deepseek-chat` |
177
146
  | `OPENAI_API_KEY` | 是* | OpenAI 兼容 API 密钥 |
178
147
  | `OPENAI_BASE_URL` | 否 | 自定义 API 端点(中转/本地服务需填) |
179
- | `OPENAI_WEBSOCKET` | 否 | 普通 Responses API 使用 WebSocket;默认 `false`(HTTP/SSE) |
148
+ | `OPENAI_WEBSOCKET` | 否 | 普通 Responses API 使用 WebSocket;默认 `false`(HTTP/SSE)。瞬时断流按模型 `max_retries` 重连,耗尽后在尚未输出内容时回退 HTTP/SSE |
180
149
  | `ANTHROPIC_API_KEY` | 否 | Anthropic 原生 API 密钥 |
181
150
  | `WORKSPACE` | 否 | 工作区路径,默认 `.` |
182
151
  | `SHELL_EXECUTABLE` | 否 | Shell 类型,默认 `pwsh`(可选 `cmd`/`bash`) |
@@ -186,6 +155,42 @@ cp .env.example .env
186
155
 
187
156
  完整变量列表见 `.env.example`。
188
157
 
158
+ ### OpenAI Codex OAuth(ChatGPT Plus/Pro)
159
+
160
+ 除普通 API Key 外,Synapse 可使用 Codex 的 ChatGPT OAuth 登录。凭据仅保存到用户目录
161
+ `~/.synapse/openai_oauth.json`,不会写入项目配置或显示在终端中。
162
+
163
+ ```bash
164
+ # 浏览器登录;也可加 --no-browser 手动打开终端打印的链接
165
+ synapse auth openai login
166
+
167
+ # 若本机已通过 Codex CLI 登录,安全导入其现有登录态
168
+ synapse auth openai login --import-codex
169
+
170
+ synapse auth openai status
171
+ synapse auth openai logout
172
+ ```
173
+
174
+ 然后在 `~/.synapse/models.json` 或 `<workspace>/.synapse/models.json` 配置模型:
175
+
176
+ ```json
177
+ {
178
+ "default": "codex",
179
+ "models": {
180
+ "codex": {
181
+ "model": "openai:gpt-5",
182
+ "auth": "openai_oauth"
183
+ }
184
+ }
185
+ }
186
+ ```
187
+
188
+ OAuth profile 强制使用 Codex backend,不能通过 `base_url` 覆盖。该登录方式不能用于第三方
189
+ OpenAI 兼容网关,也不需要设置 `OPENAI_API_KEY`。浏览器授权回调固定使用
190
+ `http://localhost:1455/auth/callback`;若端口被占用,请关闭占用进程后重试。Synapse 会自动将
191
+ Agent 的 OpenAI `system` 消息转换为 Codex backend 接受的 `developer` 消息,并移除 DeepSeek
192
+ 兼容的 `extra_body.thinking` 字段,只发送 Codex 支持的 reasoning 参数,并强制设置 `store: false`。
193
+
189
194
  ### 方式二:models.json(多模型 profiles,推荐)
190
195
 
191
196
  在 `~/.synapse/` 或 `<workspace>/.synapse/` 下创建 `models.json`。支持多 profile、自定义模型参数(temperature、max_tokens、thinking 等)。
@@ -325,6 +330,8 @@ OpenAI Responses API 同时支持 HTTP/SSE 与普通 LLM WebSocket。profile 中
325
330
  |---|---|
326
331
  | `api_key` | **推荐**:密钥直接写在 models.json |
327
332
  | `api_key_env` | 旧方式:从环境变量读密钥 |
333
+ | `auth` | 认证方式;设为 `openai_oauth` 时使用 `synapse auth openai login` 保存的 Codex OAuth 登录态 |
334
+ | `headers` | 模型级 HTTP 请求头对象;同名头覆盖顶层 `headers`,适用于自定义 `User-Agent` 等请求指纹 |
328
335
  | `thinking` / `thinking_level` / `reasoning_effort` | 思考级别:`off\|minimal\|low\|medium\|high\|max` |
329
336
  | `enable_thinking` | 兼容旧字段 bool |
330
337
  | `temperature` / `max_tokens` / `timeout` 等 | 直接传给 ChatModel |
@@ -332,6 +339,33 @@ OpenAI Responses API 同时支持 HTTP/SSE 与普通 LLM WebSocket。profile 中
332
339
  | `model_kwargs` | 请求体 kwargs |
333
340
  | `extra_body` | 厂商扩展体(与 thinking 合并) |
334
341
 
342
+ ### 自定义请求头与请求指纹
343
+
344
+ 参考 `cmd-agent` 的配置方式,`models.json` 顶层 `headers` 会应用到全部 OpenAI 兼容模型;
345
+ 模型内 `headers` 按 HTTP 头名称(不区分大小写)覆盖全局值。分层配置的优先级为:
346
+ 项目模型 > 用户模型 > 项目全局 > 用户全局。可用于设置 `User-Agent`、客户端标识等请求指纹。
347
+
348
+ ```json
349
+ {
350
+ "headers": {
351
+ "User-Agent": "synapse-global/1.0",
352
+ "X-Client-Channel": "desktop"
353
+ },
354
+ "models": {
355
+ "codex": {
356
+ "model": "openai:gpt-5",
357
+ "auth": "openai_oauth",
358
+ "headers": {
359
+ "User-Agent": "synapse-codex/1.0"
360
+ }
361
+ }
362
+ }
363
+ }
364
+ ```
365
+
366
+ OAuth 模式中 `ChatGPT-Account-Id`、`originator` 等协议认证头由运行时强制设置,不能被配置覆盖。
367
+ 请求头值支持 `${ENV_NAME}` / `$ENV_NAME` 环境变量展开;不要将私密 token 写入项目级配置。
368
+
335
369
  `.env` 仍可读,仅作迁移/CI 兼容,**不推荐**作为常规分发方式。
336
370
 
337
371
  ## 示例:修复 sample_repo