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.
Files changed (633) hide show
  1. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/CHANGELOG.md +27 -0
  2. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/PKG-INFO +6 -2
  3. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/README.md +5 -1
  4. sylliptor_agent_cli-0.9.4/docs/assets/xiaomi-mimo-logo.svg +9 -0
  5. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/pyproject.toml +1 -1
  6. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/__init__.py +1 -1
  7. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/account_login.py +60 -3
  8. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/session.py +2 -0
  9. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/turn/core.py +13 -0
  10. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/chat/commands.py +52 -2
  11. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/cli_common.py +76 -0
  12. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/forge_helpers.py +72 -0
  13. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/root.py +1 -0
  14. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/welcome.py +37 -27
  15. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/config_menu.py +40 -2
  16. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/forge.py +12 -0
  17. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/setup_wizard.py +4 -0
  18. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/model_registry.py +24 -0
  19. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/profile_presets.py +10 -3
  20. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/rich_surface.py +81 -0
  21. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/swarm_trace.py +7 -0
  22. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/sylliptor_cloud.py +15 -3
  23. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_account_login.py +125 -5
  24. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_ux.py +28 -0
  25. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_config_menu.py +57 -0
  26. sylliptor_agent_cli-0.9.4/tests/test_forge_ui_elements.py +240 -0
  27. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.dockerignore +0 -0
  28. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.editorconfig +0 -0
  29. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.gitattributes +0 -0
  30. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.github/FUNDING.yml +0 -0
  31. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  32. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  33. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  34. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  35. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.github/workflows/ci.yml +0 -0
  36. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.github/workflows/release.yml +0 -0
  37. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.github/workflows/sandbox-image.yml +0 -0
  38. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.gitignore +0 -0
  39. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/.trivyignore +0 -0
  40. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/CODE_OF_CONDUCT.md +0 -0
  41. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/CONTRIBUTING.md +0 -0
  42. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/LICENSE +0 -0
  43. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/NOTICE +0 -0
  44. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/RELEASING.md +0 -0
  45. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/SECURITY.md +0 -0
  46. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/README.md +0 -0
  47. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/architecture.md +0 -0
  48. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/assets/sylliptor-demo.gif +0 -0
  49. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/credentials.md +0 -0
  50. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/custom_tools.md +0 -0
  51. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/README.md +0 -0
  52. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/custom_tools/README.md +0 -0
  53. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/custom_tools/workspace_manifest.py +0 -0
  54. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/README.md +0 -0
  55. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/block_dangerous.py +0 -0
  56. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/block_destructive_git.py +0 -0
  57. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/block_env_files.py +0 -0
  58. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/format_on_write.py +0 -0
  59. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/notify_done.py +0 -0
  60. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/notify_done_macos.py +0 -0
  61. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/sample_hooks.json +0 -0
  62. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/examples/hooks/secret_scanner.py +0 -0
  63. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/forge.md +0 -0
  64. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/hooks.md +0 -0
  65. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/mcp.md +0 -0
  66. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/plugins.md +0 -0
  67. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/quickstart.md +0 -0
  68. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/reference.md +0 -0
  69. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/sandbox.md +0 -0
  70. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/security_model.md +0 -0
  71. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/server.md +0 -0
  72. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/shell_sandbox.md +0 -0
  73. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/skills.md +0 -0
  74. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/skills_lifecycle.md +0 -0
  75. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/subagents.md +0 -0
  76. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/docs/terminals.md +0 -0
  77. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/sandbox/Dockerfile +0 -0
  78. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/sandbox/README.md +0 -0
  79. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/scripts/README.md +0 -0
  80. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/scripts/qa/__init__.py +0 -0
  81. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/scripts/qa/check_deps.py +0 -0
  82. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/scripts/refresh_litellm_model_catalog.py +0 -0
  83. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/scripts/test_live_provider_smoke.sh +0 -0
  84. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/scripts/test_provider_native.sh +0 -0
  85. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/scripts/test_web_search.sh +0 -0
  86. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/__main__.py +0 -0
  87. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/README.md +0 -0
  88. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/__init__.py +0 -0
  89. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/errors.py +0 -0
  90. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/prompt_context.py +0 -0
  91. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/routing.py +0 -0
  92. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/tools_assembly.py +0 -0
  93. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/turn/__init__.py +0 -0
  94. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/turn/events.py +0 -0
  95. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/turn/exploration.py +0 -0
  96. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/turn/read_cache.py +0 -0
  97. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/turn/snapshot.py +0 -0
  98. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/verification.py +0 -0
  99. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent/verification_commands.py +0 -0
  100. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/agent_loop.py +0 -0
  101. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/approval_scope.py +0 -0
  102. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/README.md +0 -0
  103. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/__init__.py +0 -0
  104. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/asset_read_core.py +0 -0
  105. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/budget_allocator.py +0 -0
  106. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/comprehender.py +0 -0
  107. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/index.py +0 -0
  108. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/ingestion.py +0 -0
  109. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/legacy_migration.py +0 -0
  110. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/models.py +0 -0
  111. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/ocr.py +0 -0
  112. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-000.txt +0 -0
  113. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-001.txt +0 -0
  114. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-002.txt +0 -0
  115. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-003.txt +0 -0
  116. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-004.txt +0 -0
  117. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-005.txt +0 -0
  118. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-006.txt +0 -0
  119. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-007.txt +0 -0
  120. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-008.txt +0 -0
  121. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-009.txt +0 -0
  122. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-010.txt +0 -0
  123. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-011.txt +0 -0
  124. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-012.txt +0 -0
  125. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-013.txt +0 -0
  126. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-014.txt +0 -0
  127. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-015.txt +0 -0
  128. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-016.txt +0 -0
  129. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-017.txt +0 -0
  130. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-018.txt +0 -0
  131. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-019.txt +0 -0
  132. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/ascii/f-020.txt +0 -0
  133. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/index.html +0 -0
  134. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/owl/show-owl.sh +0 -0
  135. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/paths.py +0 -0
  136. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/plan_binding.py +0 -0
  137. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/planner_context.py +0 -0
  138. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/planner_tools.py +0 -0
  139. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/prompts.py +0 -0
  140. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/replanner_context.py +0 -0
  141. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/surface.py +0 -0
  142. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/untrusted_content.py +0 -0
  143. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/usage_logger.py +0 -0
  144. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/worker_mirror.py +0 -0
  145. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/worker_section.py +0 -0
  146. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/assets/worker_tools.py +0 -0
  147. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/atomic_io.py +0 -0
  148. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/background_runner.py +0 -0
  149. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/branding.py +0 -0
  150. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/builtin_hooks/__init__.py +0 -0
  151. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/builtin_hooks/notify_done_windows.py +0 -0
  152. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/bwrap_etc.py +0 -0
  153. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli.py +0 -0
  154. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/__init__.py +0 -0
  155. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/assets_cli.py +0 -0
  156. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/assets_modal.py +0 -0
  157. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/chat/__init__.py +0 -0
  158. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/chat/loop.py +0 -0
  159. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/chat/rendering.py +0 -0
  160. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/chat/state.py +0 -0
  161. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/chat_resume.py +0 -0
  162. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/chat_slash_completer.py +0 -0
  163. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/__init__.py +0 -0
  164. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/_shared.py +0 -0
  165. {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
  166. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/chat_state.py +0 -0
  167. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/chat_status.py +0 -0
  168. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/chat_terminal.py +0 -0
  169. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/cli_surface.py +0 -0
  170. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/config.py +0 -0
  171. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/conventions.py +0 -0
  172. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/execution_helpers.py +0 -0
  173. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/extensions.py +0 -0
  174. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/forge.py +0 -0
  175. {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
  176. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/hooks.py +0 -0
  177. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/mcp.py +0 -0
  178. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/profile.py +0 -0
  179. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/prompt_helpers.py +0 -0
  180. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/report.py +0 -0
  181. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/sandbox.py +0 -0
  182. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/server.py +0 -0
  183. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/sessions.py +0 -0
  184. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/skills.py +0 -0
  185. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/startup.py +0 -0
  186. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/tools.py +0 -0
  187. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/cli_impl/commands/update.py +0 -0
  188. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/clipboard.py +0 -0
  189. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/compaction/__init__.py +0 -0
  190. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/compaction/conversation_compactor.py +0 -0
  191. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/compaction/importance.py +0 -0
  192. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/compaction/settings.py +0 -0
  193. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/compaction/tool_output_offload.py +0 -0
  194. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/config.py +0 -0
  195. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/conflict_auto_resolver.py +0 -0
  196. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/custom_tools/README.md +0 -0
  197. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/custom_tools/__init__.py +0 -0
  198. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/custom_tools/discovery.py +0 -0
  199. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/custom_tools/runtime.py +0 -0
  200. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/custom_tools/session.py +0 -0
  201. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/custom_tools/trust.py +0 -0
  202. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/diff_paths.py +0 -0
  203. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/direction_change.py +0 -0
  204. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/error_text.py +0 -0
  205. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/execution_budget.py +0 -0
  206. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/execution_context.py +0 -0
  207. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/execution_shared.py +0 -0
  208. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/README.md +0 -0
  209. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/__init__.py +0 -0
  210. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/activation.py +0 -0
  211. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/install.py +0 -0
  212. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/manifest.py +0 -0
  213. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/models.py +0 -0
  214. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/paths.py +0 -0
  215. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/registry.json +0 -0
  216. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/registry.py +0 -0
  217. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/state.py +0 -0
  218. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/extensions/workspace_trust.py +0 -0
  219. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/failure_category.py +0 -0
  220. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/feedback_report.py +0 -0
  221. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/file_classification.py +0 -0
  222. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/forge.py +0 -0
  223. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/frontmatter_utils.py +0 -0
  224. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/git_ops.py +0 -0
  225. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/git_safe.py +0 -0
  226. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/git_worktrees.py +0 -0
  227. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/hooks/README.md +0 -0
  228. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/hooks/__init__.py +0 -0
  229. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/hooks/audit.py +0 -0
  230. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/hooks/config.py +0 -0
  231. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/hooks/dispatcher.py +0 -0
  232. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/hooks/models.py +0 -0
  233. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/hooks/trust.py +0 -0
  234. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/integration_gate.py +0 -0
  235. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/interactive_input_guard.py +0 -0
  236. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/interactive_plan_mode.py +0 -0
  237. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/knowledge_base.py +0 -0
  238. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/knowledge_capture.py +0 -0
  239. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/knowledge_librarian.py +0 -0
  240. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/language_policy.py +0 -0
  241. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/litellm_static_provider.py +0 -0
  242. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/__init__.py +0 -0
  243. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/anthropic_messages.py +0 -0
  244. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/base.py +0 -0
  245. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/factory.py +0 -0
  246. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/gemini_generate_content.py +0 -0
  247. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/gemini_interactions.py +0 -0
  248. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/metadata.py +0 -0
  249. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/openai_compat.py +0 -0
  250. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/openai_responses.py +0 -0
  251. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/protocols.py +0 -0
  252. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/provider_limits.py +0 -0
  253. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/streaming.py +0 -0
  254. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm/types.py +0 -0
  255. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/llm_error_display.py +0 -0
  256. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/README.md +0 -0
  257. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/__init__.py +0 -0
  258. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/client.py +0 -0
  259. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/config.py +0 -0
  260. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/errors.py +0 -0
  261. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/forge_scope.py +0 -0
  262. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/jsonrpc.py +0 -0
  263. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/manager.py +0 -0
  264. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/models.py +0 -0
  265. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/oauth.py +0 -0
  266. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/oauth_runtime.py +0 -0
  267. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/oauth_store.py +0 -0
  268. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/prompts.py +0 -0
  269. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/resources.py +0 -0
  270. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/roots.py +0 -0
  271. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/server_requests.py +0 -0
  272. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/token_store.py +0 -0
  273. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/transport_http.py +0 -0
  274. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/transport_stdio.py +0 -0
  275. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/mcp/untrusted_content.py +0 -0
  276. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/merge_conflict_reviewer.py +0 -0
  277. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/model_catalog/__init__.py +0 -0
  278. {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
  279. {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
  280. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/model_metadata_policy.py +0 -0
  281. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/model_metadata_utils.py +0 -0
  282. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/model_router.py +0 -0
  283. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/plan_assistant.py +0 -0
  284. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/plan_mode.py +0 -0
  285. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/plan_reconciliation.py +0 -0
  286. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/plan_validation.py +0 -0
  287. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/planning_constraints.py +0 -0
  288. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/policy.py +0 -0
  289. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/profiles.py +0 -0
  290. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/provider_diagnostics.py +0 -0
  291. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/provider_telemetry.py +0 -0
  292. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/remote_sync.py +0 -0
  293. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/replanning.py +0 -0
  294. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/repo_scan.py +0 -0
  295. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/request_estimation.py +0 -0
  296. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/review_gate.py +0 -0
  297. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/run_lock.py +0 -0
  298. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/runtime_artifacts.py +0 -0
  299. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/runtime_context_features.py +0 -0
  300. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/runtime_kind.py +0 -0
  301. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/safety/__init__.py +0 -0
  302. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/safety/mcp_sanitize.py +0 -0
  303. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/safety/safe_http.py +0 -0
  304. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/sandbox_doctor.py +0 -0
  305. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/sandbox_runner.py +0 -0
  306. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/sandbox_settings.py +0 -0
  307. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/serialized_paths.py +0 -0
  308. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/server/__init__.py +0 -0
  309. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/server/app.py +0 -0
  310. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/server/auth.py +0 -0
  311. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/server/job_config.py +0 -0
  312. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/server/settings.py +0 -0
  313. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/server/store.py +0 -0
  314. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/server/worker_runner.py +0 -0
  315. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/session_artifacts.py +0 -0
  316. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/session_metrics.py +0 -0
  317. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/session_store.py +0 -0
  318. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/README.md +0 -0
  319. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/__init__.py +0 -0
  320. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/conventions.py +0 -0
  321. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/discovery.py +0 -0
  322. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/eval_models.py +0 -0
  323. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/eval_runner.py +0 -0
  324. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/evals.py +0 -0
  325. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/install.py +0 -0
  326. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/loader.py +0 -0
  327. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/matching.py +0 -0
  328. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/models.py +0 -0
  329. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/paths.py +0 -0
  330. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/prompting.py +0 -0
  331. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/scaffold.py +0 -0
  332. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/state.py +0 -0
  333. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/transactions.py +0 -0
  334. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/skills/validation.py +0 -0
  335. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/step_budget.py +0 -0
  336. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/subagents.py +0 -0
  337. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/__init__.py +0 -0
  338. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/base.py +0 -0
  339. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/console.py +0 -0
  340. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/events.py +0 -0
  341. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/hidden_surface.py +0 -0
  342. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/noop_surface.py +0 -0
  343. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/styles.py +0 -0
  344. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/theme.py +0 -0
  345. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/surface/types.py +0 -0
  346. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/swarm_backend.py +0 -0
  347. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/swarm_orchestrator.py +0 -0
  348. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/swarm_scheduler.py +0 -0
  349. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/swarm_worker.py +0 -0
  350. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/task_dependencies.py +0 -0
  351. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/task_readiness.py +0 -0
  352. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/task_scope.py +0 -0
  353. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/terminal_manager.py +0 -0
  354. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/token_budget.py +0 -0
  355. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/README.md +0 -0
  356. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/__init__.py +0 -0
  357. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/availability.py +0 -0
  358. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/fs.py +0 -0
  359. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/git.py +0 -0
  360. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/history.py +0 -0
  361. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/http_timeout.py +0 -0
  362. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/registry.py +0 -0
  363. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/search.py +0 -0
  364. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/shell.py +0 -0
  365. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/symbols.py +0 -0
  366. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/web.py +0 -0
  367. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/web_search.py +0 -0
  368. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/web_search_dashscope.py +0 -0
  369. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/web_search_provider_adapters.py +0 -0
  370. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/tools/web_search_tavily.py +0 -0
  371. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/turn_intent.py +0 -0
  372. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/updates.py +0 -0
  373. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/usage_tracker.py +0 -0
  374. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/verify_gate.py +0 -0
  375. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/web_research.py +0 -0
  376. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/web_search_adapters.py +0 -0
  377. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/workspace_binding.py +0 -0
  378. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/workspace_binding_ui.py +0 -0
  379. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/src/sylliptor_agent_cli/workspace_context.py +0 -0
  380. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/_assets_test_helpers.py +0 -0
  381. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/_terminal_matrix_harness.py +0 -0
  382. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/conftest.py +0 -0
  383. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/mcp_servers/minimal_stdio_server.py +0 -0
  384. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/skills_eval/sample_cases.json +0 -0
  385. {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
  386. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/skills_eval/workspaces/combined_repo/AGENTS.md +0 -0
  387. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/skills_eval/workspaces/combined_repo/README.md +0 -0
  388. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/skills_eval/workspaces/combined_repo/src/parser.py +0 -0
  389. {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
  390. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/skills_eval/workspaces/empty_authoring/README.md +0 -0
  391. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/skills_eval/workspaces/negative_control/README.md +0 -0
  392. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_1.json +0 -0
  393. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_10.json +0 -0
  394. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_11.json +0 -0
  395. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_12.json +0 -0
  396. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_2.json +0 -0
  397. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_3.json +0 -0
  398. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_4.json +0 -0
  399. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_5.json +0 -0
  400. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_6.json +0 -0
  401. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_7.json +0 -0
  402. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_8.json +0 -0
  403. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/terminal_matrix/scenario_9.json +0 -0
  404. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/tesseract_osd/english.txt +0 -0
  405. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/tesseract_osd/greek.txt +0 -0
  406. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/fixtures/tesseract_osd/japanese.txt +0 -0
  407. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_event_emission.py +0 -0
  408. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_final_step_nudge.py +0 -0
  409. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_forced_summary.py +0 -0
  410. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_hooks.py +0 -0
  411. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_host_managed_context.py +0 -0
  412. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_images.py +0 -0
  413. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_interactive_execution_posture.py +0 -0
  414. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_non_interactive.py +0 -0
  415. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_one_shot_follow_through.py +0 -0
  416. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_plugin_filter.py +0 -0
  417. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_retry_guard.py +0 -0
  418. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_review_approval.py +0 -0
  419. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_same_batch_read_dedup.py +0 -0
  420. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_small_talk.py +0 -0
  421. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_step_budget_runtime.py +0 -0
  422. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_agent_loop_tool_transcript_shaping.py +0 -0
  423. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_anthropic_messages.py +0 -0
  424. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_budget_allocator.py +0 -0
  425. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_comprehender.py +0 -0
  426. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_index.py +0 -0
  427. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_ingestion.py +0 -0
  428. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_legacy_migration.py +0 -0
  429. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_models.py +0 -0
  430. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_ocr.py +0 -0
  431. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_plan_binding.py +0 -0
  432. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_planner_context.py +0 -0
  433. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_planner_tools.py +0 -0
  434. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_replanner_context.py +0 -0
  435. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_surface.py +0 -0
  436. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_worker_mirror.py +0 -0
  437. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_worker_section.py +0 -0
  438. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_assets_worker_tools.py +0 -0
  439. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_background_runner.py +0 -0
  440. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_background_runner_sandbox.py +0 -0
  441. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_chat_assets_slash.py +0 -0
  442. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_chat_image_hotkeys.py +0 -0
  443. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_chat_mode_rebuild.py +0 -0
  444. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_chat_plan_mode.py +0 -0
  445. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_chat_resume.py +0 -0
  446. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_chat_session_workdir.py +0 -0
  447. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_chat_slash_completer.py +0 -0
  448. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_chat_terminals_slash.py +0 -0
  449. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_check_deps.py +0 -0
  450. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_api_key.py +0 -0
  451. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_assets.py +0 -0
  452. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_assets_prune_legacy.py +0 -0
  453. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_config_menu_command.py +0 -0
  454. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_entrypoint.py +0 -0
  455. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_facade.py +0 -0
  456. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_impl_forge.py +0 -0
  457. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_skill_lifecycle.py +0 -0
  458. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_skills.py +0 -0
  459. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_subagents.py +0 -0
  460. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_cli_tools.py +0 -0
  461. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_clipboard.py +0 -0
  462. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_color_adaptation.py +0 -0
  463. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_compaction_settings.py +0 -0
  464. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_config.py +0 -0
  465. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_config_menu_flow.py +0 -0
  466. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_config_menu_raw_mode.py +0 -0
  467. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_conflict_auto_resolver.py +0 -0
  468. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_conventions_cli.py +0 -0
  469. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_conversation_compaction.py +0 -0
  470. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_custom_tools_cli.py +0 -0
  471. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_custom_tools_discovery.py +0 -0
  472. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_custom_tools_runtime.py +0 -0
  473. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_custom_tools_trust.py +0 -0
  474. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_docs_alignment.py +0 -0
  475. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_execution_budget.py +0 -0
  476. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_execution_context.py +0 -0
  477. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_execution_shared_mirror.py +0 -0
  478. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_execution_shared_reporting.py +0 -0
  479. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_execution_shared_snapshot.py +0 -0
  480. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_extensions_cli.py +0 -0
  481. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_extensions_registry.py +0 -0
  482. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_extensions_state.py +0 -0
  483. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_feedback_report.py +0 -0
  484. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_file_classification.py +0 -0
  485. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_forge.py +0 -0
  486. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_forge_asset_view.py +0 -0
  487. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_forge_assets_legacy_deprecation.py +0 -0
  488. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_forge_assets_legacy_migration_loadplan.py +0 -0
  489. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_forge_assets_regressions.py +0 -0
  490. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_forge_exec.py +0 -0
  491. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_forge_review.py +0 -0
  492. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_forge_swarm.py +0 -0
  493. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_forge_watchdog_diagnostics.py +0 -0
  494. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_fs_edit_tool.py +0 -0
  495. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_fs_file_ops_tool.py +0 -0
  496. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_fs_tools.py +0 -0
  497. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_fullaccess_audit.py +0 -0
  498. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_gemini_generate_content.py +0 -0
  499. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_gemini_interactions.py +0 -0
  500. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_git_apply_patch_tool.py +0 -0
  501. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_git_history_tool.py +0 -0
  502. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_git_hygiene.py +0 -0
  503. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_git_ops.py +0 -0
  504. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_git_safe.py +0 -0
  505. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_git_worktrees.py +0 -0
  506. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_history_search_tool.py +0 -0
  507. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_hooks_cli.py +0 -0
  508. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_hooks_config.py +0 -0
  509. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_importance_scoring.py +0 -0
  510. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_integration_compaction_pipeline.py +0 -0
  511. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_integration_gate.py +0 -0
  512. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_knowledge_base.py +0 -0
  513. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_knowledge_capture.py +0 -0
  514. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_knowledge_librarian.py +0 -0
  515. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_language_policy.py +0 -0
  516. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_language_policy_prompts.py +0 -0
  517. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_legacy_profile_migration.py +0 -0
  518. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_litellm_model_registry.py +0 -0
  519. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_live_provider_smoke.py +0 -0
  520. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_llm_factory_profiles.py +0 -0
  521. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_llm_metadata.py +0 -0
  522. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_llm_protocols.py +0 -0
  523. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_llm_streaming.py +0 -0
  524. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_auth_cli.py +0 -0
  525. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_config.py +0 -0
  526. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_errors.py +0 -0
  527. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_http.py +0 -0
  528. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_manager.py +0 -0
  529. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_oauth.py +0 -0
  530. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_prompts.py +0 -0
  531. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_resources.py +0 -0
  532. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_roots.py +0 -0
  533. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_sanitize.py +0 -0
  534. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_scope.py +0 -0
  535. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_mcp_stdio.py +0 -0
  536. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_merge_conflict_reviewer.py +0 -0
  537. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_model_catalog_packaging.py +0 -0
  538. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_model_metadata_policy.py +0 -0
  539. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_model_router.py +0 -0
  540. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_model_router_forge_context.py +0 -0
  541. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_native_provider_conformance.py +0 -0
  542. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_openai_compat.py +0 -0
  543. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_openai_responses.py +0 -0
  544. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plan_assistant.py +0 -0
  545. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plan_assistant_assets.py +0 -0
  546. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plan_assistant_forge_context.py +0 -0
  547. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plan_mode.py +0 -0
  548. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plan_reconciliation.py +0 -0
  549. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plan_validation.py +0 -0
  550. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_planning_constraints.py +0 -0
  551. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plugin_activation.py +0 -0
  552. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plugin_enable_disable.py +0 -0
  553. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plugin_enable_disable_cli.py +0 -0
  554. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plugin_install.py +0 -0
  555. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plugin_install_cli.py +0 -0
  556. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_plugin_manifest.py +0 -0
  557. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_policy.py +0 -0
  558. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_profile_cli_commands.py +0 -0
  559. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_profile_presets.py +0 -0
  560. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_profiles.py +0 -0
  561. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_prompt_helpers.py +0 -0
  562. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_prompt_payload.py +0 -0
  563. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_prompts_invariants.py +0 -0
  564. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_protected_paths.py +0 -0
  565. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_provider_diagnostics.py +0 -0
  566. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_provider_limits.py +0 -0
  567. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_provider_telemetry.py +0 -0
  568. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_refresh_litellm_model_catalog.py +0 -0
  569. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_release_smoke.py +0 -0
  570. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_remote_sync.py +0 -0
  571. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_replanning.py +0 -0
  572. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_replanning_assets.py +0 -0
  573. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_repo_scan.py +0 -0
  574. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_request_size_telemetry.py +0 -0
  575. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_review_gate.py +0 -0
  576. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_run_mutation.py +0 -0
  577. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_runtime_context_features.py +0 -0
  578. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_safe_http.py +0 -0
  579. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_sandbox_cli.py +0 -0
  580. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_sandbox_doctor.py +0 -0
  581. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_sandbox_settings_background.py +0 -0
  582. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_search_rg_security.py +0 -0
  583. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_security_docs.py +0 -0
  584. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_serialized_paths.py +0 -0
  585. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_server_app.py +0 -0
  586. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_server_job_config.py +0 -0
  587. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_server_settings.py +0 -0
  588. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_server_upload_flow.py +0 -0
  589. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_server_worker_runner.py +0 -0
  590. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_server_worker_runner_args.py +0 -0
  591. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_session_metrics.py +0 -0
  592. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_session_store.py +0 -0
  593. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_setup_wizard.py +0 -0
  594. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_shell_background_integration.py +0 -0
  595. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_shell_sandbox.py +0 -0
  596. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_show_owl_matrix.py +0 -0
  597. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_skill_lifecycle.py +0 -0
  598. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_skill_lifecycle_prompting.py +0 -0
  599. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_skills.py +0 -0
  600. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_skills_evals.py +0 -0
  601. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_step_budget.py +0 -0
  602. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_subagent_turn_policy.py +0 -0
  603. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_subagents.py +0 -0
  604. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_surface.py +0 -0
  605. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_surface_console_encoding.py +0 -0
  606. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_surface_event_migration.py +0 -0
  607. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_surface_events.py +0 -0
  608. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_swarm_backend.py +0 -0
  609. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_swarm_scheduler.py +0 -0
  610. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_swarm_worker.py +0 -0
  611. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_swarm_worker_assets.py +0 -0
  612. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_symbol_search_tool.py +0 -0
  613. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_task_dependencies.py +0 -0
  614. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_task_readiness.py +0 -0
  615. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_task_scope.py +0 -0
  616. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_terminal_manager.py +0 -0
  617. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_terminal_matrix_consistency.py +0 -0
  618. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_terminal_matrix_visible_anchors.py +0 -0
  619. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_token_budget.py +0 -0
  620. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_tool_exposure_by_mode.py +0 -0
  621. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_tool_output_offload.py +0 -0
  622. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_tool_registry.py +0 -0
  623. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_updates.py +0 -0
  624. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_usage_tracker.py +0 -0
  625. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_verify_gate.py +0 -0
  626. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_verify_tool.py +0 -0
  627. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_web_fetch_tool.py +0 -0
  628. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_web_search_dashscope.py +0 -0
  629. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_web_search_tavily.py +0 -0
  630. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_web_search_tool.py +0 -0
  631. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_workspace_binding.py +0 -0
  632. {sylliptor_agent_cli-0.9.2 → sylliptor_agent_cli-0.9.4}/tests/test_workspace_context.py +0 -0
  633. {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.2
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>
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "sylliptor-agent-cli"
7
- version = "0.9.2"
7
+ version = "0.9.4"
8
8
  description = "Local CLI coding agent powered by any API."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -1,3 +1,3 @@
1
1
  __all__ = ["__version__"]
2
2
 
3
- __version__ = "0.9.2"
3
+ __version__ = "0.9.4"
@@ -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 with MiMo as the default model."""
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
- # Always pin to the live proxy URL + MiMo default (env-overridable for tests).
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=cloud.SYLLIPTOR_MIMO_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,
@@ -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
 
@@ -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 STYLE_EMPHASIS
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
- _print_forge_meta(console=console, message=headline, style=STYLE_EMPHASIS)
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
- right_width = max(
455
- safe_line_width - visibleLength(indent) - logo_width - visibleLength(gap),
456
- 1,
457
- )
458
- detail_lines = welcome_detail_lines(right_width)
459
- required_side_by_side_width = visibleLength(indent) + logo_width + visibleLength(gap)
460
- required_side_by_side_width += max(
461
- (visibleLength(line) for line in detail_lines),
462
- default=0,
463
- )
464
- if safe_line_width >= required_side_by_side_width:
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"{indent}{padLine(row, logo_width)}"
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}{gap}{detail_lines[right_index]}"
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
- else:
477
- rendered_lines = []
478
- rendered_lines.extend(
479
- _clip_visible_line(f"{indent}{row.rstrip()}".rstrip(), safe_line_width)
480
- for row in logo_frame
481
- )
482
- rendered_lines.append("")
483
- full_detail_width = max(safe_line_width - visibleLength(indent), 1)
484
- full_detail_lines = welcome_detail_lines(full_detail_width)
485
- rendered_lines.extend(
486
- _clip_visible_line(f"{indent}{line}".rstrip(), safe_line_width)
487
- for line in full_detail_lines
488
- )
489
- return rendered_lines
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,