simplicio-cli 0.8.0__tar.gz → 0.9.1__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.
- {simplicio_cli-0.8.0/simplicio_cli.egg-info → simplicio_cli-0.9.1}/PKG-INFO +2 -2
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/pyproject.toml +2 -2
- simplicio_cli-0.9.1/simplicio/__init__.py +1 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/cli.py +165 -8
- simplicio_cli-0.9.1/simplicio/commands/file_read.py +155 -0
- simplicio_cli-0.9.1/simplicio/commands/test_run.py +236 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/mapper.py +76 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1/simplicio_cli.egg-info}/PKG-INFO +2 -2
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio_cli.egg-info/SOURCES.txt +2 -18
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio_cli.egg-info/requires.txt +1 -1
- simplicio_cli-0.8.0/simplicio/__init__.py +0 -1
- simplicio_cli-0.8.0/simplicio/templates/stacks/py-cli/tree/src/app/__pycache__/__init__.cpython-314.pyc +0 -0
- simplicio_cli-0.8.0/simplicio/templates/stacks/py-cli/tree/src/app/__pycache__/cli.cpython-314.pyc +0 -0
- simplicio_cli-0.8.0/simplicio/templates/stacks/py-cli/tree/tests/__pycache__/test_cli.cpython-314.pyc +0 -0
- simplicio_cli-0.8.0/simplicio/templates/stacks/py-django/tree/__pycache__/manage.cpython-314.pyc +0 -0
- simplicio_cli-0.8.0/simplicio/templates/stacks/py-django/tree/app/__pycache__/__init__.cpython-314.pyc +0 -0
- simplicio_cli-0.8.0/simplicio/templates/stacks/py-django/tree/app/__pycache__/apps.cpython-314.pyc +0 -0
- simplicio_cli-0.8.0/simplicio/templates/stacks/py-django/tree/app/__pycache__/tests.cpython-314.pyc +0 -0
- simplicio_cli-0.8.0/simplicio/templates/stacks/py-django/tree/app/__pycache__/views.cpython-314.pyc +0 -0
- simplicio_cli-0.8.0/simplicio/templates/stacks/py-django/tree/config/__pycache__/__init__.cpython-314.pyc +0 -0
- simplicio_cli-0.8.0/simplicio/templates/stacks/py-django/tree/config/__pycache__/asgi.cpython-314.pyc +0 -0
- simplicio_cli-0.8.0/simplicio/templates/stacks/py-django/tree/config/__pycache__/settings.cpython-314.pyc +0 -0
- simplicio_cli-0.8.0/simplicio/templates/stacks/py-django/tree/config/__pycache__/urls.cpython-314.pyc +0 -0
- simplicio_cli-0.8.0/simplicio/templates/stacks/py-django/tree/config/__pycache__/wsgi.cpython-314.pyc +0 -0
- simplicio_cli-0.8.0/simplicio/templates/stacks/py-fastapi/tree/src/__pycache__/main.cpython-314.pyc +0 -0
- simplicio_cli-0.8.0/simplicio/templates/stacks/py-fastapi/tree/src/api/__pycache__/__init__.cpython-314.pyc +0 -0
- simplicio_cli-0.8.0/simplicio/templates/stacks/py-fastapi/tree/tests/__pycache__/test_health.cpython-314.pyc +0 -0
- simplicio_cli-0.8.0/simplicio/templates/stacks/py-flask/tree/src/__pycache__/app.cpython-314.pyc +0 -0
- simplicio_cli-0.8.0/simplicio/templates/stacks/py-flask/tree/tests/__pycache__/test_health.cpython-314.pyc +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/LICENSE +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/setup.cfg +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/_cache.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/adaptive.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/bench.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/cache.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/cache_cli.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/commands/__init__.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/commands/claims.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/commands/gate.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/commands/nest.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/commands/score_skill.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/detect.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/doctor.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/dod.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/ecosystem.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/hardware.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/init.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/intent.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/local_models.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/mechanical_edit.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/observability.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/orchestrator/__init__.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/orchestrator/cost_governor.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/orchestrator/feature.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/pipeline.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/pipeline_fixers.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/precedent.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/prompt.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/providers.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/runtime_bridge.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/runtime_contracts.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/runtime_env.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/__init__.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/_pipeline_adapter.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/cli.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/__init__.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/go_gin.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/markdown_document.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/php_laravel.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/python_cst.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/python_fastapi.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/python_orm.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/python_pydantic.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/python_pytest.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/registry.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/rust_axum.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/types.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/typescript_next_page.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/typescript_next_route.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/executor.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/plan_schema.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/planner.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/recipes.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/skill_opt.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/stack_registry.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/skill_router.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/sprint_loader.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/SKILL.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/go-gin/admin-crud.yaml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/go-gin/auth-jwt.yaml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/go-gin/crud-resource.yaml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/php-laravel/admin-crud.yaml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/php-laravel/auth-jwt.yaml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/php-laravel/crud-resource.yaml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/php-vanilla/docs-marker.yaml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/py-fastapi/admin-crud.yaml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/py-fastapi/auth-jwt.yaml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/py-fastapi/background-worker.yaml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/py-fastapi/crud-resource.yaml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/py-fastapi/file-upload.yaml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/py-fastapi/oauth-integration.yaml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/py-fastapi/scheduled-job.yaml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/py-fastapi/websocket.yaml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/rust-axum/admin-crud.yaml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/rust-axum/auth-jwt.yaml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/rust-axum/crud-resource.yaml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/ts-nextjs/admin-crud.yaml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/ts-nextjs/auth-jwt.yaml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/ts-nextjs/crud-resource.yaml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/simplicio_prompt.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/bash-cli/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/bash-cli/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/bash-cli/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/bash-cli/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/bash-cli/tree/bin/app.sh +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/bash-cli/tree/test/app.bats +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/bash-cli/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-aspnet/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-aspnet/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-aspnet/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-aspnet/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-aspnet/tree/src/App.Api/App.Api.csproj +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-aspnet/tree/src/App.Api/Program.cs +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-aspnet/tree/tests/App.Tests/App.Tests.csproj +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-aspnet/tree/tests/App.Tests/HealthTests.cs +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-aspnet/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-blazor/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-blazor/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-blazor/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-blazor/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/App.Web.csproj +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/Components/App.razor +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/Components/Pages/Home.razor +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/Program.cs +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-blazor/tree/tests/App.Tests/App.Tests.csproj +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-blazor/tree/tests/App.Tests/HealthTests.cs +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-blazor/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/dart-flutter/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/dart-flutter/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/dart-flutter/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/dart-flutter/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/dart-flutter/tree/lib/main.dart +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/dart-flutter/tree/pubspec.yaml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/dart-flutter/tree/test/widget_test.dart +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/dart-flutter/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/tree/config/config.exs +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app/application.ex +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app_web/controllers/health_controller.ex +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app_web/endpoint.ex +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app_web/router.ex +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/tree/mix.exs +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/tree/test/health_controller_test.exs +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/tree/test/test_helper.exs +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-cli/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-cli/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-cli/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-cli/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-cli/tree/cmd/root.go +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-cli/tree/cmd/root_test.go +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-cli/tree/go.mod +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-cli/tree/main.go +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-cli/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-echo/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-echo/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-echo/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-echo/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-echo/tree/cmd/server/main.go +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-echo/tree/go.mod +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-echo/tree/internal/http/router.go +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-echo/tree/internal/http/router_test.go +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-echo/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-gin/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-gin/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-gin/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-gin/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-gin/tree/cmd/server/main.go +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-gin/tree/go.mod +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-gin/tree/internal/http/router.go +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-gin/tree/internal/http/router_test.go +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-gin/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/java-spring/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/java-spring/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/java-spring/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/java-spring/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/java-spring/tree/build.gradle.kts +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/java-spring/tree/settings.gradle.kts +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/java-spring/tree/src/main/java/com/example/Application.java +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/java-spring/tree/src/main/java/com/example/HealthController.java +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/java-spring/tree/src/test/java/com/example/HealthControllerTest.java +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/java-spring/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/js-express/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/js-express/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/js-express/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/js-express/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/js-express/tree/package.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/js-express/tree/src/app.js +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/js-express/tree/src/server.js +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/js-express/tree/tests/health.test.js +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/js-express/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-android/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-android/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-android/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-android/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-android/tree/app/build.gradle.kts +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-android/tree/app/src/main/AndroidManifest.xml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-android/tree/app/src/main/java/com/example/app/MainActivity.kt +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-android/tree/app/src/main/res/values/styles.xml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-android/tree/app/src/test/java/com/example/app/SmokeTest.kt +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-android/tree/build.gradle.kts +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-android/tree/settings.gradle.kts +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-android/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-ktor/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-ktor/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-ktor/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-ktor/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-ktor/tree/build.gradle.kts +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-ktor/tree/settings.gradle.kts +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-ktor/tree/src/main/kotlin/com/example/Application.kt +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-ktor/tree/src/test/kotlin/com/example/ApplicationTest.kt +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-ktor/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-spring/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-spring/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-spring/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-spring/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-spring/tree/build.gradle.kts +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-spring/tree/settings.gradle.kts +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-spring/tree/src/main/kotlin/com/example/Application.kt +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-spring/tree/src/main/kotlin/com/example/HealthController.kt +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-spring/tree/src/test/kotlin/com/example/HealthControllerTest.kt +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-spring/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/tree/artisan +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/tree/bootstrap/app.php +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/tree/composer.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/tree/phpunit.xml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/tree/routes/api.php +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/tree/routes/console.php +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/tree/tests/Feature/HealthTest.php +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/tree/tests/TestCase.php +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-symfony/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-symfony/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-symfony/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-symfony/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-symfony/tree/composer.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-symfony/tree/src/Controller/HealthController.php +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-symfony/tree/tests/HealthControllerTest.php +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-symfony/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-vanilla/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-vanilla/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-vanilla/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-vanilla/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-vanilla/tree/composer.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-vanilla/tree/phpunit.xml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-vanilla/tree/src/Health.php +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-vanilla/tree/tests/HealthTest.php +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-vanilla/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-cli/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-cli/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-cli/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-cli/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-cli/tree/pyproject.toml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-cli/tree/src/app/__init__.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-cli/tree/src/app/cli.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-cli/tree/tests/test_cli.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-cli/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/app/__init__.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/app/apps.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/app/tests.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/app/views.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/config/__init__.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/config/asgi.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/config/settings.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/config/urls.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/config/wsgi.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/manage.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/pyproject.toml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-fastapi/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-fastapi/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-fastapi/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-fastapi/tree/.gitignore +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-fastapi/tree/README.template.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-fastapi/tree/pyproject.toml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-fastapi/tree/ruff.toml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-fastapi/tree/src/api/__init__.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-fastapi/tree/src/main.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-fastapi/tree/tests/test_health.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-fastapi/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-flask/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-flask/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-flask/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-flask/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-flask/tree/pyproject.toml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-flask/tree/ruff.toml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-flask/tree/src/app.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-flask/tree/tests/test_health.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-flask/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/react-vite/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/react-vite/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/react-vite/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/react-vite/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/react-vite/tree/index.html +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/react-vite/tree/package.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/react-vite/tree/src/App.test.tsx +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/react-vite/tree/src/App.tsx +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/react-vite/tree/src/main.tsx +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/react-vite/tree/tsconfig.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/react-vite/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/tree/Gemfile +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/tree/app/controllers/health_controller.rb +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/tree/bin/rails +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/tree/config/application.rb +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/tree/config/boot.rb +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/tree/config/routes.rb +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/tree/test/controllers/health_controller_test.rb +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/tree/test/test_helper.rb +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-axum/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-axum/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-axum/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-axum/tree/Cargo.toml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-axum/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-axum/tree/src/main.rs +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-axum/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-cli/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-cli/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-cli/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-cli/tree/Cargo.toml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-cli/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-cli/tree/src/main.rs +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-cli/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-leptos/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-leptos/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-leptos/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-leptos/tree/Cargo.toml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-leptos/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-leptos/tree/src/main.rs +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-leptos/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-ios/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-ios/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-ios/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-ios/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-ios/tree/Sources/App/App.swift +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-ios/tree/Sources/App/ContentView.swift +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-ios/tree/Tests/AppTests/AppTests.swift +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-ios/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-vapor/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-vapor/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-vapor/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-vapor/tree/Package.swift +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-vapor/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-vapor/tree/Sources/App/main.swift +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-vapor/tree/Tests/AppTests/HealthTests.swift +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-vapor/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nestjs/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nestjs/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nestjs/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nestjs/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nestjs/tree/package.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nestjs/tree/src/app.controller.spec.ts +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nestjs/tree/src/app.controller.ts +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nestjs/tree/src/app.module.ts +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nestjs/tree/src/main.ts +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nestjs/tree/tsconfig.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nestjs/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/tree/.eslintrc.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/tree/.gitignore +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/tree/next.config.mjs +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/tree/package.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/tree/pnpm-workspace.yaml +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/tree/src/app/layout.tsx +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/tree/src/app/page.tsx +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/tree/tsconfig.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-remix/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-remix/practices.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-remix/stack.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-remix/tree/README.md +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-remix/tree/app/root.tsx +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-remix/tree/app/routes/_index.tsx +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-remix/tree/app/routes/health.test.ts +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-remix/tree/app/routes/health.ts +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-remix/tree/package.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-remix/tree/tsconfig.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-remix/verify.json +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/userpromptsubmit-hook.sh +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/token_primitives.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/utils/__init__.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/utils/cache.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/utils/http_client.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/utils/serialization.py +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio_cli.egg-info/dependency_links.txt +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio_cli.egg-info/entry_points.txt +0 -0
- {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio_cli.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: simplicio-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.9.1
|
|
4
4
|
Summary: Portable task-to-code pipeline that works with any LLM. Turn a one-line task into a verified code change — diff + test + verify loop. +55 pts on a 156-check benchmark, 21% faster, ~same tokens.
|
|
5
5
|
Author-email: Wesley Simplicio <wesleybob4@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -30,7 +30,7 @@ Requires-Dist: sentence-transformers>=5.6.0
|
|
|
30
30
|
Requires-Dist: numpy>=2.5.0
|
|
31
31
|
Requires-Dist: anthropic>=0.112.0
|
|
32
32
|
Requires-Dist: openai>=2.44.0
|
|
33
|
-
Requires-Dist: simplicio-mapper>=0.
|
|
33
|
+
Requires-Dist: simplicio-mapper>=0.13.0
|
|
34
34
|
Requires-Dist: simplicio-prompt>=1.14.1
|
|
35
35
|
Requires-Dist: httpx>=0.28.1
|
|
36
36
|
Requires-Dist: orjson>=3.11.9
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "simplicio-cli"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.9.1"
|
|
4
4
|
description = "Portable task-to-code pipeline that works with any LLM. Turn a one-line task into a verified code change — diff + test + verify loop. +55 pts on a 156-check benchmark, 21% faster, ~same tokens."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = { text = "MIT" }
|
|
@@ -44,7 +44,7 @@ dependencies = [
|
|
|
44
44
|
"numpy>=2.5.0",
|
|
45
45
|
"anthropic>=0.112.0",
|
|
46
46
|
"openai>=2.44.0",
|
|
47
|
-
"simplicio-mapper>=0.
|
|
47
|
+
"simplicio-mapper>=0.13.0",
|
|
48
48
|
"simplicio-prompt>=1.14.1",
|
|
49
49
|
"httpx>=0.28.1",
|
|
50
50
|
"orjson>=3.11.9",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.9.1"
|
|
@@ -97,11 +97,6 @@ def _try_route_via_simplicio(
|
|
|
97
97
|
|
|
98
98
|
|
|
99
99
|
def _dispatch_nested(argv: list[str]) -> int | None:
|
|
100
|
-
if argv and argv[0] == "claims":
|
|
101
|
-
maybe_autoinstall("claims")
|
|
102
|
-
from .commands.claims import main as claims_main
|
|
103
|
-
|
|
104
|
-
return claims_main(argv[1:])
|
|
105
100
|
if argv and argv[0] == "gate":
|
|
106
101
|
clean_args, native, python = _parse_rust_flags(argv[1:])
|
|
107
102
|
result = _try_route_via_simplicio(
|
|
@@ -552,10 +547,56 @@ def _write_sprint_state(
|
|
|
552
547
|
path.write_text(json.dumps(payload, indent=2, sort_keys=True), encoding="utf-8")
|
|
553
548
|
|
|
554
549
|
|
|
550
|
+
def _status_claims_gate(payload: dict[str, object]) -> dict[str, object]:
|
|
551
|
+
"""Return a low-risk claim contract for ``status --json`` consumers.
|
|
552
|
+
|
|
553
|
+
A persisted sprint state can prove that this adapter recorded a fresh,
|
|
554
|
+
passing local execution for the tracked sprint flow. It still cannot prove
|
|
555
|
+
repo-wide green on its own, so downstream consumers must not escalate that
|
|
556
|
+
broader claim from a single status payload.
|
|
557
|
+
"""
|
|
558
|
+
|
|
559
|
+
failed_features = payload.get("failed_features")
|
|
560
|
+
failed_dod_gates = payload.get("failed_dod_gates")
|
|
561
|
+
state = payload.get("state") or ("complete" if payload.get("complete") else "in-progress")
|
|
562
|
+
has_fresh_passing_state = (
|
|
563
|
+
bool(payload.get("complete"))
|
|
564
|
+
and state == "complete"
|
|
565
|
+
and not failed_features
|
|
566
|
+
and not failed_dod_gates
|
|
567
|
+
)
|
|
568
|
+
if not has_fresh_passing_state:
|
|
569
|
+
return {
|
|
570
|
+
"allow_fresh_verification_claim": False,
|
|
571
|
+
"allow_repo_green_claim": False,
|
|
572
|
+
"proof_scope": "none",
|
|
573
|
+
"reason": "fresh passing verification evidence is not available",
|
|
574
|
+
}
|
|
575
|
+
return {
|
|
576
|
+
"allow_fresh_verification_claim": True,
|
|
577
|
+
"allow_repo_green_claim": False,
|
|
578
|
+
"proof_scope": "sprint_state",
|
|
579
|
+
"reason": (
|
|
580
|
+
"last passing evidence came from the stored sprint state; "
|
|
581
|
+
"it does not prove repo-wide green"
|
|
582
|
+
),
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
|
|
555
586
|
def _run_status_command(a: argparse.Namespace) -> int:
|
|
556
|
-
|
|
587
|
+
from .mapper import artifact_status
|
|
588
|
+
|
|
589
|
+
root = Path(a.root).resolve()
|
|
590
|
+
state_path = root / ".simplicio" / "sprint_state.json"
|
|
557
591
|
if not state_path.is_file():
|
|
558
|
-
payload = {
|
|
592
|
+
payload = {
|
|
593
|
+
"schema": "simplicio.dev-cli.status/v1",
|
|
594
|
+
"root": str(root),
|
|
595
|
+
"state": "none",
|
|
596
|
+
"path": str(state_path),
|
|
597
|
+
"artifacts": artifact_status(root),
|
|
598
|
+
}
|
|
599
|
+
payload["claims_gate"] = _status_claims_gate(payload)
|
|
559
600
|
if a.json:
|
|
560
601
|
print(json.dumps(payload, sort_keys=True))
|
|
561
602
|
else:
|
|
@@ -566,8 +607,15 @@ def _run_status_command(a: argparse.Namespace) -> int:
|
|
|
566
607
|
except json.JSONDecodeError as exc:
|
|
567
608
|
print(f"{CLI_PROG} status: invalid state file: {exc}", file=sys.stderr)
|
|
568
609
|
return 2
|
|
610
|
+
json_payload = {
|
|
611
|
+
"schema": "simplicio.dev-cli.status/v1",
|
|
612
|
+
"root": str(root),
|
|
613
|
+
**payload,
|
|
614
|
+
"artifacts": artifact_status(root),
|
|
615
|
+
}
|
|
616
|
+
json_payload["claims_gate"] = _status_claims_gate(json_payload)
|
|
569
617
|
if a.json:
|
|
570
|
-
print(json.dumps(
|
|
618
|
+
print(json.dumps(json_payload, sort_keys=True))
|
|
571
619
|
return 0
|
|
572
620
|
completed = payload.get("completed_features", 0)
|
|
573
621
|
total = payload.get("total_features", 0)
|
|
@@ -709,6 +757,60 @@ def _run_runtime_command(a: argparse.Namespace) -> int:
|
|
|
709
757
|
return 2
|
|
710
758
|
|
|
711
759
|
|
|
760
|
+
def _run_claims_command(a: argparse.Namespace) -> int:
|
|
761
|
+
from .commands.claims import main as claims_main
|
|
762
|
+
|
|
763
|
+
claims_argv = [a.claims_cmd]
|
|
764
|
+
if a.claims_cmd in {"check", "tag"}:
|
|
765
|
+
claims_argv.extend(a.statement)
|
|
766
|
+
elif a.claims_cmd == "report":
|
|
767
|
+
if a.path:
|
|
768
|
+
claims_argv += ["--path", a.path]
|
|
769
|
+
if a.json_file:
|
|
770
|
+
claims_argv += ["--json", a.json_file]
|
|
771
|
+
claims_argv.extend(a.claims)
|
|
772
|
+
return claims_main(claims_argv)
|
|
773
|
+
|
|
774
|
+
|
|
775
|
+
def _run_file_command(a: argparse.Namespace) -> int:
|
|
776
|
+
from .commands.file_read import run as file_read_run
|
|
777
|
+
|
|
778
|
+
if a.file_cmd == "read":
|
|
779
|
+
return file_read_run(a)
|
|
780
|
+
print(f"{CLI_PROG} file: unsupported command", file=sys.stderr)
|
|
781
|
+
return 2
|
|
782
|
+
|
|
783
|
+
|
|
784
|
+
def _run_test_command(a: argparse.Namespace) -> int:
|
|
785
|
+
from .commands.test_run import run as test_run_run
|
|
786
|
+
|
|
787
|
+
if a.test_cmd == "run":
|
|
788
|
+
extra_args = a.extra_args
|
|
789
|
+
if extra_args and extra_args[0] == "--":
|
|
790
|
+
extra_args = extra_args[1:]
|
|
791
|
+
# `--cmd` is parsed into `test_program` to avoid colliding with the
|
|
792
|
+
# top-level subparser's `dest="cmd"`; translate to the attribute
|
|
793
|
+
# name `commands/test_run.py` expects.
|
|
794
|
+
a.cmd = a.test_program
|
|
795
|
+
return test_run_run(a, extra_args)
|
|
796
|
+
print(f"{CLI_PROG} test: unsupported command", file=sys.stderr)
|
|
797
|
+
return 2
|
|
798
|
+
|
|
799
|
+
|
|
800
|
+
def _run_inspect_command(a: argparse.Namespace) -> int:
|
|
801
|
+
from .mapper import inspect_target
|
|
802
|
+
|
|
803
|
+
payload = {
|
|
804
|
+
"schema": "simplicio.dev-cli.inspect/v1",
|
|
805
|
+
**inspect_target(a.root, a.target, goal=a.goal),
|
|
806
|
+
}
|
|
807
|
+
if a.json:
|
|
808
|
+
print(json.dumps(payload, sort_keys=True))
|
|
809
|
+
else:
|
|
810
|
+
print(payload["context"])
|
|
811
|
+
return 0
|
|
812
|
+
|
|
813
|
+
|
|
712
814
|
def _run_run_command(a: argparse.Namespace) -> int:
|
|
713
815
|
from .intent import AUTO_CONFIDENCE_THRESHOLD, classify_goal
|
|
714
816
|
|
|
@@ -804,6 +906,23 @@ def main(argv=None):
|
|
|
804
906
|
p_status.add_argument("--root", default=".")
|
|
805
907
|
p_status.add_argument("--json", action="store_true")
|
|
806
908
|
|
|
909
|
+
p_claims = sub.add_parser("claims", help="claims-gate checks and report generation")
|
|
910
|
+
claims_sub = p_claims.add_subparsers(dest="claims_cmd", required=True)
|
|
911
|
+
p_claims_check = claims_sub.add_parser("check", help="verify a claim against the 8 rules")
|
|
912
|
+
p_claims_check.add_argument("statement", nargs="+")
|
|
913
|
+
p_claims_tag = claims_sub.add_parser("tag", help="suggest MEASURED|CANON|UNVERIFIED")
|
|
914
|
+
p_claims_tag.add_argument("statement", nargs="+")
|
|
915
|
+
p_claims_report = claims_sub.add_parser("report", help="generate/load a claims report")
|
|
916
|
+
p_claims_report.add_argument("claims", nargs="*")
|
|
917
|
+
p_claims_report.add_argument("--path")
|
|
918
|
+
p_claims_report.add_argument("--json", dest="json_file")
|
|
919
|
+
|
|
920
|
+
p_inspect = sub.add_parser("inspect", help="inspect a target with mapper-backed context")
|
|
921
|
+
p_inspect.add_argument("target")
|
|
922
|
+
p_inspect.add_argument("--root", default=".")
|
|
923
|
+
p_inspect.add_argument("--goal", default="")
|
|
924
|
+
p_inspect.add_argument("--json", action="store_true")
|
|
925
|
+
|
|
807
926
|
p_doctor = sub.add_parser(
|
|
808
927
|
"doctor",
|
|
809
928
|
help="check local llama.cpp readiness and dependency freshness",
|
|
@@ -847,6 +966,36 @@ def main(argv=None):
|
|
|
847
966
|
help="use the Python mechanical-edit fallback instead of delegating to simplicio edit",
|
|
848
967
|
)
|
|
849
968
|
|
|
969
|
+
p_file = sub.add_parser("file", help="read raw file contents")
|
|
970
|
+
file_sub = p_file.add_subparsers(dest="file_cmd", required=True)
|
|
971
|
+
p_file_read = file_sub.add_parser(
|
|
972
|
+
"read", help="print a file's contents, optionally sliced by line range"
|
|
973
|
+
)
|
|
974
|
+
p_file_read.add_argument("path")
|
|
975
|
+
p_file_read.add_argument("--json", action="store_true")
|
|
976
|
+
p_file_read.add_argument("--start", type=int, default=None, help="1-indexed inclusive start line")
|
|
977
|
+
p_file_read.add_argument("--end", type=int, default=None, help="1-indexed inclusive end line")
|
|
978
|
+
p_file_read.add_argument("--max-bytes", type=int, default=None, dest="max_bytes")
|
|
979
|
+
p_file_read.add_argument("--repo", default=".")
|
|
980
|
+
|
|
981
|
+
p_test = sub.add_parser("test", help="run a test command and report results")
|
|
982
|
+
test_sub = p_test.add_subparsers(dest="test_cmd", required=True)
|
|
983
|
+
p_test_run = test_sub.add_parser("run", help="run a test command (default: pytest)")
|
|
984
|
+
p_test_run.add_argument("--cmd", dest="test_program", default="pytest")
|
|
985
|
+
p_test_run.add_argument("--json", action="store_true")
|
|
986
|
+
p_test_run.add_argument("--repo", default=".")
|
|
987
|
+
p_test_run.add_argument(
|
|
988
|
+
"--timeout",
|
|
989
|
+
type=float,
|
|
990
|
+
default=120.0,
|
|
991
|
+
help="seconds to wait for the test command before giving up (default: 120)",
|
|
992
|
+
)
|
|
993
|
+
p_test_run.add_argument(
|
|
994
|
+
"extra_args",
|
|
995
|
+
nargs=argparse.REMAINDER,
|
|
996
|
+
help="extra args passed through to --cmd after a literal --",
|
|
997
|
+
)
|
|
998
|
+
|
|
850
999
|
p_token = sub.add_parser("token", help="token-efficient execution primitives")
|
|
851
1000
|
token_sub = p_token.add_subparsers(dest="token_cmd", required=True)
|
|
852
1001
|
p_log = token_sub.add_parser("log-summary")
|
|
@@ -989,6 +1138,10 @@ def main(argv=None):
|
|
|
989
1138
|
return detect_main(detect_argv)
|
|
990
1139
|
elif a.cmd == "status":
|
|
991
1140
|
return _run_status_command(a)
|
|
1141
|
+
elif a.cmd == "claims":
|
|
1142
|
+
return _run_claims_command(a)
|
|
1143
|
+
elif a.cmd == "inspect":
|
|
1144
|
+
return _run_inspect_command(a)
|
|
992
1145
|
elif a.cmd == "doctor":
|
|
993
1146
|
from .doctor import main as doctor_main
|
|
994
1147
|
|
|
@@ -1026,6 +1179,10 @@ def main(argv=None):
|
|
|
1026
1179
|
return _run_mechanical_edit_command(a)
|
|
1027
1180
|
elif a.cmd == "edit":
|
|
1028
1181
|
return _run_edit_command(a)
|
|
1182
|
+
elif a.cmd == "file":
|
|
1183
|
+
return _run_file_command(a)
|
|
1184
|
+
elif a.cmd == "test":
|
|
1185
|
+
return _run_test_command(a)
|
|
1029
1186
|
elif a.cmd == "token":
|
|
1030
1187
|
return _run_token_command(a)
|
|
1031
1188
|
elif a.cmd == "score-skill":
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"""``file read`` — read raw file contents with optional line-range slicing.
|
|
2
|
+
|
|
3
|
+
Delegates to the native Rust ``simplicio file read`` binary when available
|
|
4
|
+
(via :mod:`simplicio.runtime_bridge`), falling back to a pure-Python
|
|
5
|
+
implementation otherwise. Mirrors the Rust CLI contract exactly so either
|
|
6
|
+
implementation is interchangeable from the caller's point of view::
|
|
7
|
+
|
|
8
|
+
simplicio-dev-cli file read <path> [--json] [--start N] [--end N]
|
|
9
|
+
[--max-bytes N] [--repo <path>]
|
|
10
|
+
|
|
11
|
+
JSON output shape (schema ``simplicio.file-read/v1``)::
|
|
12
|
+
|
|
13
|
+
{"schema": "simplicio.file-read/v1", "path": "...", "bytes": N,
|
|
14
|
+
"lines": N, "truncated": bool, "content": "..."}
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
from __future__ import annotations
|
|
18
|
+
|
|
19
|
+
import argparse
|
|
20
|
+
import json
|
|
21
|
+
import subprocess
|
|
22
|
+
import sys
|
|
23
|
+
from pathlib import Path
|
|
24
|
+
|
|
25
|
+
from ..runtime_bridge import discover_simplicio
|
|
26
|
+
|
|
27
|
+
SCHEMA = "simplicio.file-read/v1"
|
|
28
|
+
DEFAULT_MAX_BYTES = 2 * 1024 * 1024 # 2 MiB
|
|
29
|
+
# A file read should be near-instant; this is just a safety net against a
|
|
30
|
+
# hung/misbehaving Rust binary, not a tunable (unlike test run's --timeout).
|
|
31
|
+
RUNTIME_DELEGATION_TIMEOUT_S = 30.0
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def _build_runtime_args(a: argparse.Namespace) -> list[str]:
|
|
35
|
+
cmd = ["file", "read", a.path, "--json"]
|
|
36
|
+
if a.start is not None:
|
|
37
|
+
cmd += ["--start", str(a.start)]
|
|
38
|
+
if a.end is not None:
|
|
39
|
+
cmd += ["--end", str(a.end)]
|
|
40
|
+
if a.max_bytes is not None:
|
|
41
|
+
cmd += ["--max-bytes", str(a.max_bytes)]
|
|
42
|
+
if a.repo:
|
|
43
|
+
cmd += ["--repo", a.repo]
|
|
44
|
+
return cmd
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _run_via_runtime(a: argparse.Namespace) -> int | None:
|
|
48
|
+
"""Attempt delegation to the Rust ``simplicio`` binary.
|
|
49
|
+
|
|
50
|
+
Returns the exit code on success, or ``None`` so the caller falls back
|
|
51
|
+
to the Python implementation (binary missing, or the call errored).
|
|
52
|
+
"""
|
|
53
|
+
binary = discover_simplicio()
|
|
54
|
+
if binary is None:
|
|
55
|
+
return None
|
|
56
|
+
cmd = [binary, *_build_runtime_args(a)]
|
|
57
|
+
try:
|
|
58
|
+
completed = subprocess.run(
|
|
59
|
+
cmd, capture_output=True, text=True, timeout=RUNTIME_DELEGATION_TIMEOUT_S
|
|
60
|
+
)
|
|
61
|
+
except (OSError, subprocess.TimeoutExpired):
|
|
62
|
+
return None
|
|
63
|
+
|
|
64
|
+
# Only trust the Rust binary's result if it actually produced the
|
|
65
|
+
# expected JSON envelope — an unimplemented/erroring subcommand prints
|
|
66
|
+
# a plain-text message and exits non-zero, which is indistinguishable
|
|
67
|
+
# from a legitimate error by exit code alone.
|
|
68
|
+
try:
|
|
69
|
+
payload = json.loads(completed.stdout)
|
|
70
|
+
except (json.JSONDecodeError, ValueError):
|
|
71
|
+
return None
|
|
72
|
+
if payload.get("schema") != SCHEMA:
|
|
73
|
+
return None
|
|
74
|
+
|
|
75
|
+
if a.json:
|
|
76
|
+
print(completed.stdout, end="")
|
|
77
|
+
else:
|
|
78
|
+
print(payload.get("content", ""), end="")
|
|
79
|
+
if completed.stderr:
|
|
80
|
+
print(completed.stderr, end="", file=sys.stderr)
|
|
81
|
+
return completed.returncode
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def _read_fallback(a: argparse.Namespace) -> tuple[dict | None, str | None]:
|
|
85
|
+
"""Read the file per Python fallback rules.
|
|
86
|
+
|
|
87
|
+
Returns ``(payload, error_message)`` — exactly one is non-``None``.
|
|
88
|
+
"""
|
|
89
|
+
repo_root = Path(a.repo or ".").resolve()
|
|
90
|
+
target = (repo_root / a.path).resolve() if not Path(a.path).is_absolute() else Path(a.path)
|
|
91
|
+
|
|
92
|
+
if not target.exists():
|
|
93
|
+
return None, f"file not found: {a.path}"
|
|
94
|
+
if target.is_dir():
|
|
95
|
+
return None, f"path is a directory, not a file: {a.path}"
|
|
96
|
+
|
|
97
|
+
max_bytes = a.max_bytes if a.max_bytes is not None else DEFAULT_MAX_BYTES
|
|
98
|
+
try:
|
|
99
|
+
raw = target.read_bytes()
|
|
100
|
+
except OSError as exc:
|
|
101
|
+
return None, f"cannot read {a.path}: {exc}"
|
|
102
|
+
|
|
103
|
+
truncated = len(raw) > max_bytes
|
|
104
|
+
if truncated:
|
|
105
|
+
raw = raw[:max_bytes]
|
|
106
|
+
|
|
107
|
+
# Decode strictly: this CLI is a direct, local, single-user invocation
|
|
108
|
+
# (not the MCP-exposed path) — a non-UTF8 file is a real error the user
|
|
109
|
+
# should see rather than a silently mangled read.
|
|
110
|
+
try:
|
|
111
|
+
text = raw.decode("utf-8")
|
|
112
|
+
except UnicodeDecodeError as exc:
|
|
113
|
+
return None, f"file is not valid UTF-8: {a.path} ({exc})"
|
|
114
|
+
|
|
115
|
+
lines = text.splitlines(keepends=True)
|
|
116
|
+
if a.start is not None or a.end is not None:
|
|
117
|
+
start = max(a.start or 1, 1)
|
|
118
|
+
end = a.end if a.end is not None else len(lines)
|
|
119
|
+
# 1-indexed inclusive slice
|
|
120
|
+
text = "".join(lines[start - 1:end])
|
|
121
|
+
line_count = len(text.splitlines())
|
|
122
|
+
else:
|
|
123
|
+
line_count = len(lines)
|
|
124
|
+
|
|
125
|
+
payload = {
|
|
126
|
+
"schema": SCHEMA,
|
|
127
|
+
"path": a.path,
|
|
128
|
+
"bytes": len(text.encode("utf-8")),
|
|
129
|
+
"lines": line_count,
|
|
130
|
+
"truncated": truncated,
|
|
131
|
+
"content": text,
|
|
132
|
+
}
|
|
133
|
+
return payload, None
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
def _run_fallback(a: argparse.Namespace) -> int:
|
|
137
|
+
payload, error = _read_fallback(a)
|
|
138
|
+
if error is not None:
|
|
139
|
+
print(f"simplicio-dev-cli file read: {error}", file=sys.stderr)
|
|
140
|
+
return 2
|
|
141
|
+
|
|
142
|
+
assert payload is not None
|
|
143
|
+
if a.json:
|
|
144
|
+
print(json.dumps(payload, sort_keys=True))
|
|
145
|
+
else:
|
|
146
|
+
print(payload["content"], end="")
|
|
147
|
+
return 0
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
def run(a: argparse.Namespace) -> int:
|
|
151
|
+
"""Entry point wired from ``cli.py`` for ``simplicio-dev-cli file read``."""
|
|
152
|
+
result = _run_via_runtime(a)
|
|
153
|
+
if result is not None:
|
|
154
|
+
return result
|
|
155
|
+
return _run_fallback(a)
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
"""``test run`` — run a test command and report structured pass/fail results.
|
|
2
|
+
|
|
3
|
+
Delegates to the native Rust ``simplicio test run`` binary when available
|
|
4
|
+
(via :mod:`simplicio.runtime_bridge`), falling back to a pure-Python
|
|
5
|
+
implementation otherwise. Mirrors the Rust CLI contract exactly::
|
|
6
|
+
|
|
7
|
+
simplicio-dev-cli test run [--cmd <program>] [--json] [--repo <path>]
|
|
8
|
+
[-- <extra-args...>]
|
|
9
|
+
|
|
10
|
+
``--cmd`` is passed as ``argv[0]`` directly — never through a shell — with
|
|
11
|
+
anything after a literal ``--`` forwarded as additional argv elements.
|
|
12
|
+
|
|
13
|
+
JSON output shape (schema ``simplicio.test-run/v1``)::
|
|
14
|
+
|
|
15
|
+
{"schema": "simplicio.test-run/v1", "cmd": "pytest", "args": [...],
|
|
16
|
+
"exit_code": N, "passed": N|null, "failed": N|null, "errors": N|null,
|
|
17
|
+
"duration_s": F|null, "summary": "...", "output_tail": "...",
|
|
18
|
+
"output_truncated": bool}
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
from __future__ import annotations
|
|
22
|
+
|
|
23
|
+
import argparse
|
|
24
|
+
import json
|
|
25
|
+
import re
|
|
26
|
+
import subprocess
|
|
27
|
+
import sys
|
|
28
|
+
from pathlib import Path
|
|
29
|
+
|
|
30
|
+
from ..runtime_bridge import discover_simplicio
|
|
31
|
+
|
|
32
|
+
SCHEMA = "simplicio.test-run/v1"
|
|
33
|
+
DEFAULT_CMD = "pytest"
|
|
34
|
+
OUTPUT_TAIL_CHARS = 4000
|
|
35
|
+
DEFAULT_TIMEOUT_S = 120.0
|
|
36
|
+
# Extra budget on top of the user's --timeout when delegating to the Rust
|
|
37
|
+
# binary, so the binary's own internal timeout gets a chance to fire and
|
|
38
|
+
# return a clean JSON payload before Python gives up on the subprocess call.
|
|
39
|
+
RUNTIME_DELEGATION_TIMEOUT_SLACK_S = 15.0
|
|
40
|
+
|
|
41
|
+
# Matches pytest's final summary line, e.g.:
|
|
42
|
+
# "3 passed, 1 failed in 0.42s"
|
|
43
|
+
# "1 passed, 1 error in 0.02s"
|
|
44
|
+
# "24 deselected in 0.02s"
|
|
45
|
+
_PYTEST_COUNT_RE = re.compile(r"(\d+)\s+(passed|failed|error(?:s)?)\b")
|
|
46
|
+
_PYTEST_DURATION_RE = re.compile(r"\bin\s+([\d.]+)s\b")
|
|
47
|
+
_PYTEST_SUMMARY_LINE_RE = re.compile(
|
|
48
|
+
r"^=+ .* (?:passed|failed|error|deselected|no tests ran).* =+\s*$",
|
|
49
|
+
re.MULTILINE,
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def _build_runtime_args(a: argparse.Namespace, extra_args: list[str]) -> list[str]:
|
|
54
|
+
cmd = ["test", "run", "--cmd", a.cmd, "--json"]
|
|
55
|
+
if a.repo:
|
|
56
|
+
cmd += ["--repo", a.repo]
|
|
57
|
+
if extra_args:
|
|
58
|
+
cmd += ["--", *extra_args]
|
|
59
|
+
return cmd
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def _run_via_runtime(a: argparse.Namespace, extra_args: list[str]) -> int | None:
|
|
63
|
+
"""Attempt delegation to the Rust ``simplicio`` binary.
|
|
64
|
+
|
|
65
|
+
Returns the exit code on success, or ``None`` so the caller falls back
|
|
66
|
+
to the Python implementation (binary missing, or the call errored in a
|
|
67
|
+
way that suggests the subcommand isn't implemented there yet).
|
|
68
|
+
"""
|
|
69
|
+
binary = discover_simplicio()
|
|
70
|
+
if binary is None:
|
|
71
|
+
return None
|
|
72
|
+
cmd = [binary, *_build_runtime_args(a, extra_args)]
|
|
73
|
+
try:
|
|
74
|
+
completed = subprocess.run(
|
|
75
|
+
cmd,
|
|
76
|
+
capture_output=True,
|
|
77
|
+
text=True,
|
|
78
|
+
timeout=a.timeout + RUNTIME_DELEGATION_TIMEOUT_SLACK_S,
|
|
79
|
+
)
|
|
80
|
+
except (OSError, subprocess.TimeoutExpired):
|
|
81
|
+
return None
|
|
82
|
+
|
|
83
|
+
try:
|
|
84
|
+
payload = json.loads(completed.stdout)
|
|
85
|
+
except (json.JSONDecodeError, ValueError):
|
|
86
|
+
return None
|
|
87
|
+
if payload.get("schema") != SCHEMA:
|
|
88
|
+
return None
|
|
89
|
+
|
|
90
|
+
if a.json:
|
|
91
|
+
print(completed.stdout, end="")
|
|
92
|
+
else:
|
|
93
|
+
_print_human(payload)
|
|
94
|
+
if completed.stderr:
|
|
95
|
+
print(completed.stderr, end="", file=sys.stderr)
|
|
96
|
+
return completed.returncode
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def _parse_pytest_summary(output: str) -> tuple[int | None, int | None, int | None, float | None, str | None]:
|
|
100
|
+
"""Parse pytest's summary line for pass/fail/error counts and duration.
|
|
101
|
+
|
|
102
|
+
Returns ``(passed, failed, errors, duration_s, summary_line)``. Any
|
|
103
|
+
field that cannot be determined is ``None``.
|
|
104
|
+
"""
|
|
105
|
+
lines = output.splitlines()
|
|
106
|
+
summary_line = None
|
|
107
|
+
for line in reversed(lines):
|
|
108
|
+
if _PYTEST_COUNT_RE.search(line) or "no tests ran" in line.lower():
|
|
109
|
+
summary_line = line.strip().strip("=").strip()
|
|
110
|
+
break
|
|
111
|
+
|
|
112
|
+
if summary_line is None:
|
|
113
|
+
return None, None, None, None, None
|
|
114
|
+
|
|
115
|
+
counts = {"passed": 0, "failed": 0, "error": 0, "errors": 0}
|
|
116
|
+
for match in _PYTEST_COUNT_RE.finditer(summary_line):
|
|
117
|
+
count, label = match.groups()
|
|
118
|
+
counts[label] = int(count)
|
|
119
|
+
|
|
120
|
+
duration_match = _PYTEST_DURATION_RE.search(summary_line)
|
|
121
|
+
duration = float(duration_match.group(1)) if duration_match else None
|
|
122
|
+
|
|
123
|
+
passed = counts["passed"]
|
|
124
|
+
failed = counts["failed"]
|
|
125
|
+
errors = counts["error"] + counts["errors"]
|
|
126
|
+
|
|
127
|
+
return passed, failed, errors, duration, summary_line
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def _run_fallback(a: argparse.Namespace, extra_args: list[str]) -> int:
|
|
131
|
+
repo_root = Path(a.repo or ".").resolve()
|
|
132
|
+
argv = [a.cmd, *extra_args]
|
|
133
|
+
|
|
134
|
+
try:
|
|
135
|
+
completed = subprocess.run(
|
|
136
|
+
argv,
|
|
137
|
+
capture_output=True,
|
|
138
|
+
text=True,
|
|
139
|
+
cwd=repo_root,
|
|
140
|
+
timeout=a.timeout,
|
|
141
|
+
)
|
|
142
|
+
except FileNotFoundError:
|
|
143
|
+
print(
|
|
144
|
+
f"simplicio-dev-cli test run: command not found: {a.cmd!r}",
|
|
145
|
+
file=sys.stderr,
|
|
146
|
+
)
|
|
147
|
+
return 1
|
|
148
|
+
except subprocess.TimeoutExpired as exc:
|
|
149
|
+
combined = (exc.stdout or "") + (exc.stderr or "")
|
|
150
|
+
output_truncated = len(combined) > OUTPUT_TAIL_CHARS
|
|
151
|
+
output_tail = combined[-OUTPUT_TAIL_CHARS:] if output_truncated else combined
|
|
152
|
+
payload = {
|
|
153
|
+
"schema": SCHEMA,
|
|
154
|
+
"cmd": a.cmd,
|
|
155
|
+
"args": extra_args,
|
|
156
|
+
"exit_code": None,
|
|
157
|
+
"passed": None,
|
|
158
|
+
"failed": None,
|
|
159
|
+
"errors": None,
|
|
160
|
+
"duration_s": None,
|
|
161
|
+
"summary": f"{a.cmd}: timed out after {a.timeout}s",
|
|
162
|
+
"output_tail": output_tail,
|
|
163
|
+
"output_truncated": output_truncated,
|
|
164
|
+
}
|
|
165
|
+
if a.json:
|
|
166
|
+
print(json.dumps(payload, sort_keys=True))
|
|
167
|
+
else:
|
|
168
|
+
_print_human(payload)
|
|
169
|
+
return 124 # shell convention for "command timed out"
|
|
170
|
+
except OSError as exc:
|
|
171
|
+
print(f"simplicio-dev-cli test run: failed to launch {a.cmd!r}: {exc}", file=sys.stderr)
|
|
172
|
+
return 1
|
|
173
|
+
|
|
174
|
+
combined_output = completed.stdout + completed.stderr
|
|
175
|
+
|
|
176
|
+
passed = failed = errors = None
|
|
177
|
+
duration_s = None
|
|
178
|
+
summary = None
|
|
179
|
+
is_pytest = a.cmd == "pytest" or "pytest" in a.cmd or "= test session starts =" in combined_output
|
|
180
|
+
if is_pytest:
|
|
181
|
+
passed, failed, errors, duration_s, summary = _parse_pytest_summary(combined_output)
|
|
182
|
+
|
|
183
|
+
if summary is None:
|
|
184
|
+
summary = (
|
|
185
|
+
f"{a.cmd} exited {completed.returncode}"
|
|
186
|
+
if completed.returncode != 0
|
|
187
|
+
else f"{a.cmd} exited 0"
|
|
188
|
+
)
|
|
189
|
+
|
|
190
|
+
output_truncated = len(combined_output) > OUTPUT_TAIL_CHARS
|
|
191
|
+
output_tail = combined_output[-OUTPUT_TAIL_CHARS:] if output_truncated else combined_output
|
|
192
|
+
|
|
193
|
+
payload = {
|
|
194
|
+
"schema": SCHEMA,
|
|
195
|
+
"cmd": a.cmd,
|
|
196
|
+
"args": extra_args,
|
|
197
|
+
"exit_code": completed.returncode,
|
|
198
|
+
"passed": passed,
|
|
199
|
+
"failed": failed,
|
|
200
|
+
"errors": errors,
|
|
201
|
+
"duration_s": duration_s,
|
|
202
|
+
"summary": summary,
|
|
203
|
+
"output_tail": output_tail,
|
|
204
|
+
"output_truncated": output_truncated,
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
if a.json:
|
|
208
|
+
print(json.dumps(payload, sort_keys=True))
|
|
209
|
+
else:
|
|
210
|
+
_print_human(payload)
|
|
211
|
+
|
|
212
|
+
return completed.returncode
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
def _print_human(payload: dict) -> None:
|
|
216
|
+
print(f"{payload['cmd']}: {payload['summary']}")
|
|
217
|
+
if payload.get("passed") is not None or payload.get("failed") is not None:
|
|
218
|
+
print(
|
|
219
|
+
f" passed={payload.get('passed')} "
|
|
220
|
+
f"failed={payload.get('failed')} "
|
|
221
|
+
f"errors={payload.get('errors')}"
|
|
222
|
+
)
|
|
223
|
+
print(f" exit_code={payload['exit_code']}")
|
|
224
|
+
if payload.get("output_tail"):
|
|
225
|
+
print("--- output tail ---")
|
|
226
|
+
print(payload["output_tail"], end="" if payload["output_tail"].endswith("\n") else "\n")
|
|
227
|
+
if payload.get("output_truncated"):
|
|
228
|
+
print("(output truncated)")
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
def run(a: argparse.Namespace, extra_args: list[str]) -> int:
|
|
232
|
+
"""Entry point wired from ``cli.py`` for ``simplicio-dev-cli test run``."""
|
|
233
|
+
result = _run_via_runtime(a, extra_args)
|
|
234
|
+
if result is not None:
|
|
235
|
+
return result
|
|
236
|
+
return _run_fallback(a, extra_args)
|