sylliptor-agent-cli 0.9.3__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.3 → sylliptor_agent_cli-0.9.4}/CHANGELOG.md +13 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/PKG-INFO +1 -1
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/pyproject.toml +1 -1
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/__init__.py +1 -1
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/session.py +2 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/turn/core.py +13 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/chat/commands.py +20 -2
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/cli_common.py +76 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/forge_helpers.py +72 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/welcome.py +37 -27
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/forge.py +12 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/rich_surface.py +81 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/swarm_trace.py +7 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_cli_ux.py +28 -0
- sylliptor_agent_cli-0.9.4/tests/test_forge_ui_elements.py +240 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/.dockerignore +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/.editorconfig +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/.gitattributes +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/.github/FUNDING.yml +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/.github/workflows/ci.yml +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/.github/workflows/release.yml +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/.github/workflows/sandbox-image.yml +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/.gitignore +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/.trivyignore +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/CODE_OF_CONDUCT.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/CONTRIBUTING.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/LICENSE +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/NOTICE +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/README.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/RELEASING.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/SECURITY.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/README.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/architecture.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/assets/sylliptor-demo.gif +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/assets/xiaomi-mimo-logo.svg +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/credentials.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/custom_tools.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/examples/README.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/examples/custom_tools/README.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/examples/custom_tools/workspace_manifest.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/README.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/block_dangerous.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/block_destructive_git.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/block_env_files.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/format_on_write.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/notify_done.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/notify_done_macos.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/sample_hooks.json +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/secret_scanner.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/forge.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/hooks.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/mcp.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/plugins.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/quickstart.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/reference.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/sandbox.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/security_model.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/server.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/shell_sandbox.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/skills.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/skills_lifecycle.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/subagents.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/docs/terminals.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/sandbox/Dockerfile +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/sandbox/README.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/scripts/README.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/scripts/qa/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/scripts/qa/check_deps.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/scripts/refresh_litellm_model_catalog.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/scripts/test_live_provider_smoke.sh +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/scripts/test_provider_native.sh +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/scripts/test_web_search.sh +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/__main__.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/account_login.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/README.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/errors.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/prompt_context.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/routing.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/tools_assembly.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/turn/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/turn/events.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/turn/exploration.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/turn/read_cache.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/turn/snapshot.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/verification.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/verification_commands.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent_loop.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/approval_scope.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/README.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/asset_read_core.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/budget_allocator.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/comprehender.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/index.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/ingestion.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/legacy_migration.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/models.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/ocr.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-000.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-001.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-002.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-003.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-004.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-005.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-006.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-007.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-008.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-009.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-010.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-011.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-012.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-013.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-014.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-015.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-016.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-017.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-018.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-019.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-020.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/index.html +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/show-owl.sh +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/paths.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/plan_binding.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/planner_context.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/planner_tools.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/prompts.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/replanner_context.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/surface.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/untrusted_content.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/usage_logger.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/worker_mirror.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/worker_section.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/worker_tools.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/atomic_io.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/background_runner.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/branding.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/builtin_hooks/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/builtin_hooks/notify_done_windows.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/bwrap_etc.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/assets_cli.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/assets_modal.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/chat/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/chat/loop.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/chat/rendering.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/chat/state.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/chat_resume.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/chat_slash_completer.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/_shared.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/chat_resume_helpers.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/chat_state.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/chat_status.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/chat_terminal.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/cli_surface.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/config.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/conventions.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/execution_helpers.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/extensions.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/forge.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/forge_asset_view.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/hooks.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/mcp.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/profile.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/prompt_helpers.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/report.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/root.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/sandbox.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/server.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/sessions.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/skills.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/startup.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/tools.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/update.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/config_menu.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/setup_wizard.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/clipboard.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/compaction/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/compaction/conversation_compactor.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/compaction/importance.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/compaction/settings.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/compaction/tool_output_offload.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/config.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/conflict_auto_resolver.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/custom_tools/README.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/custom_tools/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/custom_tools/discovery.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/custom_tools/runtime.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/custom_tools/session.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/custom_tools/trust.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/diff_paths.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/direction_change.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/error_text.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/execution_budget.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/execution_context.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/execution_shared.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/README.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/activation.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/install.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/manifest.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/models.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/paths.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/registry.json +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/registry.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/state.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/workspace_trust.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/failure_category.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/feedback_report.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/file_classification.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/forge.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/frontmatter_utils.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/git_ops.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/git_safe.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/git_worktrees.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/hooks/README.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/hooks/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/hooks/audit.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/hooks/config.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/hooks/dispatcher.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/hooks/models.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/hooks/trust.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/integration_gate.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/interactive_input_guard.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/interactive_plan_mode.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/knowledge_base.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/knowledge_capture.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/knowledge_librarian.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/language_policy.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/litellm_static_provider.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/anthropic_messages.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/base.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/factory.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/gemini_generate_content.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/gemini_interactions.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/metadata.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/openai_compat.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/openai_responses.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/protocols.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/provider_limits.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/streaming.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/types.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm_error_display.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/README.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/client.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/config.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/errors.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/forge_scope.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/jsonrpc.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/manager.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/models.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/oauth.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/oauth_runtime.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/oauth_store.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/prompts.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/resources.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/roots.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/server_requests.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/token_store.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/transport_http.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/transport_stdio.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/untrusted_content.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/merge_conflict_reviewer.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/model_catalog/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/model_catalog/litellm_model_prices_snapshot.json +0 -0
- {sylliptor_agent_cli-0.9.3 → 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.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/model_metadata_policy.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/model_metadata_utils.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/model_registry.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/model_router.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/plan_assistant.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/plan_mode.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/plan_reconciliation.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/plan_validation.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/planning_constraints.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/policy.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/profile_presets.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/profiles.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/provider_diagnostics.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/provider_telemetry.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/remote_sync.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/replanning.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/repo_scan.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/request_estimation.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/review_gate.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/run_lock.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/runtime_artifacts.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/runtime_context_features.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/runtime_kind.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/safety/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/safety/mcp_sanitize.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/safety/safe_http.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/sandbox_doctor.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/sandbox_runner.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/sandbox_settings.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/serialized_paths.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/server/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/server/app.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/server/auth.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/server/job_config.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/server/settings.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/server/store.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/server/worker_runner.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/session_artifacts.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/session_metrics.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/session_store.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/README.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/conventions.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/discovery.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/eval_models.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/eval_runner.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/evals.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/install.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/loader.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/matching.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/models.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/paths.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/prompting.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/scaffold.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/state.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/transactions.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/validation.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/step_budget.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/subagents.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/base.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/console.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/events.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/hidden_surface.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/noop_surface.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/styles.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/theme.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/types.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/swarm_backend.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/swarm_orchestrator.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/swarm_scheduler.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/swarm_worker.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/sylliptor_cloud.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/task_dependencies.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/task_readiness.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/task_scope.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/terminal_manager.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/token_budget.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/README.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/__init__.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/availability.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/fs.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/git.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/history.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/http_timeout.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/registry.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/search.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/shell.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/symbols.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/web.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/web_search.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/web_search_dashscope.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/web_search_provider_adapters.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/web_search_tavily.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/turn_intent.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/updates.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/usage_tracker.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/verify_gate.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/web_research.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/web_search_adapters.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/workspace_binding.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/workspace_binding_ui.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/workspace_context.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/_assets_test_helpers.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/_terminal_matrix_harness.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/conftest.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/fixtures/mcp_servers/minimal_stdio_server.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/fixtures/skills_eval/sample_cases.json +0 -0
- {sylliptor_agent_cli-0.9.3 → 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.3 → sylliptor_agent_cli-0.9.4}/tests/fixtures/skills_eval/workspaces/combined_repo/AGENTS.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/fixtures/skills_eval/workspaces/combined_repo/README.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/fixtures/skills_eval/workspaces/combined_repo/src/parser.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/fixtures/skills_eval/workspaces/combined_repo/tests/parser_checks.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/fixtures/skills_eval/workspaces/empty_authoring/README.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/fixtures/skills_eval/workspaces/negative_control/README.md +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_1.json +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_10.json +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_11.json +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_12.json +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_2.json +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_3.json +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_4.json +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_5.json +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_6.json +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_7.json +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_8.json +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_9.json +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/fixtures/tesseract_osd/english.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/fixtures/tesseract_osd/greek.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/fixtures/tesseract_osd/japanese.txt +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_account_login.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_event_emission.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_final_step_nudge.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_forced_summary.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_hooks.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_host_managed_context.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_images.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_interactive_execution_posture.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_non_interactive.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_one_shot_follow_through.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_plugin_filter.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_retry_guard.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_review_approval.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_same_batch_read_dedup.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_small_talk.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_step_budget_runtime.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_tool_transcript_shaping.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_anthropic_messages.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_assets_budget_allocator.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_assets_comprehender.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_assets_index.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_assets_ingestion.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_assets_legacy_migration.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_assets_models.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_assets_ocr.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_assets_plan_binding.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_assets_planner_context.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_assets_planner_tools.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_assets_replanner_context.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_assets_surface.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_assets_worker_mirror.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_assets_worker_section.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_assets_worker_tools.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_background_runner.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_background_runner_sandbox.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_chat_assets_slash.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_chat_image_hotkeys.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_chat_mode_rebuild.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_chat_plan_mode.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_chat_resume.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_chat_session_workdir.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_chat_slash_completer.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_chat_terminals_slash.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_check_deps.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_cli_api_key.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_cli_assets.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_cli_assets_prune_legacy.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_cli_config_menu_command.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_cli_entrypoint.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_cli_facade.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_cli_impl_forge.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_cli_skill_lifecycle.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_cli_skills.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_cli_subagents.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_cli_tools.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_clipboard.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_color_adaptation.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_compaction_settings.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_config.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_config_menu.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_config_menu_flow.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_config_menu_raw_mode.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_conflict_auto_resolver.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_conventions_cli.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_conversation_compaction.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_custom_tools_cli.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_custom_tools_discovery.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_custom_tools_runtime.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_custom_tools_trust.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_docs_alignment.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_execution_budget.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_execution_context.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_execution_shared_mirror.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_execution_shared_reporting.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_execution_shared_snapshot.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_extensions_cli.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_extensions_registry.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_extensions_state.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_feedback_report.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_file_classification.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_forge.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_forge_asset_view.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_forge_assets_legacy_deprecation.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_forge_assets_legacy_migration_loadplan.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_forge_assets_regressions.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_forge_exec.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_forge_review.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_forge_swarm.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_forge_watchdog_diagnostics.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_fs_edit_tool.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_fs_file_ops_tool.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_fs_tools.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_fullaccess_audit.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_gemini_generate_content.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_gemini_interactions.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_git_apply_patch_tool.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_git_history_tool.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_git_hygiene.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_git_ops.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_git_safe.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_git_worktrees.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_history_search_tool.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_hooks_cli.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_hooks_config.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_importance_scoring.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_integration_compaction_pipeline.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_integration_gate.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_knowledge_base.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_knowledge_capture.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_knowledge_librarian.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_language_policy.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_language_policy_prompts.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_legacy_profile_migration.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_litellm_model_registry.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_live_provider_smoke.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_llm_factory_profiles.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_llm_metadata.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_llm_protocols.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_llm_streaming.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_auth_cli.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_config.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_errors.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_http.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_manager.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_oauth.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_prompts.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_resources.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_roots.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_sanitize.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_scope.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_stdio.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_merge_conflict_reviewer.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_model_catalog_packaging.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_model_metadata_policy.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_model_router.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_model_router_forge_context.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_native_provider_conformance.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_openai_compat.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_openai_responses.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_plan_assistant.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_plan_assistant_assets.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_plan_assistant_forge_context.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_plan_mode.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_plan_reconciliation.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_plan_validation.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_planning_constraints.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_plugin_activation.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_plugin_enable_disable.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_plugin_enable_disable_cli.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_plugin_install.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_plugin_install_cli.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_plugin_manifest.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_policy.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_profile_cli_commands.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_profile_presets.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_profiles.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_prompt_helpers.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_prompt_payload.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_prompts_invariants.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_protected_paths.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_provider_diagnostics.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_provider_limits.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_provider_telemetry.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_refresh_litellm_model_catalog.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_release_smoke.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_remote_sync.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_replanning.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_replanning_assets.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_repo_scan.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_request_size_telemetry.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_review_gate.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_run_mutation.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_runtime_context_features.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_safe_http.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_sandbox_cli.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_sandbox_doctor.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_sandbox_settings_background.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_search_rg_security.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_security_docs.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_serialized_paths.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_server_app.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_server_job_config.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_server_settings.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_server_upload_flow.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_server_worker_runner.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_server_worker_runner_args.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_session_metrics.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_session_store.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_setup_wizard.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_shell_background_integration.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_shell_sandbox.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_show_owl_matrix.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_skill_lifecycle.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_skill_lifecycle_prompting.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_skills.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_skills_evals.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_step_budget.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_subagent_turn_policy.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_subagents.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_surface.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_surface_console_encoding.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_surface_event_migration.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_surface_events.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_swarm_backend.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_swarm_scheduler.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_swarm_worker.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_swarm_worker_assets.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_symbol_search_tool.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_task_dependencies.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_task_readiness.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_task_scope.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_terminal_manager.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_terminal_matrix_consistency.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_terminal_matrix_visible_anchors.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_token_budget.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_tool_exposure_by_mode.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_tool_output_offload.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_tool_registry.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_updates.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_usage_tracker.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_verify_gate.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_verify_tool.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_web_fetch_tool.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_web_search_dashscope.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_web_search_tavily.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_web_search_tool.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_workspace_binding.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_workspace_context.py +0 -0
- {sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/tests/test_workspace_trust.py +0 -0
|
@@ -6,6 +6,19 @@ 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
|
+
|
|
9
22
|
## [0.9.3] - 2026-06-12
|
|
10
23
|
|
|
11
24
|
### 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
|
{sylliptor_agent_cli-0.9.3 → 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.3 → 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
|
|
|
@@ -1953,7 +1958,20 @@ def _handle_forge_chat_command(
|
|
|
1953
1958
|
f"Execution finished with issues · {failed_tasks} failed · "
|
|
1954
1959
|
f"{remaining_tasks} remaining."
|
|
1955
1960
|
)
|
|
1956
|
-
|
|
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
|
+
)
|
|
1957
1975
|
_print_forge_meta(
|
|
1958
1976
|
console=console,
|
|
1959
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,
|
|
@@ -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,
|
{sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/forge.py
RENAMED
|
@@ -337,6 +337,7 @@ def forge_plan(
|
|
|
337
337
|
console.print(line)
|
|
338
338
|
console.print("Planning loop started. Type /help for commands. Type /done to finish.")
|
|
339
339
|
assistant_enabled = False
|
|
340
|
+
planning_suggested: set[str] = set()
|
|
340
341
|
planner_state = _ForgePlannerSessionState(
|
|
341
342
|
workspace_context=(
|
|
342
343
|
_workspace_context_payload_for_paths(paths=paths) or workspace_scan.to_dict()
|
|
@@ -460,6 +461,12 @@ def forge_plan(
|
|
|
460
461
|
plan["summary"] = goal
|
|
461
462
|
save_plan(paths, plan)
|
|
462
463
|
console.print("Project goal updated.")
|
|
464
|
+
if "goal" not in planning_suggested:
|
|
465
|
+
planning_suggested.add("goal")
|
|
466
|
+
console.print(
|
|
467
|
+
"[dim]Next: add tasks with /task <title>, or describe the work and "
|
|
468
|
+
"let the planner draft them.[/dim]"
|
|
469
|
+
)
|
|
463
470
|
append_transcript_note(paths, role="system", message="Updated project goal.")
|
|
464
471
|
continue
|
|
465
472
|
if cmd == "/task":
|
|
@@ -484,6 +491,11 @@ def forge_plan(
|
|
|
484
491
|
continue
|
|
485
492
|
save_plan(paths, plan)
|
|
486
493
|
console.print(f"Added task: {task['id']} - {task['title']}")
|
|
494
|
+
if "task" not in planning_suggested:
|
|
495
|
+
planning_suggested.add("task")
|
|
496
|
+
console.print(
|
|
497
|
+
"[dim]Next: add more tasks, or /done to save and validate the plan.[/dim]"
|
|
498
|
+
)
|
|
487
499
|
append_transcript_note(paths, role="system", message=f"Added task {task['id']}.")
|
|
488
500
|
continue
|
|
489
501
|
|
|
@@ -285,6 +285,32 @@ def _progress_message_completes_activity(message: str) -> bool:
|
|
|
285
285
|
return any(clean.startswith(prefix) for prefix in _TERMINAL_PROGRESS_PREFIXES)
|
|
286
286
|
|
|
287
287
|
|
|
288
|
+
_SWARM_TRACE_SUCCESS_KEYWORDS = (
|
|
289
|
+
"merged successfully",
|
|
290
|
+
"applied successfully",
|
|
291
|
+
"accepted verified",
|
|
292
|
+
"review approved",
|
|
293
|
+
"verification passed",
|
|
294
|
+
"verified no-op",
|
|
295
|
+
"completed successfully",
|
|
296
|
+
)
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
def _swarm_trace_severity(phase: str, message: str) -> str:
|
|
300
|
+
"""Classify a swarm trace line into error/warning/success/neutral."""
|
|
301
|
+
normalized_phase = str(phase or "").strip().lower()
|
|
302
|
+
normalized_message = str(message or "").strip().lower()
|
|
303
|
+
if normalized_phase.endswith(".error"):
|
|
304
|
+
return "error"
|
|
305
|
+
if normalized_phase.endswith(".warning") or normalized_message.startswith("warning"):
|
|
306
|
+
return "warning"
|
|
307
|
+
if "warning:" in normalized_message:
|
|
308
|
+
return "warning"
|
|
309
|
+
if any(keyword in normalized_message for keyword in _SWARM_TRACE_SUCCESS_KEYWORDS):
|
|
310
|
+
return "success"
|
|
311
|
+
return "neutral"
|
|
312
|
+
|
|
313
|
+
|
|
288
314
|
class _ThinkingSpinnerRenderable:
|
|
289
315
|
def __init__(self, surface: RichSurface) -> None:
|
|
290
316
|
self._surface = surface
|
|
@@ -631,6 +657,61 @@ class RichSurface:
|
|
|
631
657
|
if not self._assistant_stream_open and not self._tool_start_info:
|
|
632
658
|
self._start_thinking_spinner(label="Thinking...")
|
|
633
659
|
|
|
660
|
+
def _supports_unicode_glyphs(self) -> bool:
|
|
661
|
+
encoding = str(getattr(self.console, "encoding", "") or "")
|
|
662
|
+
if not encoding:
|
|
663
|
+
return True
|
|
664
|
+
try:
|
|
665
|
+
"✓✗".encode(encoding)
|
|
666
|
+
except (LookupError, UnicodeError):
|
|
667
|
+
return False
|
|
668
|
+
return True
|
|
669
|
+
|
|
670
|
+
def _swarm_severity_glyph(self, severity: str) -> tuple[str, str]:
|
|
671
|
+
use_unicode = self._supports_unicode_glyphs()
|
|
672
|
+
if severity == "error":
|
|
673
|
+
return (("✗" if use_unicode else "x"), _STYLE_FAILURE)
|
|
674
|
+
if severity == "success":
|
|
675
|
+
return (("✓" if use_unicode else "v"), _STYLE_SUCCESS)
|
|
676
|
+
if severity == "warning":
|
|
677
|
+
return ("!", _STYLE_WARNING)
|
|
678
|
+
return ("•", _STYLE_CHROME)
|
|
679
|
+
|
|
680
|
+
def on_swarm_trace(
|
|
681
|
+
self,
|
|
682
|
+
message: str,
|
|
683
|
+
*,
|
|
684
|
+
phase: str = "",
|
|
685
|
+
task_id: str | None = None,
|
|
686
|
+
) -> None:
|
|
687
|
+
"""Render a live swarm trace line, colorizing verify/review/merge outcomes."""
|
|
688
|
+
_ = task_id
|
|
689
|
+
if self._trace_level == "off":
|
|
690
|
+
return
|
|
691
|
+
severity = _swarm_trace_severity(phase, message)
|
|
692
|
+
if severity == "neutral":
|
|
693
|
+
self.on_progress_update(message)
|
|
694
|
+
return
|
|
695
|
+
self._stop_thinking_spinner()
|
|
696
|
+
clean = _redact(str(message or "").strip())
|
|
697
|
+
if not clean:
|
|
698
|
+
return
|
|
699
|
+
glyph, glyph_style = self._swarm_severity_glyph(severity)
|
|
700
|
+
line_key = f"swarm-trace:{severity}\0{clean}"
|
|
701
|
+
if line_key == self._last_trace_line_key:
|
|
702
|
+
return
|
|
703
|
+
self._last_trace_line_key = line_key
|
|
704
|
+
self._thinking_open = True
|
|
705
|
+
self.console.print(
|
|
706
|
+
Text.assemble((f"{glyph} ", glyph_style), (clean, _STYLE_META)),
|
|
707
|
+
highlight=False,
|
|
708
|
+
)
|
|
709
|
+
if _progress_message_completes_activity(message):
|
|
710
|
+
self._stop_thinking_spinner()
|
|
711
|
+
return
|
|
712
|
+
if not self._assistant_stream_open and not self._tool_start_info:
|
|
713
|
+
self._start_thinking_spinner(label="Reasoning...")
|
|
714
|
+
|
|
634
715
|
def on_subagent_start(self, event: SubagentStartEvent) -> None:
|
|
635
716
|
if self._trace_level == "off":
|
|
636
717
|
return
|
{sylliptor_agent_cli-0.9.3 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/swarm_trace.py
RENAMED
|
@@ -217,6 +217,13 @@ class SerializedSwarmTraceSink:
|
|
|
217
217
|
)
|
|
218
218
|
except Exception:
|
|
219
219
|
pass
|
|
220
|
+
trace_handler = getattr(self.surface, "on_swarm_trace", None)
|
|
221
|
+
if callable(trace_handler):
|
|
222
|
+
try:
|
|
223
|
+
trace_handler(message, phase=event.phase, task_id=event.task_id)
|
|
224
|
+
return
|
|
225
|
+
except Exception:
|
|
226
|
+
pass
|
|
220
227
|
handler = getattr(self.surface, "on_progress_update", None)
|
|
221
228
|
if callable(handler):
|
|
222
229
|
try:
|
|
@@ -942,6 +942,34 @@ def test_print_welcome_banner_keeps_compact_owl_left_at_80_columns(monkeypatch)
|
|
|
942
942
|
assert any("▝▜██▅▅▅▅▅▅▅██▛▘" in line for line in plain_lines)
|
|
943
943
|
|
|
944
944
|
|
|
945
|
+
def test_print_welcome_banner_keeps_dark_panel_owl_left_at_80_columns(
|
|
946
|
+
monkeypatch,
|
|
947
|
+
) -> None:
|
|
948
|
+
monkeypatch.setattr(
|
|
949
|
+
cli_mod.shutil,
|
|
950
|
+
"get_terminal_size",
|
|
951
|
+
lambda fallback=(80, 20): os.terminal_size((80, 20)),
|
|
952
|
+
)
|
|
953
|
+
monkeypatch.delenv("NO_COLOR", raising=False)
|
|
954
|
+
monkeypatch.delenv("OWL_THEME", raising=False)
|
|
955
|
+
monkeypatch.setenv("COLORFGBG", "15;0")
|
|
956
|
+
|
|
957
|
+
banner = cli_mod.printWelcome(
|
|
958
|
+
workspace=Path.home() / "myproject",
|
|
959
|
+
model="anthropic/opus-4.7",
|
|
960
|
+
version="0.8.2",
|
|
961
|
+
)
|
|
962
|
+
plain_lines = [cli_mod.stripAnsi(line) for line in banner.splitlines()]
|
|
963
|
+
plain = "\n".join(plain_lines)
|
|
964
|
+
|
|
965
|
+
assert "\x1b[48;5;231m" in banner
|
|
966
|
+
assert all(len(line) < 80 for line in plain_lines)
|
|
967
|
+
assert "..." not in plain
|
|
968
|
+
assert "model opus-4.7 version 0.8.2" in plain
|
|
969
|
+
assert any("\u2588" in line and "Sylliptor" in line for line in plain_lines)
|
|
970
|
+
assert any("\u2588" in line and "workspace ~/myproject" in line for line in plain_lines)
|
|
971
|
+
|
|
972
|
+
|
|
945
973
|
def test_print_welcome_banner_keeps_long_context_off_terminal_edge_at_80_columns(
|
|
946
974
|
monkeypatch,
|
|
947
975
|
) -> None:
|