synapse-cli-agent 0.1.30__tar.gz → 0.1.32__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.30 → synapse_cli_agent-0.1.32}/.github/workflows/release.yml +14 -2
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/.gitignore +3 -0
- synapse_cli_agent-0.1.32/.zed/settings.json +5 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/CHANGELOG.md +35 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/PKG-INFO +50 -6
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/README.md +48 -5
- synapse_cli_agent-0.1.32/docs/acp-adapter/capability-matrix.md +152 -0
- synapse_cli_agent-0.1.32/docs/acp-adapter/decisions.md +117 -0
- synapse_cli_agent-0.1.32/docs/acp-adapter/index.md +232 -0
- synapse_cli_agent-0.1.32/docs/acp-adapter/phase-0-protocol-baseline.md +54 -0
- synapse_cli_agent-0.1.32/docs/acp-adapter/phase-1-core-transport.md +49 -0
- synapse_cli_agent-0.1.32/docs/acp-adapter/phase-2-prompt-semantics.md +44 -0
- synapse_cli_agent-0.1.32/docs/acp-adapter/phase-3-permissions.md +51 -0
- synapse_cli_agent-0.1.32/docs/acp-adapter/phase-4-session-lifecycle.md +48 -0
- synapse_cli_agent-0.1.32/docs/acp-adapter/phase-5-session-mcp.md +52 -0
- synapse_cli_agent-0.1.32/docs/acp-adapter/phase-6-client-services.md +50 -0
- synapse_cli_agent-0.1.32/docs/acp-adapter/phase-7-advanced-capabilities.md +53 -0
- synapse_cli_agent-0.1.32/docs/acp-adapter/phase-8-compliance.md +54 -0
- synapse_cli_agent-0.1.32/docs/acp-adapter/progress.md +205 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/mkdocs.yml +14 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/pyproject.toml +4 -2
- synapse_cli_agent-0.1.32/release_body.md +21 -0
- synapse_cli_agent-0.1.32/src/synapse/acp/__init__.py +45 -0
- synapse_cli_agent-0.1.32/src/synapse/acp/agent.py +1208 -0
- synapse_cli_agent-0.1.32/src/synapse/acp/client_services.py +265 -0
- synapse_cli_agent-0.1.32/src/synapse/acp/content.py +178 -0
- synapse_cli_agent-0.1.32/src/synapse/acp/events.py +173 -0
- synapse_cli_agent-0.1.32/src/synapse/acp/lifecycle.py +384 -0
- synapse_cli_agent-0.1.32/src/synapse/acp/mcp.py +110 -0
- synapse_cli_agent-0.1.32/src/synapse/acp/permissions.py +185 -0
- synapse_cli_agent-0.1.32/src/synapse/acp/server.py +112 -0
- synapse_cli_agent-0.1.32/src/synapse/acp/sessions.py +245 -0
- synapse_cli_agent-0.1.32/src/synapse/acp/updates.py +168 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/cli.py +22 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/entry.py +4 -0
- synapse_cli_agent-0.1.32/src/synapse/integrations/herdr.py +303 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/sessions/runtime.py +17 -1
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/streaming/__init__.py +8 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/streaming/adapters.py +61 -2
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/streaming/events.py +31 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/sessions/transcript_migration.py +54 -21
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/turn/controller.py +127 -28
- synapse_cli_agent-0.1.32/tests/fixtures/acp/initialize.jsonl +2 -0
- synapse_cli_agent-0.1.32/tests/test_acp_p0_baseline.py +126 -0
- synapse_cli_agent-0.1.32/tests/test_acp_p1_core.py +384 -0
- synapse_cli_agent-0.1.32/tests/test_acp_p1_transport.py +305 -0
- synapse_cli_agent-0.1.32/tests/test_acp_p2_content.py +101 -0
- synapse_cli_agent-0.1.32/tests/test_acp_p2_events.py +67 -0
- synapse_cli_agent-0.1.32/tests/test_acp_p2_updates.py +233 -0
- synapse_cli_agent-0.1.32/tests/test_acp_p3_agent.py +262 -0
- synapse_cli_agent-0.1.32/tests/test_acp_p3_permissions.py +208 -0
- synapse_cli_agent-0.1.32/tests/test_acp_p4_history.py +427 -0
- synapse_cli_agent-0.1.32/tests/test_acp_p4_lifecycle.py +296 -0
- synapse_cli_agent-0.1.32/tests/test_acp_p5_mcp.py +194 -0
- synapse_cli_agent-0.1.32/tests/test_acp_p6_client_services.py +279 -0
- synapse_cli_agent-0.1.32/tests/test_acp_p8_compliance.py +155 -0
- synapse_cli_agent-0.1.32/tests/test_herdr_integration.py +238 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_transcript_migration.py +38 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_turn_controller.py +111 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/uv.lock +15 -1
- synapse_cli_agent-0.1.30/release_body.md +0 -13
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/.dockerignore +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/.github/workflows/ci.yml +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/.github/workflows/docs.yml +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/.github/workflows/native-compression-wheels.yml +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/.github/workflows/native-core-tool-wheels.yml +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/.python-version +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/.readthedocs.yaml +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/AGENTS.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/Dockerfile.web +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/LICENSE +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/README.zh-CN.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/agent-studio-prototype/favicon.svg +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/agent-studio-prototype/index.html +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/agent-studio-prototype/script.js +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/agent-studio-prototype/styles.css +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/agent_upstream.txt +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/assets/demo.gif +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/assets/synapse-logo.svg +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/assets/tui-preview.png +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/cli_upstream.txt +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/debug_compact.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/decode_screenshot.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/agent-development-guide.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/agent-runtime-decoupling/baseline-report.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/agent-runtime-decoupling/decisions.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/agent-runtime-decoupling/index.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/agent-runtime-decoupling/migration.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/agent-runtime-decoupling/phase-0-baseline.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/agent-runtime-decoupling/phase-1-streaming-core.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/agent-runtime-decoupling/phase-2-turn-runtime.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/agent-runtime-decoupling/phase-3-tui-cutover.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/agent-runtime-decoupling/phase-4-session-runtime.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/agent-runtime-decoupling/phase-5-multi-session.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/agent-runtime-decoupling/phase-6-project-runtime.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/agent-runtime-decoupling/phase-7-global-control-plane.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/agent-runtime-decoupling/phase-8-hardening.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/agent-runtime-decoupling/post-review-fix-plan.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/agent-runtime-decoupling/progress.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/architecture-flow.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/architecture.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/cli.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/codex-session-discovery-phase-1.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/codex-session-import-phase-2.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/config.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/design.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/docker-web.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/index.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/install.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/math-formulas-test.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/mcp.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/models.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/native-compression-core.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/native-core-tool.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/permissions.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/quickstart.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/sessions.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/skills.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/smith_output.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/subagent-architecture-survey.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/tool-output-transform.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/tui-cursor-refactor.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/tutorial.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/docs/x-agent-development-guide.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/examples/mcp.example.json +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/examples/models.example.json +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/examples/settings.example.json +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/middleware_upstream.txt +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-core-tool/Cargo.lock +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-core-tool/Cargo.toml +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-core-tool/LICENSE +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-core-tool/NOTICE +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-core-tool/README.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-core-tool/pyproject.toml +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-core-tool/python/synapse_core_tool/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-core-tool/src/file_access.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-core-tool/src/file_tools.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-core-tool/src/lib.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-core-tool/src/math_render.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-core-tool/src/search.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-core-tool/uv.lock +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/Cargo.lock +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/Cargo.toml +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/LICENSE +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/NOTICE +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/README.md +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/pyproject.toml +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/python/synapse_tool_compress_core/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/ccr.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/ccr_in_memory.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/mod.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/relevance/base.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/relevance/bm25.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/signals/keyword_detector.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/signals/line_importance.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/adaptive_sizer.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/anchor_selector.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/code_compressor.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/diff_compressor.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/log_compressor.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/search_compressor.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/analyzer.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/anchors.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/builder.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/classifier.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/classifier.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/compactor.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/formatter.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/ir.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/mod.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/walker.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/config.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/constraints.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crusher.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crushers.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/error_keywords.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/field_detect.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/hashing.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/mod.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/observer.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/orchestration.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/outliers.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/planning.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/statistics.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/stats_math.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/traits.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/types.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/rust/synapse-tool-compress-core/src/lib.rs +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/scripts/install.ps1 +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/scripts/release.ps1 +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/scripts/serve_web.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/slash_cmds_upstream.txt +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/__main__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/app/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/app/agent.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/app/agent_assembly.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/app/agent_md.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/commands/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/commands/compression.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/commands/goal.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/commands/helpers.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/commands/mcp.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/commands/model.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/commands/result.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/commands/sessions.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/commands/slash_cmds.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/commands/slash_complete.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/commands/theme.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/config.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/content/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/content/input_history.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/content/multimodal.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/content/prompts.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/content/skills_catalog.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/goals/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/goals/middleware.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/goals/model.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/goals/runtime.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/goals/steering.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/goals/store.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/goals/tools.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/integrations/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/integrations/checkpoint_seed.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/integrations/codex_history.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/integrations/codex_import.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/integrations/codex_sessions.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/integrations/describe_image.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/integrations/http_clients.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/integrations/llm_openai_compat.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/integrations/llm_openai_websocket.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/integrations/mcp_client.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/integrations/openai_oauth.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/integrations/openai_oauth_middleware.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/integrations/openai_usage.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/integrations/vision_middleware.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/memory/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/memory/auto_recorder.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/memory/embedder.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/memory/long_term.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/models/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/models/config.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/models/helpers.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/models/profile.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/models/registry.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/models_registry.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/observability/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/observability/debug_inspector.html +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/observability/debug_server.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/observability/exit_trace.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/observability/heap_dump.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/observability/llm_debug.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/observability/startup_trace.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/parallel_subagents.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/planner/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/planner/task_planner.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/projects/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/projects/catalog.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/rag/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/rag/knowledge_base.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/agent_loop/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/agent_loop/model.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/agent_loop/request.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/agent_loop/turn.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/async_runtime.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/backends.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/cancellation.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/context_compact.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/debug_capture_middleware.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/execute_capture.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/filesystem_tool_prompt_middleware.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/fs_permissions.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/harness.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/hitl.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/interaction_ledger.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/middleware.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/model_request_compression_middleware.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/pathing.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/projects/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/projects/identity.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/projects/runtime.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/safety.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/session_prewarm.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/sessions/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/sessions/events.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/sessions/manager.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/sessions/persistence.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/sessions/ref.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/steer.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/streaming/accumulator.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/streaming/parser.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/streaming/protocol.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/streaming/runtime.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/streaming/stream_events.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/streaming/tool_model.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/subagent_routing.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/subagents.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/timeline.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/token_rate.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/tool_ignore.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/tool_output_eval.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/tool_output_middleware.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/tool_output_usage_middleware.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/runtime/tool_response_truncate_middleware.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/sessions/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/sessions/cancel_repair.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/sessions/search_index.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/sessions/store.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/sessions/summary.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/sessions/transcript.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/sessions/transcript_projection.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/settings/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/settings/config_paths.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/settings/schema.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/subagent_monitor.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/subagents.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/tool_output/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/tool_output/detection.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/tool_output/metrics.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/tool_output/models.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/tool_output/pipeline.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/tool_output/repository.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/tool_output/transformers.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/tools/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/tools/describe_image.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/tools/filesystem_patch.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/tools/filesystem_search.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/tools/session_tools.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/agent_lifecycle.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/answer_divider.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/bottombar/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/bottombar/components/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/bottombar/components/codex_usage.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/bottombar/components/fast.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/bottombar/components/goal.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/bottombar/components/key_hints.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/bottombar/components/mcp.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/bottombar/components/mode.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/bottombar/components/model.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/bottombar/components/thread.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/bottombar/context.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/bottombar/core.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/chrome/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/chrome/controller.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/clipboard.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/dialogs/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/dialogs/active_session_switcher.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/dialogs/base.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/dialogs/codex_reset.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/dialogs/codex_session_list.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/dialogs/compression_diagnostics.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/dialogs/controller.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/dialogs/git_explore.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/dialogs/mcp_panel.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/dialogs/model_picker.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/dialogs/safety_panel.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/dialogs/session_list.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/dialogs/subagent_monitor.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/dialogs/theme_designer.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/dialogs/theme_picker.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/drawer.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/formatters.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/git_explore/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/git_explore/engine.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/git_explore/provider.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/git_explore/unified.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/image_preview.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/image_render.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/image_viewer.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/math_image.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/mermaid_image.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/prompt_controller.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/rendering.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/selectable_static.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/selectable_text.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/sink.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/status_controller.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/steer_controller.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/steer_widget.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/stream.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/stream_events.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/stream_runtime.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/subagent_status_bar.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/textual_lifecycle.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/textual_stream_sink.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/theme.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/theme_controller.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/timeline.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/tool_blocks.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/topbar/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/topbar/components/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/topbar/components/branch.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/topbar/components/title.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/topbar/components/tool_output.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/topbar/components/usage.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/topbar/components/workspace.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/topbar/context.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/topbar/core.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/topbar/git_changes_popover.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/topbar/git_chrome.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/topbar/tool_output_popover.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/topbar/widget.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/transcript/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/transcript/controller.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/transcript/factory.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/transcript/history.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/transcript/state.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/transcript_blocks.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/tui.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/tui_launch.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/tui_styles.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/turn/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/turn/event_bridge.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/turn/event_renderer.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/turn/persistence.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/turn/request.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/turn_rail.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/turn_rail_widgets.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/user_turn.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/user_turn_block.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/ui/welcome.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/src/synapse/web.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/synapse.cmd +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/__init__.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/fixtures/agent_stream/core_scenarios.json +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/fixtures/codex_rollouts/duplicate_response_item.jsonl +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/fixtures/codex_rollouts/incomplete_and_aborted.jsonl +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/fixtures/codex_rollouts/legacy_compaction.jsonl +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/fixtures/codex_rollouts/normal_completed.jsonl +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/fixtures/codex_rollouts/replacement_history.jsonl +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/fixtures/codex_rollouts/rollback.jsonl +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/fixtures/codex_rollouts/unsupported_replacement.jsonl +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/fixtures/sample_repo/calculator.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/fixtures/sample_repo/test_calculator.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/fixtures/tool_output_eval.json +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_agent_factory.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_agent_lifecycle.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_agent_turn_runtime.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_async_checkpointer.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_backends.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_bottombar_registry.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_cancel_repair.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_capabilities.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_checkpoint_seed.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_chrome_controller.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_cli.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_cli_codex_import.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_codex_history.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_codex_import.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_codex_sessions.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_codex_sessions_windows.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_compact_tool_descriptions.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_config.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_context_compact.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_context_window.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_dag_parallel.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_debug_capture_middleware.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_debug_inspector.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_describe_image.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_dialogs.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_entry.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_filesystem_patch_tool.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_filesystem_search_tools.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_git_changes_popover.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_git_chrome.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_git_explore.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_goal_live_tui.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_goals.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_heap_dump.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_http_clients.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_image_render.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_image_viewer.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_input_history.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_iteration_abc.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_layered_config.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_math_image_render.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_mcp_schema.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_mermaid_image.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_mermaid_render.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_middleware_async.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_model_request_compression_middleware.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_model_retry.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_multimodal.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_native_math_render.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_openai_compat_reasoning.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_openai_oauth.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_openai_oauth_middleware.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_openai_usage.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_openai_websocket.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_pathing.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_project_catalog.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_project_drawer.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_project_runtime.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_project_switch.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_prompt_controller.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_prompts.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_runtime_hardening.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_runtime_manager.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_runtime_streaming.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_safety.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_search_index.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_session_prewarm.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_session_runtime.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_session_store.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_session_summary.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_slash_and_mcp.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_slash_complete.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_slash_effects.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_startup_defer.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_startup_trace.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_steer.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_steer_controller.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_stream_cancel.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_stream_semantic_fixtures.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_stream_tool_items.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_stream_ui.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_subagent_monitor_dialog.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_subagent_status.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_textual_stream_sink.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_theme.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_theme_controller.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_timeline.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_token_rate.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_tool_ignore.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_tool_intent.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_tool_output.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_tool_output_eval.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_tool_output_slash.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_tool_output_usage_middleware.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_tool_response_truncate_middleware.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_topbar_context_ratio.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_topbar_registry.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_transcript.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_transcript_controller.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_transcript_history.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_transcript_history_controller.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_transcript_projection.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_tui_active_session_switcher.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_tui_codex_import.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_tui_selection.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_turn_event_renderer.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_turn_rail_minimap.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_turn_request.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_usage_restore.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_user_turn_style.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/test_welcome.py +0 -0
- {synapse_cli_agent-0.1.30 → synapse_cli_agent-0.1.32}/tests/tool_output_plugin_fixture.py +0 -0
|
@@ -63,14 +63,17 @@ jobs:
|
|
|
63
63
|
- name: windows
|
|
64
64
|
os: windows-latest
|
|
65
65
|
artifact: executable-windows
|
|
66
|
+
binname: synapse-windows-x64.exe
|
|
66
67
|
# macOS executables target Apple Silicon only; Intel macOS is unsupported
|
|
67
68
|
# (matches the native-core-tool wheels matrix).
|
|
68
69
|
- name: macos
|
|
69
70
|
os: macos-latest
|
|
70
71
|
artifact: executable-macos
|
|
72
|
+
binname: synapse-macos-arm64
|
|
71
73
|
- name: linux
|
|
72
74
|
os: ubuntu-latest
|
|
73
75
|
artifact: executable-linux
|
|
76
|
+
binname: synapse-linux-x64
|
|
74
77
|
steps:
|
|
75
78
|
- uses: actions/checkout@v4
|
|
76
79
|
|
|
@@ -100,15 +103,24 @@ jobs:
|
|
|
100
103
|
--collect-all texicode `
|
|
101
104
|
src/synapse/entry.py
|
|
102
105
|
|
|
106
|
+
- name: Rename executable for artifact
|
|
107
|
+
shell: pwsh
|
|
108
|
+
run: |
|
|
109
|
+
$ext = if ($env:RUNNER_OS -eq 'Windows') { '.exe' } else { '' }
|
|
110
|
+
# Rename-Item refuses a destination that contains a path separator
|
|
111
|
+
# (pwsh treats it as a device path); Move-Item -LiteralPath is safe.
|
|
112
|
+
Move-Item -LiteralPath "dist/synapse$ext" -Destination "dist/${{ matrix.binname }}"
|
|
113
|
+
Write-Host "Renamed to ${{ matrix.binname }}"
|
|
114
|
+
|
|
103
115
|
- name: Fix executable permission (Unix)
|
|
104
116
|
if: runner.os != 'Windows'
|
|
105
|
-
run: chmod +x dist
|
|
117
|
+
run: chmod +x "dist/${{ matrix.binname }}"
|
|
106
118
|
|
|
107
119
|
- name: Upload executable artifact
|
|
108
120
|
uses: actions/upload-artifact@v4
|
|
109
121
|
with:
|
|
110
122
|
name: ${{ matrix.artifact }}
|
|
111
|
-
path: dist
|
|
123
|
+
path: dist/${{ matrix.binname }}
|
|
112
124
|
if-no-files-found: error
|
|
113
125
|
|
|
114
126
|
release:
|
|
@@ -8,6 +8,41 @@ All entries are written in English.
|
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
+
## v0.1.32
|
|
12
|
+
|
|
13
|
+
### New Features
|
|
14
|
+
|
|
15
|
+
- Added the ACP v1 adapter: a full agent collaboration protocol server exposing session lifecycle, permissions, content/prompt handling, per-session MCP servers, client services, and streaming plan/diff events. See `docs/acp-adapter/` for the capability matrix and phase documentation.
|
|
16
|
+
- ACP provider management and model selection: clients can manage providers, select the active model per session, and send image prompts.
|
|
17
|
+
- ACP sessions are bridged to the project-level TUI session store, so TUI and ACP clients share the same per-project recent-session history.
|
|
18
|
+
- The herdr integration now reports agent lifecycle state (startup, turn, shutdown) to the herdr backend.
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
- Fixed ACP ignoring the project's `mcp.json`: project MCP servers are now always merged with MCP servers supplied by the client.
|
|
23
|
+
- Fixed placeholder-titled sessions staying invisible in the TUI recent-sessions view: listing ACP sessions now repairs sessions created before the TUI bridge existed, and Zed's global history request (without `cwd`) includes TUI sessions through the user-level project projection.
|
|
24
|
+
- Fixed the transcript projection migration worker failing under the packaged Windows executable: frozen builds now route through a hidden `transcript-migration-worker` CLI subcommand instead of `python -m ... --worker`.
|
|
25
|
+
|
|
26
|
+
### Engineering
|
|
27
|
+
|
|
28
|
+
- Extracted the shared `run_transcript_migration_worker` worker body so source installs and frozen binaries execute identical migration logic.
|
|
29
|
+
- Extended ACP bridge and migration tests to cover placeholder-title repair, global history merging, and the frozen worker command path.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## v0.1.31
|
|
34
|
+
|
|
35
|
+
### New Features
|
|
36
|
+
|
|
37
|
+
- The `Ctrl+O` / `Ctrl+Tab` recent-sessions switcher now lists the most recently changed sessions across every registered project (from the user-layer catalog) instead of current-project history only, and marks each row's live runtime status (`running` / `queued` / `idle` / `cold`, etc.). Sessions without an in-process runtime are shown as cold history, and the list degrades gracefully to the legacy view when the catalog is unavailable.
|
|
38
|
+
|
|
39
|
+
### Bug Fixes
|
|
40
|
+
|
|
41
|
+
- Fixed the standalone Windows executable exiting immediately after launch: the PyInstaller entry script only defined `main()` without invoking it, so the packaged binary ran the top-level code and quit. `synapse.entry` now has an `if __name__ == "__main__"` guard and the packaged executable runs the CLI correctly.
|
|
42
|
+
- Fixed the release executable assets: the Linux and macOS binaries shared the same filename (`synapse`) and overwrote each other when merged into the release. Each platform is now uploaded under a distinct name: `synapse-windows-x64.exe`, `synapse-macos-arm64`, and `synapse-linux-x64`.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
11
46
|
## v0.1.30
|
|
12
47
|
|
|
13
48
|
### 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.32
|
|
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
|
|
@@ -199,6 +199,7 @@ License: Apache License
|
|
|
199
199
|
limitations under the License.
|
|
200
200
|
License-File: LICENSE
|
|
201
201
|
Requires-Python: >=3.12
|
|
202
|
+
Requires-Dist: agent-client-protocol==0.12.0
|
|
202
203
|
Requires-Dist: aiosqlite==0.22.1
|
|
203
204
|
Requires-Dist: deepagents==0.6.12
|
|
204
205
|
Requires-Dist: httpx[socks]==0.28.1
|
|
@@ -286,11 +287,13 @@ floating project drawer: it lists every registered project, groups their
|
|
|
286
287
|
sessions, marks live runtime status, and lets you switch sessions in place or
|
|
287
288
|
jump to another project (the TUI restarts into that project).
|
|
288
289
|
|
|
289
|
-
Press `Ctrl+Tab` for a
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
290
|
+
Press `Ctrl+Tab` for a global recent-sessions switcher: it lists the most
|
|
291
|
+
recently changed sessions across every registered project (from the user-layer
|
|
292
|
+
catalog), marks each one's live runtime status — `running` / `queued` /
|
|
293
|
+
`idle` / `cold`, etc. — lets you `Tab` / `Shift+Tab` through them and `Enter`
|
|
294
|
+
to switch. The old session keeps running in the background and is never
|
|
295
|
+
cancelled. Some terminals never forward `Ctrl+Tab` to the app; `Ctrl+O` is a
|
|
296
|
+
drop-in alternative.
|
|
294
297
|
|
|
295
298
|
<details>
|
|
296
299
|
<summary><b>Or run from source</b></summary>
|
|
@@ -358,6 +361,46 @@ Type `/help` in the TUI for the full reference. The essentials:
|
|
|
358
361
|
| `/safety <profile>` | Switch safety profiles |
|
|
359
362
|
| `/approve` · `/reject` | Human-in-the-loop decisions |
|
|
360
363
|
|
|
364
|
+
## ACP v1 adapter
|
|
365
|
+
|
|
366
|
+
The package also installs the standalone `synapse-acp` stdio entry point. It
|
|
367
|
+
uses the locked `agent-client-protocol==0.12.0` dependency and keeps stdout
|
|
368
|
+
reserved for ACP JSON-RPC; diagnostics go to stderr.
|
|
369
|
+
|
|
370
|
+
```bash
|
|
371
|
+
# Run from an installed package
|
|
372
|
+
synapse-acp
|
|
373
|
+
|
|
374
|
+
# Run from a source checkout
|
|
375
|
+
uv run synapse-acp
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
For a client such as Zed, configure the ACP agent as a subprocess whose command
|
|
379
|
+
is `synapse-acp` (or the absolute path to that executable). The adapter accepts
|
|
380
|
+
absolute `cwd` values and session-scoped MCP servers. MCP credentials are used
|
|
381
|
+
only for the live session and are not written to the ACP catalog or transcript.
|
|
382
|
+
|
|
383
|
+
The published capability set currently covers text prompts, image prompts,
|
|
384
|
+
permission/HITL, session load/list/close/delete/resume, session-local
|
|
385
|
+
mode/config, HTTP/SSE MCP configuration, model selection via
|
|
386
|
+
`providers/list`/`providers/set`, and capability-gated Client filesystem/
|
|
387
|
+
terminal tools. Thinking level maps directly to Synapse levels (`off`,
|
|
388
|
+
`minimal`, `low`, `medium`, `high`, `max`). Audio, embedded-context,
|
|
389
|
+
authentication/logout, elicitation, NES, and document-sync capabilities are
|
|
390
|
+
not advertised until their runtime semantics and interoperability tests exist.
|
|
391
|
+
|
|
392
|
+
Troubleshooting:
|
|
393
|
+
|
|
394
|
+
- stdout is reserved for ACP JSON-RPC; any log line on stdout breaks the
|
|
395
|
+
protocol. Logs and startup traces go to stderr.
|
|
396
|
+
- `cwd` and `additionalDirectories` must be absolute paths; relative paths are
|
|
397
|
+
rejected with an ACP error.
|
|
398
|
+
- Session metadata lives in `~/.synapse/acp-sessions.sqlite`; MCP credentials
|
|
399
|
+
and headers are never persisted there.
|
|
400
|
+
- If a client reports "Method not found", verify it negotiates the same ACP
|
|
401
|
+
protocol version and does not rely on `not_target` methods (auth, providers,
|
|
402
|
+
elicitation, NES, document sync).
|
|
403
|
+
|
|
361
404
|
## Pick a model
|
|
362
405
|
|
|
363
406
|
Synapse works with any OpenAI-compatible endpoint. Configure profiles in `~/.synapse/models.json` (or `<workspace>/.synapse/models.json`):
|
|
@@ -390,6 +433,7 @@ For a zero-config Codex experience, use the OAuth profile — see [Models](docs/
|
|
|
390
433
|
| [Skills](docs/skills.md) | Bundled skills and the Agent Skills format |
|
|
391
434
|
| [Permissions](docs/permissions.md) | Read-only mode and approval flows |
|
|
392
435
|
| [Install](docs/install.md) | All installation methods |
|
|
436
|
+
| [ACP adapter](docs/acp-adapter/index.md) | ACP v1 setup, capability matrix, limitations, and verification status |
|
|
393
437
|
|
|
394
438
|
## Repository layout
|
|
395
439
|
|
|
@@ -55,11 +55,13 @@ floating project drawer: it lists every registered project, groups their
|
|
|
55
55
|
sessions, marks live runtime status, and lets you switch sessions in place or
|
|
56
56
|
jump to another project (the TUI restarts into that project).
|
|
57
57
|
|
|
58
|
-
Press `Ctrl+Tab` for a
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
58
|
+
Press `Ctrl+Tab` for a global recent-sessions switcher: it lists the most
|
|
59
|
+
recently changed sessions across every registered project (from the user-layer
|
|
60
|
+
catalog), marks each one's live runtime status — `running` / `queued` /
|
|
61
|
+
`idle` / `cold`, etc. — lets you `Tab` / `Shift+Tab` through them and `Enter`
|
|
62
|
+
to switch. The old session keeps running in the background and is never
|
|
63
|
+
cancelled. Some terminals never forward `Ctrl+Tab` to the app; `Ctrl+O` is a
|
|
64
|
+
drop-in alternative.
|
|
63
65
|
|
|
64
66
|
<details>
|
|
65
67
|
<summary><b>Or run from source</b></summary>
|
|
@@ -127,6 +129,46 @@ Type `/help` in the TUI for the full reference. The essentials:
|
|
|
127
129
|
| `/safety <profile>` | Switch safety profiles |
|
|
128
130
|
| `/approve` · `/reject` | Human-in-the-loop decisions |
|
|
129
131
|
|
|
132
|
+
## ACP v1 adapter
|
|
133
|
+
|
|
134
|
+
The package also installs the standalone `synapse-acp` stdio entry point. It
|
|
135
|
+
uses the locked `agent-client-protocol==0.12.0` dependency and keeps stdout
|
|
136
|
+
reserved for ACP JSON-RPC; diagnostics go to stderr.
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
# Run from an installed package
|
|
140
|
+
synapse-acp
|
|
141
|
+
|
|
142
|
+
# Run from a source checkout
|
|
143
|
+
uv run synapse-acp
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
For a client such as Zed, configure the ACP agent as a subprocess whose command
|
|
147
|
+
is `synapse-acp` (or the absolute path to that executable). The adapter accepts
|
|
148
|
+
absolute `cwd` values and session-scoped MCP servers. MCP credentials are used
|
|
149
|
+
only for the live session and are not written to the ACP catalog or transcript.
|
|
150
|
+
|
|
151
|
+
The published capability set currently covers text prompts, image prompts,
|
|
152
|
+
permission/HITL, session load/list/close/delete/resume, session-local
|
|
153
|
+
mode/config, HTTP/SSE MCP configuration, model selection via
|
|
154
|
+
`providers/list`/`providers/set`, and capability-gated Client filesystem/
|
|
155
|
+
terminal tools. Thinking level maps directly to Synapse levels (`off`,
|
|
156
|
+
`minimal`, `low`, `medium`, `high`, `max`). Audio, embedded-context,
|
|
157
|
+
authentication/logout, elicitation, NES, and document-sync capabilities are
|
|
158
|
+
not advertised until their runtime semantics and interoperability tests exist.
|
|
159
|
+
|
|
160
|
+
Troubleshooting:
|
|
161
|
+
|
|
162
|
+
- stdout is reserved for ACP JSON-RPC; any log line on stdout breaks the
|
|
163
|
+
protocol. Logs and startup traces go to stderr.
|
|
164
|
+
- `cwd` and `additionalDirectories` must be absolute paths; relative paths are
|
|
165
|
+
rejected with an ACP error.
|
|
166
|
+
- Session metadata lives in `~/.synapse/acp-sessions.sqlite`; MCP credentials
|
|
167
|
+
and headers are never persisted there.
|
|
168
|
+
- If a client reports "Method not found", verify it negotiates the same ACP
|
|
169
|
+
protocol version and does not rely on `not_target` methods (auth, providers,
|
|
170
|
+
elicitation, NES, document sync).
|
|
171
|
+
|
|
130
172
|
## Pick a model
|
|
131
173
|
|
|
132
174
|
Synapse works with any OpenAI-compatible endpoint. Configure profiles in `~/.synapse/models.json` (or `<workspace>/.synapse/models.json`):
|
|
@@ -159,6 +201,7 @@ For a zero-config Codex experience, use the OAuth profile — see [Models](docs/
|
|
|
159
201
|
| [Skills](docs/skills.md) | Bundled skills and the Agent Skills format |
|
|
160
202
|
| [Permissions](docs/permissions.md) | Read-only mode and approval flows |
|
|
161
203
|
| [Install](docs/install.md) | All installation methods |
|
|
204
|
+
| [ACP adapter](docs/acp-adapter/index.md) | ACP v1 setup, capability matrix, limitations, and verification status |
|
|
162
205
|
|
|
163
206
|
## Repository layout
|
|
164
207
|
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# ACP v1 能力矩阵(SDK 0.12.0)
|
|
2
|
+
|
|
3
|
+
> 基线日期:2026-08-12
|
|
4
|
+
> Python 包:`agent-client-protocol==0.12.0`
|
|
5
|
+
> wire protocol:`1`
|
|
6
|
+
> 依据:本地安装包 `acp.AGENT_METHODS`、`acp.CLIENT_METHODS`、`acp.schema` 及其字段描述。
|
|
7
|
+
> 状态:P0-P7 本地可验证范围已收口,矩阵无未解释项(`planned`/`in_progress` 均已清零);P8 真实互通与全量门禁进行中。`verified` 仅表示已有对应专项测试证据,`implemented` 不代表真实 MCP/Zed 互通已验收。
|
|
8
|
+
|
|
9
|
+
## 1. 状态定义
|
|
10
|
+
|
|
11
|
+
| 状态 | 含义 |
|
|
12
|
+
|---|---|
|
|
13
|
+
| `planned` | 已纳入完整目标,尚未实现 |
|
|
14
|
+
| `in_progress` | 当前阶段正在实现 |
|
|
15
|
+
| `implemented` | handler 和必要语义已实现,但尚未完成最终合规门禁 |
|
|
16
|
+
| `verified` | 已通过对应协议、错误、取消和资源测试 |
|
|
17
|
+
| `not_target` | 明确不属于 ACP v1 stable;仅在升级目标时重新评审 |
|
|
18
|
+
|
|
19
|
+
原则:未实现能力不得在 `initialize` 中声明。SDK 暴露的方法不等于 Synapse 已实现该能力。
|
|
20
|
+
|
|
21
|
+
## 2. Agent 方法矩阵
|
|
22
|
+
|
|
23
|
+
| ACP method | SDK Agent API | 分类 | 目标阶段 | 当前状态 |
|
|
24
|
+
|---|---|---|---|---|
|
|
25
|
+
| `initialize` | `initialize` | stable required | P1 | verified |
|
|
26
|
+
| `session/new` | `new_session` | stable required | P1 | verified |
|
|
27
|
+
| `session/prompt` | `prompt` | stable required | P1/P2 | verified |
|
|
28
|
+
| `session/cancel` | `cancel` | stable required | P1/P3 | verified |
|
|
29
|
+
| `session/load` | `load_session` | stable capability | P4 | verified |
|
|
30
|
+
| `session/list` | `list_sessions` | stable capability | P4 | verified |
|
|
31
|
+
| `session/delete` | SDK registry `session_delete` | stable capability | P4 | verified |
|
|
32
|
+
| `session/close` | `close_session` | stable capability | P4 | verified |
|
|
33
|
+
| `session/resume` | `resume_session` | stable capability | P4 | verified |
|
|
34
|
+
| `session/set_mode` | `set_session_mode` | compatibility/stable schema | P7 | implemented |
|
|
35
|
+
| `session/set_config_option` | `set_config_option` | stable schema | P7 | implemented |
|
|
36
|
+
| `authenticate` | `authenticate` | capability-gated | P7 | not_target |
|
|
37
|
+
| `logout` | SDK registry `logout` | capability-gated | P7 | not_target |
|
|
38
|
+
| `session/fork` | `fork_session` | unstable in SDK 0.12.0 | P4 review | implemented |
|
|
39
|
+
| `mcp/message` | `ext_method`/registry | capability/transport-dependent | P5 review | not_target |
|
|
40
|
+
| `providers/list` | `list_providers`(server 路由补注册) | unstable | P7 review | implemented |
|
|
41
|
+
| `providers/set` | `set_provider`(server 路由补注册) | unstable | P7 review | implemented |
|
|
42
|
+
| `providers/disable` | no high-level Agent method | unstable | P7 review | not_target |
|
|
43
|
+
| `nes/start` | no high-level Agent method | unstable | P7 review | not_target |
|
|
44
|
+
| `nes/suggest` | no high-level Agent method | unstable | P7 review | not_target |
|
|
45
|
+
| `nes/accept` | no high-level Agent method | unstable | P7 review | not_target |
|
|
46
|
+
| `nes/reject` | no high-level Agent method | unstable | P7 review | not_target |
|
|
47
|
+
| `nes/close` | no high-level Agent method | unstable | P7 review | not_target |
|
|
48
|
+
| `document/didOpen` | no high-level Agent method | unstable | P7 review | not_target |
|
|
49
|
+
| `document/didChange` | no high-level Agent method | unstable | P7 review | not_target |
|
|
50
|
+
| `document/didClose` | no high-level Agent method | unstable | P7 review | not_target |
|
|
51
|
+
| `document/didSave` | no high-level Agent method | unstable | P7 review | not_target |
|
|
52
|
+
| `document/didFocus` | no high-level Agent method | unstable | P7 review | not_target |
|
|
53
|
+
|
|
54
|
+
说明:SDK 0.12.0 的 `Agent` 类仍提供 `ext_method`/`ext_notification`,但不能把未知或 unstable 方法自动视为已支持。P0 只记录事实,最终是否实现以稳定协议范围和项目能力评审为准。
|
|
55
|
+
|
|
56
|
+
## 3. Agent capabilities 矩阵
|
|
57
|
+
|
|
58
|
+
| Capability | schema 字段 | 目标阶段 | 当前状态 |
|
|
59
|
+
|---|---|---|---|
|
|
60
|
+
| 基础 Agent | `agentCapabilities` | P1 | verified |
|
|
61
|
+
| Session load | `loadSession` | P4 | verified |
|
|
62
|
+
| Prompt image | `promptCapabilities.image` | P2 | implemented |
|
|
63
|
+
| Prompt audio | `promptCapabilities.audio` | P7 review | not_target |
|
|
64
|
+
| Embedded context | `promptCapabilities.embeddedContext` | P2 | not_target |
|
|
65
|
+
| MCP HTTP | `mcpCapabilities.http` | P5 | implemented |
|
|
66
|
+
| MCP SSE | `mcpCapabilities.sse` | P5 review | implemented |
|
|
67
|
+
| MCP ACP | `mcpCapabilities.acp` | P5 review | not_target |
|
|
68
|
+
| Session list | `sessionCapabilities.list` | P4 | verified |
|
|
69
|
+
| Session delete | `sessionCapabilities.delete` | P4 | verified |
|
|
70
|
+
| Additional directories | `sessionCapabilities.additionalDirectories` | P4 | implemented |
|
|
71
|
+
| Session fork | `sessionCapabilities.fork` | P4 review | implemented |
|
|
72
|
+
| Session resume | `sessionCapabilities.resume` | P4 | verified |
|
|
73
|
+
| Session close | `sessionCapabilities.close` | P4 | verified |
|
|
74
|
+
| Authentication | `auth` / `authMethods` | P7 | not_target |
|
|
75
|
+
| Providers | `providers` | P7 review | implemented |
|
|
76
|
+
| Config options | session config option fields | P7 | implemented |
|
|
77
|
+
| NES | `nes` | P7 review | not_target |
|
|
78
|
+
| Position encoding | `positionEncoding` | P7 review | not_target |
|
|
79
|
+
|
|
80
|
+
## 4. Client methods Agent 需要调用
|
|
81
|
+
|
|
82
|
+
| ACP method | SDK Client API | 输入 capability | 目标阶段 | 当前状态 |
|
|
83
|
+
|---|---|---|---|---|
|
|
84
|
+
| `session/update` | `session_update` | 基础 | P2 | verified |
|
|
85
|
+
| `session/request_permission` | `request_permission` | 基础 permission | P3 | verified |
|
|
86
|
+
| `fs/read_text_file` | `read_text_file` | `clientCapabilities.fs.readTextFile` | P6 | implemented |
|
|
87
|
+
| `fs/write_text_file` | `write_text_file` | `clientCapabilities.fs.writeTextFile` | P6 | implemented |
|
|
88
|
+
| `terminal/create` | `create_terminal` | `clientCapabilities.terminal` | P6 | implemented |
|
|
89
|
+
| `terminal/output` | `terminal_output` | `terminal` | P6 | implemented |
|
|
90
|
+
| `terminal/wait_for_exit` | `wait_for_terminal_exit` | `terminal` | P6 | implemented |
|
|
91
|
+
| `terminal/kill` | `kill_terminal` | `terminal` | P6 | implemented |
|
|
92
|
+
| `terminal/release` | `release_terminal` | `terminal` | P6 | implemented |
|
|
93
|
+
| `mcp/connect` | no direct high-level workflow | MCP capability | P5 review | not_target |
|
|
94
|
+
| `mcp/message` | no direct high-level workflow | MCP capability | P5 review | not_target |
|
|
95
|
+
| `mcp/disconnect` | no direct high-level workflow | MCP capability | P5 review | not_target |
|
|
96
|
+
| `elicitation/create` | `create_elicitation` | Client elicitation capability | P7 review | not_target |
|
|
97
|
+
| `elicitation/complete` | `complete_elicitation` | Client elicitation capability | P7 review | not_target |
|
|
98
|
+
|
|
99
|
+
## 5. ContentBlock 矩阵
|
|
100
|
+
|
|
101
|
+
| 类型 | SDK 类型 | Prompt 输入 | Agent 输出/工具内容 | 目标阶段 | 当前状态 |
|
|
102
|
+
|---|---|---:|---:|---|---|
|
|
103
|
+
| `text` | `TextContentBlock` | 必选 | 必选 | P1/P2 | verified |
|
|
104
|
+
| `image` | `ImageContentBlock` | capability | capability | P2 | not_target |
|
|
105
|
+
| `audio` | `AudioContentBlock` | capability | capability | P7 review | not_target |
|
|
106
|
+
| `resource_link` | `ResourceContentBlock` | 必选基线 | tool/content | P2/P4 | verified |
|
|
107
|
+
| `resource` | `EmbeddedResourceContentBlock` | `embeddedContext` | content | P2/P4 | implemented |
|
|
108
|
+
| tool text | `ContentToolCallContent` | - | tool content | P2 | verified |
|
|
109
|
+
| file edit | `FileEditToolCallContent` | - | tool content | P2 | verified |
|
|
110
|
+
| terminal ref | `TerminalToolCallContent` | - | tool content | P6 | implemented |
|
|
111
|
+
|
|
112
|
+
## 6. SessionUpdate 矩阵
|
|
113
|
+
|
|
114
|
+
SDK 0.12.0 的 `SessionNotification.update` 联合类型包括:
|
|
115
|
+
|
|
116
|
+
| `sessionUpdate` | SDK 类型 | 目标阶段 | 当前状态 |
|
|
117
|
+
|---|---|---|---|
|
|
118
|
+
| `user_message_chunk` | `UserMessageChunk` | P2/P4 | implemented |
|
|
119
|
+
| `agent_message_chunk` | `AgentMessageChunk` | P1/P2 | verified |
|
|
120
|
+
| `agent_thought_chunk` | `AgentThoughtChunk` | P2 | verified |
|
|
121
|
+
| `tool_call` | `ToolCallStart` | P2 | verified |
|
|
122
|
+
| `tool_call_update` | `ToolCallProgress` | P2 | verified |
|
|
123
|
+
| `plan` | `AgentPlanUpdate` | P2 | verified |
|
|
124
|
+
| `plan_content` | `AgentPlanContentUpdate` | P2 | not_target |
|
|
125
|
+
| `plan_removed` | `AgentPlanRemovedUpdate` | P2 | verified |
|
|
126
|
+
| `available_commands_update` | `AvailableCommandsUpdate` | P7 | verified |
|
|
127
|
+
| `current_mode_update` | `CurrentModeUpdate` | P7 | verified |
|
|
128
|
+
| `config_option_update` | `ConfigOptionUpdate` | P7 | verified |
|
|
129
|
+
| `session_info_update` | `SessionInfoUpdate` | P4/P7 | verified |
|
|
130
|
+
| `usage_update` | `UsageUpdate` | P2/P7 | verified |
|
|
131
|
+
|
|
132
|
+
## 7. 非 SessionUpdate 输出模型
|
|
133
|
+
|
|
134
|
+
| 模型 | 用途 | 目标阶段 | 当前状态 |
|
|
135
|
+
|---|---|---|---|
|
|
136
|
+
| `PromptResponse` | prompt 终态和可选 usage | P1/P2 | verified |
|
|
137
|
+
| `Usage` | 累计 token usage | P2/P7 | verified |
|
|
138
|
+
| `RequestPermissionResponse` | Client permission 决策 | P3 | verified |
|
|
139
|
+
| `NewSessionResponse` | session ID/config/mode | P1/P7 | verified |
|
|
140
|
+
| `LoadSessionResponse` | load 配置/mode | P4/P7 | verified |
|
|
141
|
+
| `ResumeSessionResponse` | resume 配置/mode | P4/P7 | verified |
|
|
142
|
+
| `ForkSessionResponse` | fork session ID | P4 review | implemented |
|
|
143
|
+
| `ListSessionsResponse` | session page/cursor | P4 | verified |
|
|
144
|
+
| `CloseSessionResponse` | close acknowledgement | P4 | verified |
|
|
145
|
+
|
|
146
|
+
## 8. P0 结论
|
|
147
|
+
|
|
148
|
+
- SDK 版本和 wire protocol 已锁定,满足 P0-01/P0-02。
|
|
149
|
+
- Agent、Client、capability、ContentBlock、SessionUpdate 和响应类型均已登记,满足 P0-03 的事实提取要求。
|
|
150
|
+
- P0-04 的“handler/test 可追溯”在后续实现阶段以本表的目标阶段和测试任务为索引继续维护。
|
|
151
|
+
- `not_target` 只表示当前目标不包含 SDK 标记为 unstable、且项目当前没有对应产品语义的能力;若 ACP v1 stable 或项目需求变化,必须通过 ADR 重新评审,不得静默删除。
|
|
152
|
+
- 当前声明只包含 initialize 已实现并有行为证据的能力;未声明能力必须返回协议不支持/非法参数错误,不能静默接收。
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# ACP 适配架构决策记录
|
|
2
|
+
|
|
3
|
+
> 状态:持续维护。
|
|
4
|
+
> 实时实施状态见 [progress.md](progress.md)。
|
|
5
|
+
|
|
6
|
+
## ADR-001:使用官方 Python SDK
|
|
7
|
+
|
|
8
|
+
- 状态:Accepted
|
|
9
|
+
- 决策:依赖 `agent-client-protocol`,通过 `acp.run_agent` 提供 stdio 服务。
|
|
10
|
+
- 不采用:`deepagents-acp`、自研 JSON-RPC/schema。
|
|
11
|
+
- 原因:协议 schema 和 transport 应由官方 SDK 维护;Synapse 只负责自身 runtime 的语义适配。
|
|
12
|
+
- 约束:SDK 必须精确锁版本,升级先做 schema/API diff。
|
|
13
|
+
|
|
14
|
+
## ADR-002:目标是完整 ACP v1 Agent 语义
|
|
15
|
+
|
|
16
|
+
- 状态:Accepted
|
|
17
|
+
- 决策:P0 从锁定 schema 建立完整矩阵,P8 逐项关闭。
|
|
18
|
+
- 原因:允许阶段性交付,但不能把“最小可互通”误当最终范围。
|
|
19
|
+
- 约束:稳定方法、capability、ContentBlock、SessionUpdate 和错误语义都必须进入矩阵。
|
|
20
|
+
|
|
21
|
+
## ADR-003:ACP 是 runtime 的外部适配器
|
|
22
|
+
|
|
23
|
+
- 状态:Accepted
|
|
24
|
+
- 决策:`synapse.acp` 依赖 `synapse.runtime`,runtime 不依赖 ACP SDK。
|
|
25
|
+
- 原因:TUI、CLI、Web 和 ACP 应共享同一 headless runtime,不形成多套 Agent loop。
|
|
26
|
+
- 约束:ACP handler 不直接调用 Agent 原始 `astream()`。
|
|
27
|
+
|
|
28
|
+
## ADR-004:独立 stdio 入口
|
|
29
|
+
|
|
30
|
+
- 状态:Accepted
|
|
31
|
+
- 决策:新增 `synapse-acp` console script,不复用现有交互式 CLI 启动路径。
|
|
32
|
+
- 原因:ACP stdout 必须只包含有效 JSON-RPC 消息。
|
|
33
|
+
- 约束:日志、trace 和诊断只能写 stderr 或文件。
|
|
34
|
+
|
|
35
|
+
## ADR-005:capability 单一真源
|
|
36
|
+
|
|
37
|
+
- 状态:Accepted
|
|
38
|
+
- 决策:由 `CapabilityRegistry` 同时驱动 initialize 声明、handler guard 和测试参数化。
|
|
39
|
+
- 原因:避免声明支持但没有实现,或实现存在但永远不声明。
|
|
40
|
+
- 约束:capability 只能在对应阶段门禁通过后启用。
|
|
41
|
+
|
|
42
|
+
## ADR-006:一个 ACP session 对应一个隔离的 SessionRuntime
|
|
43
|
+
|
|
44
|
+
- 状态:Accepted
|
|
45
|
+
- 决策:session descriptor 固定 cwd、additional directories、MCP、Client capability 和 config。
|
|
46
|
+
- 原因:会话是执行、取消、权限和资源隔离域。
|
|
47
|
+
- 约束:同 session prompt 排他,不同 session 在全局上限内并发。
|
|
48
|
+
|
|
49
|
+
## ADR-007:Permission 在同一 ACP prompt 内闭环
|
|
50
|
+
|
|
51
|
+
- 状态:Accepted
|
|
52
|
+
- 决策:一个 ACP prompt 可以驱动普通 turn 和多个 LangGraph resume turn。
|
|
53
|
+
- 原因:Synapse 当前 HITL 以 turn 为边界,而 ACP permission 属于一个未结束的 prompt 生命周期。
|
|
54
|
+
- 约束:cancel 必须同时结束活跃 turn 和 pending permission requests。
|
|
55
|
+
|
|
56
|
+
## ADR-008:语义事件优先增强 runtime
|
|
57
|
+
|
|
58
|
+
- 状态:Accepted
|
|
59
|
+
- 决策:缺失的 tool args、diff、plan、usage 等先加入 UI-independent `TurnEvent`,再投影 ACP。
|
|
60
|
+
- 原因:禁止 ACP 层重复解析 provider/LangGraph 原始 chunk;TUI 也可复用增强语义。
|
|
61
|
+
- 约束:事件版本变化必须保持兼容或显式升级。
|
|
62
|
+
|
|
63
|
+
## ADR-009:线程边界使用有界事件桥
|
|
64
|
+
|
|
65
|
+
- 状态:Accepted
|
|
66
|
+
- 决策:broker callback 通过 `loop.call_soon_threadsafe` 投递到 ACP loop 的有界队列。
|
|
67
|
+
- 原因:Agent runtime 和 ACP server 可能运行在不同 asyncio loop/线程。
|
|
68
|
+
- 约束:终态和工具事件不得丢;文本可合并但不得乱序。
|
|
69
|
+
|
|
70
|
+
## ADR-010:Client-provided MCP 按 session 隔离
|
|
71
|
+
|
|
72
|
+
- 状态:Accepted
|
|
73
|
+
- 决策:ACP 请求携带的 MCP servers 使用 session scope pool,关闭 session 即释放。
|
|
74
|
+
- 原因:Client MCP 是会话资源,不是 Synapse 全局配置。
|
|
75
|
+
- 约束:不得持久化 Client MCP 凭据,不得泄漏到其他 session。
|
|
76
|
+
|
|
77
|
+
## ADR-011:Client 服务有能力时优先、无能力时回退
|
|
78
|
+
|
|
79
|
+
- 状态:Proposed,P6 确认
|
|
80
|
+
- 决策:filesystem/terminal capability 存在时优先 Client-backed backend,否则使用本地 backend。
|
|
81
|
+
- 原因:Client 能提供未保存 editor buffer 和 IDE terminal;本地 backend 保持无 Client 能力时可用。
|
|
82
|
+
- 待确认:同一 Agent graph 内 backend 动态路由的具体接口。
|
|
83
|
+
|
|
84
|
+
## ADR-012:协议版本基线由 P0 决定
|
|
85
|
+
|
|
86
|
+
- 状态:Accepted
|
|
87
|
+
- 决策:总体方案只固定 ACP v1 stable,不在调查阶段猜测具体 SDK/schema patch 版本。
|
|
88
|
+
- 原因:官方 SDK 变化较快,必须以实际可安装包、源码和生成 schema 为证据。
|
|
89
|
+
- 约束:P0 完成前不得提交依赖或实现代码。
|
|
90
|
+
|
|
91
|
+
## ADR-013:P1 先使用可注入 SessionFactory
|
|
92
|
+
|
|
93
|
+
- 状态:Accepted
|
|
94
|
+
- 决策:`SynapseACPAgent` 通过 `ACPSessionRegistry` 和可注入 `SessionFactory` 连接现有 `RuntimeManager`,默认 factory 只在实际 `session/new` 时构建 Agent。
|
|
95
|
+
- 原因:P1 协议测试不能依赖真实模型、API 凭据或 MCP;同时为 P4/P5 的 session descriptor 和资源隔离保留边界。
|
|
96
|
+
- 约束:生产默认路径复用 `build_coding_agent`,测试路径必须注入 fake factory;不得在 ACP handler 中直接调用 `astream()`。
|
|
97
|
+
|
|
98
|
+
## ADR-014:P1 不静默接受未实现的 MCP
|
|
99
|
+
|
|
100
|
+
- 状态:Accepted
|
|
101
|
+
- 决策:P1 handler 收到非空 `mcp_servers` 时返回明确的 invalid params;P5 实现 session-scoped MCP 后再启用。
|
|
102
|
+
- 原因:P1 尚未连接 Client-provided MCP,静默忽略会违反 capability/行为一致性。
|
|
103
|
+
- 约束:P1 可以接受空列表或省略字段;不得把配置写入全局 MCP 配置。
|
|
104
|
+
|
|
105
|
+
## ADR-015:notification 处理、batch 不适用
|
|
106
|
+
|
|
107
|
+
- 状态:Accepted
|
|
108
|
+
- 决策:notification(无 `id`)由官方 SDK router/dispatcher 处理,未知 notification 静默忽略、不产生响应;JSON-RPC batch 数组不纳入 ACP 适配范围。
|
|
109
|
+
- 原因:ACP wire 使用 newline-delimited JSON(每行一个 message),batch 数组不是该 framing 的合法输入;官方 SDK 亦按单条 message 处理。
|
|
110
|
+
- 约束:`session/cancel` 等 notification 必须保持幂等且不依赖响应;适配层不自行解析 batch,也不伪造 batch 支持声明。
|
|
111
|
+
|
|
112
|
+
## 决策更新规则
|
|
113
|
+
|
|
114
|
+
- 新决策追加 ADR,不覆盖历史结论。
|
|
115
|
+
- 被替代决策标记 Superseded,并链接替代 ADR。
|
|
116
|
+
- SDK/schema 升级、能力范围变化、状态机变化必须记录 ADR。
|
|
117
|
+
- 实时任务状态不写在本文件,统一维护于 `progress.md`。
|