synapse-cli-agent 0.1.21__tar.gz → 0.1.22__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.21 → synapse_cli_agent-0.1.22}/CHANGELOG.md +17 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/PKG-INFO +20 -20
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/config.md +1 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/sessions.md +11 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/pyproject.toml +20 -20
- synapse_cli_agent-0.1.22/release_body.md +16 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/sessions/transcript.py +105 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/settings/schema.py +5 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/tui.py +368 -30
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_config.py +10 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_layered_config.py +5 -1
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_transcript.py +74 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_tui_selection.py +20 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/uv.lock +20 -20
- synapse_cli_agent-0.1.21/release_body.md +0 -24
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/.github/workflows/ci.yml +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/.github/workflows/docs.yml +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/.github/workflows/native-compression-wheels.yml +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/.github/workflows/native-core-tool-wheels.yml +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/.github/workflows/release.yml +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/.gitignore +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/.python-version +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/.readthedocs.yaml +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/AGENTS.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/README.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/agent_upstream.txt +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/cli_upstream.txt +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/decode_screenshot.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/agent-development-guide.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/architecture-flow.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/architecture.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/cli.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/codex-session-discovery-phase-1.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/codex-session-import-phase-2.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/design.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/index.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/install.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/mcp.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/models.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/native-compression-core.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/native-core-tool.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/permissions.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/quickstart.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/skills.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/smith_output.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/tool-output-transform.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/tui-cursor-refactor.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/tutorial.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/docs/x-agent-development-guide.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/examples/mcp.example.json +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/examples/models.example.json +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/examples/settings.example.json +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/middleware_upstream.txt +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/mkdocs.yml +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/Cargo.lock +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/Cargo.toml +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/LICENSE +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/NOTICE +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/README.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/pyproject.toml +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/python/synapse_core_tool/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/src/file_access.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/src/file_tools.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/src/lib.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/src/search.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-core-tool/uv.lock +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/Cargo.lock +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/Cargo.toml +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/LICENSE +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/NOTICE +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/README.md +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/pyproject.toml +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/python/synapse_tool_compress_core/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/ccr.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/ccr_in_memory.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/mod.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/relevance/base.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/relevance/bm25.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/signals/keyword_detector.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/signals/line_importance.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/adaptive_sizer.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/anchor_selector.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/code_compressor.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/diff_compressor.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/log_compressor.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/search_compressor.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/analyzer.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/anchors.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/builder.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/classifier.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/classifier.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/compactor.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/formatter.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/ir.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/mod.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/walker.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/config.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/constraints.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crusher.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crushers.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/error_keywords.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/field_detect.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/hashing.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/mod.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/observer.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/orchestration.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/outliers.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/planning.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/statistics.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/stats_math.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/traits.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/types.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/rust/synapse-tool-compress-core/src/lib.rs +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/scripts/install.ps1 +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/scripts/release.ps1 +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/slash_cmds_upstream.txt +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/__main__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/app/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/app/agent.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/app/agent_md.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/cli.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/commands/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/commands/compression.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/commands/helpers.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/commands/mcp.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/commands/model.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/commands/result.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/commands/sessions.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/commands/slash_cmds.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/commands/slash_complete.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/commands/theme.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/config.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/content/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/content/input_history.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/content/multimodal.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/content/prompts.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/content/skills_catalog.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/checkpoint_seed.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/codex_history.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/codex_import.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/codex_sessions.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/describe_image.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/http_clients.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/llm_openai_compat.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/llm_openai_websocket.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/mcp_client.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/openai_oauth.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/openai_oauth_middleware.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/openai_usage.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/integrations/vision_middleware.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/memory/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/memory/auto_recorder.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/memory/embedder.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/memory/long_term.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/models/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/models/config.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/models/helpers.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/models/profile.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/models/registry.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/models_registry.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/observability/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/observability/debug_inspector.html +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/observability/debug_server.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/observability/llm_debug.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/observability/startup_trace.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/parallel_subagents.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/planner/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/planner/task_planner.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/rag/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/rag/knowledge_base.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/async_runtime.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/backends.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/context_compact.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/debug_capture_middleware.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/execute_capture.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/filesystem_tool_prompt_middleware.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/fs_permissions.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/harness.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/hitl.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/interaction_ledger.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/middleware.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/model_request_compression_middleware.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/pathing.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/safety.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/steer.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/subagent_routing.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/subagents.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/tool_ignore.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/tool_output_eval.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/tool_output_middleware.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/runtime/tool_output_usage_middleware.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/sessions/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/sessions/cancel_repair.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/sessions/search_index.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/sessions/session_recap.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/sessions/store.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/settings/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/settings/config_paths.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/subagent_monitor.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/subagents.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tool_output/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tool_output/detection.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tool_output/metrics.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tool_output/models.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tool_output/pipeline.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tool_output/repository.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tool_output/transformers.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tools/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tools/describe_image.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tools/filesystem_patch.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tools/filesystem_search.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/tools/session_tools.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/answer_divider.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/bottombar/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/bottombar/components/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/bottombar/components/codex_usage.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/bottombar/components/key_hints.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/bottombar/components/mcp.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/bottombar/components/mode.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/bottombar/components/model.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/bottombar/components/thread.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/bottombar/context.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/bottombar/core.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/clipboard.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/base.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/codex_reset.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/codex_session_list.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/compression_diagnostics.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/git_explore.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/mcp_panel.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/model_picker.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/safety_panel.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/session_list.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/subagent_monitor.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/theme_designer.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/dialogs/theme_picker.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/formatters.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/git_explore/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/git_explore/engine.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/git_explore/provider.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/git_explore/unified.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/rendering.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/selectable_static.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/selectable_text.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/sink.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/steer_widget.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/stream.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/stream_events.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/stream_runtime.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/textual_stream_sink.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/theme.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/timeline.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/tool_blocks.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/components/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/components/branch.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/components/title.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/components/tool_output.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/components/usage.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/components/workspace.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/context.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/core.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/git_changes_popover.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/git_chrome.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/tool_output_popover.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/topbar/widget.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/transcript_blocks.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/turn_rail.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/turn_rail_widgets.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/user_turn.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/user_turn_block.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/src/synapse/ui/welcome.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/synapse.cmd +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/__init__.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/fixtures/codex_rollouts/duplicate_response_item.jsonl +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/fixtures/codex_rollouts/incomplete_and_aborted.jsonl +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/fixtures/codex_rollouts/legacy_compaction.jsonl +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/fixtures/codex_rollouts/normal_completed.jsonl +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/fixtures/codex_rollouts/replacement_history.jsonl +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/fixtures/codex_rollouts/rollback.jsonl +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/fixtures/codex_rollouts/unsupported_replacement.jsonl +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/fixtures/sample_repo/calculator.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/fixtures/sample_repo/test_calculator.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/fixtures/tool_output_eval.json +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_agent_factory.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_async_checkpointer.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_backends.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_bottombar_registry.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_cancel_repair.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_capabilities.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_checkpoint_seed.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_cli.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_cli_codex_import.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_codex_history.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_codex_import.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_codex_sessions.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_codex_sessions_windows.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_compact_tool_descriptions.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_context_compact.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_context_window.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_dag_parallel.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_debug_capture_middleware.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_debug_inspector.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_describe_image.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_dialogs.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_filesystem_patch_tool.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_filesystem_search_tools.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_git_changes_popover.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_git_chrome.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_git_explore.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_http_clients.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_input_history.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_iteration_abc.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_mcp_schema.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_mermaid_render.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_middleware_async.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_model_request_compression_middleware.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_model_retry.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_multimodal.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_openai_compat_reasoning.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_openai_oauth.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_openai_oauth_middleware.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_openai_usage.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_openai_websocket.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_pathing.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_prompts.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_safety.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_search_index.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_session_recap.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_slash_and_mcp.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_slash_complete.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_startup_defer.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_steer.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_stream_cancel.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_stream_tool_items.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_stream_ui.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_subagent_monitor_dialog.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_subagent_status.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_textual_stream_sink.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_theme.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_timeline.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_tool_ignore.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_tool_intent.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_tool_output.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_tool_output_eval.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_tool_output_slash.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_tool_output_usage_middleware.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_topbar_context_ratio.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_topbar_registry.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_tui_codex_import.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_turn_rail_minimap.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_usage_restore.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_user_turn_style.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/test_welcome.py +0 -0
- {synapse_cli_agent-0.1.21 → synapse_cli_agent-0.1.22}/tests/tool_output_plugin_fixture.py +0 -0
|
@@ -7,6 +7,23 @@ The release workflow automatically extracts the matching section as release note
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## v0.1.22
|
|
11
|
+
|
|
12
|
+
### 新增功能
|
|
13
|
+
|
|
14
|
+
- TUI 恢复会话时改为分页加载:启动只渲染最近 `AGENT_HISTORY_TAIL_TURNS` 轮(默认 20),滚动到 transcript 顶部时异步加载更早历史并保持滚动位置,避免超长会话导致启动卡顿。
|
|
15
|
+
- 新增 `AGENT_HISTORY_TAIL_TURNS` 设置,控制 TUI 启动时初始渲染的最近可见会话轮数(支持环境变量与分层 `settings.json`)。
|
|
16
|
+
|
|
17
|
+
### 修复
|
|
18
|
+
|
|
19
|
+
- 修复历史分页异步加载的请求代际竞争:切换/重新加载会话后,旧分页 worker 的回调不再清除当前请求的加载状态或插入过期数据。
|
|
20
|
+
|
|
21
|
+
### 工程改进
|
|
22
|
+
|
|
23
|
+
- 直接依赖版本固定到 `uv.lock` 对应版本。
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
10
27
|
## v0.1.21
|
|
11
28
|
|
|
12
29
|
### 新增功能
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: synapse-cli-agent
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.22
|
|
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,26 +8,26 @@ Project-URL: Issues, https://github.com/alex8224/synapse-agent/issues
|
|
|
8
8
|
Project-URL: Changelog, https://github.com/alex8224/synapse-agent/blob/main/CHANGELOG.md
|
|
9
9
|
Author-email: alex8224 <alex8224@gmail.com>
|
|
10
10
|
Requires-Python: >=3.12
|
|
11
|
-
Requires-Dist: aiosqlite
|
|
12
|
-
Requires-Dist: deepagents
|
|
13
|
-
Requires-Dist: httpx[socks]
|
|
14
|
-
Requires-Dist: langchain-anthropic
|
|
15
|
-
Requires-Dist: langchain-openai
|
|
16
|
-
Requires-Dist: langchain
|
|
17
|
-
Requires-Dist: langgraph-checkpoint-sqlite
|
|
18
|
-
Requires-Dist: langgraph
|
|
19
|
-
Requires-Dist: mcp
|
|
20
|
-
Requires-Dist: pydantic-settings
|
|
21
|
-
Requires-Dist: python-dotenv
|
|
22
|
-
Requires-Dist: rich
|
|
11
|
+
Requires-Dist: aiosqlite==0.22.1
|
|
12
|
+
Requires-Dist: deepagents==0.6.12
|
|
13
|
+
Requires-Dist: httpx[socks]==0.28.1
|
|
14
|
+
Requires-Dist: langchain-anthropic==1.4.8
|
|
15
|
+
Requires-Dist: langchain-openai==1.3.5
|
|
16
|
+
Requires-Dist: langchain==1.3.14
|
|
17
|
+
Requires-Dist: langgraph-checkpoint-sqlite==3.1.0
|
|
18
|
+
Requires-Dist: langgraph==1.2.9
|
|
19
|
+
Requires-Dist: mcp==1.28.1
|
|
20
|
+
Requires-Dist: pydantic-settings==2.14.2
|
|
21
|
+
Requires-Dist: python-dotenv==1.2.2
|
|
22
|
+
Requires-Dist: rich==15.0.0
|
|
23
23
|
Requires-Dist: synapse-core-tool<0.2.0,>=0.1.0
|
|
24
|
-
Requires-Dist: termaid
|
|
25
|
-
Requires-Dist: texicode
|
|
26
|
-
Requires-Dist: textual-diff-view
|
|
27
|
-
Requires-Dist: textual
|
|
28
|
-
Requires-Dist: typer
|
|
29
|
-
Requires-Dist: websockets
|
|
30
|
-
Requires-Dist: zstandard
|
|
24
|
+
Requires-Dist: termaid==0.7.1
|
|
25
|
+
Requires-Dist: texicode==1.0.3
|
|
26
|
+
Requires-Dist: textual-diff-view==0.1.5
|
|
27
|
+
Requires-Dist: textual==8.2.8
|
|
28
|
+
Requires-Dist: typer==0.27.0
|
|
29
|
+
Requires-Dist: websockets==15.0.1
|
|
30
|
+
Requires-Dist: zstandard==0.25.0
|
|
31
31
|
Provides-Extra: dev
|
|
32
32
|
Requires-Dist: mkdocs-material>=9.7.7; extra == 'dev'
|
|
33
33
|
Requires-Dist: mkdocs>=1.6.1; extra == 'dev'
|
|
@@ -70,6 +70,7 @@ Synapse 使用 **Pydantic Settings** 实现分层配置系统。
|
|
|
70
70
|
| `CHECKPOINT_BACKEND` | `sqlite` | 检查点后端(`sqlite`/`memory`) |
|
|
71
71
|
| `CHECKPOINT_PATH` | `.coding-agent/checkpoints.sqlite` | 检查点存储路径 |
|
|
72
72
|
| `SESSIONS_PATH` | — | 会话元数据路径 |
|
|
73
|
+
| `AGENT_HISTORY_TAIL_TURNS` | `20` | TUI 启动时初始渲染的最近可见会话轮数;滚动到顶部后加载更早历史 |
|
|
73
74
|
|
|
74
75
|
### 子代理
|
|
75
76
|
|
|
@@ -34,6 +34,17 @@ synapse run "继续刚才的工作" --thread-id <thread_id> -w .
|
|
|
34
34
|
|
|
35
35
|
TUI 模式下也可以在界面内浏览和切换历史会话。
|
|
36
36
|
|
|
37
|
+
### TUI 恢复会话的分页加载
|
|
38
|
+
|
|
39
|
+
TUI 启动恢复会话时不会一次性渲染整个 transcript,而是只绘制最后
|
|
40
|
+
`history_tail_turns` 轮(默认 20 轮,可在配置中覆盖),避免超长会话
|
|
41
|
+
导致启动卡顿。更早的历史通过滚动分页加载:
|
|
42
|
+
|
|
43
|
+
- 启动后自动滚动到 transcript 底部,显示最近 N 轮。
|
|
44
|
+
- 滚动到 transcript 顶部时,异步加载更早的一批历史并插入到当前内容上方,
|
|
45
|
+
滚动位置保持不变,直到加载完整个会话。
|
|
46
|
+
- 切换会话(`/session`)或重新加载后,分页状态随 transcript 一起重置。
|
|
47
|
+
|
|
37
48
|
## 导出会话
|
|
38
49
|
|
|
39
50
|
将对话记录导出为 Markdown:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "synapse-cli-agent"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.22"
|
|
4
4
|
description = "Local coding agent built on LangChain Deep Agents (LocalShell, no sandbox)"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
authors = [
|
|
@@ -10,25 +10,25 @@ requires-python = ">=3.12"
|
|
|
10
10
|
|
|
11
11
|
dependencies = [
|
|
12
12
|
"synapse-core-tool>=0.1.0,<0.2.0",
|
|
13
|
-
"aiosqlite
|
|
14
|
-
"deepagents
|
|
15
|
-
"httpx[socks]
|
|
16
|
-
"langchain
|
|
17
|
-
"langchain-anthropic
|
|
18
|
-
"langchain-openai
|
|
19
|
-
"langgraph
|
|
20
|
-
"langgraph-checkpoint-sqlite
|
|
21
|
-
"mcp
|
|
22
|
-
"pydantic-settings
|
|
23
|
-
"python-dotenv
|
|
24
|
-
"rich
|
|
25
|
-
"termaid
|
|
26
|
-
"texicode
|
|
27
|
-
"textual
|
|
28
|
-
"textual-diff-view
|
|
29
|
-
"typer
|
|
30
|
-
"websockets
|
|
31
|
-
"zstandard
|
|
13
|
+
"aiosqlite==0.22.1",
|
|
14
|
+
"deepagents==0.6.12",
|
|
15
|
+
"httpx[socks]==0.28.1",
|
|
16
|
+
"langchain==1.3.14",
|
|
17
|
+
"langchain-anthropic==1.4.8",
|
|
18
|
+
"langchain-openai==1.3.5",
|
|
19
|
+
"langgraph==1.2.9",
|
|
20
|
+
"langgraph-checkpoint-sqlite==3.1.0",
|
|
21
|
+
"mcp==1.28.1",
|
|
22
|
+
"pydantic-settings==2.14.2",
|
|
23
|
+
"python-dotenv==1.2.2",
|
|
24
|
+
"rich==15.0.0",
|
|
25
|
+
"termaid==0.7.1",
|
|
26
|
+
"texicode==1.0.3",
|
|
27
|
+
"textual==8.2.8",
|
|
28
|
+
"textual-diff-view==0.1.5",
|
|
29
|
+
"typer==0.27.0",
|
|
30
|
+
"websockets==15.0.1",
|
|
31
|
+
"zstandard==0.25.0",
|
|
32
32
|
]
|
|
33
33
|
|
|
34
34
|
[project.urls]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
## v0.1.22
|
|
2
|
+
|
|
3
|
+
### 新增功能
|
|
4
|
+
|
|
5
|
+
- TUI 恢复会话时改为分页加载:启动只渲染最近 `AGENT_HISTORY_TAIL_TURNS` 轮(默认 20),滚动到 transcript 顶部时异步加载更早历史并保持滚动位置,避免超长会话导致启动卡顿。
|
|
6
|
+
- 新增 `AGENT_HISTORY_TAIL_TURNS` 设置,控制 TUI 启动时初始渲染的最近可见会话轮数(支持环境变量与分层 `settings.json`)。
|
|
7
|
+
|
|
8
|
+
### 修复
|
|
9
|
+
|
|
10
|
+
- 修复历史分页异步加载的请求代际竞争:切换/重新加载会话后,旧分页 worker 的回调不再清除当前请求的加载状态或插入过期数据。
|
|
11
|
+
|
|
12
|
+
### 工程改进
|
|
13
|
+
|
|
14
|
+
- 直接依赖版本固定到 `uv.lock` 对应版本。
|
|
15
|
+
|
|
16
|
+
---
|
|
@@ -605,6 +605,111 @@ def fold_messages_for_ui(messages: list[Any]) -> list[UiTranscriptEvent]:
|
|
|
605
605
|
return events
|
|
606
606
|
|
|
607
607
|
|
|
608
|
+
@dataclass
|
|
609
|
+
class TranscriptWindow:
|
|
610
|
+
"""A foldable slice of a thread plus the paging boundary.
|
|
611
|
+
|
|
612
|
+
Attributes:
|
|
613
|
+
events: UI events folded from ``messages[start_idx:end_idx]``.
|
|
614
|
+
start_idx: message index where this window starts.
|
|
615
|
+
has_more: True when older visible user turns exist before ``start_idx``.
|
|
616
|
+
"""
|
|
617
|
+
|
|
618
|
+
events: list[UiTranscriptEvent] = field(default_factory=list)
|
|
619
|
+
start_idx: int = 0
|
|
620
|
+
has_more: bool = False
|
|
621
|
+
|
|
622
|
+
|
|
623
|
+
def _is_steer_message_noise(msg: Any) -> bool:
|
|
624
|
+
"""True when ``msg`` is model-only steer chrome (never painted)."""
|
|
625
|
+
try:
|
|
626
|
+
from synapse.runtime.steer import is_steer_message
|
|
627
|
+
|
|
628
|
+
return is_steer_message(msg)
|
|
629
|
+
except Exception: # noqa: BLE001
|
|
630
|
+
return False
|
|
631
|
+
|
|
632
|
+
|
|
633
|
+
def turn_start_indexes(messages: list[Any]) -> list[int]:
|
|
634
|
+
"""Indexes of human messages that fold into a visible ``user`` turn.
|
|
635
|
+
|
|
636
|
+
Mirrors the filtering inside ``fold_messages_for_ui`` (summarization /
|
|
637
|
+
steer / context-compaction wrappers never start a visible turn), so the
|
|
638
|
+
paging boundaries stay aligned with what the TUI actually paints.
|
|
639
|
+
"""
|
|
640
|
+
out: list[int] = []
|
|
641
|
+
for i, msg in enumerate(messages or []):
|
|
642
|
+
if _message_role(msg) not in {"human", "user"}:
|
|
643
|
+
continue
|
|
644
|
+
if is_lc_summarization_message(msg):
|
|
645
|
+
continue
|
|
646
|
+
if _is_steer_message_noise(msg):
|
|
647
|
+
continue
|
|
648
|
+
text = _message_content(msg).strip()
|
|
649
|
+
if is_context_compact_text(text):
|
|
650
|
+
continue
|
|
651
|
+
try:
|
|
652
|
+
from synapse.runtime.steer import is_steer_message as _is_steer
|
|
653
|
+
|
|
654
|
+
if _is_steer(text=text):
|
|
655
|
+
continue
|
|
656
|
+
except Exception: # noqa: BLE001
|
|
657
|
+
pass
|
|
658
|
+
if not text and not _message_images(msg):
|
|
659
|
+
continue
|
|
660
|
+
out.append(i)
|
|
661
|
+
return out
|
|
662
|
+
|
|
663
|
+
|
|
664
|
+
def fold_tail_window(
|
|
665
|
+
messages: list[Any],
|
|
666
|
+
*,
|
|
667
|
+
tail_turns: int = 20,
|
|
668
|
+
) -> TranscriptWindow:
|
|
669
|
+
"""Fold only the last ``tail_turns`` visible user turns of a thread.
|
|
670
|
+
|
|
671
|
+
Used at TUI startup so huge threads paint a bounded window instead of the
|
|
672
|
+
full transcript; ``has_more`` tells the UI that older turns exist and can
|
|
673
|
+
be fetched page by page via ``fold_earlier_window``.
|
|
674
|
+
"""
|
|
675
|
+
starts = turn_start_indexes(messages or [])
|
|
676
|
+
if not starts:
|
|
677
|
+
return TranscriptWindow(events=[], start_idx=0, has_more=False)
|
|
678
|
+
n = min(len(starts), max(1, int(tail_turns)))
|
|
679
|
+
boundary = starts[len(starts) - n]
|
|
680
|
+
events = fold_messages_for_ui(messages[boundary:])
|
|
681
|
+
return TranscriptWindow(
|
|
682
|
+
events=events,
|
|
683
|
+
start_idx=boundary,
|
|
684
|
+
has_more=any(i < boundary for i in starts),
|
|
685
|
+
)
|
|
686
|
+
|
|
687
|
+
|
|
688
|
+
def fold_earlier_window(
|
|
689
|
+
messages: list[Any],
|
|
690
|
+
*,
|
|
691
|
+
before_idx: int,
|
|
692
|
+
tail_turns: int = 20,
|
|
693
|
+
) -> TranscriptWindow:
|
|
694
|
+
"""Fold up to ``tail_turns`` visible user turns strictly before ``before_idx``.
|
|
695
|
+
|
|
696
|
+
Used for scroll-up paging: returns the next older page (the newest page of
|
|
697
|
+
the history already painted by the UI). ``start_idx`` is the message index
|
|
698
|
+
where the returned page begins; ``has_more`` indicates older pages remain.
|
|
699
|
+
"""
|
|
700
|
+
starts = [i for i in turn_start_indexes(messages or []) if i < int(before_idx)]
|
|
701
|
+
if not starts:
|
|
702
|
+
return TranscriptWindow(events=[], start_idx=0, has_more=False)
|
|
703
|
+
n = min(len(starts), max(1, int(tail_turns)))
|
|
704
|
+
boundary = starts[len(starts) - n]
|
|
705
|
+
events = fold_messages_for_ui(messages[boundary:int(before_idx)])
|
|
706
|
+
return TranscriptWindow(
|
|
707
|
+
events=events,
|
|
708
|
+
start_idx=boundary,
|
|
709
|
+
has_more=any(i < boundary for i in starts),
|
|
710
|
+
)
|
|
711
|
+
|
|
712
|
+
|
|
608
713
|
def _looks_error(content: str) -> bool:
|
|
609
714
|
low = (content or "").casefold()
|
|
610
715
|
return low.startswith("error") or "traceback" in low or "exception:" in low
|
|
@@ -264,6 +264,11 @@ class Settings(BaseSettings):
|
|
|
264
264
|
session_recap_min_turns: int = Field(
|
|
265
265
|
default=3, validation_alias="AGENT_SESSION_RECAP_MIN_TURNS"
|
|
266
266
|
)
|
|
267
|
+
# TUI transcript restore: number of recent visible turns rendered initially.
|
|
268
|
+
# Older turns are loaded when the user scrolls to the top.
|
|
269
|
+
history_tail_turns: int = Field(
|
|
270
|
+
default=20, ge=1, validation_alias="AGENT_HISTORY_TAIL_TURNS"
|
|
271
|
+
)
|
|
267
272
|
# DeepSeek V4 thinking / other reasoning models via OpenAI-compatible API
|
|
268
273
|
enable_thinking: bool = Field(default=True, validation_alias="ENABLE_THINKING")
|
|
269
274
|
reasoning_effort: str = Field(default="high", validation_alias="REASONING_EFFORT")
|