synapse-cli-agent 0.1.23__tar.gz → 0.1.25__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.25/.dockerignore +15 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/CHANGELOG.md +31 -0
- synapse_cli_agent-0.1.25/Dockerfile.web +40 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/PKG-INFO +1 -1
- synapse_cli_agent-0.1.25/docs/docker-web.md +123 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/mkdocs.yml +2 -1
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/pyproject.toml +2 -1
- synapse_cli_agent-0.1.25/release_body.md +15 -0
- synapse_cli_agent-0.1.25/scripts/serve_web.py +12 -0
- synapse_cli_agent-0.1.25/src/synapse/web.py +64 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/uv.lock +1 -1
- synapse_cli_agent-0.1.23/release_body.md +0 -19
- synapse_cli_agent-0.1.23/scripts/serve_web.py +0 -42
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/.github/workflows/ci.yml +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/.github/workflows/docs.yml +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/.github/workflows/native-compression-wheels.yml +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/.github/workflows/native-core-tool-wheels.yml +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/.github/workflows/release.yml +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/.gitignore +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/.python-version +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/.readthedocs.yaml +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/AGENTS.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/LICENSE +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/README.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/agent-studio-prototype/favicon.svg +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/agent-studio-prototype/index.html +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/agent-studio-prototype/script.js +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/agent-studio-prototype/styles.css +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/agent_upstream.txt +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/cli_upstream.txt +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/debug_compact.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/decode_screenshot.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/agent-development-guide.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/architecture-flow.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/architecture.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/cli.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/codex-session-discovery-phase-1.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/codex-session-import-phase-2.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/config.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/design.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/index.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/install.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/mcp.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/models.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/native-compression-core.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/native-core-tool.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/permissions.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/quickstart.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/sessions.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/skills.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/smith_output.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/subagent-architecture-survey.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/tool-output-transform.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/tui-cursor-refactor.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/tutorial.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/x-agent-development-guide.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/examples/mcp.example.json +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/examples/models.example.json +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/examples/settings.example.json +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/middleware_upstream.txt +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-core-tool/Cargo.lock +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-core-tool/Cargo.toml +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-core-tool/LICENSE +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-core-tool/NOTICE +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-core-tool/README.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-core-tool/pyproject.toml +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-core-tool/python/synapse_core_tool/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-core-tool/src/file_access.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-core-tool/src/file_tools.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-core-tool/src/lib.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-core-tool/src/search.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-core-tool/uv.lock +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/Cargo.lock +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/Cargo.toml +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/LICENSE +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/NOTICE +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/README.md +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/pyproject.toml +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/python/synapse_tool_compress_core/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/ccr.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/ccr_in_memory.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/mod.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/relevance/base.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/relevance/bm25.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/signals/keyword_detector.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/signals/line_importance.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/adaptive_sizer.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/anchor_selector.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/code_compressor.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/diff_compressor.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/log_compressor.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/search_compressor.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/analyzer.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/anchors.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/builder.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/classifier.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/classifier.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/compactor.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/formatter.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/ir.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/mod.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/walker.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/config.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/constraints.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crusher.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crushers.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/error_keywords.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/field_detect.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/hashing.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/mod.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/observer.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/orchestration.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/outliers.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/planning.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/statistics.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/stats_math.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/traits.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/types.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/src/lib.rs +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/scripts/install.ps1 +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/scripts/release.ps1 +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/slash_cmds_upstream.txt +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/__main__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/app/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/app/agent.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/app/agent_md.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/cli.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/commands/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/commands/compression.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/commands/goal.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/commands/helpers.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/commands/mcp.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/commands/model.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/commands/result.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/commands/sessions.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/commands/slash_cmds.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/commands/slash_complete.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/commands/theme.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/config.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/content/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/content/input_history.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/content/multimodal.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/content/prompts.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/content/skills_catalog.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/goals/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/goals/middleware.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/goals/model.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/goals/runtime.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/goals/steering.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/goals/store.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/goals/tools.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/integrations/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/integrations/checkpoint_seed.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/integrations/codex_history.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/integrations/codex_import.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/integrations/codex_sessions.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/integrations/describe_image.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/integrations/http_clients.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/integrations/llm_openai_compat.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/integrations/llm_openai_websocket.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/integrations/mcp_client.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/integrations/openai_oauth.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/integrations/openai_oauth_middleware.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/integrations/openai_usage.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/integrations/vision_middleware.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/memory/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/memory/auto_recorder.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/memory/embedder.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/memory/long_term.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/models/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/models/config.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/models/helpers.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/models/profile.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/models/registry.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/models_registry.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/observability/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/observability/debug_inspector.html +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/observability/debug_server.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/observability/llm_debug.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/observability/startup_trace.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/parallel_subagents.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/planner/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/planner/task_planner.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/projects/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/projects/catalog.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/rag/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/rag/knowledge_base.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/async_runtime.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/backends.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/context_compact.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/debug_capture_middleware.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/execute_capture.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/filesystem_tool_prompt_middleware.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/fs_permissions.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/harness.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/hitl.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/interaction_ledger.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/middleware.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/model_request_compression_middleware.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/pathing.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/safety.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/session_prewarm.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/steer.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/subagent_routing.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/subagents.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/tool_ignore.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/tool_output_eval.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/tool_output_middleware.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/tool_output_usage_middleware.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/runtime/tool_response_truncate_middleware.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/sessions/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/sessions/cancel_repair.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/sessions/search_index.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/sessions/session_recap.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/sessions/store.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/sessions/summary.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/sessions/transcript.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/settings/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/settings/config_paths.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/settings/schema.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/subagent_monitor.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/subagents.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/tool_output/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/tool_output/detection.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/tool_output/metrics.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/tool_output/models.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/tool_output/pipeline.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/tool_output/repository.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/tool_output/transformers.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/tools/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/tools/describe_image.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/tools/filesystem_patch.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/tools/filesystem_search.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/tools/session_tools.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/answer_divider.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/bottombar/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/bottombar/components/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/bottombar/components/codex_usage.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/bottombar/components/fast.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/bottombar/components/goal.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/bottombar/components/key_hints.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/bottombar/components/mcp.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/bottombar/components/mode.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/bottombar/components/model.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/bottombar/components/thread.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/bottombar/context.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/bottombar/core.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/clipboard.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/dialogs/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/dialogs/base.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/dialogs/codex_reset.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/dialogs/codex_session_list.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/dialogs/compression_diagnostics.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/dialogs/git_explore.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/dialogs/mcp_panel.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/dialogs/model_picker.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/dialogs/safety_panel.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/dialogs/session_list.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/dialogs/subagent_monitor.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/dialogs/theme_designer.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/dialogs/theme_picker.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/formatters.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/git_explore/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/git_explore/engine.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/git_explore/provider.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/git_explore/unified.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/rendering.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/selectable_static.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/selectable_text.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/sink.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/steer_widget.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/stream.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/stream_events.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/stream_runtime.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/textual_stream_sink.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/theme.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/timeline.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/tool_blocks.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/topbar/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/topbar/components/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/topbar/components/branch.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/topbar/components/title.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/topbar/components/tool_output.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/topbar/components/usage.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/topbar/components/workspace.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/topbar/context.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/topbar/core.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/topbar/git_changes_popover.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/topbar/git_chrome.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/topbar/tool_output_popover.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/topbar/widget.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/transcript_blocks.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/tui.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/turn_rail.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/turn_rail_widgets.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/user_turn.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/user_turn_block.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/src/synapse/ui/welcome.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/synapse.cmd +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/__init__.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/fixtures/codex_rollouts/duplicate_response_item.jsonl +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/fixtures/codex_rollouts/incomplete_and_aborted.jsonl +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/fixtures/codex_rollouts/legacy_compaction.jsonl +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/fixtures/codex_rollouts/normal_completed.jsonl +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/fixtures/codex_rollouts/replacement_history.jsonl +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/fixtures/codex_rollouts/rollback.jsonl +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/fixtures/codex_rollouts/unsupported_replacement.jsonl +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/fixtures/sample_repo/calculator.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/fixtures/sample_repo/test_calculator.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/fixtures/tool_output_eval.json +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_agent_factory.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_async_checkpointer.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_backends.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_bottombar_registry.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_cancel_repair.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_capabilities.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_checkpoint_seed.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_cli.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_cli_codex_import.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_codex_history.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_codex_import.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_codex_sessions.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_codex_sessions_windows.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_compact_tool_descriptions.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_config.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_context_compact.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_context_window.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_dag_parallel.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_debug_capture_middleware.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_debug_inspector.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_describe_image.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_dialogs.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_filesystem_patch_tool.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_filesystem_search_tools.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_git_changes_popover.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_git_chrome.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_git_explore.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_goals.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_http_clients.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_input_history.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_iteration_abc.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_layered_config.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_mcp_schema.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_mermaid_render.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_middleware_async.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_model_request_compression_middleware.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_model_retry.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_multimodal.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_openai_compat_reasoning.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_openai_oauth.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_openai_oauth_middleware.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_openai_usage.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_openai_websocket.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_pathing.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_project_catalog.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_prompts.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_safety.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_search_index.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_session_prewarm.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_session_recap.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_session_summary.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_slash_and_mcp.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_slash_complete.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_startup_defer.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_steer.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_stream_cancel.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_stream_tool_items.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_stream_ui.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_subagent_monitor_dialog.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_subagent_status.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_textual_stream_sink.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_theme.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_timeline.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_tool_ignore.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_tool_intent.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_tool_output.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_tool_output_eval.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_tool_output_slash.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_tool_output_usage_middleware.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_tool_response_truncate_middleware.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_topbar_context_ratio.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_topbar_registry.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_transcript.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_tui_codex_import.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_tui_selection.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_turn_rail_minimap.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_usage_restore.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_user_turn_style.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/test_welcome.py +0 -0
- {synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/tests/tool_output_plugin_fixture.py +0 -0
|
@@ -7,6 +7,37 @@ The release workflow automatically extracts the matching section as release note
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## v0.1.25
|
|
11
|
+
|
|
12
|
+
### 新增功能
|
|
13
|
+
|
|
14
|
+
- `synapse-web` 新增 `--public-url` 参数:指定 `textual-serve` 生成的页面 WebSocket 与静态资源地址,支持 nginx/TLS 反向代理场景(`https://` 自动推导 `wss://`)。
|
|
15
|
+
|
|
16
|
+
### 修复
|
|
17
|
+
|
|
18
|
+
- 修复容器经 nginx 反向代理后页面内 WebSocket/静态资源地址使用 `http://<host>:<port>` 导致浏览器无法连接的问题。
|
|
19
|
+
|
|
20
|
+
### 工程改进
|
|
21
|
+
|
|
22
|
+
- Docker 部署文档补充容器仅绑定回环端口 + nginx 443 反代的配置示例。
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## v0.1.24
|
|
27
|
+
|
|
28
|
+
### 新增功能
|
|
29
|
+
|
|
30
|
+
- 新增 `synapse-web` 控制台入口(`synapse.web:main`):无需源码即可通过安装的 wheel 启动 Web TUI,支持 `--host`、`--port`、`--workspace` 参数。
|
|
31
|
+
- 新增 `Dockerfile.web` 最小镜像:基于 `python:3.12-slim`,无 Rust 工具链,运行时依赖全部通过预编译 wheel 安装;支持 `pypi`(从 PyPI 安装发布版本)与 `local`(安装构建上下文中的本地 wheel)两种构建模式。
|
|
32
|
+
- 新增 `.dockerignore` 与 Docker 部署文档(`docs/docker-web.md`),包含远程机器构建、运行、端口映射与 `/workspace` 数据持久化说明。
|
|
33
|
+
|
|
34
|
+
### 工程改进
|
|
35
|
+
|
|
36
|
+
- `scripts/serve_web.py` 改为 `synapse.web` 的兼容薄包装。
|
|
37
|
+
- 文档导航新增 Docker Web TUI 页面。
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
10
41
|
## v0.1.23
|
|
11
42
|
|
|
12
43
|
### 新增功能
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Minimal image for running the Synapse Web TUI via textual-serve.
|
|
2
|
+
# No Rust toolchain: every runtime dependency installs from prebuilt wheels.
|
|
3
|
+
#
|
|
4
|
+
# Build (installs the published wheel from PyPI):
|
|
5
|
+
# docker build -f Dockerfile.web -t synapse-web .
|
|
6
|
+
#
|
|
7
|
+
# Build (installs a local prebuilt wheel copied into the build context):
|
|
8
|
+
# docker build -f Dockerfile.web --build-arg SYNAPSE_MODE=local -t synapse-web .
|
|
9
|
+
#
|
|
10
|
+
# Run (mount a workspace for the agent and publish the web port):
|
|
11
|
+
# docker run --rm -p 8000:8000 -v "$PWD:/workspace" synapse-web
|
|
12
|
+
# # then open http://<host>:8000
|
|
13
|
+
|
|
14
|
+
ARG SYNAPSE_MODE=pypi
|
|
15
|
+
|
|
16
|
+
# pypi mode: install the released wheel and its dependencies from PyPI.
|
|
17
|
+
FROM python:3.12-slim AS pypi
|
|
18
|
+
ARG SYNAPSE_VERSION=0.1.25
|
|
19
|
+
RUN pip install --no-cache-dir --disable-pip-version-check \
|
|
20
|
+
"synapse-cli-agent==${SYNAPSE_VERSION}"
|
|
21
|
+
|
|
22
|
+
# local mode: install a locally built wheel from the build context (dist/).
|
|
23
|
+
FROM python:3.12-slim AS local
|
|
24
|
+
COPY dist/ /tmp/dist/
|
|
25
|
+
RUN pip install --no-cache-dir --disable-pip-version-check /tmp/dist/*.whl
|
|
26
|
+
|
|
27
|
+
FROM ${SYNAPSE_MODE} AS runtime
|
|
28
|
+
|
|
29
|
+
ENV PYTHONDONTWRITEBYTECODE=1 \
|
|
30
|
+
PYTHONUNBUFFERED=1
|
|
31
|
+
|
|
32
|
+
# Run as an unprivileged user.
|
|
33
|
+
RUN useradd --create-home --uid 1000 synapse
|
|
34
|
+
USER synapse
|
|
35
|
+
WORKDIR /workspace
|
|
36
|
+
|
|
37
|
+
EXPOSE 8000
|
|
38
|
+
|
|
39
|
+
ENTRYPOINT ["synapse-web"]
|
|
40
|
+
CMD ["--host", "0.0.0.0", "--port", "8000"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: synapse-cli-agent
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.25
|
|
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
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# Docker 中运行 Web TUI
|
|
2
|
+
|
|
3
|
+
把 Synapse Web TUI 以 Docker 容器作为沙箱运行:浏览器通过 WebSocket 连接
|
|
4
|
+
`textual-serve`,服务端为每个浏览器会话启动一个 `synapse tui` 子进程。
|
|
5
|
+
|
|
6
|
+
镜像不包含 Rust 工具链,运行时依赖全部通过预编译 wheel 安装,只依赖
|
|
7
|
+
`python:3.12-slim` 基础镜像,镜像体积最小。
|
|
8
|
+
|
|
9
|
+
## 入口
|
|
10
|
+
|
|
11
|
+
Web 启动器已作为包内模块和独立控制台命令提供:
|
|
12
|
+
|
|
13
|
+
- `synapse.web`(`python -m synapse.web`)
|
|
14
|
+
- `synapse-web`(wheel 安装后直接可用)
|
|
15
|
+
|
|
16
|
+
```powershell
|
|
17
|
+
synapse-web --host 0.0.0.0 --port 8000
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
源码仓库中的 `scripts/serve_web.py` 保留为兼容薄包装,行为一致。
|
|
21
|
+
|
|
22
|
+
## 镜像构建
|
|
23
|
+
|
|
24
|
+
### 方式一:从 PyPI 安装发布版本
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
docker build -f Dockerfile.web -t synapse-web .
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
默认使用 `pypi` 模式,从 PyPI 安装 `synapse-cli-agent==0.1.23` 及其依赖
|
|
31
|
+
(包括已有预编译 wheel 的 `synapse-core-tool`)。
|
|
32
|
+
|
|
33
|
+
如需指定版本:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
docker build -f Dockerfile.web \
|
|
37
|
+
--build-arg SYNAPSE_VERSION=0.1.23 \
|
|
38
|
+
-t synapse-web .
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 方式二:安装本地构建的 wheel
|
|
42
|
+
|
|
43
|
+
先把本地 wheel 放入构建上下文 `dist/`,然后使用 `local` 模式:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
docker build -f Dockerfile.web --build-arg SYNAPSE_MODE=local -t synapse-web .
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## 在远程机器上构建
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# 在远程机器 root@gateway1 上执行
|
|
53
|
+
scp Dockerfile.web root@gateway1:/tmp/synapse/
|
|
54
|
+
ssh root@gateway1
|
|
55
|
+
cd /tmp/synapse
|
|
56
|
+
docker build -f Dockerfile.web -t synapse-web .
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## 运行
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
docker run --rm -d --name synapse-web \
|
|
63
|
+
-p 8000:8000 \
|
|
64
|
+
-v "$PWD:/workspace" \
|
|
65
|
+
synapse-web
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
然后浏览器访问:
|
|
69
|
+
|
|
70
|
+
```text
|
|
71
|
+
http://<gateway1-ip>:8000
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
`/workspace` 是 agent 的工作目录,也是配置(`.synapse/`)和会话数据的落盘位置,
|
|
75
|
+
通过 volume 挂载到宿主机即可持久化。
|
|
76
|
+
|
|
77
|
+
## 行为说明
|
|
78
|
+
|
|
79
|
+
- `synapse-web` 进程常驻,负责 HTTP 页面和 WebSocket。
|
|
80
|
+
- 浏览器每次刷新会断开旧 WebSocket 并建立新连接,服务端会重新启动一个
|
|
81
|
+
`synapse tui` 子进程;界面与内存状态会重置,但会话、配置和主题等持久化
|
|
82
|
+
数据仍从 `/workspace` 恢复。
|
|
83
|
+
- 每个浏览器标签页对应一个独立的 TUI 子进程。
|
|
84
|
+
- agent 的工具执行都发生在容器内,适合作为沙箱隔离。
|
|
85
|
+
- 容器以非 root 用户 `synapse` 运行,镜像只暴露 `8000` 端口。
|
|
86
|
+
|
|
87
|
+
## 通过 nginx 443 反向代理
|
|
88
|
+
|
|
89
|
+
容器不应直接监听公网。推荐让容器只绑定本机回环地址,由 nginx 承担 TLS 与公网入口:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
docker run --rm -d --name synapse-web \
|
|
93
|
+
-p 127.0.0.1:8000:8000 \
|
|
94
|
+
-v "$PWD:/workspace" \
|
|
95
|
+
synapse-web \
|
|
96
|
+
--host 127.0.0.1 --port 8000 \
|
|
97
|
+
--public-url https://synapse-agent.best/tui
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
`--public-url` 是必须的:`textual-serve` 用它生成页面中的 WebSocket 与静态资源
|
|
101
|
+
地址。不设置时默认使用 `http://<host>:<port>`,经 nginx 反代后浏览器无法连接。
|
|
102
|
+
`https://` 前缀会自动推导出 `wss://`。
|
|
103
|
+
|
|
104
|
+
nginx 站点中为 Web TUI 增加一个路径并转发到回环端口(需支持 WebSocket 升级):
|
|
105
|
+
|
|
106
|
+
```nginx
|
|
107
|
+
location /tui/ {
|
|
108
|
+
proxy_pass http://127.0.0.1:8000/;
|
|
109
|
+
proxy_http_version 1.1;
|
|
110
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
111
|
+
proxy_set_header Connection "upgrade";
|
|
112
|
+
proxy_set_header Host $host;
|
|
113
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
114
|
+
proxy_set_header X-Forwarded-Proto $scheme;
|
|
115
|
+
proxy_read_timeout 86400;
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
重载配置后访问:
|
|
120
|
+
|
|
121
|
+
```text
|
|
122
|
+
https://synapse-agent.best/tui
|
|
123
|
+
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "synapse-cli-agent"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.25"
|
|
4
4
|
description = "Local coding agent built on LangChain Deep Agents (LocalShell, no sandbox)"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = { file = "LICENSE" }
|
|
@@ -41,6 +41,7 @@ Changelog = "https://github.com/alex8224/synapse-agent/blob/main/CHANGELOG.md"
|
|
|
41
41
|
|
|
42
42
|
[project.scripts]
|
|
43
43
|
synapse = "synapse.cli:main"
|
|
44
|
+
synapse-web = "synapse.web:main"
|
|
44
45
|
|
|
45
46
|
[project.optional-dependencies]
|
|
46
47
|
dev = [
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
## v0.1.25
|
|
2
|
+
|
|
3
|
+
### 新增功能
|
|
4
|
+
|
|
5
|
+
- `synapse-web` 新增 `--public-url` 参数:指定 `textual-serve` 生成的页面 WebSocket 与静态资源地址,支持 nginx/TLS 反向代理场景(`https://` 自动推导 `wss://`)。
|
|
6
|
+
|
|
7
|
+
### 修复
|
|
8
|
+
|
|
9
|
+
- 修复容器经 nginx 反向代理后页面内 WebSocket/静态资源地址使用 `http://<host>:<port>` 导致浏览器无法连接的问题。
|
|
10
|
+
|
|
11
|
+
### 工程改进
|
|
12
|
+
|
|
13
|
+
- Docker 部署文档补充容器仅绑定回环端口 + nginx 443 反代的配置示例。
|
|
14
|
+
|
|
15
|
+
---
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"""Serve the Synapse Textual TUI in a web browser via textual-serve.
|
|
2
|
+
|
|
3
|
+
The TUI keeps running as a server-side process; the browser renders it
|
|
4
|
+
through xterm.js over a WebSocket (same Python code, zero changes).
|
|
5
|
+
|
|
6
|
+
This module is also the ``synapse-web`` console-script entry point so the
|
|
7
|
+
packaged wheel can start the web server without any source checkout:
|
|
8
|
+
|
|
9
|
+
synapse-web --host 0.0.0.0 --port 8000
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from __future__ import annotations
|
|
13
|
+
|
|
14
|
+
import argparse
|
|
15
|
+
import sys
|
|
16
|
+
|
|
17
|
+
from textual_serve.server import Server
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def build_parser() -> argparse.ArgumentParser:
|
|
21
|
+
parser = argparse.ArgumentParser(
|
|
22
|
+
prog="synapse-web",
|
|
23
|
+
description="Serve the Synapse TUI in a web browser",
|
|
24
|
+
)
|
|
25
|
+
parser.add_argument("--host", default="localhost", help="Bind host (default: localhost)")
|
|
26
|
+
parser.add_argument("--port", type=int, default=8000, help="Bind port (default: 8000)")
|
|
27
|
+
parser.add_argument(
|
|
28
|
+
"--workspace",
|
|
29
|
+
default=None,
|
|
30
|
+
help="Workspace directory passed to the TUI (default: current dir)",
|
|
31
|
+
)
|
|
32
|
+
parser.add_argument(
|
|
33
|
+
"--public-url",
|
|
34
|
+
default=None,
|
|
35
|
+
help=(
|
|
36
|
+
"External URL (scheme://host[:port][/path]) used in the served page "
|
|
37
|
+
"for WebSocket/static links. Required when behind an nginx/TLS "
|
|
38
|
+
"reverse proxy; otherwise derived from --host/--port."
|
|
39
|
+
),
|
|
40
|
+
)
|
|
41
|
+
return parser
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def build_command(workspace: str | None = None) -> str:
|
|
45
|
+
"""Command textual-serve spawns for each browser session."""
|
|
46
|
+
command = f'"{sys.executable}" -m synapse tui'
|
|
47
|
+
if workspace:
|
|
48
|
+
command += f' --workspace "{workspace}"'
|
|
49
|
+
return command
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def main(argv: list[str] | None = None) -> None:
|
|
53
|
+
args = build_parser().parse_args(argv)
|
|
54
|
+
server = Server(
|
|
55
|
+
build_command(args.workspace),
|
|
56
|
+
host=args.host,
|
|
57
|
+
port=args.port,
|
|
58
|
+
public_url=args.public_url,
|
|
59
|
+
)
|
|
60
|
+
server.serve()
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
if __name__ == "__main__":
|
|
64
|
+
main()
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
## v0.1.23
|
|
2
|
-
|
|
3
|
-
### 新增功能
|
|
4
|
-
|
|
5
|
-
- Rich Markdown 渲染接入 Synapse 主题系统:内置主题提供完整 Markdown 样式映射,支持标题、段落、强调、行内代码、引用、链接、列表和表格等元素跟随主题配色。
|
|
6
|
-
- `themes.json` 支持通过独立的 `markdown` 字段覆盖 Markdown 元素的 Rich style,并支持主题继承与分层配置。
|
|
7
|
-
- 运行时切换主题会重绘已显示的答案、思考内容和独立 Markdown 块;主题设计器保存主题时保留 Markdown 样式配置。
|
|
8
|
-
|
|
9
|
-
### 修复
|
|
10
|
-
|
|
11
|
-
- 修复 Rich Markdown 使用内置默认颜色、导致 Markdown 内容无法跟随 Synapse 主题切换的问题。
|
|
12
|
-
- 修复主题设计器保存已有主题时可能丢失手写 Markdown 样式覆盖的问题。
|
|
13
|
-
|
|
14
|
-
### 工程改进
|
|
15
|
-
|
|
16
|
-
- 增加 Markdown 主题解析、Rich 样式注入、主题继承、运行时重绘和内置主题完整性测试。
|
|
17
|
-
- 补充 Markdown 主题配置文档,并保留代码块使用 `code_theme` 控制语法高亮的边界说明。
|
|
18
|
-
|
|
19
|
-
---
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"""Serve the Synapse Textual TUI in a web browser via textual-serve.
|
|
2
|
-
|
|
3
|
-
The TUI keeps running as a server-side process; the browser renders it
|
|
4
|
-
through xterm.js over a WebSocket (same Python code, zero changes).
|
|
5
|
-
|
|
6
|
-
Usage:
|
|
7
|
-
uv run --no-sync python scripts/serve_web.py [--host HOST] [--port PORT]
|
|
8
|
-
"""
|
|
9
|
-
|
|
10
|
-
from __future__ import annotations
|
|
11
|
-
|
|
12
|
-
import argparse
|
|
13
|
-
import sys
|
|
14
|
-
|
|
15
|
-
from textual_serve.server import Server
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def main() -> None:
|
|
19
|
-
parser = argparse.ArgumentParser(
|
|
20
|
-
description="Serve the Synapse TUI in a web browser"
|
|
21
|
-
)
|
|
22
|
-
parser.add_argument("--host", default="localhost", help="Bind host (default: localhost)")
|
|
23
|
-
parser.add_argument("--port", type=int, default=8000, help="Bind port (default: 8000)")
|
|
24
|
-
parser.add_argument(
|
|
25
|
-
"--workspace",
|
|
26
|
-
default=None,
|
|
27
|
-
help="Workspace directory passed to the TUI (default: current dir)",
|
|
28
|
-
)
|
|
29
|
-
args = parser.parse_args()
|
|
30
|
-
|
|
31
|
-
# Launch the TUI with the same interpreter that runs this script, so the
|
|
32
|
-
# subprocess inherits the venv without depending on any console script.
|
|
33
|
-
command = f'"{sys.executable}" -m synapse tui'
|
|
34
|
-
if args.workspace:
|
|
35
|
-
command += f' --workspace "{args.workspace}"'
|
|
36
|
-
|
|
37
|
-
server = Server(command, host=args.host, port=args.port)
|
|
38
|
-
server.serve()
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
if __name__ == "__main__":
|
|
42
|
-
main()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/.github/workflows/native-core-tool-wheels.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/docs/codex-session-discovery-phase-1.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-core-tool/src/file_access.rs
RENAMED
|
File without changes
|
{synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-core-tool/src/file_tools.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/Cargo.lock
RENAMED
|
File without changes
|
{synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/Cargo.toml
RENAMED
|
File without changes
|
{synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/LICENSE
RENAMED
|
File without changes
|
{synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/NOTICE
RENAMED
|
File without changes
|
{synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/README.md
RENAMED
|
File without changes
|
{synapse_cli_agent-0.1.23 → synapse_cli_agent-0.1.25}/rust/synapse-tool-compress-core/pyproject.toml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|