synapse-cli-agent 0.1.36__tar.gz → 0.1.38__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.36 → synapse_cli_agent-0.1.38}/.github/workflows/native-compression-wheels.yml +20 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/.github/workflows/release.yml +2 -1
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/AGENTS.md +15 -5
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/CHANGELOG.md +32 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/PKG-INFO +2 -1
- synapse_cli_agent-0.1.38/approval-behavior.md +46 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/pyproject.toml +3 -1
- synapse_cli_agent-0.1.38/release_body.md +21 -0
- synapse_cli_agent-0.1.38/rust/synapse-core-tool/Cargo.lock +2868 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-core-tool/Cargo.toml +8 -2
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-core-tool/pyproject.toml +1 -1
- synapse_cli_agent-0.1.38/rust/synapse-core-tool/python/synapse_core_tool/__init__.py +11 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-core-tool/src/lib.rs +2 -0
- synapse_cli_agent-0.1.38/rust/synapse-core-tool/src/llm.rs +153 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/Cargo.lock +1 -1
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/Cargo.toml +1 -1
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/pyproject.toml +1 -1
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/models/registry.py +138 -1
- synapse_cli_agent-0.1.38/src/synapse/models/rust_openai.py +439 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/streaming/__init__.py +4 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/streaming/adapters.py +35 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/streaming/events.py +19 -1
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/streaming/parser.py +1 -3
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/agent_lifecycle.py +12 -0
- synapse_cli_agent-0.1.38/src/synapse/ui/approval.py +200 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/dialogs/controller.py +35 -3
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/rendering.py +74 -1
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/selectable_static.py +59 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/textual_stream_sink.py +8 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/transcript/controller.py +25 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/transcript/factory.py +1 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/transcript/history.py +42 -7
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/transcript/state.py +2 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/transcript_blocks.py +116 -8
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/tui.py +9 -2
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/turn/controller.py +9 -3
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/turn/event_renderer.py +16 -0
- synapse_cli_agent-0.1.38/tests/test_approval.py +169 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_capabilities.py +106 -1
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_context_window.py +9 -2
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_dialogs.py +55 -1
- synapse_cli_agent-0.1.38/tests/test_rust_openai_model.py +194 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_stream_semantic_fixtures.py +94 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_textual_stream_sink.py +21 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_transcript_controller.py +63 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_tui_selection.py +218 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_turn_controller.py +1 -1
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_turn_event_renderer.py +64 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/uv.lock +9 -2
- synapse_cli_agent-0.1.36/release_body.md +0 -16
- synapse_cli_agent-0.1.36/rust/synapse-core-tool/Cargo.lock +0 -1229
- synapse_cli_agent-0.1.36/rust/synapse-core-tool/python/synapse_core_tool/__init__.py +0 -3
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/.dockerignore +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/.github/workflows/ci.yml +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/.github/workflows/docs.yml +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/.github/workflows/native-core-tool-wheels.yml +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/.gitignore +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/.python-version +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/.readthedocs.yaml +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/.zed/settings.json +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/Dockerfile.web +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/LICENSE +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/README.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/README.zh-CN.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/agent_upstream.txt +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/assets/demo.gif +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/assets/synapse-logo.svg +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/assets/tui-preview.png +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/cli_upstream.txt +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/debug_compact.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/decode_screenshot.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/acp-adapter/capability-matrix.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/acp-adapter/decisions.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/acp-adapter/index.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/acp-adapter/phase-0-protocol-baseline.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/acp-adapter/phase-1-core-transport.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/acp-adapter/phase-2-prompt-semantics.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/acp-adapter/phase-3-permissions.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/acp-adapter/phase-4-session-lifecycle.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/acp-adapter/phase-5-session-mcp.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/acp-adapter/phase-6-client-services.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/acp-adapter/phase-7-advanced-capabilities.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/acp-adapter/phase-8-compliance.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/acp-adapter/progress.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/agent-development-guide.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/agent-runtime-decoupling/baseline-report.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/agent-runtime-decoupling/decisions.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/agent-runtime-decoupling/index.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/agent-runtime-decoupling/migration.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/agent-runtime-decoupling/phase-0-baseline.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/agent-runtime-decoupling/phase-1-streaming-core.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/agent-runtime-decoupling/phase-2-turn-runtime.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/agent-runtime-decoupling/phase-3-tui-cutover.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/agent-runtime-decoupling/phase-4-session-runtime.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/agent-runtime-decoupling/phase-5-multi-session.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/agent-runtime-decoupling/phase-6-project-runtime.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/agent-runtime-decoupling/phase-7-global-control-plane.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/agent-runtime-decoupling/phase-8-hardening.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/agent-runtime-decoupling/post-review-fix-plan.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/agent-runtime-decoupling/progress.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/architecture-flow.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/architecture.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/cli.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/codex-session-discovery-phase-1.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/codex-session-import-phase-2.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/config.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/design.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/docker-web.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/index.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/install.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/math-formulas-test.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/mcp.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/models.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/native-compression-core.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/native-core-tool.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/permissions.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/quickstart.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/sessions.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/skills.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/smith_output.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/subagents.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/tool-output-transform.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/tui-cursor-refactor.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/tutorial.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/docs/x-agent-development-guide.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/examples/mcp.example.json +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/examples/models.example.json +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/examples/settings.example.json +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/middleware_upstream.txt +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/mkdocs.yml +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-core-tool/LICENSE +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-core-tool/NOTICE +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-core-tool/README.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-core-tool/src/file_access.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-core-tool/src/file_tools.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-core-tool/src/math_render.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-core-tool/src/search.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-core-tool/uv.lock +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/LICENSE +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/NOTICE +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/README.md +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/python/synapse_tool_compress_core/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/ccr.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/ccr_in_memory.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/mod.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/relevance/base.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/relevance/bm25.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/signals/keyword_detector.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/signals/line_importance.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/adaptive_sizer.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/anchor_selector.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/code_compressor.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/diff_compressor.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/log_compressor.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/search_compressor.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/analyzer.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/anchors.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/builder.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/classifier.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/classifier.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/compactor.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/formatter.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/ir.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/mod.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/walker.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/config.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/constraints.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crusher.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crushers.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/error_keywords.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/field_detect.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/hashing.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/mod.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/observer.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/orchestration.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/outliers.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/planning.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/statistics.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/stats_math.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/traits.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/types.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/rust/synapse-tool-compress-core/src/lib.rs +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/scripts/install.ps1 +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/scripts/release.ps1 +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/scripts/serve_web.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/slash_cmds_upstream.txt +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/__main__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/acp/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/acp/agent.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/acp/client_services.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/acp/content.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/acp/events.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/acp/lifecycle.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/acp/mcp.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/acp/permissions.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/acp/server.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/acp/sessions.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/acp/updates.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/app/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/app/agent.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/app/agent_assembly.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/app/agent_md.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/cli.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/commands/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/commands/compression.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/commands/goal.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/commands/helpers.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/commands/mcp.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/commands/model.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/commands/result.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/commands/sessions.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/commands/slash_cmds.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/commands/slash_complete.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/commands/theme.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/config.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/content/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/content/input_history.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/content/multimodal.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/content/prompts.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/content/skills_catalog.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/entry.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/goals/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/goals/middleware.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/goals/model.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/goals/runtime.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/goals/steering.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/goals/store.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/goals/tools.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/integrations/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/integrations/checkpoint_seed.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/integrations/codex_config.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/integrations/codex_history.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/integrations/codex_import.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/integrations/codex_sessions.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/integrations/describe_image.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/integrations/herdr.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/integrations/http_clients.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/integrations/llm_openai_compat.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/integrations/llm_openai_websocket.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/integrations/mcp_client.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/integrations/openai_oauth.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/integrations/openai_oauth_middleware.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/integrations/openai_usage.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/integrations/turbo.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/integrations/vision_middleware.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/memory/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/memory/auto_recorder.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/memory/embedder.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/memory/long_term.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/models/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/models/config.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/models/helpers.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/models/persist.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/models/profile.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/models/providers.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/models_registry.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/observability/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/observability/debug_inspector.html +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/observability/debug_server.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/observability/exit_trace.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/observability/heap_dump.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/observability/llm_debug.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/observability/startup_trace.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/planner/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/planner/task_planner.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/projects/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/projects/catalog.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/rag/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/rag/knowledge_base.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/agent_loop/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/agent_loop/model.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/agent_loop/request.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/agent_loop/turn.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/async_runtime.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/backends.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/cancellation.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/context_compact.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/debug_capture_middleware.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/execute_capture.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/filesystem_tool_prompt_middleware.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/fs_permissions.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/harness.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/hitl.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/interaction_ledger.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/middleware.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/model_request_compression_middleware.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/pathing.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/projects/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/projects/identity.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/projects/runtime.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/safety.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/session_prewarm.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/sessions/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/sessions/events.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/sessions/manager.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/sessions/persistence.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/sessions/ref.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/sessions/runtime.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/steer.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/streaming/accumulator.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/streaming/protocol.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/streaming/runtime.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/streaming/stream_events.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/streaming/tool_model.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/subagent_config_persist.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/subagent_specs.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/subagents.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/timeline.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/token_rate.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/tool_ignore.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/tool_output_eval.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/tool_output_middleware.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/tool_output_usage_middleware.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/runtime/tool_response_truncate_middleware.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/sessions/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/sessions/cancel_repair.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/sessions/search_index.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/sessions/store.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/sessions/summary.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/sessions/transcript.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/sessions/transcript_migration.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/sessions/transcript_projection.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/settings/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/settings/config_paths.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/settings/schema.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/subagents.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/tool_output/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/tool_output/detection.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/tool_output/metrics.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/tool_output/models.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/tool_output/pipeline.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/tool_output/repository.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/tool_output/transformers.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/tools/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/tools/describe_image.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/tools/filesystem_patch.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/tools/filesystem_search.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/tools/session_tools.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/answer_divider.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/bottombar/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/bottombar/components/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/bottombar/components/codex_usage.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/bottombar/components/fast.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/bottombar/components/goal.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/bottombar/components/key_hints.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/bottombar/components/mcp.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/bottombar/components/mode.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/bottombar/components/model.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/bottombar/components/thread.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/bottombar/components/turbo.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/bottombar/components/turn_stats.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/bottombar/context.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/bottombar/core.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/chrome/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/chrome/controller.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/clipboard.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/dialogs/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/dialogs/active_session_switcher.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/dialogs/base.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/dialogs/codex_config_import.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/dialogs/codex_reset.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/dialogs/codex_session_list.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/dialogs/compression_diagnostics.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/dialogs/git_explore.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/dialogs/mcp_panel.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/dialogs/model_form.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/dialogs/model_manager.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/dialogs/model_picker.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/dialogs/provider_catalog.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/dialogs/safety_panel.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/dialogs/session_list.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/dialogs/subagent_config.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/dialogs/theme_designer.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/dialogs/theme_picker.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/drawer.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/formatters.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/git_explore/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/git_explore/engine.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/git_explore/provider.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/git_explore/unified.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/image_preview.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/image_render.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/image_viewer.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/math_image.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/mermaid_image.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/prompt_controller.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/selectable_text.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/sink.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/status_controller.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/steer_controller.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/steer_widget.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/stream.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/stream_events.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/stream_runtime.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/textual_lifecycle.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/theme.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/theme_controller.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/timeline.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/tool_blocks.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/topbar/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/topbar/components/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/topbar/components/branch.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/topbar/components/title.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/topbar/components/tool_output.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/topbar/components/usage.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/topbar/components/workspace.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/topbar/context.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/topbar/core.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/topbar/git_changes_popover.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/topbar/git_chrome.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/topbar/tool_output_popover.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/topbar/widget.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/transcript/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/tui_launch.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/tui_styles.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/turn/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/turn/event_bridge.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/turn/persistence.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/turn/request.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/turn_rail.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/turn_rail_widgets.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/user_turn.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/user_turn_block.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/ui/welcome.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/src/synapse/web.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/synapse.cmd +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/__init__.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/fixtures/acp/initialize.jsonl +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/fixtures/agent_stream/core_scenarios.json +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/fixtures/codex_rollouts/duplicate_response_item.jsonl +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/fixtures/codex_rollouts/incomplete_and_aborted.jsonl +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/fixtures/codex_rollouts/legacy_compaction.jsonl +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/fixtures/codex_rollouts/normal_completed.jsonl +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/fixtures/codex_rollouts/replacement_history.jsonl +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/fixtures/codex_rollouts/rollback.jsonl +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/fixtures/codex_rollouts/unsupported_replacement.jsonl +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/fixtures/sample_repo/calculator.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/fixtures/sample_repo/test_calculator.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/fixtures/tool_output_eval.json +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_acp_p0_baseline.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_acp_p1_core.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_acp_p1_transport.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_acp_p2_content.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_acp_p2_events.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_acp_p2_updates.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_acp_p3_agent.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_acp_p3_permissions.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_acp_p4_history.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_acp_p4_lifecycle.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_acp_p5_mcp.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_acp_p6_client_services.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_acp_p8_compliance.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_agent_factory.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_agent_lifecycle.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_agent_turn_runtime.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_async_checkpointer.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_backends.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_bottombar_registry.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_cancel_repair.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_checkpoint_seed.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_chrome_controller.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_cli.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_cli_codex_import.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_clipboard.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_codex_config.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_codex_history.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_codex_import.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_codex_sessions.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_codex_sessions_windows.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_compact_tool_descriptions.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_config.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_context_compact.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_debug_capture_middleware.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_debug_inspector.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_describe_image.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_entry.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_filesystem_patch_tool.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_filesystem_search_tools.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_git_changes_popover.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_git_chrome.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_git_explore.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_goal_live_tui.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_goals.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_heap_dump.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_herdr_integration.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_http_clients.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_image_render.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_image_viewer.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_input_history.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_iteration_abc.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_layered_config.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_math_image_render.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_mcp_schema.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_mermaid_image.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_mermaid_render.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_middleware_async.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_model_dialogs.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_model_providers.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_model_request_compression_middleware.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_model_retry.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_models_persist.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_multimodal.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_native_math_render.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_openai_compat_reasoning.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_openai_oauth.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_openai_oauth_middleware.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_openai_usage.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_openai_websocket.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_pathing.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_project_catalog.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_project_drawer.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_project_runtime.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_project_switch.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_prompt_controller.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_prompts.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_runtime_hardening.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_runtime_manager.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_runtime_streaming.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_safety.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_search_index.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_session_prewarm.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_session_runtime.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_session_store.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_session_summary.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_slash_and_mcp.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_slash_complete.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_slash_effects.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_startup_defer.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_startup_trace.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_steer.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_steer_controller.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_stream_cancel.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_stream_tool_items.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_stream_ui.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_subagent_config_dialog.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_subagent_config_persist.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_subagent_status.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_subagents.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_theme.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_theme_controller.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_timeline.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_token_rate.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_tool_blocks.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_tool_ignore.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_tool_intent.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_tool_output.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_tool_output_eval.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_tool_output_slash.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_tool_output_usage_middleware.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_tool_response_truncate_middleware.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_topbar_context_ratio.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_topbar_registry.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_transcript.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_transcript_history.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_transcript_history_controller.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_transcript_migration.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_transcript_projection.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_tui_active_session_switcher.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_tui_codex_import.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_tui_paste.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_turn_rail_minimap.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_turn_request.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_usage_restore.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_user_turn_style.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/test_welcome.py +0 -0
- {synapse_cli_agent-0.1.36 → synapse_cli_agent-0.1.38}/tests/tool_output_plugin_fixture.py +0 -0
|
@@ -67,3 +67,23 @@ jobs:
|
|
|
67
67
|
with:
|
|
68
68
|
files: dist/*.whl
|
|
69
69
|
name: synapse-tool-compress-core ${{ github.ref_name }}
|
|
70
|
+
|
|
71
|
+
publish-pypi:
|
|
72
|
+
if: startsWith(github.ref, 'refs/tags/synapse-tool-compress-core-v')
|
|
73
|
+
needs: wheel
|
|
74
|
+
runs-on: ubuntu-latest
|
|
75
|
+
environment:
|
|
76
|
+
name: pypi
|
|
77
|
+
url: https://pypi.org/p/synapse-tool-compress-core
|
|
78
|
+
permissions:
|
|
79
|
+
id-token: write
|
|
80
|
+
steps:
|
|
81
|
+
- uses: actions/download-artifact@v4
|
|
82
|
+
with:
|
|
83
|
+
pattern: wheel-*
|
|
84
|
+
merge-multiple: true
|
|
85
|
+
path: dist
|
|
86
|
+
- name: Publish wheels to PyPI
|
|
87
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
88
|
+
with:
|
|
89
|
+
packages-dir: dist/
|
|
@@ -85,7 +85,7 @@ jobs:
|
|
|
85
85
|
- name: Install Rust toolchain
|
|
86
86
|
uses: dtolnay/rust-toolchain@stable
|
|
87
87
|
|
|
88
|
-
- name: Install dependencies (builds local synapse-core-tool)
|
|
88
|
+
- name: Install dependencies (builds local synapse-core-tool and synapse-tool-compress-core)
|
|
89
89
|
run: uv sync --frozen
|
|
90
90
|
|
|
91
91
|
- name: Install PyInstaller
|
|
@@ -101,6 +101,7 @@ jobs:
|
|
|
101
101
|
--collect-all textual_image `
|
|
102
102
|
--collect-all termaid `
|
|
103
103
|
--collect-all texicode `
|
|
104
|
+
--collect-all synapse_tool_compress_core `
|
|
104
105
|
src/synapse/entry.py
|
|
105
106
|
|
|
106
107
|
- name: Rename executable for artifact
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
| `src/synapse/ui/` | Textual TUI, stream, timeline, dialogs, topbar/bottombar |
|
|
24
24
|
| `tests/` | Python tests, usually mirroring domain modules |
|
|
25
25
|
| `rust/synapse-core-tool/` | Native filesystem tools (read/edit/patch/search) and math rendering; published to PyPI as `synapse-core-tool` |
|
|
26
|
-
| `rust/synapse-tool-compress-core/` |
|
|
26
|
+
| `rust/synapse-tool-compress-core/` | Native tool-output compression core; required dependency, published to PyPI as `synapse-tool-compress-core` |
|
|
27
27
|
| `docs/`, `mkdocs.yml` | User docs and MkDocs config |
|
|
28
28
|
| `.github/workflows/` | CI, docs, Python release, native wheel builds |
|
|
29
29
|
|
|
@@ -83,10 +83,20 @@ uv build # after packaging/entry-point changes
|
|
|
83
83
|
|
|
84
84
|
## Rust/PyO3 native crates
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
The Python app must work without the optional wheels and must keep `ImportError`/`OSError` fallbacks.
|
|
87
87
|
|
|
88
|
-
- `rust/synapse-core-tool` (`synapse-core-tool` on PyPI): native filesystem tools (read/edit/patch/search) and
|
|
89
|
-
- `rust/synapse-tool-compress-core
|
|
88
|
+
- `rust/synapse-core-tool` (`synapse-core-tool` on PyPI): native filesystem tools (read/edit/patch/search), math rendering, and the native OpenAI-compatible chat client (`RustOpenAIClient`, backed by `async-openai` byot). Release with tag `synapse-core-tool-v*`; `native-core-tool-wheels.yml` builds wheels and publishes to GitHub Release + PyPI. Keep the `pyproject.toml` version in sync with `Cargo.toml` — maturin names wheels from `pyproject.toml`.
|
|
89
|
+
- `rust/synapse-tool-compress-core` (`synapse-tool-compress-core` on PyPI): native tool-output compression core. **Required dependency** of `synapse-cli-agent`. Release with tag `synapse-tool-compress-core-v*`; `native-compression-wheels.yml` builds wheels and publishes to GitHub Release + PyPI. Keep the `pyproject.toml` version in sync with `Cargo.toml`. Because the main package hard-depends on it, publish the compress-core wheels to PyPI before tagging the main `v*` release.
|
|
90
|
+
|
|
91
|
+
### Building and installing a native crate locally
|
|
92
|
+
|
|
93
|
+
`uv` builds the path dependencies declared in `[tool.uv.sources]` (`rust/synapse-core-tool` and `rust/synapse-tool-compress-core`). After changing Rust code, rebuild + reinstall the affected crate with:
|
|
94
|
+
|
|
95
|
+
```powershell
|
|
96
|
+
uv sync --reinstall-package synapse-core-tool
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
This runs maturin under the hood and installs the freshly built wheel into the venv. Do **not** rely on `maturin develop` — a plain `uv sync` afterwards re-copies the cached (stale) wheel over the develop install. To avoid that surprise, either always rebuild via `uv sync --reinstall-package ...`, or run every command with `uv run --no-sync` after a manual `maturin develop`.
|
|
90
100
|
|
|
91
101
|
When changing either crate, at least run:
|
|
92
102
|
|
|
@@ -95,7 +105,7 @@ cargo test --manifest-path rust/<crate>/Cargo.toml
|
|
|
95
105
|
cargo fmt --manifest-path rust/<crate>/Cargo.toml --check
|
|
96
106
|
```
|
|
97
107
|
|
|
98
|
-
If Python bindings/APIs change,
|
|
108
|
+
If Python bindings/APIs change, rebuild via `uv sync --reinstall-package <crate>` and run the related Python tests.
|
|
99
109
|
|
|
100
110
|
Keep the Apache-2.0 SPDX headers, attribution, `LICENSE`, and `NOTICE` under `rust/synapse-tool-compress-core/src/headroom_port/`; do not introduce excluded network calls or model downloads.
|
|
101
111
|
|
|
@@ -8,6 +8,38 @@ All entries are written in English.
|
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
+
## v0.1.38
|
|
12
|
+
|
|
13
|
+
### New Features
|
|
14
|
+
|
|
15
|
+
- Added a native Rust OpenAI chat transport (`RustOpenAIClient`) backed by `synapse-core-tool`, used as an OpenAI-compatible model backend.
|
|
16
|
+
- Added an interactive HITL approval block: turn events emit `APPROVAL_REQUIRED`, the transcript mounts an `ApprovalBlock`, and decisions route through `resume_hitl` without treating `WAITING_APPROVAL` as a blocking busy state.
|
|
17
|
+
- Added a `session-crash-repair` skill for recovering crashed sessions.
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
- Fixed `usage_metadata` mapping in the OpenAI model: `prompt_tokens_details`/`completion_tokens_details` now map to `input_token_details`/`output_token_details` (cache_read and reasoning were always 0), `prompt_cache_hit_tokens` is preferred for cache reads on DeepSeek-compatible gateways, and the async run manager is passed through `_astream` so `on_llm_new_token` fires and TTFT/token rates update live.
|
|
22
|
+
- Fixed the TUI thought block collapsing when clicking the expanded reasoning body; the toggle is now restricted to the header row(s) and clicks that finish a text selection are ignored.
|
|
23
|
+
|
|
24
|
+
### Engineering
|
|
25
|
+
|
|
26
|
+
- Reused the OpenAI HTTP client across requests in the native Rust transport (`synapse-core-tool` v0.1.4).
|
|
27
|
+
- Deferred markdown parsing of long restored transcript bodies to a worker (bounded plain-text preview first) and mounted restored blocks in chunks of 12 to avoid one giant layout pass.
|
|
28
|
+
- Cached syntax highlighting across renders (`lru_cache`, cap 16k chars) so repeated redraws of code fences skip re-tokenizing.
|
|
29
|
+
- Cached `SelectableStatic` renders so selection drags skip markdown re-rendering.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## v0.1.37
|
|
34
|
+
|
|
35
|
+
### Engineering
|
|
36
|
+
|
|
37
|
+
- Made the native tool-output compression core (`synapse-tool-compress-core`) a required dependency of the main package: pip/uv installs now pull it by default and standalone PyInstaller executables bundle the native compression module.
|
|
38
|
+
- Publish `synapse-tool-compress-core` wheels to PyPI in addition to GitHub Releases so the hard dependency resolves for package installs.
|
|
39
|
+
- Updated the release workflow to collect the native compression extension into Windows/macOS/Linux executables.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
11
43
|
## v0.1.36
|
|
12
44
|
|
|
13
45
|
### 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.38
|
|
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
|
|
@@ -214,6 +214,7 @@ Requires-Dist: pydantic-settings==2.14.2
|
|
|
214
214
|
Requires-Dist: python-dotenv==1.2.2
|
|
215
215
|
Requires-Dist: rich==15.0.0
|
|
216
216
|
Requires-Dist: synapse-core-tool<0.2.0,>=0.1.0
|
|
217
|
+
Requires-Dist: synapse-tool-compress-core<0.2.0,>=0.1.2
|
|
217
218
|
Requires-Dist: termaid==0.7.1
|
|
218
219
|
Requires-Dist: texicode==1.0.3
|
|
219
220
|
Requires-Dist: textual-diff-view==0.1.5
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# 审批(Approval)行为说明
|
|
2
|
+
|
|
3
|
+
结论:打开审批后,agent 在执行**写操作类工具前会暂停等待用户决定**,而不是直接拒绝或跳过。
|
|
4
|
+
|
|
5
|
+
依据代码:`src/synapse/runtime/safety.py`、`src/synapse/runtime/hitl.py`、`src/synapse/app/agent.py`、`src/synapse/ui/turn/controller.py`、`src/synapse/commands/slash_cmds.py`。
|
|
6
|
+
|
|
7
|
+
## 如何正确打开审批
|
|
8
|
+
|
|
9
|
+
| 方式 | 说明 |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| 环境变量 `AGENT_SAFETY_PROFILE=dev-approve` | 推荐方式(可在 `.env` 或系统环境变量中设置) |
|
|
12
|
+
| TUI 内 `/safety dev-approve` | 切换后重建 agent |
|
|
13
|
+
| 档位别名 | `approve` / `hitl` / `dev_approve` 均映射到 `dev-approve` |
|
|
14
|
+
|
|
15
|
+
> 注意:仅设 `AGENT_REQUIRE_APPROVAL=true` 或 CLI `--require-approval` **不会生效**。
|
|
16
|
+
> agent 构建时 `apply_safety_to_settings` 会按 `safety_profile`(默认 `dev-autopass`)把 `require_approval` 强制改回 `false`。
|
|
17
|
+
> 必须切换到 `dev-approve` 档。
|
|
18
|
+
|
|
19
|
+
## 打开后的行为
|
|
20
|
+
|
|
21
|
+
| 阶段 | 表现 |
|
|
22
|
+
| --- | --- |
|
|
23
|
+
| 需要审批的工具 | 仅 `execute`、`write_file`、`edit_file`、`patch` 四类(`build_interrupt_on` 返回);`read_file`、`search_files` 等只读工具照常执行,不拦截 |
|
|
24
|
+
| 触发时机 | agent 一旦尝试调用上述工具,LangGraph 在**执行前**中断(interrupt),回合状态变为 `WAITING_APPROVAL` |
|
|
25
|
+
| TUI 界面 | 顶部活动区显示 `waiting / approval`;转录区打印待批清单:工具名、参数预览、描述,末尾提示 `decide: /approve | /reject [reason]` |
|
|
26
|
+
| 用户操作 | `/approve` 放行;`/reject [reason]` 拒绝(可附理由) |
|
|
27
|
+
|
|
28
|
+
## 审批决策的两种结果
|
|
29
|
+
|
|
30
|
+
| 决策 | 行为 |
|
|
31
|
+
| --- | --- |
|
|
32
|
+
| `/approve` | 恢复图执行,工具真正运行,agent 继续后续步骤 |
|
|
33
|
+
| `/reject [reason]` | 工具不执行,拒绝信息(默认 `Rejected by user via /reject` 或自定义 reason)作为反馈回传给模型,agent 会据此调整方案或换工具重试 |
|
|
34
|
+
|
|
35
|
+
## 其他要点
|
|
36
|
+
|
|
37
|
+
| 项 | 说明 |
|
|
38
|
+
| --- | --- |
|
|
39
|
+
| 多个工具同时待批 | `build_decisions` 会按待批数量生成等量决策;一次 `/approve` 放行全部 |
|
|
40
|
+
| 无待批时 | `/approve` 或 `/reject` 会提示 `no pending approval`,不做事 |
|
|
41
|
+
| 黑名单 | `dev-approve` 档 `enable_command_blacklist=True`,但 `check_command` 目前仅定义、未接入运行时;`rm -rf` 等危险命令不会自动拦截,仍走人工审批 |
|
|
42
|
+
| ACP 客户端 | 通过 `_request_permission_decisions` 请求权限,超过 `_max_permission_turns` 时报 `maximum permission resume turns exceeded` |
|
|
43
|
+
|
|
44
|
+
## 一句话总结
|
|
45
|
+
|
|
46
|
+
开启审批(`dev-approve`)后,agent 每次写文件或执行命令前都会停下等待用户 `/approve` 或 `/reject`,只读操作不受影响。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "synapse-cli-agent"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.38"
|
|
4
4
|
description = "Local coding agent built on LangChain Deep Agents (LocalShell, no sandbox)"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = { file = "LICENSE" }
|
|
@@ -11,6 +11,7 @@ requires-python = ">=3.12"
|
|
|
11
11
|
|
|
12
12
|
dependencies = [
|
|
13
13
|
"synapse-core-tool>=0.1.0,<0.2.0",
|
|
14
|
+
"synapse-tool-compress-core>=0.1.2,<0.2.0",
|
|
14
15
|
"aiosqlite==0.22.1",
|
|
15
16
|
"deepagents==0.6.12",
|
|
16
17
|
"httpx[socks]==0.28.1",
|
|
@@ -73,6 +74,7 @@ exclude = [
|
|
|
73
74
|
|
|
74
75
|
[tool.uv.sources]
|
|
75
76
|
synapse-core-tool = { path = "rust/synapse-core-tool" }
|
|
77
|
+
synapse-tool-compress-core = { path = "rust/synapse-tool-compress-core" }
|
|
76
78
|
|
|
77
79
|
[tool.pytest.ini_options]
|
|
78
80
|
testpaths = ["tests"]
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
## v0.1.38
|
|
2
|
+
|
|
3
|
+
### New Features
|
|
4
|
+
|
|
5
|
+
- Added a native Rust OpenAI chat transport (`RustOpenAIClient`) backed by `synapse-core-tool`, used as an OpenAI-compatible model backend.
|
|
6
|
+
- Added an interactive HITL approval block: turn events emit `APPROVAL_REQUIRED`, the transcript mounts an `ApprovalBlock`, and decisions route through `resume_hitl` without treating `WAITING_APPROVAL` as a blocking busy state.
|
|
7
|
+
- Added a `session-crash-repair` skill for recovering crashed sessions.
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
- Fixed `usage_metadata` mapping in the OpenAI model: `prompt_tokens_details`/`completion_tokens_details` now map to `input_token_details`/`output_token_details` (cache_read and reasoning were always 0), `prompt_cache_hit_tokens` is preferred for cache reads on DeepSeek-compatible gateways, and the async run manager is passed through `_astream` so `on_llm_new_token` fires and TTFT/token rates update live.
|
|
12
|
+
- Fixed the TUI thought block collapsing when clicking the expanded reasoning body; the toggle is now restricted to the header row(s) and clicks that finish a text selection are ignored.
|
|
13
|
+
|
|
14
|
+
### Engineering
|
|
15
|
+
|
|
16
|
+
- Reused the OpenAI HTTP client across requests in the native Rust transport (`synapse-core-tool` v0.1.4).
|
|
17
|
+
- Deferred markdown parsing of long restored transcript bodies to a worker (bounded plain-text preview first) and mounted restored blocks in chunks of 12 to avoid one giant layout pass.
|
|
18
|
+
- Cached syntax highlighting across renders (`lru_cache`, cap 16k chars) so repeated redraws of code fences skip re-tokenizing.
|
|
19
|
+
- Cached `SelectableStatic` renders so selection drags skip markdown re-rendering.
|
|
20
|
+
|
|
21
|
+
---
|