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.
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/.gitignore +5 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/CHANGELOG.md +37 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/PKG-INFO +2 -2
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/README.md +1 -1
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/README.zh-CN.md +2 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/architecture-flow.md +27 -32
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/architecture.md +43 -64
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/config.md +37 -0
- synapse_cli_agent-0.1.34/docs/subagents.md +246 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/tutorial.md +11 -76
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/mkdocs.yml +6 -2
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/pyproject.toml +1 -1
- synapse_cli_agent-0.1.34/release_body.md +13 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/Cargo.lock +1 -1
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/Cargo.toml +1 -1
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/pyproject.toml +1 -1
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/src/search.rs +38 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/acp/agent.py +0 -1
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/app/agent.py +190 -57
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/app/agent_assembly.py +0 -5
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/commands/slash_cmds.py +1 -32
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/commands/slash_complete.py +1 -1
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/content/multimodal.py +67 -7
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/content/prompts.py +21 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/describe_image.py +136 -27
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/openai_usage.py +8 -11
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/vision_middleware.py +9 -10
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/agent_loop/request.py +0 -5
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/agent_loop/turn.py +10 -1
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/backends.py +4 -43
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/sessions/persistence.py +60 -1
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/sessions/runtime.py +0 -2
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/streaming/__init__.py +2 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/streaming/adapters.py +22 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/streaming/events.py +42 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/streaming/parser.py +71 -7
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/streaming/tool_model.py +8 -0
- synapse_cli_agent-0.1.34/src/synapse/runtime/subagent_config_persist.py +115 -0
- synapse_cli_agent-0.1.34/src/synapse/runtime/subagent_specs.py +458 -0
- synapse_cli_agent-0.1.34/src/synapse/runtime/subagents.py +458 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/timeline.py +75 -5
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/settings/config_paths.py +44 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/settings/schema.py +81 -4
- synapse_cli_agent-0.1.34/src/synapse/subagents.py +18 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/chrome/controller.py +62 -11
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/__init__.py +3 -2
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/base.py +27 -1
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/controller.py +79 -8
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/model_picker.py +80 -13
- synapse_cli_agent-0.1.34/src/synapse/ui/dialogs/subagent_config.py +347 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/image_viewer.py +1 -1
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/prompt_controller.py +64 -28
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/selectable_text.py +14 -13
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/steer_widget.py +3 -3
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/textual_stream_sink.py +11 -32
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/timeline.py +2 -0
- synapse_cli_agent-0.1.34/src/synapse/ui/tool_blocks.py +537 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/transcript/controller.py +36 -40
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/transcript_blocks.py +75 -6
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/tui.py +84 -82
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/tui_styles.py +0 -11
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/turn/controller.py +17 -35
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/turn/event_bridge.py +41 -12
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/turn/event_renderer.py +22 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/turn/persistence.py +24 -1
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/turn/request.py +0 -3
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_agent_factory.py +109 -1
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_agent_turn_runtime.py +60 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_backends.py +9 -16
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_capabilities.py +1 -25
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_chrome_controller.py +70 -12
- synapse_cli_agent-0.1.34/tests/test_clipboard.py +94 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_config.py +37 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_describe_image.py +64 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_dialogs.py +296 -11
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_goals.py +1 -2
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_layered_config.py +36 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_prompt_controller.py +51 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_prompts.py +14 -1
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_session_runtime.py +157 -2
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_slash_and_mcp.py +5 -34
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_slash_complete.py +1 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_stream_tool_items.py +516 -3
- synapse_cli_agent-0.1.34/tests/test_subagent_config_dialog.py +372 -0
- synapse_cli_agent-0.1.34/tests/test_subagent_config_persist.py +306 -0
- synapse_cli_agent-0.1.34/tests/test_subagents.py +942 -0
- synapse_cli_agent-0.1.34/tests/test_timeline.py +365 -0
- synapse_cli_agent-0.1.34/tests/test_tool_blocks.py +300 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_transcript_controller.py +0 -79
- synapse_cli_agent-0.1.34/tests/test_tui_paste.py +56 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_turn_controller.py +10 -13
- synapse_cli_agent-0.1.34/tests/test_turn_event_renderer.py +809 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_turn_request.py +1 -4
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/uv.lock +2 -2
- synapse_cli_agent-0.1.32/docs/subagent-architecture-survey.md +0 -373
- synapse_cli_agent-0.1.32/release_body.md +0 -21
- synapse_cli_agent-0.1.32/src/synapse/parallel_subagents.py +0 -1237
- synapse_cli_agent-0.1.32/src/synapse/runtime/subagent_routing.py +0 -121
- synapse_cli_agent-0.1.32/src/synapse/runtime/subagents.py +0 -215
- synapse_cli_agent-0.1.32/src/synapse/subagent_monitor.py +0 -664
- synapse_cli_agent-0.1.32/src/synapse/subagents.py +0 -5
- synapse_cli_agent-0.1.32/src/synapse/ui/dialogs/subagent_monitor.py +0 -329
- synapse_cli_agent-0.1.32/src/synapse/ui/subagent_status_bar.py +0 -23
- synapse_cli_agent-0.1.32/src/synapse/ui/tool_blocks.py +0 -317
- synapse_cli_agent-0.1.32/tests/test_dag_parallel.py +0 -980
- synapse_cli_agent-0.1.32/tests/test_subagent_monitor_dialog.py +0 -99
- synapse_cli_agent-0.1.32/tests/test_timeline.py +0 -179
- synapse_cli_agent-0.1.32/tests/test_turn_event_renderer.py +0 -372
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/.dockerignore +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/.github/workflows/ci.yml +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/.github/workflows/docs.yml +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/.github/workflows/native-compression-wheels.yml +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/.github/workflows/native-core-tool-wheels.yml +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/.github/workflows/release.yml +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/.python-version +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/.readthedocs.yaml +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/.zed/settings.json +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/AGENTS.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/Dockerfile.web +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/LICENSE +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/agent-studio-prototype/favicon.svg +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/agent-studio-prototype/index.html +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/agent-studio-prototype/script.js +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/agent-studio-prototype/styles.css +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/agent_upstream.txt +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/assets/demo.gif +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/assets/synapse-logo.svg +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/assets/tui-preview.png +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/cli_upstream.txt +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/debug_compact.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/decode_screenshot.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/capability-matrix.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/decisions.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/index.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/phase-0-protocol-baseline.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/phase-1-core-transport.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/phase-2-prompt-semantics.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/phase-3-permissions.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/phase-4-session-lifecycle.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/phase-5-session-mcp.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/phase-6-client-services.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/phase-7-advanced-capabilities.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/phase-8-compliance.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/acp-adapter/progress.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-development-guide.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/baseline-report.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/decisions.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/index.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/migration.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/phase-0-baseline.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/phase-1-streaming-core.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/phase-2-turn-runtime.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/phase-3-tui-cutover.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/phase-4-session-runtime.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/phase-5-multi-session.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/phase-6-project-runtime.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/phase-7-global-control-plane.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/phase-8-hardening.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/post-review-fix-plan.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/agent-runtime-decoupling/progress.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/cli.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/codex-session-discovery-phase-1.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/codex-session-import-phase-2.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/design.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/docker-web.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/index.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/install.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/math-formulas-test.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/mcp.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/models.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/native-compression-core.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/native-core-tool.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/permissions.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/quickstart.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/sessions.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/skills.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/smith_output.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/tool-output-transform.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/tui-cursor-refactor.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/docs/x-agent-development-guide.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/examples/mcp.example.json +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/examples/models.example.json +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/examples/settings.example.json +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/middleware_upstream.txt +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/LICENSE +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/NOTICE +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/README.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/python/synapse_core_tool/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/src/file_access.rs +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/src/file_tools.rs +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/src/lib.rs +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/src/math_render.rs +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-core-tool/uv.lock +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/Cargo.lock +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/Cargo.toml +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/LICENSE +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/NOTICE +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/README.md +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/pyproject.toml +0 -0
- {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
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/ccr.rs +0 -0
- {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
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/headroom_port/mod.rs +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/rust/synapse-tool-compress-core/src/lib.rs +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/scripts/install.ps1 +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/scripts/release.ps1 +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/scripts/serve_web.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/slash_cmds_upstream.txt +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/__main__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/acp/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/acp/client_services.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/acp/content.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/acp/events.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/acp/lifecycle.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/acp/mcp.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/acp/permissions.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/acp/server.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/acp/sessions.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/acp/updates.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/app/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/app/agent_md.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/cli.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/commands/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/commands/compression.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/commands/goal.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/commands/helpers.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/commands/mcp.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/commands/model.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/commands/result.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/commands/sessions.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/commands/theme.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/config.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/content/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/content/input_history.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/content/skills_catalog.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/entry.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/goals/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/goals/middleware.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/goals/model.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/goals/runtime.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/goals/steering.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/goals/store.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/goals/tools.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/checkpoint_seed.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/codex_history.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/codex_import.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/codex_sessions.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/herdr.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/http_clients.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/llm_openai_compat.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/llm_openai_websocket.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/mcp_client.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/openai_oauth.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/integrations/openai_oauth_middleware.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/memory/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/memory/auto_recorder.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/memory/embedder.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/memory/long_term.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/models/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/models/config.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/models/helpers.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/models/profile.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/models/registry.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/models_registry.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/observability/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/observability/debug_inspector.html +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/observability/debug_server.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/observability/exit_trace.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/observability/heap_dump.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/observability/llm_debug.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/observability/startup_trace.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/planner/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/planner/task_planner.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/projects/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/projects/catalog.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/rag/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/rag/knowledge_base.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/agent_loop/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/agent_loop/model.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/async_runtime.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/cancellation.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/context_compact.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/debug_capture_middleware.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/execute_capture.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/filesystem_tool_prompt_middleware.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/fs_permissions.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/harness.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/hitl.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/interaction_ledger.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/middleware.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/model_request_compression_middleware.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/pathing.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/projects/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/projects/identity.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/projects/runtime.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/safety.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/session_prewarm.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/sessions/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/sessions/events.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/sessions/manager.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/sessions/ref.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/steer.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/streaming/accumulator.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/streaming/protocol.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/streaming/runtime.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/streaming/stream_events.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/token_rate.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/tool_ignore.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/tool_output_eval.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/tool_output_middleware.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/tool_output_usage_middleware.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/runtime/tool_response_truncate_middleware.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/sessions/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/sessions/cancel_repair.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/sessions/search_index.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/sessions/store.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/sessions/summary.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/sessions/transcript.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/sessions/transcript_migration.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/sessions/transcript_projection.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/settings/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tool_output/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tool_output/detection.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tool_output/metrics.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tool_output/models.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tool_output/pipeline.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tool_output/repository.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tool_output/transformers.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tools/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tools/describe_image.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tools/filesystem_patch.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tools/filesystem_search.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/tools/session_tools.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/agent_lifecycle.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/answer_divider.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/components/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/components/codex_usage.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/components/fast.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/components/goal.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/components/key_hints.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/components/mcp.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/components/mode.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/components/model.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/components/thread.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/context.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/bottombar/core.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/chrome/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/clipboard.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/active_session_switcher.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/codex_reset.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/codex_session_list.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/compression_diagnostics.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/git_explore.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/mcp_panel.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/safety_panel.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/session_list.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/theme_designer.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/dialogs/theme_picker.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/drawer.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/formatters.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/git_explore/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/git_explore/engine.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/git_explore/provider.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/git_explore/unified.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/image_preview.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/image_render.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/math_image.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/mermaid_image.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/rendering.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/selectable_static.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/sink.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/status_controller.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/steer_controller.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/stream.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/stream_events.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/stream_runtime.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/textual_lifecycle.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/theme.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/theme_controller.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/components/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/components/branch.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/components/title.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/components/tool_output.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/components/usage.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/components/workspace.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/context.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/core.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/git_changes_popover.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/git_chrome.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/tool_output_popover.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/topbar/widget.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/transcript/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/transcript/factory.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/transcript/history.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/transcript/state.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/tui_launch.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/turn/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/turn_rail.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/turn_rail_widgets.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/user_turn.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/user_turn_block.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/ui/welcome.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/src/synapse/web.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/synapse.cmd +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/__init__.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/acp/initialize.jsonl +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/agent_stream/core_scenarios.json +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/codex_rollouts/duplicate_response_item.jsonl +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/codex_rollouts/incomplete_and_aborted.jsonl +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/codex_rollouts/legacy_compaction.jsonl +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/codex_rollouts/normal_completed.jsonl +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/codex_rollouts/replacement_history.jsonl +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/codex_rollouts/rollback.jsonl +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/codex_rollouts/unsupported_replacement.jsonl +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/sample_repo/calculator.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/sample_repo/test_calculator.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/fixtures/tool_output_eval.json +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p0_baseline.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p1_core.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p1_transport.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p2_content.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p2_events.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p2_updates.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p3_agent.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p3_permissions.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p4_history.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p4_lifecycle.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p5_mcp.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p6_client_services.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_acp_p8_compliance.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_agent_lifecycle.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_async_checkpointer.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_bottombar_registry.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_cancel_repair.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_checkpoint_seed.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_cli.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_cli_codex_import.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_codex_history.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_codex_import.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_codex_sessions.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_codex_sessions_windows.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_compact_tool_descriptions.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_context_compact.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_context_window.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_debug_capture_middleware.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_debug_inspector.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_entry.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_filesystem_patch_tool.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_filesystem_search_tools.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_git_changes_popover.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_git_chrome.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_git_explore.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_goal_live_tui.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_heap_dump.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_herdr_integration.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_http_clients.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_image_render.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_image_viewer.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_input_history.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_iteration_abc.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_math_image_render.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_mcp_schema.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_mermaid_image.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_mermaid_render.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_middleware_async.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_model_request_compression_middleware.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_model_retry.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_multimodal.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_native_math_render.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_openai_compat_reasoning.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_openai_oauth.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_openai_oauth_middleware.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_openai_usage.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_openai_websocket.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_pathing.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_project_catalog.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_project_drawer.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_project_runtime.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_project_switch.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_runtime_hardening.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_runtime_manager.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_runtime_streaming.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_safety.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_search_index.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_session_prewarm.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_session_store.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_session_summary.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_slash_effects.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_startup_defer.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_startup_trace.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_steer.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_steer_controller.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_stream_cancel.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_stream_semantic_fixtures.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_stream_ui.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_subagent_status.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_textual_stream_sink.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_theme.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_theme_controller.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_token_rate.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_tool_ignore.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_tool_intent.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_tool_output.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_tool_output_eval.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_tool_output_slash.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_tool_output_usage_middleware.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_tool_response_truncate_middleware.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_topbar_context_ratio.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_topbar_registry.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_transcript.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_transcript_history.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_transcript_history_controller.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_transcript_migration.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_transcript_projection.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_tui_active_session_switcher.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_tui_codex_import.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_tui_selection.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_turn_rail_minimap.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_usage_restore.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_user_turn_style.py +0 -0
- {synapse_cli_agent-0.1.32 → synapse_cli_agent-0.1.34}/tests/test_welcome.py +0 -0
- {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.
|
|
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中间件栈 / 工具输出变换管道 /
|
|
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.
|
|
89
|
-
├─ 12.
|
|
90
|
-
├─ 13.
|
|
91
|
-
├─ 14.
|
|
92
|
-
├─ 15.
|
|
93
|
-
├─ 16.
|
|
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
|
-
└─
|
|
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, ←
|
|
99
|
+
middleware=middleware, ← 14个中间件
|
|
101
100
|
memory=memory_paths, skills=skills_paths,
|
|
102
|
-
subagents=
|
|
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
|
-
|
|
165
|
-
|
|
|
166
|
-
|
|
|
167
|
-
|
|
|
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
|
|
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 →
|
|
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
|
|
370
|
+
### 7.2 子 Agent 调度(deepagents 原生 SubAgentMiddleware)
|
|
373
371
|
|
|
374
372
|
```
|
|
375
|
-
|
|
376
|
-
1.
|
|
377
|
-
2.
|
|
378
|
-
|
|
379
|
-
|
|
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
|
-
|
|
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)
|
|
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:
|
|
574
|
-
│ reviewer
|
|
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
|
|
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.
|
|
112
|
-
│ │ │ 13.
|
|
113
|
-
│ │ │ 14.
|
|
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:
|
|
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
|
-
│ │
|
|
134
|
-
│ │
|
|
135
|
-
│ │
|
|
136
|
-
│ │ │
|
|
137
|
-
│ │
|
|
138
|
-
│ │ │
|
|
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
|
-
│ │
|
|
142
|
-
│ │
|
|
143
|
-
│ │
|
|
144
|
-
│ │
|
|
145
|
-
│ │
|
|
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
|
-
├─
|
|
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
|
-
│ └→
|
|
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
|
-
|
|
|
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
|
|
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`, `/
|
|
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.
|
|
720
|
-
13.
|
|
721
|
-
14.
|
|
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
|
|
947
|
+
### 子 Agent 委派流程
|
|
963
948
|
|
|
964
949
|
```
|
|
965
950
|
用户输入: "分析 bug 并写测试和审查修复"
|
|
966
951
|
│
|
|
967
|
-
├─
|
|
968
|
-
│ (
|
|
969
|
-
│
|
|
970
|
-
├─ 适合 → 注入 DAG 规划指令到 system prompt
|
|
952
|
+
├─ build_coding_agent() 把 subagents 传给 create_deep_agent(subagents=...)
|
|
953
|
+
│ (researcher / tester / reviewer, deepagents 原生 SubAgentMiddleware)
|
|
971
954
|
│
|
|
972
|
-
├─
|
|
973
|
-
│ task("researcher", "搜索 bug 原因"
|
|
974
|
-
│ task("tester", "
|
|
975
|
-
│ task("reviewer", "审查修复"
|
|
955
|
+
├─ 模型按需输出 task() tool_calls:
|
|
956
|
+
│ task("researcher", "搜索 bug 原因")
|
|
957
|
+
│ task("tester", "运行测试并诊断失败")
|
|
958
|
+
│ task("reviewer", "审查修复")
|
|
976
959
|
│
|
|
977
|
-
├─
|
|
978
|
-
│ ├─
|
|
979
|
-
│ ├─
|
|
980
|
-
│
|
|
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
|
-
└─
|
|
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
|
|