sylliptor-agent-cli 0.9.2__tar.gz → 0.9.4__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.
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/CHANGELOG.md +27 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/PKG-INFO +6 -2
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/README.md +5 -1
- sylliptor_agent_cli-0.9.4/docs/assets/xiaomi-mimo-logo.svg +9 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/pyproject.toml +1 -1
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/__init__.py +1 -1
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/account_login.py +60 -3
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/session.py +2 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/turn/core.py +13 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/chat/commands.py +52 -2
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/cli_common.py +76 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/forge_helpers.py +72 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/root.py +1 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/welcome.py +37 -27
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/config_menu.py +40 -2
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/forge.py +12 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/setup_wizard.py +4 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/model_registry.py +24 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/profile_presets.py +10 -3
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/rich_surface.py +81 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/swarm_trace.py +7 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/sylliptor_cloud.py +15 -3
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_account_login.py +125 -5
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_ux.py +28 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_config_menu.py +57 -0
- sylliptor_agent_cli-0.9.4/tests/test_forge_ui_elements.py +240 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.dockerignore +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.editorconfig +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.gitattributes +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.github/FUNDING.yml +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.github/workflows/ci.yml +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.github/workflows/release.yml +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.github/workflows/sandbox-image.yml +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.gitignore +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.trivyignore +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/CODE_OF_CONDUCT.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/CONTRIBUTING.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/LICENSE +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/NOTICE +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/RELEASING.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/SECURITY.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/README.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/architecture.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/assets/sylliptor-demo.gif +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/credentials.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/custom_tools.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/README.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/custom_tools/README.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/custom_tools/workspace_manifest.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/README.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/block_dangerous.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/block_destructive_git.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/block_env_files.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/format_on_write.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/notify_done.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/notify_done_macos.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/sample_hooks.json +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/secret_scanner.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/forge.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/hooks.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/mcp.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/plugins.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/quickstart.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/reference.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/sandbox.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/security_model.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/server.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/shell_sandbox.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/skills.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/skills_lifecycle.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/subagents.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/terminals.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/sandbox/Dockerfile +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/sandbox/README.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/scripts/README.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/scripts/qa/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/scripts/qa/check_deps.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/scripts/refresh_litellm_model_catalog.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/scripts/test_live_provider_smoke.sh +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/scripts/test_provider_native.sh +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/scripts/test_web_search.sh +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/__main__.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/README.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/errors.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/prompt_context.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/routing.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/tools_assembly.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/turn/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/turn/events.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/turn/exploration.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/turn/read_cache.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/turn/snapshot.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/verification.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/verification_commands.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent_loop.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/approval_scope.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/README.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/asset_read_core.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/budget_allocator.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/comprehender.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/index.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/ingestion.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/legacy_migration.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/models.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/ocr.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-000.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-001.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-002.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-003.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-004.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-005.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-006.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-007.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-008.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-009.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-010.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-011.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-012.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-013.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-014.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-015.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-016.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-017.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-018.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-019.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-020.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/index.html +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/show-owl.sh +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/paths.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/plan_binding.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/planner_context.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/planner_tools.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/prompts.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/replanner_context.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/surface.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/untrusted_content.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/usage_logger.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/worker_mirror.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/worker_section.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/worker_tools.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/atomic_io.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/background_runner.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/branding.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/builtin_hooks/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/builtin_hooks/notify_done_windows.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/bwrap_etc.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/assets_cli.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/assets_modal.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/chat/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/chat/loop.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/chat/rendering.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/chat/state.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/chat_resume.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/chat_slash_completer.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/_shared.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/chat_resume_helpers.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/chat_state.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/chat_status.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/chat_terminal.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/cli_surface.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/config.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/conventions.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/execution_helpers.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/extensions.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/forge.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/forge_asset_view.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/hooks.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/mcp.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/profile.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/prompt_helpers.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/report.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/sandbox.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/server.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/sessions.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/skills.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/startup.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/tools.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/update.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/clipboard.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/compaction/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/compaction/conversation_compactor.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/compaction/importance.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/compaction/settings.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/compaction/tool_output_offload.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/config.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/conflict_auto_resolver.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/custom_tools/README.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/custom_tools/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/custom_tools/discovery.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/custom_tools/runtime.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/custom_tools/session.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/custom_tools/trust.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/diff_paths.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/direction_change.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/error_text.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/execution_budget.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/execution_context.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/execution_shared.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/README.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/activation.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/install.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/manifest.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/models.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/paths.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/registry.json +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/registry.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/state.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/workspace_trust.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/failure_category.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/feedback_report.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/file_classification.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/forge.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/frontmatter_utils.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/git_ops.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/git_safe.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/git_worktrees.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/hooks/README.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/hooks/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/hooks/audit.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/hooks/config.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/hooks/dispatcher.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/hooks/models.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/hooks/trust.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/integration_gate.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/interactive_input_guard.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/interactive_plan_mode.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/knowledge_base.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/knowledge_capture.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/knowledge_librarian.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/language_policy.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/litellm_static_provider.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/anthropic_messages.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/base.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/factory.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/gemini_generate_content.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/gemini_interactions.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/metadata.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/openai_compat.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/openai_responses.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/protocols.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/provider_limits.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/streaming.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/types.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm_error_display.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/README.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/client.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/config.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/errors.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/forge_scope.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/jsonrpc.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/manager.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/models.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/oauth.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/oauth_runtime.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/oauth_store.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/prompts.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/resources.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/roots.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/server_requests.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/token_store.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/transport_http.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/transport_stdio.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/untrusted_content.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/merge_conflict_reviewer.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/model_catalog/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/model_catalog/litellm_model_prices_snapshot.json +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/model_catalog/litellm_model_prices_snapshot.meta.json +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/model_metadata_policy.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/model_metadata_utils.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/model_router.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/plan_assistant.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/plan_mode.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/plan_reconciliation.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/plan_validation.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/planning_constraints.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/policy.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/profiles.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/provider_diagnostics.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/provider_telemetry.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/remote_sync.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/replanning.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/repo_scan.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/request_estimation.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/review_gate.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/run_lock.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/runtime_artifacts.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/runtime_context_features.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/runtime_kind.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/safety/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/safety/mcp_sanitize.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/safety/safe_http.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/sandbox_doctor.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/sandbox_runner.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/sandbox_settings.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/serialized_paths.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/server/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/server/app.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/server/auth.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/server/job_config.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/server/settings.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/server/store.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/server/worker_runner.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/session_artifacts.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/session_metrics.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/session_store.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/README.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/conventions.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/discovery.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/eval_models.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/eval_runner.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/evals.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/install.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/loader.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/matching.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/models.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/paths.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/prompting.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/scaffold.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/state.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/transactions.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/validation.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/step_budget.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/subagents.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/base.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/console.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/events.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/hidden_surface.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/noop_surface.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/styles.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/theme.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/types.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/swarm_backend.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/swarm_orchestrator.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/swarm_scheduler.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/swarm_worker.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/task_dependencies.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/task_readiness.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/task_scope.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/terminal_manager.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/token_budget.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/README.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/availability.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/fs.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/git.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/history.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/http_timeout.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/registry.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/search.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/shell.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/symbols.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/web.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/web_search.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/web_search_dashscope.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/web_search_provider_adapters.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/web_search_tavily.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/turn_intent.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/updates.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/usage_tracker.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/verify_gate.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/web_research.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/web_search_adapters.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/workspace_binding.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/workspace_binding_ui.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/workspace_context.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/_assets_test_helpers.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/_terminal_matrix_harness.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/conftest.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/mcp_servers/minimal_stdio_server.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/skills_eval/sample_cases.json +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/skills_eval/workspaces/combined_repo/.sylliptor_skills/pytest/SKILL.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/skills_eval/workspaces/combined_repo/AGENTS.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/skills_eval/workspaces/combined_repo/README.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/skills_eval/workspaces/combined_repo/src/parser.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/skills_eval/workspaces/combined_repo/tests/parser_checks.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/skills_eval/workspaces/empty_authoring/README.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/skills_eval/workspaces/negative_control/README.md +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_1.json +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_10.json +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_11.json +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_12.json +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_2.json +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_3.json +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_4.json +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_5.json +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_6.json +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_7.json +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_8.json +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_9.json +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/tesseract_osd/english.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/tesseract_osd/greek.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/tesseract_osd/japanese.txt +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_event_emission.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_final_step_nudge.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_forced_summary.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_hooks.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_host_managed_context.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_images.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_interactive_execution_posture.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_non_interactive.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_one_shot_follow_through.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_plugin_filter.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_retry_guard.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_review_approval.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_same_batch_read_dedup.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_small_talk.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_step_budget_runtime.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_tool_transcript_shaping.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_anthropic_messages.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_budget_allocator.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_comprehender.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_index.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_ingestion.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_legacy_migration.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_models.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_ocr.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_plan_binding.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_planner_context.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_planner_tools.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_replanner_context.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_surface.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_worker_mirror.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_worker_section.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_worker_tools.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_background_runner.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_background_runner_sandbox.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_chat_assets_slash.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_chat_image_hotkeys.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_chat_mode_rebuild.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_chat_plan_mode.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_chat_resume.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_chat_session_workdir.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_chat_slash_completer.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_chat_terminals_slash.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_check_deps.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_api_key.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_assets.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_assets_prune_legacy.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_config_menu_command.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_entrypoint.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_facade.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_impl_forge.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_skill_lifecycle.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_skills.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_subagents.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_tools.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_clipboard.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_color_adaptation.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_compaction_settings.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_config.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_config_menu_flow.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_config_menu_raw_mode.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_conflict_auto_resolver.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_conventions_cli.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_conversation_compaction.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_custom_tools_cli.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_custom_tools_discovery.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_custom_tools_runtime.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_custom_tools_trust.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_docs_alignment.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_execution_budget.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_execution_context.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_execution_shared_mirror.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_execution_shared_reporting.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_execution_shared_snapshot.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_extensions_cli.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_extensions_registry.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_extensions_state.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_feedback_report.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_file_classification.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_forge.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_forge_asset_view.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_forge_assets_legacy_deprecation.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_forge_assets_legacy_migration_loadplan.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_forge_assets_regressions.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_forge_exec.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_forge_review.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_forge_swarm.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_forge_watchdog_diagnostics.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_fs_edit_tool.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_fs_file_ops_tool.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_fs_tools.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_fullaccess_audit.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_gemini_generate_content.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_gemini_interactions.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_git_apply_patch_tool.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_git_history_tool.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_git_hygiene.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_git_ops.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_git_safe.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_git_worktrees.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_history_search_tool.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_hooks_cli.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_hooks_config.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_importance_scoring.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_integration_compaction_pipeline.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_integration_gate.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_knowledge_base.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_knowledge_capture.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_knowledge_librarian.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_language_policy.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_language_policy_prompts.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_legacy_profile_migration.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_litellm_model_registry.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_live_provider_smoke.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_llm_factory_profiles.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_llm_metadata.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_llm_protocols.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_llm_streaming.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_auth_cli.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_config.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_errors.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_http.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_manager.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_oauth.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_prompts.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_resources.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_roots.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_sanitize.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_scope.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_stdio.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_merge_conflict_reviewer.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_model_catalog_packaging.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_model_metadata_policy.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_model_router.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_model_router_forge_context.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_native_provider_conformance.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_openai_compat.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_openai_responses.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plan_assistant.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plan_assistant_assets.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plan_assistant_forge_context.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plan_mode.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plan_reconciliation.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plan_validation.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_planning_constraints.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plugin_activation.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plugin_enable_disable.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plugin_enable_disable_cli.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plugin_install.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plugin_install_cli.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plugin_manifest.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_policy.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_profile_cli_commands.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_profile_presets.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_profiles.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_prompt_helpers.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_prompt_payload.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_prompts_invariants.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_protected_paths.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_provider_diagnostics.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_provider_limits.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_provider_telemetry.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_refresh_litellm_model_catalog.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_release_smoke.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_remote_sync.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_replanning.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_replanning_assets.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_repo_scan.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_request_size_telemetry.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_review_gate.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_run_mutation.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_runtime_context_features.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_safe_http.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_sandbox_cli.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_sandbox_doctor.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_sandbox_settings_background.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_search_rg_security.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_security_docs.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_serialized_paths.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_server_app.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_server_job_config.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_server_settings.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_server_upload_flow.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_server_worker_runner.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_server_worker_runner_args.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_session_metrics.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_session_store.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_setup_wizard.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_shell_background_integration.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_shell_sandbox.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_show_owl_matrix.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_skill_lifecycle.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_skill_lifecycle_prompting.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_skills.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_skills_evals.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_step_budget.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_subagent_turn_policy.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_subagents.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_surface.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_surface_console_encoding.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_surface_event_migration.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_surface_events.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_swarm_backend.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_swarm_scheduler.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_swarm_worker.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_swarm_worker_assets.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_symbol_search_tool.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_task_dependencies.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_task_readiness.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_task_scope.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_terminal_manager.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_terminal_matrix_consistency.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_terminal_matrix_visible_anchors.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_token_budget.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_tool_exposure_by_mode.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_tool_output_offload.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_tool_registry.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_updates.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_usage_tracker.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_verify_gate.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_verify_tool.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_web_fetch_tool.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_web_search_dashscope.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_web_search_tavily.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_web_search_tool.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_workspace_binding.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_workspace_context.py +0 -0
- {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_workspace_trust.py +0 -0
|
@@ -6,6 +6,33 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.9.4] - 2026-06-16
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Polished Forge CLI planning and execution feedback with clearer readiness, next-step,
|
|
14
|
+
completion, and swarm trace status lines.
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- Kept the welcome banner side-by-side at 80 columns when dark terminal themes add the
|
|
19
|
+
light owl panel.
|
|
20
|
+
- Restored the Forge asset count line for empty plans that already have indexed assets.
|
|
21
|
+
|
|
22
|
+
## [0.9.3] - 2026-06-12
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
|
|
26
|
+
- Hosted trial model choice: `mimo-v2.5-pro` is now the default, with `mimo-v2-flash`
|
|
27
|
+
and `mimo-v2.5` available in `/config` and `/model`; live `/v1/models` discovery,
|
|
28
|
+
login model preservation, and legacy `mimo` alias migration keep existing installs
|
|
29
|
+
working while exposing the full trial model set.
|
|
30
|
+
- Xiaomi MiMo logo in the README trial section.
|
|
31
|
+
|
|
32
|
+
### Fixed
|
|
33
|
+
|
|
34
|
+
- Removed the duplicate Xiaomi trial section from the README.
|
|
35
|
+
|
|
9
36
|
## [0.9.2] - 2026-06-11
|
|
10
37
|
|
|
11
38
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sylliptor-agent-cli
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.4
|
|
4
4
|
Summary: Local CLI coding agent powered by any API.
|
|
5
5
|
Project-URL: Changelog, https://github.com/AlysisAi/Sylliptor/blob/main/CHANGELOG.md
|
|
6
6
|
Project-URL: Documentation, https://github.com/AlysisAi/Sylliptor/tree/main/docs
|
|
@@ -80,6 +80,10 @@ Description-Content-Type: text/markdown
|
|
|
80
80
|
|
|
81
81
|
---
|
|
82
82
|
|
|
83
|
+
<p align="center">
|
|
84
|
+
<img src="docs/assets/xiaomi-mimo-logo.svg" alt="Xiaomi MiMo" width="320">
|
|
85
|
+
</p>
|
|
86
|
+
|
|
83
87
|
## ⚡ Free Xiaomi MiMo trial
|
|
84
88
|
|
|
85
89
|
Run Sylliptor on **[Xiaomi MiMo](https://openrouter.ai/xiaomi)** — **free for 10 days**, no API key, no card. MiMo is the default model.
|
|
@@ -90,7 +94,7 @@ sylliptor login # connect your Sylliptor account in the browser
|
|
|
90
94
|
sylliptor chat # start building — MiMo is ready
|
|
91
95
|
```
|
|
92
96
|
|
|
93
|
-
Create your account at **[sylliptor.alysisai.com](https://sylliptor.alysisai.com)**, then `sylliptor login` links the CLI to your trial. Usage is metered server-side and the upstream model key never touches your machine.
|
|
97
|
+
Create your account at **[sylliptor.alysisai.com](https://sylliptor.alysisai.com)**, then `sylliptor login` links the CLI to your trial. Usage is metered server-side and the upstream model key never touches your machine. Switch trial models anytime in `/config` — the picker reflects the models your trial allows.
|
|
94
98
|
|
|
95
99
|
---
|
|
96
100
|
|
|
@@ -31,6 +31,10 @@
|
|
|
31
31
|
|
|
32
32
|
---
|
|
33
33
|
|
|
34
|
+
<p align="center">
|
|
35
|
+
<img src="docs/assets/xiaomi-mimo-logo.svg" alt="Xiaomi MiMo" width="320">
|
|
36
|
+
</p>
|
|
37
|
+
|
|
34
38
|
## ⚡ Free Xiaomi MiMo trial
|
|
35
39
|
|
|
36
40
|
Run Sylliptor on **[Xiaomi MiMo](https://openrouter.ai/xiaomi)** — **free for 10 days**, no API key, no card. MiMo is the default model.
|
|
@@ -41,7 +45,7 @@ sylliptor login # connect your Sylliptor account in the browser
|
|
|
41
45
|
sylliptor chat # start building — MiMo is ready
|
|
42
46
|
```
|
|
43
47
|
|
|
44
|
-
Create your account at **[sylliptor.alysisai.com](https://sylliptor.alysisai.com)**, then `sylliptor login` links the CLI to your trial. Usage is metered server-side and the upstream model key never touches your machine.
|
|
48
|
+
Create your account at **[sylliptor.alysisai.com](https://sylliptor.alysisai.com)**, then `sylliptor login` links the CLI to your trial. Usage is metered server-side and the upstream model key never touches your machine. Switch trial models anytime in `/config` — the picker reflects the models your trial allows.
|
|
45
49
|
|
|
46
50
|
---
|
|
47
51
|
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<svg width="439" height="56" viewBox="0 0 439 56" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M315.261 6.88082V50.7653C315.261 53.1848 313.301 55.1452 310.882 55.1452C308.462 55.1452 306.502 53.1848 306.502 50.7653V6.88082C306.502 4.46138 308.462 2.50094 310.882 2.50094C313.301 2.50094 315.261 4.46138 315.261 6.88082ZM247.733 22.4184C245.313 22.4184 243.353 24.3789 243.353 26.7983V50.8254C243.353 53.2448 245.313 55.2052 247.733 55.2052C250.152 55.2052 252.112 53.2448 252.112 50.8254V26.7983C252.112 24.3789 250.152 22.4184 247.733 22.4184ZM297.207 6.44755C297.203 6.38749 297.19 6.33172 297.181 6.27596C297.168 6.19016 297.16 6.10865 297.143 6.02286C297.13 5.95422 297.108 5.88559 297.091 5.82124C297.074 5.7526 297.057 5.67968 297.035 5.61104C297.014 5.5424 296.988 5.47806 296.967 5.40942C296.941 5.34078 296.92 5.27215 296.894 5.20351C296.868 5.13916 296.838 5.07911 296.808 5.01905C296.778 4.95041 296.744 4.88178 296.709 4.81314C296.679 4.75308 296.641 4.69731 296.606 4.64155C296.568 4.5772 296.529 4.50856 296.486 4.44422C296.443 4.37987 296.396 4.3241 296.353 4.26405C296.315 4.20828 296.276 4.15251 296.233 4.10104C296.143 3.9895 296.045 3.88226 295.942 3.7793C295.839 3.67635 295.731 3.58197 295.62 3.4876C295.568 3.4447 295.517 3.41038 295.465 3.37177C295.401 3.32458 295.341 3.2774 295.277 3.2345C295.217 3.1916 295.152 3.15728 295.088 3.12296C295.028 3.08865 294.968 3.05004 294.908 3.01572C294.844 2.9814 294.779 2.95137 294.715 2.92134C294.65 2.89132 294.586 2.857 294.518 2.83126C294.457 2.80552 294.393 2.78407 294.329 2.76262C294.256 2.73688 294.187 2.71114 294.114 2.68541C294.054 2.66825 293.99 2.65109 293.926 2.63822C293.848 2.61677 293.775 2.59961 293.698 2.58245C293.63 2.56958 293.561 2.561 293.488 2.55242C293.415 2.54384 293.346 2.52668 293.274 2.52239C293.153 2.50952 293.029 2.50523 292.909 2.50523C292.888 2.50523 292.866 2.50523 292.845 2.50523C292.819 2.50523 292.797 2.50523 292.772 2.50523C292.652 2.50523 292.532 2.50952 292.416 2.52239C292.339 2.53097 292.266 2.54384 292.193 2.55671C292.128 2.56529 292.06 2.57387 291.995 2.58674C291.914 2.6039 291.837 2.62535 291.755 2.6468C291.695 2.66396 291.635 2.67254 291.579 2.69399C291.502 2.71543 291.425 2.74546 291.352 2.77549C291.292 2.79694 291.232 2.8141 291.176 2.83984C291.103 2.86987 291.034 2.90418 290.966 2.9385C290.906 2.96853 290.846 2.99427 290.79 3.0243C290.721 3.06291 290.657 3.10151 290.588 3.14441C290.533 3.17873 290.477 3.20876 290.421 3.24737C290.344 3.29885 290.275 3.35461 290.202 3.40609C290.159 3.43612 290.117 3.46615 290.078 3.50046C289.962 3.59484 289.855 3.69351 289.752 3.79646L270.295 23.2549L250.834 3.79217C249.122 2.08055 246.351 2.08055 244.64 3.79217C242.928 5.50379 242.928 8.275 244.64 9.98662L267.198 32.5466C268.91 34.2582 271.681 34.2582 273.392 32.5466L288.474 17.4637V50.834C288.474 53.2534 290.434 55.2138 292.853 55.2138C295.272 55.2138 297.233 53.2534 297.233 50.834V6.88511C297.233 6.73925 297.224 6.5934 297.211 6.44755H297.207ZM328.915 22.4184C326.495 22.4184 324.535 24.3789 324.535 26.7983V50.8254C324.535 53.2448 326.495 55.2052 328.915 55.2052C331.334 55.2052 333.294 53.2448 333.294 50.8254V26.7983C333.294 24.3789 331.334 22.4184 328.915 22.4184ZM378.385 6.44755C378.38 6.38749 378.368 6.33172 378.359 6.27596C378.346 6.19445 378.338 6.10865 378.32 6.02715C378.308 5.95851 378.286 5.88987 378.269 5.82124C378.252 5.7526 378.235 5.67968 378.213 5.61104C378.192 5.5424 378.166 5.47806 378.145 5.40942C378.119 5.34078 378.097 5.27215 378.072 5.20351C378.046 5.13916 378.016 5.07911 377.986 5.01905C377.956 4.95041 377.921 4.88178 377.887 4.81314C377.857 4.75308 377.819 4.69731 377.784 4.64155C377.746 4.5772 377.707 4.50856 377.664 4.44422C377.621 4.37987 377.574 4.3241 377.531 4.26405C377.493 4.20828 377.454 4.15251 377.411 4.10104C377.321 3.9895 377.222 3.88226 377.119 3.7793C377.016 3.67635 376.909 3.58197 376.798 3.4876C376.746 3.4447 376.695 3.41038 376.643 3.37177C376.579 3.32458 376.519 3.2774 376.454 3.2345C376.394 3.1916 376.33 3.15728 376.266 3.12296C376.206 3.08865 376.146 3.05004 376.086 3.01572C376.021 2.9814 375.957 2.95137 375.893 2.92134C375.828 2.89132 375.764 2.857 375.695 2.83126C375.635 2.80552 375.571 2.78407 375.507 2.76262C375.434 2.73688 375.365 2.71114 375.288 2.68541C375.228 2.66825 375.163 2.65538 375.099 2.63822C375.022 2.61677 374.949 2.59961 374.872 2.58245C374.803 2.56958 374.734 2.561 374.661 2.55242C374.589 2.54384 374.52 2.52668 374.447 2.52239C374.327 2.50952 374.203 2.50523 374.082 2.50523C374.061 2.50523 374.04 2.50523 374.018 2.50523C373.992 2.50523 373.971 2.50523 373.945 2.50523C373.825 2.50523 373.705 2.50952 373.589 2.52239C373.512 2.53097 373.439 2.54384 373.366 2.55671C373.302 2.56529 373.233 2.57387 373.169 2.58674C373.087 2.6039 373.01 2.62535 372.929 2.6468C372.868 2.65967 372.808 2.67254 372.753 2.69399C372.675 2.71543 372.598 2.74546 372.525 2.77549C372.465 2.79694 372.41 2.8141 372.349 2.83984C372.277 2.86987 372.208 2.90418 372.139 2.9385C372.079 2.96853 372.019 2.99427 371.963 3.0243C371.895 3.06291 371.83 3.10151 371.762 3.14441C371.706 3.17873 371.65 3.20876 371.595 3.24737C371.517 3.29885 371.449 3.35461 371.376 3.40609C371.333 3.43612 371.29 3.46615 371.251 3.50046C371.136 3.59484 371.028 3.69351 370.925 3.79646L351.468 23.2549L332.007 3.79217C330.296 2.08055 327.525 2.08055 325.813 3.79217C324.102 5.50379 324.102 8.275 325.813 9.98662L348.371 32.5466C350.083 34.2582 352.854 34.2582 354.565 32.5466L369.647 17.4637V50.834C369.647 53.2534 371.607 55.2138 374.027 55.2138C376.446 55.2138 378.406 53.2534 378.406 50.834V6.88511C378.406 6.73925 378.398 6.5934 378.385 6.44755ZM30.4894 29.252L49.6889 5.45232H39.3428L25.2005 22.9032L11.0625 5.45232H0.716337L19.9159 29.252L19.9845 29.3421L0 53.9998H11.0282L25.2048 35.8883L39.3814 53.9998H50.4095L30.425 29.3421L30.4937 29.252H30.4894ZM59.0313 0C55.6984 0 53.528 2.46234 53.528 5.44803C53.528 8.43372 55.6984 10.8961 59.0313 10.8961C62.3642 10.8961 64.5347 8.43372 64.5347 5.44803C64.5347 2.46234 62.3642 0 59.0313 0ZM54.6518 53.9998H63.4109V15.4647H54.6518V53.9998ZM103.487 30.7277V53.9955H94.7281V50.1476C92.193 53.1333 88.3025 54.9479 82.293 54.9479C79.5349 54.9479 70.2482 53.3692 69.2231 44.0561C68.2408 35.1591 75.5886 29.1877 89.3448 29.1877H94.7281C94.7281 24.4604 92.5448 21.5476 86.6553 21.4361C81.8598 21.346 77.832 23.2463 74.868 25.8202L71.4192 19.2182C75.8974 15.3446 83.0136 13.0624 90.4601 13.9804C102.646 15.4818 103.487 25.55 103.487 30.7277ZM94.7281 36.3817H90.4472C81.2035 36.3817 77.729 39.3416 78.055 42.7134C78.3724 46.0122 81.3622 47.445 85.0254 47.445C91.2794 47.445 94.7281 41.3235 94.7281 37.4541V36.3774V36.3817ZM147.54 34.5885C147.54 45.875 139.819 55.1752 127.976 55.1752C116.132 55.1752 108.411 45.8793 108.411 34.5885C108.411 23.2978 116.132 14.0019 127.976 14.0019C139.819 14.0019 147.54 23.2978 147.54 34.5885ZM138.781 34.5885C138.781 26.5495 134.024 21.835 127.971 21.835C121.919 21.835 117.162 26.5495 117.162 34.5885C117.162 42.6276 121.919 47.3421 127.971 47.3421C134.024 47.3421 138.781 42.6276 138.781 34.5885ZM214.386 53.9998H223.145V15.4647H214.386V53.9998ZM218.766 0C215.433 0 213.263 2.46234 213.263 5.44803C213.263 8.43372 215.433 10.8961 218.766 10.8961C222.099 10.8961 224.269 8.43372 224.269 5.44803C224.269 2.46234 222.099 0 218.766 0ZM193.973 13.7788C188.512 13.7788 184.528 16.0352 182.357 20.8055C180.307 15.7135 176.009 13.7788 171.869 13.7788C168.112 13.7788 163.166 15.469 161.498 19.969V15.469H152.919V54.0041H161.678V31.0323C161.678 28.201 162.6 21.8522 168.635 21.8522C174.67 21.8522 175.683 28.201 175.683 31.0323V54.0041H184.442V31.0323C184.442 28.201 185.364 21.8522 191.489 21.8522C197.615 21.8522 198.447 28.201 198.447 31.0323V54.0041H207.206V28.9646C207.206 18.9265 201.205 13.7831 193.982 13.7831L193.973 13.7788ZM419.855 45.4202C412.958 48.7362 404.439 47.4407 398.863 41.8597C393.286 36.283 391.987 27.7635 395.302 20.8655C396.203 18.9952 395.615 16.743 393.951 15.499C391.721 13.8303 388.534 14.6367 387.337 17.1506C382.503 27.3302 384.433 39.8607 392.647 48.0756C400.861 56.2906 413.391 58.221 423.57 53.3864C426.083 52.1938 426.885 49.0022 425.221 46.7715C423.977 45.1071 421.725 44.5194 419.855 45.4202ZM431.076 9.64344C422.862 1.4285 410.333 -0.501905 400.154 4.33268C397.64 5.52524 396.838 8.71684 398.502 10.9475C399.746 12.612 401.998 13.1997 403.868 12.2988C410.766 8.98281 419.285 10.2783 424.861 15.8593C430.437 21.4361 431.737 29.9556 428.421 36.8535C427.52 38.7239 428.108 40.976 429.772 42.2201C432.003 43.8888 435.19 43.0823 436.387 40.5685C441.221 30.3888 439.291 17.8541 431.076 9.64344Z" fill="url(#paint0_linear_1_3217)"/>
|
|
3
|
+
<defs>
|
|
4
|
+
<linearGradient id="paint0_linear_1_3217" x1="438.916" y1="28" x2="4.5156e-08" y2="28" gradientUnits="userSpaceOnUse">
|
|
5
|
+
<stop offset="0.158366" stop-color="#3D3834"/>
|
|
6
|
+
<stop offset="1" stop-color="#736B68"/>
|
|
7
|
+
</linearGradient>
|
|
8
|
+
</defs>
|
|
9
|
+
</svg>
|
{sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/account_login.py
RENAMED
|
@@ -41,6 +41,9 @@ _CALLBACK_PATH = "/callback"
|
|
|
41
41
|
_DEFAULT_TIMEOUT_S = 180.0
|
|
42
42
|
_EXCHANGE_TIMEOUT_S = 15.0
|
|
43
43
|
_STATUS_TIMEOUT_S = 10.0
|
|
44
|
+
# Kept short: model discovery runs inline while rendering the interactive `/config`
|
|
45
|
+
# model picker, so an offline/slow proxy must not stall the menu for long.
|
|
46
|
+
_MODELS_TIMEOUT_S = 6.0
|
|
44
47
|
|
|
45
48
|
|
|
46
49
|
class SylliptorLoginError(Exception):
|
|
@@ -297,6 +300,44 @@ def fetch_trial_status(cfg: AppConfig) -> TrialStatus | None:
|
|
|
297
300
|
)
|
|
298
301
|
|
|
299
302
|
|
|
303
|
+
def list_trial_models(cfg: AppConfig) -> list[str]:
|
|
304
|
+
"""List the model ids the hosted proxy currently allows, via ``/v1/models``.
|
|
305
|
+
|
|
306
|
+
The proxy serves a server-side allowlist (just MiMo by default, but the deploy
|
|
307
|
+
can widen it), and exposes it as an OpenAI-shaped ``{"data": [{"id": ...}]}``.
|
|
308
|
+
Surfacing it lets `/config` show the trial's real models instead of pinning a
|
|
309
|
+
single hard-coded id. Best-effort: returns ``[]`` on any failure (offline,
|
|
310
|
+
non-200, malformed) so callers fall back to the static preset model. The
|
|
311
|
+
endpoint is public; the access_key is sent only when present (harmless and
|
|
312
|
+
forward-compatible) and never required.
|
|
313
|
+
"""
|
|
314
|
+
try:
|
|
315
|
+
url = cloud.models_url()
|
|
316
|
+
except cloud.SylliptorCloudConfigError:
|
|
317
|
+
return []
|
|
318
|
+
headers = {}
|
|
319
|
+
access_key = load_persisted_profile_keys().get(cloud.PROFILE_KEY)
|
|
320
|
+
if access_key:
|
|
321
|
+
headers["Authorization"] = f"Bearer {access_key}"
|
|
322
|
+
request = urllib.request.Request(url, headers=headers, method="GET")
|
|
323
|
+
try:
|
|
324
|
+
with urllib.request.urlopen(request, timeout=_MODELS_TIMEOUT_S) as response:
|
|
325
|
+
body = json.loads(response.read().decode("utf-8"))
|
|
326
|
+
except (urllib.error.URLError, TimeoutError, OSError, ValueError, UnicodeDecodeError):
|
|
327
|
+
return []
|
|
328
|
+
data = body.get("data") if isinstance(body, dict) else None
|
|
329
|
+
if not isinstance(data, list):
|
|
330
|
+
return []
|
|
331
|
+
models: list[str] = []
|
|
332
|
+
for item in data:
|
|
333
|
+
if not isinstance(item, dict):
|
|
334
|
+
continue
|
|
335
|
+
model_id = str(item.get("id") or "").strip()
|
|
336
|
+
if model_id and model_id not in models:
|
|
337
|
+
models.append(model_id)
|
|
338
|
+
return models
|
|
339
|
+
|
|
340
|
+
|
|
300
341
|
def format_trial_status_line(status: TrialStatus) -> str | None:
|
|
301
342
|
"""A one-line trial summary for `whoami`, or None if there's nothing to show."""
|
|
302
343
|
parts: list[str] = []
|
|
@@ -399,21 +440,37 @@ def _exchange_error_message(exc: urllib.error.HTTPError) -> str:
|
|
|
399
440
|
|
|
400
441
|
|
|
401
442
|
def _activate_sylliptor_profile(cfg: AppConfig, *, email: str | None) -> LoginResult:
|
|
402
|
-
"""Create + activate the `sylliptor` profile
|
|
443
|
+
"""Create + activate the `sylliptor` profile, keeping any model the user chose.
|
|
444
|
+
|
|
445
|
+
On the first connect there is no `sylliptor` profile yet, so the default model
|
|
446
|
+
is MiMo. On later logins we preserve whatever model the user has since selected
|
|
447
|
+
in `/config` (e.g. another model the proxy serves) instead of clobbering it back
|
|
448
|
+
to MiMo — otherwise re-logging in would silently undo their choice.
|
|
449
|
+
"""
|
|
403
450
|
preset = get_preset(cloud.PROFILE_KEY)
|
|
404
451
|
if preset is not None:
|
|
405
452
|
profile = make_profile_from_preset(preset, name=cloud.PROFILE_KEY)
|
|
406
453
|
else: # pragma: no cover - preset is always present
|
|
407
454
|
profile = ProfileSpec(name=cloud.PROFILE_KEY, protocol="openai_compat")
|
|
408
455
|
|
|
409
|
-
|
|
456
|
+
existing = get_profile(cfg, cloud.PROFILE_KEY)
|
|
457
|
+
existing_model = str(getattr(existing, "default_model", "") or "").strip() if existing else ""
|
|
458
|
+
# The legacy bare "mimo" placeholder is not a real model id; migrate sessions
|
|
459
|
+
# that still carry it (logged in before the named models existed) up to the
|
|
460
|
+
# flagship default instead of preserving a name no model actually has.
|
|
461
|
+
if existing_model.casefold() == "mimo":
|
|
462
|
+
existing_model = ""
|
|
463
|
+
chosen_model = existing_model or cloud.SYLLIPTOR_MIMO_MODEL
|
|
464
|
+
|
|
465
|
+
# Always pin to the live proxy URL (env-overridable for tests); keep the user's
|
|
466
|
+
# chosen model, defaulting to MiMo only when none has been set yet.
|
|
410
467
|
profile = ProfileSpec(
|
|
411
468
|
name=profile.name,
|
|
412
469
|
protocol=profile.protocol,
|
|
413
470
|
base_url=cloud.proxy_base_url(),
|
|
414
471
|
api_key_env=None,
|
|
415
472
|
extra_headers=dict(profile.extra_headers),
|
|
416
|
-
default_model=
|
|
473
|
+
default_model=chosen_model,
|
|
417
474
|
web_search_adapter=profile.web_search_adapter,
|
|
418
475
|
web_search_model=profile.web_search_model,
|
|
419
476
|
notes=profile.notes,
|
{sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/session.py
RENAMED
|
@@ -922,6 +922,7 @@ class AgentSession:
|
|
|
922
922
|
routing_mode_override: str | None = None,
|
|
923
923
|
ephemeral_system_messages: list[str] | tuple[str, ...] | None = None,
|
|
924
924
|
ephemeral_user_messages: list[str] | tuple[str, ...] | None = None,
|
|
925
|
+
cancellation_token: Any | None = None,
|
|
925
926
|
) -> int:
|
|
926
927
|
return _run_turn(
|
|
927
928
|
self,
|
|
@@ -930,6 +931,7 @@ class AgentSession:
|
|
|
930
931
|
routing_mode_override=routing_mode_override,
|
|
931
932
|
ephemeral_system_messages=ephemeral_system_messages,
|
|
932
933
|
ephemeral_user_messages=ephemeral_user_messages,
|
|
934
|
+
cancellation_token=cancellation_token,
|
|
933
935
|
)
|
|
934
936
|
|
|
935
937
|
|
{sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/turn/core.py
RENAMED
|
@@ -436,7 +436,18 @@ def run_turn(
|
|
|
436
436
|
routing_mode_override: str | None = None,
|
|
437
437
|
ephemeral_system_messages: list[str] | tuple[str, ...] | None = None,
|
|
438
438
|
ephemeral_user_messages: list[str] | tuple[str, ...] | None = None,
|
|
439
|
+
cancellation_token: Any | None = None,
|
|
439
440
|
) -> int:
|
|
441
|
+
def _throw_if_cancelled() -> None:
|
|
442
|
+
if cancellation_token is None:
|
|
443
|
+
return
|
|
444
|
+
throw_if_cancelled = getattr(cancellation_token, "throw_if_cancelled", None)
|
|
445
|
+
if callable(throw_if_cancelled):
|
|
446
|
+
throw_if_cancelled("cancelled_by_user")
|
|
447
|
+
return
|
|
448
|
+
if bool(getattr(cancellation_token, "is_cancelled", False)):
|
|
449
|
+
raise RuntimeError("cancelled_by_user")
|
|
450
|
+
|
|
440
451
|
def _phase_update(message: str) -> None:
|
|
441
452
|
clean = message.strip()
|
|
442
453
|
if not clean:
|
|
@@ -450,6 +461,7 @@ def run_turn(
|
|
|
450
461
|
image_paths = list(image_paths or [])
|
|
451
462
|
assistant_message_emitted = False
|
|
452
463
|
steps_attempted = 0
|
|
464
|
+
_throw_if_cancelled()
|
|
453
465
|
|
|
454
466
|
def _finish_turn(code: int, *, reason: str, final_text: str = "") -> int:
|
|
455
467
|
if self.hook_dispatcher is not None:
|
|
@@ -1069,6 +1081,7 @@ def run_turn(
|
|
|
1069
1081
|
last_edit_stagnation_payload: dict[str, Any] | None = None
|
|
1070
1082
|
|
|
1071
1083
|
for step in range(1, turn_max_steps + 1):
|
|
1084
|
+
_throw_if_cancelled()
|
|
1072
1085
|
steps_attempted = step
|
|
1073
1086
|
stream_used = self.stream
|
|
1074
1087
|
step_ephemeral_suffix_system_messages: list[str] = []
|
|
@@ -11,7 +11,12 @@ import typer
|
|
|
11
11
|
from rich.text import Text
|
|
12
12
|
|
|
13
13
|
from ...plan_validation import PlannerFailedError, raise_for_execution_ready_plan
|
|
14
|
-
from ...surface.styles import
|
|
14
|
+
from ...surface.styles import (
|
|
15
|
+
STYLE_CHROME,
|
|
16
|
+
STYLE_EMPHASIS,
|
|
17
|
+
STYLE_SUCCESS,
|
|
18
|
+
STYLE_WARN,
|
|
19
|
+
)
|
|
15
20
|
from ...swarm_orchestrator import acquire_swarm_mutation_guard
|
|
16
21
|
from .state import _ChatExecutionRequest, _ChatPlanModeState, _ForgeChatState
|
|
17
22
|
|
|
@@ -27,6 +32,36 @@ _TERMINALS_USAGE_LINES = (
|
|
|
27
32
|
)
|
|
28
33
|
|
|
29
34
|
|
|
35
|
+
def _print_sylliptor_trial_models(console: Console, session: Any, *, current: str) -> None:
|
|
36
|
+
"""List the models the hosted Sylliptor trial serves, when on that profile.
|
|
37
|
+
|
|
38
|
+
Best-effort and silent otherwise: only runs when the active profile is the
|
|
39
|
+
hosted `sylliptor` trial, discovers the live allowlist via the proxy, and
|
|
40
|
+
never raises into the chat loop.
|
|
41
|
+
"""
|
|
42
|
+
cfg = getattr(session, "cfg", None)
|
|
43
|
+
if cfg is None:
|
|
44
|
+
return
|
|
45
|
+
try:
|
|
46
|
+
from ...sylliptor_cloud import PROFILE_KEY
|
|
47
|
+
|
|
48
|
+
active = str((getattr(cfg, "extra_fields", {}) or {}).get("active_profile") or "").strip()
|
|
49
|
+
if active != PROFILE_KEY:
|
|
50
|
+
return
|
|
51
|
+
from ... import account_login
|
|
52
|
+
|
|
53
|
+
models = account_login.list_trial_models(cfg)
|
|
54
|
+
except Exception: # noqa: BLE001 - listing is best-effort
|
|
55
|
+
return
|
|
56
|
+
if not models:
|
|
57
|
+
return
|
|
58
|
+
console.print("Models on your Sylliptor trial:")
|
|
59
|
+
for model_id in models:
|
|
60
|
+
marker = " (current)" if model_id == current else ""
|
|
61
|
+
console.print(f" • {model_id}{marker}")
|
|
62
|
+
console.print("[dim]Switch with: /model <name>[/dim]")
|
|
63
|
+
|
|
64
|
+
|
|
30
65
|
def _print_forge_lock_wait_notice(console: Console, info: dict[str, Any]) -> None:
|
|
31
66
|
diagnostic = str(info.get("diagnostic") or "").strip()
|
|
32
67
|
warnings = ["Another Forge execution is mutating this workspace; queued and waiting."]
|
|
@@ -1140,6 +1175,7 @@ def _handle_chat_command(
|
|
|
1140
1175
|
if not arg:
|
|
1141
1176
|
model = getattr(getattr(session, "client", None), "model", "")
|
|
1142
1177
|
console.print(f"Current model: {model}")
|
|
1178
|
+
_print_sylliptor_trial_models(console, session, current=str(model))
|
|
1143
1179
|
return "handled"
|
|
1144
1180
|
if hasattr(session, "client"):
|
|
1145
1181
|
session.client.model = arg
|
|
@@ -1188,6 +1224,7 @@ def _handle_chat_command(
|
|
|
1188
1224
|
f"Profile [bold]{result.profile_name}[/bold] (model "
|
|
1189
1225
|
f"[bold]{result.model}[/bold]) is now active for this session."
|
|
1190
1226
|
)
|
|
1227
|
+
console.print("[dim]Tip: switch model anytime with /model.[/dim]")
|
|
1191
1228
|
except Exception: # noqa: BLE001 - fall back to restart guidance
|
|
1192
1229
|
console.print(
|
|
1193
1230
|
f"Profile [bold]{result.profile_name}[/bold] is set. "
|
|
@@ -1921,7 +1958,20 @@ def _handle_forge_chat_command(
|
|
|
1921
1958
|
f"Execution finished with issues · {failed_tasks} failed · "
|
|
1922
1959
|
f"{remaining_tasks} remaining."
|
|
1923
1960
|
)
|
|
1924
|
-
|
|
1961
|
+
done_ok = total_tasks > 0 and failed_tasks == 0 and remaining_tasks == 0 and code == 0
|
|
1962
|
+
console.print(
|
|
1963
|
+
_forge_phase_rule(console=console, label="DONE"),
|
|
1964
|
+
highlight=False,
|
|
1965
|
+
)
|
|
1966
|
+
dot = "●" if _forge_supports_unicode_glyphs(console) else "*"
|
|
1967
|
+
console.print(
|
|
1968
|
+
Text.assemble(
|
|
1969
|
+
("│ ", STYLE_CHROME),
|
|
1970
|
+
(f"{dot} ", STYLE_SUCCESS if done_ok else STYLE_WARN),
|
|
1971
|
+
(headline, STYLE_EMPHASIS),
|
|
1972
|
+
),
|
|
1973
|
+
highlight=False,
|
|
1974
|
+
)
|
|
1925
1975
|
_print_forge_meta(
|
|
1926
1976
|
console=console,
|
|
1927
1977
|
message=(
|
|
@@ -160,6 +160,7 @@ from ...extensions.state import (
|
|
|
160
160
|
)
|
|
161
161
|
from ...extensions.workspace_trust import is_workspace_trusted
|
|
162
162
|
from ...surface.styles import (
|
|
163
|
+
STYLE_ACCENT,
|
|
163
164
|
STYLE_CHROME,
|
|
164
165
|
STYLE_CONTENT,
|
|
165
166
|
STYLE_DESELECTED_DESC,
|
|
@@ -627,6 +628,81 @@ def _print_forge_error(*, console: Console, message: str) -> None:
|
|
|
627
628
|
)
|
|
628
629
|
|
|
629
630
|
|
|
631
|
+
def _forge_supports_unicode_glyphs(console: Console) -> bool:
|
|
632
|
+
"""Whether the console encoding can render the status/box glyphs we add."""
|
|
633
|
+
encoding = str(getattr(console, "encoding", "") or "")
|
|
634
|
+
if not encoding:
|
|
635
|
+
return True
|
|
636
|
+
try:
|
|
637
|
+
"●○─→✓✗".encode(encoding)
|
|
638
|
+
except (LookupError, UnicodeError):
|
|
639
|
+
return False
|
|
640
|
+
return True
|
|
641
|
+
|
|
642
|
+
|
|
643
|
+
def _forge_phase_rule(*, console: Console, label: str, style: str = STYLE_EMPHASIS) -> Any:
|
|
644
|
+
"""A quiet ``│ -- LABEL --...`` separator sized to the terminal width."""
|
|
645
|
+
from rich.text import Text
|
|
646
|
+
|
|
647
|
+
clean_label = str(label or "").strip()
|
|
648
|
+
dash = "─" if _forge_supports_unicode_glyphs(console) else "-"
|
|
649
|
+
try:
|
|
650
|
+
width = int(getattr(console, "width", 0) or 0)
|
|
651
|
+
except (TypeError, ValueError):
|
|
652
|
+
width = 0
|
|
653
|
+
width = max(width, _MIN_TERMINAL_COLUMNS)
|
|
654
|
+
lead = dash * 2
|
|
655
|
+
if not clean_label:
|
|
656
|
+
body = max(3, width - 2)
|
|
657
|
+
return Text.assemble(("│ ", STYLE_CHROME), (dash * body, STYLE_CHROME))
|
|
658
|
+
used = 2 + len(lead) + 1 + len(clean_label) + 1
|
|
659
|
+
tail = max(3, width - used)
|
|
660
|
+
return Text.assemble(
|
|
661
|
+
("│ ", STYLE_CHROME),
|
|
662
|
+
(f"{lead} ", STYLE_CHROME),
|
|
663
|
+
(clean_label, style),
|
|
664
|
+
(" ", STYLE_CHROME),
|
|
665
|
+
(dash * tail, STYLE_CHROME),
|
|
666
|
+
)
|
|
667
|
+
|
|
668
|
+
|
|
669
|
+
def _print_forge_suggestion(*, console: Console, message: str) -> None:
|
|
670
|
+
"""Print a dim ``│ -> ...`` next-step nudge under a Forge command result."""
|
|
671
|
+
from rich.text import Text
|
|
672
|
+
|
|
673
|
+
arrow = "→" if _forge_supports_unicode_glyphs(console) else "->"
|
|
674
|
+
console.print(
|
|
675
|
+
Text.assemble(
|
|
676
|
+
("│ ", STYLE_CHROME),
|
|
677
|
+
(f"{arrow} ", STYLE_ACCENT),
|
|
678
|
+
(str(message or ""), STYLE_DIM),
|
|
679
|
+
),
|
|
680
|
+
highlight=False,
|
|
681
|
+
)
|
|
682
|
+
|
|
683
|
+
|
|
684
|
+
def _forge_plan_has_requirement(plan: dict[str, Any]) -> bool:
|
|
685
|
+
requirements = plan.get("requirements") if isinstance(plan, dict) else None
|
|
686
|
+
if not isinstance(requirements, list):
|
|
687
|
+
return False
|
|
688
|
+
return any(bool(str(requirement_text(req)).strip()) for req in requirements)
|
|
689
|
+
|
|
690
|
+
|
|
691
|
+
def _forge_plan_state(plan: dict[str, Any]) -> str:
|
|
692
|
+
"""Classify a Forge plan into empty/planning/ready/done for UI guidance."""
|
|
693
|
+
if not isinstance(plan, dict):
|
|
694
|
+
return "empty"
|
|
695
|
+
tasks = plan.get("tasks") or []
|
|
696
|
+
has_tasks = isinstance(tasks, list) and len(tasks) > 0
|
|
697
|
+
if not has_tasks:
|
|
698
|
+
return "planning" if _forge_plan_has_requirement(plan) else "empty"
|
|
699
|
+
done, failed, remaining = _forge_task_status_counts(plan)
|
|
700
|
+
total = done + failed + remaining
|
|
701
|
+
if total > 0 and failed == 0 and remaining == 0:
|
|
702
|
+
return "done"
|
|
703
|
+
return "ready"
|
|
704
|
+
|
|
705
|
+
|
|
630
706
|
def _forge_task_status_counts(plan: dict[str, Any]) -> tuple[int, int, int]:
|
|
631
707
|
from ...swarm_scheduler import canonical_task_status
|
|
632
708
|
|
|
@@ -64,8 +64,63 @@ def _forge_help_panel() -> Panel:
|
|
|
64
64
|
return _chat_commands_panel(ui_mode="forge")
|
|
65
65
|
|
|
66
66
|
|
|
67
|
+
def _forge_plan_readiness_line(*, console: Console, plan: dict[str, Any]) -> Any:
|
|
68
|
+
"""A one-line go/no-go readiness chip derived from the current plan state."""
|
|
69
|
+
from rich.text import Text
|
|
70
|
+
|
|
71
|
+
use_unicode = _forge_supports_unicode_glyphs(console)
|
|
72
|
+
filled = "●" if use_unicode else "*"
|
|
73
|
+
hollow = "○" if use_unicode else "o"
|
|
74
|
+
tasks = plan.get("tasks") or []
|
|
75
|
+
has_tasks = isinstance(tasks, list) and len(tasks) > 0
|
|
76
|
+
if not has_tasks:
|
|
77
|
+
if _forge_plan_has_requirement(plan):
|
|
78
|
+
req_count = sum(
|
|
79
|
+
1 for req in (plan.get("requirements") or []) if str(requirement_text(req)).strip()
|
|
80
|
+
)
|
|
81
|
+
req_word = "requirement" if req_count == 1 else "requirements"
|
|
82
|
+
text = f"{req_count} {req_word}, 0 tasks — describe the work or /task to add tasks"
|
|
83
|
+
else:
|
|
84
|
+
text = "no tasks yet · add /goal then /task to start planning"
|
|
85
|
+
return Text.assemble(("│ ", STYLE_CHROME), (f"{hollow} ", STYLE_DIM), (text, STYLE_DIM))
|
|
86
|
+
done, failed, remaining = _forge_task_status_counts(plan)
|
|
87
|
+
total = done + failed + remaining
|
|
88
|
+
if failed > 0:
|
|
89
|
+
task_word = "task" if failed == 1 else "tasks"
|
|
90
|
+
text = f"needs attention · {failed} {task_word} blocked — see status column"
|
|
91
|
+
glyph_style = STYLE_WARN
|
|
92
|
+
elif remaining == 0 and total > 0:
|
|
93
|
+
task_word = "task" if total == 1 else "tasks"
|
|
94
|
+
text = f"all tasks done · {done} of {total} {task_word} finished"
|
|
95
|
+
glyph_style = STYLE_SUCCESS
|
|
96
|
+
else:
|
|
97
|
+
task_word = "task" if total == 1 else "tasks"
|
|
98
|
+
text = f"ready to execute · {total} {task_word} · 0 blocked"
|
|
99
|
+
glyph_style = STYLE_SUCCESS
|
|
100
|
+
return Text.assemble(("│ ", STYLE_CHROME), (f"{filled} ", glyph_style), (text, STYLE_DIM))
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def _forge_next_step_line(*, console: Console, plan: dict[str, Any]) -> Any:
|
|
104
|
+
"""A state-aware ``Next`` hint naming the single best next command."""
|
|
105
|
+
from rich.text import Text
|
|
106
|
+
|
|
107
|
+
_ = console
|
|
108
|
+
hint = {
|
|
109
|
+
"empty": "paste your goal, or /goal then /task to start planning",
|
|
110
|
+
"planning": "/show to review, then /execute plan when ready",
|
|
111
|
+
"ready": "/execute plan to start the run",
|
|
112
|
+
"done": "run complete · /done to save, or /back to chat",
|
|
113
|
+
}.get(_forge_plan_state(plan), "/help for commands")
|
|
114
|
+
return Text.assemble(
|
|
115
|
+
("│ ", STYLE_CHROME),
|
|
116
|
+
("Next · ", STYLE_ACCENT),
|
|
117
|
+
(hint, STYLE_DIM),
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
|
|
67
121
|
def _forge_enter_panel(
|
|
68
122
|
*,
|
|
123
|
+
console: Console,
|
|
69
124
|
paths: RunPaths,
|
|
70
125
|
plan: dict[str, Any],
|
|
71
126
|
entry_kind: str,
|
|
@@ -91,6 +146,8 @@ def _forge_enter_panel(
|
|
|
91
146
|
text="/show for summary · /execute plan when ready · /help for commands",
|
|
92
147
|
style="dim",
|
|
93
148
|
),
|
|
149
|
+
_forge_plan_readiness_line(console=console, plan=plan),
|
|
150
|
+
_forge_next_step_line(console=console, plan=plan),
|
|
94
151
|
)
|
|
95
152
|
|
|
96
153
|
|
|
@@ -270,6 +327,7 @@ def _show_forge_plan_summary(*, console: Console, paths: RunPaths, plan: dict[st
|
|
|
270
327
|
message=f"Run {paths.run_id} · {task_count} tasks · {asset_count} assets",
|
|
271
328
|
style=STYLE_EMPHASIS,
|
|
272
329
|
)
|
|
330
|
+
console.print(_forge_plan_readiness_line(console=console, plan=plan), highlight=False)
|
|
273
331
|
_print_forge_meta(console=console, message=f"Goal · {goal}", style=STYLE_CONTENT)
|
|
274
332
|
_print_forge_meta(console=console, message=f"Summary · {summary}", style=STYLE_CONTENT)
|
|
275
333
|
requirements = plan.get("requirements") or []
|
|
@@ -290,6 +348,18 @@ def _show_forge_plan_summary(*, console: Console, paths: RunPaths, plan: dict[st
|
|
|
290
348
|
style="dim",
|
|
291
349
|
)
|
|
292
350
|
|
|
351
|
+
if not _forge_has_usable_plan_input(plan):
|
|
352
|
+
if asset_count:
|
|
353
|
+
_print_forge_meta(console=console, message=f"Assets · {asset_count}", style="dim")
|
|
354
|
+
_print_forge_meta(console=console, message="This plan is empty.", style=STYLE_EMPHASIS)
|
|
355
|
+
_print_forge_meta(
|
|
356
|
+
console=console,
|
|
357
|
+
message="Add work two ways: paste a goal/spec, or use /goal then /task.",
|
|
358
|
+
style=STYLE_CONTENT,
|
|
359
|
+
)
|
|
360
|
+
console.print(_forge_next_step_line(console=console, plan=plan), highlight=False)
|
|
361
|
+
return
|
|
362
|
+
|
|
293
363
|
table = _forge_task_table()
|
|
294
364
|
table.add_column("id", style="dim", no_wrap=True, ratio=1)
|
|
295
365
|
table.add_column("status", style="dim", no_wrap=True, ratio=1)
|
|
@@ -311,6 +381,7 @@ def _show_forge_plan_summary(*, console: Console, paths: RunPaths, plan: dict[st
|
|
|
311
381
|
table.add_row("-", "-", "(no tasks yet)", "-", "off")
|
|
312
382
|
console.print(table)
|
|
313
383
|
_print_forge_meta(console=console, message=f"Assets · {asset_count}", style="dim")
|
|
384
|
+
console.print(_forge_next_step_line(console=console, plan=plan), highlight=False)
|
|
314
385
|
|
|
315
386
|
|
|
316
387
|
def _show_forge_plan_markdown(
|
|
@@ -1012,6 +1083,7 @@ def _enter_forge_mode(
|
|
|
1012
1083
|
)
|
|
1013
1084
|
console.print(
|
|
1014
1085
|
_forge_enter_panel(
|
|
1086
|
+
console=console,
|
|
1015
1087
|
paths=paths,
|
|
1016
1088
|
plan=plan,
|
|
1017
1089
|
entry_kind=entry_selection.entry_kind,
|
|
@@ -706,6 +706,7 @@ def login() -> None:
|
|
|
706
706
|
f"Active profile: [bold]{result.profile_name}[/bold] · default model: "
|
|
707
707
|
f"[bold]{result.model}[/bold]"
|
|
708
708
|
)
|
|
709
|
+
console.print("[dim]Switch model anytime with /model in chat, or `sylliptor config`.[/dim]")
|
|
709
710
|
console.print("[dim]Run `sylliptor chat` to start. Use `sylliptor logout` to disconnect.[/dim]")
|
|
710
711
|
|
|
711
712
|
|
|
@@ -451,42 +451,52 @@ def printWelcome(
|
|
|
451
451
|
]
|
|
452
452
|
|
|
453
453
|
if owl_frames:
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
454
|
+
side_by_side_layouts = [(indent, gap)]
|
|
455
|
+
if indent or visibleLength(gap) > 1:
|
|
456
|
+
side_by_side_layouts.append(("", " "))
|
|
457
|
+
for left_indent, middle_gap in side_by_side_layouts:
|
|
458
|
+
right_width = max(
|
|
459
|
+
safe_line_width
|
|
460
|
+
- visibleLength(left_indent)
|
|
461
|
+
- logo_width
|
|
462
|
+
- visibleLength(middle_gap),
|
|
463
|
+
1,
|
|
464
|
+
)
|
|
465
|
+
detail_lines = welcome_detail_lines(right_width)
|
|
466
|
+
required_side_by_side_width = (
|
|
467
|
+
visibleLength(left_indent) + logo_width + visibleLength(middle_gap)
|
|
468
|
+
)
|
|
469
|
+
required_side_by_side_width += max(
|
|
470
|
+
(visibleLength(line) for line in detail_lines),
|
|
471
|
+
default=0,
|
|
472
|
+
)
|
|
473
|
+
if safe_line_width < required_side_by_side_width:
|
|
474
|
+
continue
|
|
465
475
|
right_start = max((len(logo_frame) - len(detail_lines)) // 2, 0)
|
|
466
476
|
rendered_lines = []
|
|
467
477
|
total_rows = max(len(logo_frame), right_start + len(detail_lines))
|
|
468
478
|
for row_index in range(total_rows):
|
|
469
479
|
row = logo_frame[row_index] if row_index < len(logo_frame) else ""
|
|
470
|
-
line = f"{
|
|
480
|
+
line = f"{left_indent}{padLine(row, logo_width)}"
|
|
471
481
|
right_index = row_index - right_start
|
|
472
482
|
if 0 <= right_index < len(detail_lines):
|
|
473
|
-
line = f"{line}{
|
|
483
|
+
line = f"{line}{middle_gap}{detail_lines[right_index]}"
|
|
474
484
|
rendered_lines.append(_clip_visible_line(line.rstrip(), safe_line_width))
|
|
475
485
|
return rendered_lines
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
486
|
+
|
|
487
|
+
rendered_lines = []
|
|
488
|
+
rendered_lines.extend(
|
|
489
|
+
_clip_visible_line(f"{indent}{row.rstrip()}".rstrip(), safe_line_width)
|
|
490
|
+
for row in logo_frame
|
|
491
|
+
)
|
|
492
|
+
rendered_lines.append("")
|
|
493
|
+
full_detail_width = max(safe_line_width - visibleLength(indent), 1)
|
|
494
|
+
full_detail_lines = welcome_detail_lines(full_detail_width)
|
|
495
|
+
rendered_lines.extend(
|
|
496
|
+
_clip_visible_line(f"{indent}{line}".rstrip(), safe_line_width)
|
|
497
|
+
for line in full_detail_lines
|
|
498
|
+
)
|
|
499
|
+
return rendered_lines
|
|
490
500
|
|
|
491
501
|
context_line = _welcome_context_line(
|
|
492
502
|
workspace=workspace,
|