synapse-cli-agent 0.1.39__tar.gz → 0.1.41__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.39 → synapse_cli_agent-0.1.41}/CHANGELOG.md +34 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/PKG-INFO +1 -1
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/skills.md +5 -2
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/pyproject.toml +1 -1
- synapse_cli_agent-0.1.41/release_body.md +7 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/Cargo.lock +147 -69
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/Cargo.toml +4 -3
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/pyproject.toml +1 -1
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/src/file_tools.rs +61 -1
- synapse_cli_agent-0.1.41/rust/synapse-core-tool/src/llm.rs +640 -0
- synapse_cli_agent-0.1.41/scripts/build_check_rust_openai.py +76 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/app/agent.py +17 -2
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/mcp_client.py +39 -5
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/models/registry.py +155 -99
- synapse_cli_agent-0.1.41/src/synapse/models/rust_openai.py +1213 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/backends.py +10 -6
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/projects/runtime.py +41 -17
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/sessions/persistence.py +39 -5
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/sessions/runtime.py +27 -9
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/streaming/parser.py +6 -3
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/token_rate.py +74 -16
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/sessions/transcript.py +43 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/sessions/transcript_migration.py +57 -6
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/sessions/transcript_projection.py +277 -55
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/transcript/history.py +21 -1
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/agent_stream/core_scenarios.json +1 -1
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_agent_factory.py +27 -6
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_backends.py +19 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_capabilities.py +95 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_context_window.py +64 -2
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_project_runtime.py +31 -0
- synapse_cli_agent-0.1.41/tests/test_rust_openai_model.py +945 -0
- synapse_cli_agent-0.1.41/tests/test_session_persistence.py +143 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_session_runtime.py +45 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_slash_and_mcp.py +67 -1
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_startup_trace.py +2 -1
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_stream_tool_items.py +77 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_token_rate.py +54 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_transcript.py +69 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_transcript_migration.py +102 -1
- synapse_cli_agent-0.1.41/tests/test_transcript_projection.py +323 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/uv.lock +2 -2
- synapse_cli_agent-0.1.39/release_body.md +0 -21
- synapse_cli_agent-0.1.39/rust/synapse-core-tool/src/llm.rs +0 -153
- synapse_cli_agent-0.1.39/src/synapse/models/rust_openai.py +0 -468
- synapse_cli_agent-0.1.39/tests/test_rust_openai_model.py +0 -306
- synapse_cli_agent-0.1.39/tests/test_transcript_projection.py +0 -151
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/.dockerignore +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/.github/workflows/ci.yml +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/.github/workflows/docs.yml +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/.github/workflows/native-compression-wheels.yml +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/.github/workflows/native-core-tool-wheels.yml +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/.github/workflows/release.yml +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/.gitignore +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/.python-version +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/.readthedocs.yaml +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/.zed/settings.json +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/AGENTS.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/Dockerfile.web +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/LICENSE +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/README.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/README.zh-CN.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/agent_upstream.txt +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/approval-behavior.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/assets/demo.gif +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/assets/synapse-logo.svg +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/assets/tui-preview.png +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/cli_upstream.txt +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/debug_compact.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/decode_screenshot.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/capability-matrix.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/decisions.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/index.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/phase-0-protocol-baseline.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/phase-1-core-transport.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/phase-2-prompt-semantics.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/phase-3-permissions.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/phase-4-session-lifecycle.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/phase-5-session-mcp.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/phase-6-client-services.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/phase-7-advanced-capabilities.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/phase-8-compliance.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/progress.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-development-guide.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/baseline-report.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/decisions.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/index.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/migration.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/phase-0-baseline.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/phase-1-streaming-core.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/phase-2-turn-runtime.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/phase-3-tui-cutover.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/phase-4-session-runtime.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/phase-5-multi-session.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/phase-6-project-runtime.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/phase-7-global-control-plane.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/phase-8-hardening.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/post-review-fix-plan.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/progress.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/architecture-flow.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/architecture.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/cli.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/codex-session-discovery-phase-1.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/codex-session-import-phase-2.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/config.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/design.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/docker-web.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/index.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/install.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/math-formulas-test.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/mcp.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/models.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/native-compression-core.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/native-core-tool.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/permissions.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/quickstart.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/sessions.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/smith_output.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/subagents.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/tool-output-transform.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/tui-cursor-refactor.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/tutorial.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/x-agent-development-guide.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/examples/mcp.example.json +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/examples/models.example.json +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/examples/settings.example.json +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/middleware_upstream.txt +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/mkdocs.yml +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/LICENSE +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/NOTICE +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/README.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/python/synapse_core_tool/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/src/file_access.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/src/lib.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/src/math_render.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/src/search.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/uv.lock +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/Cargo.lock +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/Cargo.toml +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/LICENSE +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/NOTICE +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/README.md +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/pyproject.toml +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/python/synapse_tool_compress_core/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/ccr.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/ccr_in_memory.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/mod.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/relevance/base.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/relevance/bm25.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/signals/keyword_detector.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/signals/line_importance.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/adaptive_sizer.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/anchor_selector.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/code_compressor.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/diff_compressor.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/log_compressor.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/search_compressor.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/analyzer.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/anchors.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/builder.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/classifier.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/classifier.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/compactor.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/formatter.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/ir.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/mod.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/walker.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/config.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/constraints.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crusher.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crushers.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/error_keywords.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/field_detect.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/hashing.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/mod.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/observer.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/orchestration.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/outliers.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/planning.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/statistics.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/stats_math.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/traits.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/types.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/lib.rs +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/scripts/install.ps1 +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/scripts/release.ps1 +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/scripts/serve_web.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/slash_cmds_upstream.txt +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/__main__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/acp/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/acp/agent.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/acp/client_services.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/acp/content.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/acp/events.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/acp/lifecycle.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/acp/mcp.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/acp/permissions.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/acp/server.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/acp/sessions.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/acp/updates.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/app/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/app/agent_assembly.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/app/agent_md.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/cli.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/commands/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/commands/compression.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/commands/goal.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/commands/helpers.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/commands/mcp.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/commands/model.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/commands/result.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/commands/sessions.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/commands/slash_cmds.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/commands/slash_complete.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/commands/theme.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/config.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/content/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/content/input_history.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/content/multimodal.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/content/prompts.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/content/skills_catalog.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/entry.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/goals/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/goals/middleware.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/goals/model.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/goals/runtime.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/goals/steering.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/goals/store.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/goals/tools.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/checkpoint_seed.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/codex_config.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/codex_history.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/codex_import.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/codex_sessions.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/describe_image.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/herdr.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/http_clients.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/llm_openai_compat.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/llm_openai_websocket.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/openai_oauth.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/openai_oauth_middleware.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/openai_usage.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/turbo.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/vision_middleware.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/memory/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/memory/auto_recorder.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/memory/embedder.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/memory/long_term.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/models/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/models/config.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/models/helpers.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/models/persist.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/models/profile.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/models/providers.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/models_registry.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/observability/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/observability/debug_inspector.html +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/observability/debug_server.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/observability/exit_trace.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/observability/heap_dump.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/observability/llm_debug.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/observability/startup_trace.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/planner/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/planner/task_planner.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/projects/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/projects/catalog.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/rag/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/rag/knowledge_base.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/agent_loop/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/agent_loop/model.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/agent_loop/request.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/agent_loop/turn.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/async_runtime.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/cancellation.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/context_compact.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/debug_capture_middleware.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/execute_capture.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/filesystem_tool_prompt_middleware.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/fs_permissions.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/harness.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/hitl.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/interaction_ledger.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/middleware.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/model_request_compression_middleware.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/pathing.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/projects/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/projects/identity.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/safety.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/session_header_middleware.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/session_headers.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/session_prewarm.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/sessions/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/sessions/events.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/sessions/manager.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/sessions/ref.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/steer.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/streaming/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/streaming/accumulator.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/streaming/adapters.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/streaming/events.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/streaming/protocol.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/streaming/runtime.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/streaming/stream_events.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/streaming/tool_model.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/subagent_config_persist.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/subagent_specs.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/subagents.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/timeline.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/tool_ignore.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/tool_output_eval.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/tool_output_middleware.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/tool_output_usage_middleware.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/sessions/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/sessions/cancel_repair.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/sessions/search_index.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/sessions/store.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/sessions/summary.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/settings/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/settings/config_paths.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/settings/schema.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/subagents.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tool_output/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tool_output/detection.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tool_output/metrics.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tool_output/models.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tool_output/pipeline.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tool_output/repository.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tool_output/transformers.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tools/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tools/describe_image.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tools/filesystem_patch.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tools/filesystem_search.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tools/session_tools.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/agent_lifecycle.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/answer_divider.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/approval.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/components/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/components/codex_usage.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/components/fast.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/components/goal.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/components/key_hints.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/components/mcp.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/components/mode.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/components/model.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/components/thread.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/components/turbo.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/components/turn_stats.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/context.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/core.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/chrome/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/chrome/controller.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/clipboard.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/active_session_switcher.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/base.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/codex_config_import.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/codex_reset.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/codex_session_list.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/compression_diagnostics.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/controller.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/git_explore.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/mcp_panel.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/model_form.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/model_manager.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/model_picker.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/provider_catalog.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/safety_panel.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/session_list.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/subagent_config.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/theme_designer.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/theme_picker.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/drawer.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/formatters.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/git_explore/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/git_explore/engine.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/git_explore/provider.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/git_explore/unified.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/image_preview.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/image_render.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/image_viewer.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/math_image.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/mermaid_image.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/prompt_controller.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/rendering.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/selectable_static.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/selectable_text.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/sink.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/status_controller.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/steer_controller.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/steer_widget.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/stream.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/stream_events.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/stream_runtime.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/textual_lifecycle.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/textual_stream_sink.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/theme.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/theme_controller.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/timeline.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/tool_blocks.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/components/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/components/branch.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/components/title.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/components/tool_output.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/components/usage.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/components/workspace.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/context.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/core.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/git_changes_popover.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/git_chrome.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/tool_output_popover.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/widget.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/transcript/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/transcript/controller.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/transcript/factory.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/transcript/state.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/transcript_blocks.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/tui.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/tui_launch.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/tui_styles.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/turn/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/turn/controller.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/turn/event_bridge.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/turn/event_renderer.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/turn/persistence.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/turn/request.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/turn_rail.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/turn_rail_widgets.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/user_turn.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/user_turn_block.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/welcome.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/web.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/synapse.cmd +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/__init__.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/acp/initialize.jsonl +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/codex_rollouts/duplicate_response_item.jsonl +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/codex_rollouts/incomplete_and_aborted.jsonl +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/codex_rollouts/legacy_compaction.jsonl +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/codex_rollouts/normal_completed.jsonl +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/codex_rollouts/replacement_history.jsonl +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/codex_rollouts/rollback.jsonl +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/codex_rollouts/unsupported_replacement.jsonl +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/sample_repo/calculator.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/sample_repo/test_calculator.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/tool_output_eval.json +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p0_baseline.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p1_core.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p1_transport.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p2_content.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p2_events.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p2_updates.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p3_agent.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p3_permissions.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p4_history.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p4_lifecycle.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p5_mcp.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p6_client_services.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p8_compliance.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_agent_lifecycle.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_agent_turn_runtime.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_approval.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_async_checkpointer.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_bottombar_registry.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_cancel_repair.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_checkpoint_seed.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_chrome_controller.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_cli.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_cli_codex_import.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_clipboard.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_codex_config.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_codex_history.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_codex_import.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_codex_sessions.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_codex_sessions_windows.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_compact_tool_descriptions.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_config.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_context_compact.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_debug_capture_middleware.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_debug_inspector.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_describe_image.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_dialogs.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_entry.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_filesystem_patch_tool.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_filesystem_search_tools.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_git_changes_popover.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_git_chrome.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_git_explore.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_goal_live_tui.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_goals.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_heap_dump.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_herdr_integration.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_http_clients.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_image_render.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_image_viewer.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_input_history.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_iteration_abc.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_layered_config.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_math_image_render.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_mcp_schema.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_mermaid_image.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_mermaid_render.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_middleware_async.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_model_dialogs.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_model_providers.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_model_request_compression_middleware.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_model_retry.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_models_persist.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_multimodal.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_native_math_render.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_openai_compat_reasoning.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_openai_oauth.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_openai_oauth_middleware.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_openai_usage.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_openai_websocket.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_pathing.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_project_catalog.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_project_drawer.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_project_switch.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_prompt_controller.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_prompts.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_runtime_hardening.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_runtime_manager.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_runtime_streaming.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_safety.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_search_index.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_session_headers.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_session_prewarm.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_session_store.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_session_summary.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_slash_complete.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_slash_effects.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_startup_defer.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_steer.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_steer_controller.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_stream_cancel.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_stream_semantic_fixtures.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_stream_ui.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_subagent_config_dialog.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_subagent_config_persist.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_subagent_status.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_subagents.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_textual_stream_sink.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_theme.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_theme_controller.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_timeline.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_tool_blocks.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_tool_ignore.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_tool_intent.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_tool_output.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_tool_output_eval.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_tool_output_slash.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_tool_output_usage_middleware.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_topbar_context_ratio.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_topbar_registry.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_transcript_controller.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_transcript_history.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_transcript_history_controller.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_tui_active_session_switcher.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_tui_codex_import.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_tui_paste.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_tui_selection.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_turn_controller.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_turn_event_renderer.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_turn_rail_minimap.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_turn_request.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_usage_restore.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_user_turn_style.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_welcome.py +0 -0
- {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/tool_output_plugin_fixture.py +0 -0
|
@@ -8,6 +8,40 @@ All entries are written in English.
|
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
+
## v0.1.41
|
|
12
|
+
|
|
13
|
+
### New Features
|
|
14
|
+
|
|
15
|
+
- MCP clients now declare the project workspace as an MCP workspace root, so file-writing tools (e.g. CDP screenshots) can write inside the project workspace instead of being restricted to the OS temp directory when no roots are configured.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## v0.1.40
|
|
20
|
+
|
|
21
|
+
### New Features
|
|
22
|
+
|
|
23
|
+
- Native file tools read images, video, audio, and PDF files as base64 (10 MB cap); Python adapters convert framework image blocks to Chat Completions and Responses `input_image` blocks (including data URLs and detail).
|
|
24
|
+
- Native Rust OpenAI client supports proxy routing (HTTP/HTTPS/SOCKS4/SOCKS5) by building a proxied reqwest client when a proxy URL is configured; OAuth (Codex) profiles can use the native Responses transport; reqwest error source chains are flattened so connect/TLS/DNS causes are visible.
|
|
25
|
+
- Added an OpenAI Codex Responses OAuth transport.
|
|
26
|
+
- Added a `project-session-reader` skill for listing, searching, and reading a project's `.synapse` session database.
|
|
27
|
+
- Added a `stream_usage` control for Responses usage metadata.
|
|
28
|
+
|
|
29
|
+
### Bug Fixes
|
|
30
|
+
|
|
31
|
+
- Reused native websocket connections across requests instead of opening new ones.
|
|
32
|
+
- Handled Codex websocket extension events.
|
|
33
|
+
- Reconciled transcript projection against the checkpoint watermark so projected history stays consistent with persisted state.
|
|
34
|
+
- Corrected Responses usage metadata.
|
|
35
|
+
- Prevented inflated tool-call token rates by excluding tool-call framing from rate accounting.
|
|
36
|
+
|
|
37
|
+
### Engineering
|
|
38
|
+
|
|
39
|
+
- Switched the `async-openai` dependency to a local git fork for the Responses-over-WebSocket feature.
|
|
40
|
+
- Added a Rust OpenAI build check script.
|
|
41
|
+
- Stabilized agent startup coverage tests.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
11
45
|
## v0.1.39
|
|
12
46
|
|
|
13
47
|
### 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.41
|
|
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
|
|
@@ -8,7 +8,9 @@ Skills 是 Synapse 的可扩展插件系统,位于项目 `skills/` 目录下
|
|
|
8
8
|
skills/
|
|
9
9
|
├── session-cache-analysis/
|
|
10
10
|
│ └── SKILL.md
|
|
11
|
-
|
|
11
|
+
├── session-crash-repair/
|
|
12
|
+
│ └── SKILL.md
|
|
13
|
+
└── project-session-reader/
|
|
12
14
|
└── SKILL.md
|
|
13
15
|
```
|
|
14
16
|
|
|
@@ -43,12 +45,13 @@ allowed_tools: execute, read_file, write_file, search_files, find_files, search_
|
|
|
43
45
|
|
|
44
46
|
## 内置 Skills
|
|
45
47
|
|
|
46
|
-
Synapse
|
|
48
|
+
Synapse 自带三个 Skills:
|
|
47
49
|
|
|
48
50
|
| Skill | 说明 |
|
|
49
51
|
|---|---|
|
|
50
52
|
| `session-crash-repair` | 检测并修复异常退出后 checkpoint 不一致的会话(悬挂工具调用、挂起图任务、过期转录投影) |
|
|
51
53
|
| `session-cache-analysis` | 分析会话的 prompt 缓存命中率,区分增量 miss 与全量逐出并定位根因 |
|
|
54
|
+
| `project-session-reader` | 读取或搜索指定项目(workspace 目录)`.synapse/` 下的会话:列出、全文搜索、按 thread_id 读取并分页 |
|
|
52
55
|
|
|
53
56
|
## 如何编写自定义 Skill
|
|
54
57
|
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
## v0.1.41
|
|
2
|
+
|
|
3
|
+
### New Features
|
|
4
|
+
|
|
5
|
+
- MCP clients now declare the project workspace as an MCP workspace root, so file-writing tools (e.g. CDP screenshots) can write inside the project workspace instead of being restricted to the OS temp directory when no roots are configured.
|
|
6
|
+
|
|
7
|
+
---
|
|
@@ -48,8 +48,7 @@ checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56"
|
|
|
48
48
|
[[package]]
|
|
49
49
|
name = "async-openai"
|
|
50
50
|
version = "0.41.3"
|
|
51
|
-
source = "
|
|
52
|
-
checksum = "d72db2750faea2ca5edbf6d0c50277a89dc8f75f5e6ddd695ef30f75e335019b"
|
|
51
|
+
source = "git+https://github.com/alex8224/async-openai.git?rev=c56301b#c56301bd68dfe4381cc965ebb40a26fb8d9aefc1"
|
|
53
52
|
dependencies = [
|
|
54
53
|
"async-openai-macros",
|
|
55
54
|
"base64",
|
|
@@ -59,14 +58,16 @@ dependencies = [
|
|
|
59
58
|
"futures",
|
|
60
59
|
"getrandom 0.3.4",
|
|
61
60
|
"rand 0.9.5",
|
|
62
|
-
"reqwest
|
|
61
|
+
"reqwest",
|
|
63
62
|
"secrecy",
|
|
64
63
|
"serde",
|
|
65
64
|
"serde_json",
|
|
66
65
|
"serde_urlencoded",
|
|
67
66
|
"thiserror 2.0.20",
|
|
68
67
|
"tokio",
|
|
68
|
+
"tokio-socks",
|
|
69
69
|
"tokio-stream",
|
|
70
|
+
"tokio-tungstenite",
|
|
70
71
|
"tokio-util",
|
|
71
72
|
"tower",
|
|
72
73
|
"tracing",
|
|
@@ -76,8 +77,7 @@ dependencies = [
|
|
|
76
77
|
[[package]]
|
|
77
78
|
name = "async-openai-macros"
|
|
78
79
|
version = "0.3.0"
|
|
79
|
-
source = "
|
|
80
|
-
checksum = "492a944774207eed3acf425214eadbd6ce84a2b89331164ff1c11bae92b26302"
|
|
80
|
+
source = "git+https://github.com/alex8224/async-openai.git?rev=c56301b#c56301bd68dfe4381cc965ebb40a26fb8d9aefc1"
|
|
81
81
|
dependencies = [
|
|
82
82
|
"proc-macro2",
|
|
83
83
|
"quote",
|
|
@@ -152,6 +152,15 @@ version = "2.13.1"
|
|
|
152
152
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
153
153
|
checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da"
|
|
154
154
|
|
|
155
|
+
[[package]]
|
|
156
|
+
name = "block-buffer"
|
|
157
|
+
version = "0.10.4"
|
|
158
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
159
|
+
checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
|
|
160
|
+
dependencies = [
|
|
161
|
+
"generic-array",
|
|
162
|
+
]
|
|
163
|
+
|
|
155
164
|
[[package]]
|
|
156
165
|
name = "block-buffer"
|
|
157
166
|
version = "0.12.1"
|
|
@@ -221,7 +230,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
221
230
|
checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81"
|
|
222
231
|
dependencies = [
|
|
223
232
|
"cfg-if",
|
|
224
|
-
"cpufeatures",
|
|
233
|
+
"cpufeatures 0.3.0",
|
|
225
234
|
"rand_core 0.10.1",
|
|
226
235
|
]
|
|
227
236
|
|
|
@@ -286,6 +295,15 @@ dependencies = [
|
|
|
286
295
|
"libm",
|
|
287
296
|
]
|
|
288
297
|
|
|
298
|
+
[[package]]
|
|
299
|
+
name = "cpufeatures"
|
|
300
|
+
version = "0.2.17"
|
|
301
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
302
|
+
checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
|
|
303
|
+
dependencies = [
|
|
304
|
+
"libc",
|
|
305
|
+
]
|
|
306
|
+
|
|
289
307
|
[[package]]
|
|
290
308
|
name = "cpufeatures"
|
|
291
309
|
version = "0.3.0"
|
|
@@ -329,6 +347,16 @@ version = "0.8.22"
|
|
|
329
347
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
330
348
|
checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17"
|
|
331
349
|
|
|
350
|
+
[[package]]
|
|
351
|
+
name = "crypto-common"
|
|
352
|
+
version = "0.1.7"
|
|
353
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
354
|
+
checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
|
|
355
|
+
dependencies = [
|
|
356
|
+
"generic-array",
|
|
357
|
+
"typenum",
|
|
358
|
+
]
|
|
359
|
+
|
|
332
360
|
[[package]]
|
|
333
361
|
name = "crypto-common"
|
|
334
362
|
version = "0.2.2"
|
|
@@ -373,6 +401,12 @@ dependencies = [
|
|
|
373
401
|
"syn 2.0.119",
|
|
374
402
|
]
|
|
375
403
|
|
|
404
|
+
[[package]]
|
|
405
|
+
name = "data-encoding"
|
|
406
|
+
version = "2.11.1"
|
|
407
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
408
|
+
checksum = "4583a4551df46e2792f82ceeac45e850d2e2d5debba0b91f102385cda5b11f06"
|
|
409
|
+
|
|
376
410
|
[[package]]
|
|
377
411
|
name = "derive_builder"
|
|
378
412
|
version = "0.20.2"
|
|
@@ -404,15 +438,25 @@ dependencies = [
|
|
|
404
438
|
"syn 2.0.119",
|
|
405
439
|
]
|
|
406
440
|
|
|
441
|
+
[[package]]
|
|
442
|
+
name = "digest"
|
|
443
|
+
version = "0.10.7"
|
|
444
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
445
|
+
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
|
|
446
|
+
dependencies = [
|
|
447
|
+
"block-buffer 0.10.4",
|
|
448
|
+
"crypto-common 0.1.7",
|
|
449
|
+
]
|
|
450
|
+
|
|
407
451
|
[[package]]
|
|
408
452
|
name = "digest"
|
|
409
453
|
version = "0.11.3"
|
|
410
454
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
411
455
|
checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2"
|
|
412
456
|
dependencies = [
|
|
413
|
-
"block-buffer",
|
|
457
|
+
"block-buffer 0.12.1",
|
|
414
458
|
"const-oid",
|
|
415
|
-
"crypto-common",
|
|
459
|
+
"crypto-common 0.2.2",
|
|
416
460
|
]
|
|
417
461
|
|
|
418
462
|
[[package]]
|
|
@@ -432,6 +476,12 @@ version = "1.0.5"
|
|
|
432
476
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
433
477
|
checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
|
|
434
478
|
|
|
479
|
+
[[package]]
|
|
480
|
+
name = "either"
|
|
481
|
+
version = "1.18.0"
|
|
482
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
483
|
+
checksum = "252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34"
|
|
484
|
+
|
|
435
485
|
[[package]]
|
|
436
486
|
name = "encoding_rs"
|
|
437
487
|
version = "0.8.35"
|
|
@@ -629,6 +679,16 @@ dependencies = [
|
|
|
629
679
|
"slab",
|
|
630
680
|
]
|
|
631
681
|
|
|
682
|
+
[[package]]
|
|
683
|
+
name = "generic-array"
|
|
684
|
+
version = "0.14.7"
|
|
685
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
686
|
+
checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
|
|
687
|
+
dependencies = [
|
|
688
|
+
"typenum",
|
|
689
|
+
"version_check",
|
|
690
|
+
]
|
|
691
|
+
|
|
632
692
|
[[package]]
|
|
633
693
|
name = "getrandom"
|
|
634
694
|
version = "0.2.17"
|
|
@@ -807,7 +867,6 @@ dependencies = [
|
|
|
807
867
|
"tokio",
|
|
808
868
|
"tokio-rustls",
|
|
809
869
|
"tower-service",
|
|
810
|
-
"webpki-roots",
|
|
811
870
|
]
|
|
812
871
|
|
|
813
872
|
[[package]]
|
|
@@ -1643,47 +1702,6 @@ version = "0.8.11"
|
|
|
1643
1702
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1644
1703
|
checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
|
|
1645
1704
|
|
|
1646
|
-
[[package]]
|
|
1647
|
-
name = "reqwest"
|
|
1648
|
-
version = "0.12.28"
|
|
1649
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1650
|
-
checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147"
|
|
1651
|
-
dependencies = [
|
|
1652
|
-
"base64",
|
|
1653
|
-
"bytes",
|
|
1654
|
-
"futures-core",
|
|
1655
|
-
"futures-util",
|
|
1656
|
-
"http",
|
|
1657
|
-
"http-body",
|
|
1658
|
-
"http-body-util",
|
|
1659
|
-
"hyper",
|
|
1660
|
-
"hyper-rustls",
|
|
1661
|
-
"hyper-util",
|
|
1662
|
-
"js-sys",
|
|
1663
|
-
"log",
|
|
1664
|
-
"percent-encoding",
|
|
1665
|
-
"pin-project-lite",
|
|
1666
|
-
"quinn",
|
|
1667
|
-
"rustls",
|
|
1668
|
-
"rustls-pki-types",
|
|
1669
|
-
"serde",
|
|
1670
|
-
"serde_json",
|
|
1671
|
-
"serde_urlencoded",
|
|
1672
|
-
"sync_wrapper",
|
|
1673
|
-
"tokio",
|
|
1674
|
-
"tokio-rustls",
|
|
1675
|
-
"tokio-util",
|
|
1676
|
-
"tower",
|
|
1677
|
-
"tower-http",
|
|
1678
|
-
"tower-service",
|
|
1679
|
-
"url",
|
|
1680
|
-
"wasm-bindgen",
|
|
1681
|
-
"wasm-bindgen-futures",
|
|
1682
|
-
"wasm-streams 0.4.2",
|
|
1683
|
-
"web-sys",
|
|
1684
|
-
"webpki-roots",
|
|
1685
|
-
]
|
|
1686
|
-
|
|
1687
1705
|
[[package]]
|
|
1688
1706
|
name = "reqwest"
|
|
1689
1707
|
version = "0.13.4"
|
|
@@ -1722,7 +1740,7 @@ dependencies = [
|
|
|
1722
1740
|
"url",
|
|
1723
1741
|
"wasm-bindgen",
|
|
1724
1742
|
"wasm-bindgen-futures",
|
|
1725
|
-
"wasm-streams
|
|
1743
|
+
"wasm-streams",
|
|
1726
1744
|
"web-sys",
|
|
1727
1745
|
]
|
|
1728
1746
|
|
|
@@ -1804,7 +1822,6 @@ checksum = "0283386ce02abc0151e1761d08802dfe86c173b0b494af5cbc086574e453da06"
|
|
|
1804
1822
|
dependencies = [
|
|
1805
1823
|
"aws-lc-rs",
|
|
1806
1824
|
"once_cell",
|
|
1807
|
-
"ring",
|
|
1808
1825
|
"rustls-pki-types",
|
|
1809
1826
|
"rustls-webpki",
|
|
1810
1827
|
"subtle",
|
|
@@ -1996,6 +2013,17 @@ dependencies = [
|
|
|
1996
2013
|
"serde",
|
|
1997
2014
|
]
|
|
1998
2015
|
|
|
2016
|
+
[[package]]
|
|
2017
|
+
name = "sha1"
|
|
2018
|
+
version = "0.10.7"
|
|
2019
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2020
|
+
checksum = "a978451301f4db1d02937a4ab3ccce137717b81826e79b7d49ffe3244a13c3b8"
|
|
2021
|
+
dependencies = [
|
|
2022
|
+
"cfg-if",
|
|
2023
|
+
"cpufeatures 0.2.17",
|
|
2024
|
+
"digest 0.10.7",
|
|
2025
|
+
]
|
|
2026
|
+
|
|
1999
2027
|
[[package]]
|
|
2000
2028
|
name = "sha2"
|
|
2001
2029
|
version = "0.11.0"
|
|
@@ -2003,8 +2031,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
2003
2031
|
checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4"
|
|
2004
2032
|
dependencies = [
|
|
2005
2033
|
"cfg-if",
|
|
2006
|
-
"cpufeatures",
|
|
2007
|
-
"digest",
|
|
2034
|
+
"cpufeatures 0.3.0",
|
|
2035
|
+
"digest 0.11.3",
|
|
2008
2036
|
]
|
|
2009
2037
|
|
|
2010
2038
|
[[package]]
|
|
@@ -2120,9 +2148,10 @@ dependencies = [
|
|
|
2120
2148
|
|
|
2121
2149
|
[[package]]
|
|
2122
2150
|
name = "synapse-core-tool"
|
|
2123
|
-
version = "0.1.
|
|
2151
|
+
version = "0.1.5"
|
|
2124
2152
|
dependencies = [
|
|
2125
2153
|
"async-openai",
|
|
2154
|
+
"base64",
|
|
2126
2155
|
"chardetng",
|
|
2127
2156
|
"encoding_rs",
|
|
2128
2157
|
"futures-util",
|
|
@@ -2135,7 +2164,7 @@ dependencies = [
|
|
|
2135
2164
|
"ratex-parser",
|
|
2136
2165
|
"ratex-render",
|
|
2137
2166
|
"ratex-types",
|
|
2138
|
-
"reqwest
|
|
2167
|
+
"reqwest",
|
|
2139
2168
|
"serde",
|
|
2140
2169
|
"serde_json",
|
|
2141
2170
|
"thiserror 2.0.20",
|
|
@@ -2315,6 +2344,18 @@ dependencies = [
|
|
|
2315
2344
|
"tokio",
|
|
2316
2345
|
]
|
|
2317
2346
|
|
|
2347
|
+
[[package]]
|
|
2348
|
+
name = "tokio-socks"
|
|
2349
|
+
version = "0.5.3"
|
|
2350
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2351
|
+
checksum = "a7e2948f60dbe26b35f2c7fb74ac2854c1fddded0fe9d7548fcc674a246f7615"
|
|
2352
|
+
dependencies = [
|
|
2353
|
+
"either",
|
|
2354
|
+
"futures-util",
|
|
2355
|
+
"thiserror 1.0.69",
|
|
2356
|
+
"tokio",
|
|
2357
|
+
]
|
|
2358
|
+
|
|
2318
2359
|
[[package]]
|
|
2319
2360
|
name = "tokio-stream"
|
|
2320
2361
|
version = "0.1.19"
|
|
@@ -2326,6 +2367,22 @@ dependencies = [
|
|
|
2326
2367
|
"tokio",
|
|
2327
2368
|
]
|
|
2328
2369
|
|
|
2370
|
+
[[package]]
|
|
2371
|
+
name = "tokio-tungstenite"
|
|
2372
|
+
version = "0.28.0"
|
|
2373
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2374
|
+
checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857"
|
|
2375
|
+
dependencies = [
|
|
2376
|
+
"futures-util",
|
|
2377
|
+
"log",
|
|
2378
|
+
"rustls",
|
|
2379
|
+
"rustls-pki-types",
|
|
2380
|
+
"tokio",
|
|
2381
|
+
"tokio-rustls",
|
|
2382
|
+
"tungstenite",
|
|
2383
|
+
"webpki-roots 0.26.11",
|
|
2384
|
+
]
|
|
2385
|
+
|
|
2329
2386
|
[[package]]
|
|
2330
2387
|
name = "tokio-util"
|
|
2331
2388
|
version = "0.7.19"
|
|
@@ -2433,6 +2490,25 @@ dependencies = [
|
|
|
2433
2490
|
"core_maths",
|
|
2434
2491
|
]
|
|
2435
2492
|
|
|
2493
|
+
[[package]]
|
|
2494
|
+
name = "tungstenite"
|
|
2495
|
+
version = "0.28.0"
|
|
2496
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2497
|
+
checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442"
|
|
2498
|
+
dependencies = [
|
|
2499
|
+
"bytes",
|
|
2500
|
+
"data-encoding",
|
|
2501
|
+
"http",
|
|
2502
|
+
"httparse",
|
|
2503
|
+
"log",
|
|
2504
|
+
"rand 0.9.5",
|
|
2505
|
+
"rustls",
|
|
2506
|
+
"rustls-pki-types",
|
|
2507
|
+
"sha1",
|
|
2508
|
+
"thiserror 2.0.20",
|
|
2509
|
+
"utf-8",
|
|
2510
|
+
]
|
|
2511
|
+
|
|
2436
2512
|
[[package]]
|
|
2437
2513
|
name = "typenum"
|
|
2438
2514
|
version = "1.20.1"
|
|
@@ -2484,6 +2560,12 @@ dependencies = [
|
|
|
2484
2560
|
"serde",
|
|
2485
2561
|
]
|
|
2486
2562
|
|
|
2563
|
+
[[package]]
|
|
2564
|
+
name = "utf-8"
|
|
2565
|
+
version = "0.7.6"
|
|
2566
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2567
|
+
checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
|
|
2568
|
+
|
|
2487
2569
|
[[package]]
|
|
2488
2570
|
name = "utf8_iter"
|
|
2489
2571
|
version = "1.0.4"
|
|
@@ -2585,19 +2667,6 @@ dependencies = [
|
|
|
2585
2667
|
"unicode-ident",
|
|
2586
2668
|
]
|
|
2587
2669
|
|
|
2588
|
-
[[package]]
|
|
2589
|
-
name = "wasm-streams"
|
|
2590
|
-
version = "0.4.2"
|
|
2591
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2592
|
-
checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65"
|
|
2593
|
-
dependencies = [
|
|
2594
|
-
"futures-util",
|
|
2595
|
-
"js-sys",
|
|
2596
|
-
"wasm-bindgen",
|
|
2597
|
-
"wasm-bindgen-futures",
|
|
2598
|
-
"web-sys",
|
|
2599
|
-
]
|
|
2600
|
-
|
|
2601
2670
|
[[package]]
|
|
2602
2671
|
name = "wasm-streams"
|
|
2603
2672
|
version = "0.5.0"
|
|
@@ -2640,6 +2709,15 @@ dependencies = [
|
|
|
2640
2709
|
"rustls-pki-types",
|
|
2641
2710
|
]
|
|
2642
2711
|
|
|
2712
|
+
[[package]]
|
|
2713
|
+
name = "webpki-roots"
|
|
2714
|
+
version = "0.26.11"
|
|
2715
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2716
|
+
checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9"
|
|
2717
|
+
dependencies = [
|
|
2718
|
+
"webpki-roots 1.0.9",
|
|
2719
|
+
]
|
|
2720
|
+
|
|
2643
2721
|
[[package]]
|
|
2644
2722
|
name = "webpki-roots"
|
|
2645
2723
|
version = "1.0.9"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "synapse-core-tool"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.5"
|
|
4
4
|
edition = "2021"
|
|
5
5
|
rust-version = "1.80"
|
|
6
6
|
license = "Apache-2.0"
|
|
@@ -12,7 +12,8 @@ name = "synapse_core_tool"
|
|
|
12
12
|
crate-type = ["cdylib", "rlib"]
|
|
13
13
|
|
|
14
14
|
[dependencies]
|
|
15
|
-
async-openai = {
|
|
15
|
+
async-openai = { git = "https://github.com/alex8224/async-openai.git", rev = "c56301b", features = ["chat-completion", "responses", "byot", "responses-ws"] }
|
|
16
|
+
base64 = "0.22"
|
|
16
17
|
chardetng = "0.1"
|
|
17
18
|
encoding_rs = "0.8"
|
|
18
19
|
futures-util = "0.3"
|
|
@@ -25,7 +26,7 @@ ratex-layout = "=0.1.14"
|
|
|
25
26
|
ratex-parser = "=0.1.14"
|
|
26
27
|
ratex-render = { version = "=0.1.14", features = ["embed-fonts"] }
|
|
27
28
|
ratex-types = "=0.1.14"
|
|
28
|
-
reqwest = { version = "0.
|
|
29
|
+
reqwest = { version = "0.13", default-features = false, features = ["json", "stream", "rustls", "socks"] }
|
|
29
30
|
serde = { version = "1", features = ["derive"] }
|
|
30
31
|
serde_json = "1"
|
|
31
32
|
thiserror = "2.0"
|
{synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/src/file_tools.rs
RENAMED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
use std::fs;
|
|
1
|
+
use std::fs::{self, File};
|
|
2
|
+
use std::io::Read;
|
|
2
3
|
use std::path::{Path, PathBuf};
|
|
3
4
|
|
|
5
|
+
use base64::Engine;
|
|
4
6
|
use pyo3::exceptions::{PyOSError, PyValueError};
|
|
5
7
|
use pyo3::prelude::*;
|
|
6
8
|
use pyo3::types::PyDict;
|
|
@@ -10,6 +12,17 @@ use crate::file_access::{read_text_detect, write_text_as};
|
|
|
10
12
|
const MAX_READ_LIMIT: usize = 10_000;
|
|
11
13
|
const MAX_READ_LINE_CHARS: usize = 1_200;
|
|
12
14
|
const MAX_READ_OUTPUT_CHARS: usize = 12_000;
|
|
15
|
+
const MAX_BINARY_READ_BYTES: u64 = 10 * 1024 * 1024;
|
|
16
|
+
|
|
17
|
+
fn binary_file_type(path: &Path) -> Option<&'static str> {
|
|
18
|
+
match path.extension()?.to_str()?.to_ascii_lowercase().as_str() {
|
|
19
|
+
"png" | "jpeg" | "jpg" | "webp" | "gif" | "heic" | "heif" => Some("image"),
|
|
20
|
+
"mp4" | "mpeg" | "mov" | "avi" | "flv" | "mpg" | "webm" | "wmv" | "3gpp" => Some("video"),
|
|
21
|
+
"wav" | "mp3" | "aiff" | "aac" | "ogg" | "flac" => Some("audio"),
|
|
22
|
+
"pdf" | "ppt" | "pptx" => Some("file"),
|
|
23
|
+
_ => None,
|
|
24
|
+
}
|
|
25
|
+
}
|
|
13
26
|
|
|
14
27
|
#[derive(Debug, thiserror::Error)]
|
|
15
28
|
enum ExactEditError {
|
|
@@ -124,6 +137,44 @@ pub(crate) fn read(
|
|
|
124
137
|
return Ok(result.unbind());
|
|
125
138
|
}
|
|
126
139
|
|
|
140
|
+
if let Some(file_type) = binary_file_type(&path) {
|
|
141
|
+
let mut file = File::open(&path).map_err(|error| io_error("open file", &path, error))?;
|
|
142
|
+
let size = file
|
|
143
|
+
.metadata()
|
|
144
|
+
.map_err(|error| io_error("inspect file", &path, error))?
|
|
145
|
+
.len();
|
|
146
|
+
if size > MAX_BINARY_READ_BYTES {
|
|
147
|
+
return Err(PyValueError::new_err(format!(
|
|
148
|
+
"binary file exceeds the {} byte read limit: {}",
|
|
149
|
+
MAX_BINARY_READ_BYTES,
|
|
150
|
+
path.display()
|
|
151
|
+
)));
|
|
152
|
+
}
|
|
153
|
+
let mut bytes = Vec::new();
|
|
154
|
+
file.by_ref()
|
|
155
|
+
.take(MAX_BINARY_READ_BYTES + 1)
|
|
156
|
+
.read_to_end(&mut bytes)
|
|
157
|
+
.map_err(|error| io_error("read file", &path, error))?;
|
|
158
|
+
if bytes.len() as u64 > MAX_BINARY_READ_BYTES {
|
|
159
|
+
return Err(PyValueError::new_err(format!(
|
|
160
|
+
"binary file grew beyond the {} byte read limit: {}",
|
|
161
|
+
MAX_BINARY_READ_BYTES,
|
|
162
|
+
path.display()
|
|
163
|
+
)));
|
|
164
|
+
}
|
|
165
|
+
let content = base64::engine::general_purpose::STANDARD.encode(bytes);
|
|
166
|
+
result.set_item("kind", file_type)?;
|
|
167
|
+
result.set_item("output", py.None())?;
|
|
168
|
+
result.set_item("content", content)?;
|
|
169
|
+
result.set_item("encoding", "base64")?;
|
|
170
|
+
result.set_item("truncated", false)?;
|
|
171
|
+
result.set_item("start_line", py.None())?;
|
|
172
|
+
result.set_item("end_line", py.None())?;
|
|
173
|
+
result.set_item("total_lines", py.None())?;
|
|
174
|
+
result.set_item("total_entries", py.None())?;
|
|
175
|
+
return Ok(result.unbind());
|
|
176
|
+
}
|
|
177
|
+
|
|
127
178
|
let (content, _) =
|
|
128
179
|
read_text_detect(&path).map_err(|error| io_error("read file", &path, error))?;
|
|
129
180
|
let lines = content.split_inclusive('\n').collect::<Vec<_>>();
|
|
@@ -147,6 +198,7 @@ pub(crate) fn read(
|
|
|
147
198
|
result.set_item("kind", "file")?;
|
|
148
199
|
result.set_item("output", output)?;
|
|
149
200
|
result.set_item("content", selected)?;
|
|
201
|
+
result.set_item("encoding", "utf-8")?;
|
|
150
202
|
result.set_item(
|
|
151
203
|
"truncated",
|
|
152
204
|
end < total_lines || output_truncated || line_truncated,
|
|
@@ -354,6 +406,14 @@ pub(crate) fn patch(py: Python<'_>, file_path: &str, patch: &str) -> PyResult<Py
|
|
|
354
406
|
mod tests {
|
|
355
407
|
use super::*;
|
|
356
408
|
|
|
409
|
+
#[test]
|
|
410
|
+
fn binary_file_type_is_case_insensitive() {
|
|
411
|
+
assert_eq!(binary_file_type(Path::new("shot.PNG")), Some("image"));
|
|
412
|
+
assert_eq!(binary_file_type(Path::new("clip.MP4")), Some("video"));
|
|
413
|
+
assert_eq!(binary_file_type(Path::new("notes.txt")), None);
|
|
414
|
+
assert_eq!(MAX_BINARY_READ_BYTES, 10 * 1024 * 1024);
|
|
415
|
+
}
|
|
416
|
+
|
|
357
417
|
#[test]
|
|
358
418
|
fn exact_edit_accepts_crlf_candidates() {
|
|
359
419
|
let (edited, count) =
|