simplicio-cli 0.5.16__tar.gz → 0.5.17__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.5.16 → simplicio_cli-0.5.17}/PKG-INFO +10 -13
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/README.md +9 -12
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/pyproject.toml +1 -1
- simplicio_cli-0.5.17/simplicio/__init__.py +1 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/cli.py +23 -7
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/doctor.py +31 -32
- simplicio_cli-0.5.17/simplicio/local_models.py +243 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/providers.py +48 -77
- simplicio_cli-0.5.17/simplicio/templates/stacks/py-cli/tree/src/app/__pycache__/__init__.cpython-312.pyc +0 -0
- simplicio_cli-0.5.17/simplicio/templates/stacks/py-cli/tree/src/app/__pycache__/cli.cpython-312.pyc +0 -0
- simplicio_cli-0.5.17/simplicio/templates/stacks/py-cli/tree/tests/__pycache__/test_cli.cpython-312.pyc +0 -0
- simplicio_cli-0.5.17/simplicio/templates/stacks/py-django/tree/__pycache__/manage.cpython-312.pyc +0 -0
- simplicio_cli-0.5.17/simplicio/templates/stacks/py-django/tree/app/__pycache__/__init__.cpython-312.pyc +0 -0
- simplicio_cli-0.5.17/simplicio/templates/stacks/py-django/tree/app/__pycache__/apps.cpython-312.pyc +0 -0
- simplicio_cli-0.5.17/simplicio/templates/stacks/py-django/tree/app/__pycache__/tests.cpython-312.pyc +0 -0
- simplicio_cli-0.5.17/simplicio/templates/stacks/py-django/tree/app/__pycache__/views.cpython-312.pyc +0 -0
- simplicio_cli-0.5.17/simplicio/templates/stacks/py-django/tree/config/__pycache__/__init__.cpython-312.pyc +0 -0
- simplicio_cli-0.5.17/simplicio/templates/stacks/py-django/tree/config/__pycache__/asgi.cpython-312.pyc +0 -0
- simplicio_cli-0.5.17/simplicio/templates/stacks/py-django/tree/config/__pycache__/settings.cpython-312.pyc +0 -0
- simplicio_cli-0.5.17/simplicio/templates/stacks/py-django/tree/config/__pycache__/urls.cpython-312.pyc +0 -0
- simplicio_cli-0.5.17/simplicio/templates/stacks/py-django/tree/config/__pycache__/wsgi.cpython-312.pyc +0 -0
- simplicio_cli-0.5.17/simplicio/templates/stacks/py-fastapi/tree/src/__pycache__/main.cpython-312.pyc +0 -0
- simplicio_cli-0.5.17/simplicio/templates/stacks/py-fastapi/tree/src/api/__pycache__/__init__.cpython-312.pyc +0 -0
- simplicio_cli-0.5.17/simplicio/templates/stacks/py-fastapi/tree/tests/__pycache__/test_health.cpython-312.pyc +0 -0
- simplicio_cli-0.5.17/simplicio/templates/stacks/py-flask/tree/src/__pycache__/app.cpython-312.pyc +0 -0
- simplicio_cli-0.5.17/simplicio/templates/stacks/py-flask/tree/tests/__pycache__/test_health.cpython-312.pyc +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio_cli.egg-info/PKG-INFO +10 -13
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio_cli.egg-info/SOURCES.txt +18 -0
- simplicio_cli-0.5.16/simplicio/__init__.py +0 -1
- simplicio_cli-0.5.16/simplicio/local_models.py +0 -213
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/LICENSE +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/setup.cfg +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/_cache.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/adaptive.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/bench.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/cache.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/cache_cli.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/detect.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/dod.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/ecosystem.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/hardware.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/init.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/intent.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/mapper.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/observability.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/orchestrator/__init__.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/orchestrator/cost_governor.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/orchestrator/feature.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/pipeline.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/pipeline_fixers.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/precedent.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/prompt.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/runtime_env.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/scratch/__init__.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/scratch/_pipeline_adapter.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/scratch/cli.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/scratch/codegen/__init__.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/scratch/codegen/go_gin.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/scratch/codegen/markdown_document.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/scratch/codegen/php_laravel.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/scratch/codegen/python_cst.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/scratch/codegen/python_fastapi.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/scratch/codegen/python_orm.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/scratch/codegen/python_pydantic.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/scratch/codegen/python_pytest.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/scratch/codegen/registry.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/scratch/codegen/rust_axum.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/scratch/codegen/types.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/scratch/codegen/typescript_next_page.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/scratch/codegen/typescript_next_route.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/scratch/executor.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/scratch/plan_schema.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/scratch/planner.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/scratch/recipes.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/scratch/skill_opt.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/scratch/stack_registry.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/skill_router.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/sprint_loader.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/SKILL.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/recipes/go-gin/crud-resource.yaml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/recipes/php-laravel/crud-resource.yaml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/recipes/php-vanilla/docs-marker.yaml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/recipes/py-fastapi/admin-crud.yaml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/recipes/py-fastapi/auth-jwt.yaml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/recipes/py-fastapi/crud-resource.yaml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/recipes/rust-axum/crud-resource.yaml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/recipes/ts-nextjs/admin-crud.yaml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/recipes/ts-nextjs/auth-jwt.yaml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/recipes/ts-nextjs/crud-resource.yaml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/simplicio_prompt.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/bash-cli/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/bash-cli/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/bash-cli/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/bash-cli/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/bash-cli/tree/bin/app.sh +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/bash-cli/tree/test/app.bats +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/bash-cli/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/csharp-aspnet/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/csharp-aspnet/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/csharp-aspnet/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/csharp-aspnet/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/csharp-aspnet/tree/src/App.Api/App.Api.csproj +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/csharp-aspnet/tree/src/App.Api/Program.cs +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/csharp-aspnet/tree/tests/App.Tests/App.Tests.csproj +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/csharp-aspnet/tree/tests/App.Tests/HealthTests.cs +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/csharp-aspnet/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/csharp-blazor/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/csharp-blazor/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/csharp-blazor/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/csharp-blazor/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/App.Web.csproj +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/Components/App.razor +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/Components/Pages/Home.razor +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/Program.cs +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/csharp-blazor/tree/tests/App.Tests/App.Tests.csproj +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/csharp-blazor/tree/tests/App.Tests/HealthTests.cs +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/csharp-blazor/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/dart-flutter/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/dart-flutter/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/dart-flutter/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/dart-flutter/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/dart-flutter/tree/lib/main.dart +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/dart-flutter/tree/pubspec.yaml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/dart-flutter/tree/test/widget_test.dart +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/dart-flutter/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/elixir-phoenix/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/elixir-phoenix/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/elixir-phoenix/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/elixir-phoenix/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/elixir-phoenix/tree/config/config.exs +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app/application.ex +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app_web/controllers/health_controller.ex +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app_web/endpoint.ex +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app_web/router.ex +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/elixir-phoenix/tree/mix.exs +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/elixir-phoenix/tree/test/health_controller_test.exs +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/elixir-phoenix/tree/test/test_helper.exs +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/elixir-phoenix/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-cli/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-cli/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-cli/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-cli/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-cli/tree/cmd/root.go +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-cli/tree/cmd/root_test.go +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-cli/tree/go.mod +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-cli/tree/main.go +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-cli/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-echo/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-echo/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-echo/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-echo/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-echo/tree/cmd/server/main.go +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-echo/tree/go.mod +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-echo/tree/internal/http/router.go +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-echo/tree/internal/http/router_test.go +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-echo/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-gin/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-gin/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-gin/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-gin/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-gin/tree/cmd/server/main.go +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-gin/tree/go.mod +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-gin/tree/internal/http/router.go +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-gin/tree/internal/http/router_test.go +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/go-gin/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/java-spring/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/java-spring/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/java-spring/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/java-spring/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/java-spring/tree/build.gradle.kts +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/java-spring/tree/settings.gradle.kts +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/java-spring/tree/src/main/java/com/example/Application.java +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/java-spring/tree/src/main/java/com/example/HealthController.java +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/java-spring/tree/src/test/java/com/example/HealthControllerTest.java +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/java-spring/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/js-express/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/js-express/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/js-express/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/js-express/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/js-express/tree/package.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/js-express/tree/src/app.js +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/js-express/tree/src/server.js +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/js-express/tree/tests/health.test.js +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/js-express/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-android/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-android/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-android/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-android/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-android/tree/app/build.gradle.kts +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-android/tree/app/src/main/AndroidManifest.xml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-android/tree/app/src/main/java/com/example/app/MainActivity.kt +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-android/tree/app/src/main/res/values/styles.xml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-android/tree/app/src/test/java/com/example/app/SmokeTest.kt +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-android/tree/build.gradle.kts +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-android/tree/settings.gradle.kts +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-android/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-ktor/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-ktor/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-ktor/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-ktor/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-ktor/tree/build.gradle.kts +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-ktor/tree/settings.gradle.kts +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-ktor/tree/src/main/kotlin/com/example/Application.kt +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-ktor/tree/src/test/kotlin/com/example/ApplicationTest.kt +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-ktor/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-spring/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-spring/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-spring/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-spring/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-spring/tree/build.gradle.kts +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-spring/tree/settings.gradle.kts +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-spring/tree/src/main/kotlin/com/example/Application.kt +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-spring/tree/src/main/kotlin/com/example/HealthController.kt +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-spring/tree/src/test/kotlin/com/example/HealthControllerTest.kt +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/kotlin-spring/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-laravel/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-laravel/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-laravel/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-laravel/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-laravel/tree/artisan +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-laravel/tree/bootstrap/app.php +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-laravel/tree/composer.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-laravel/tree/phpunit.xml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-laravel/tree/routes/api.php +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-laravel/tree/routes/console.php +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-laravel/tree/tests/Feature/HealthTest.php +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-laravel/tree/tests/TestCase.php +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-laravel/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-symfony/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-symfony/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-symfony/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-symfony/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-symfony/tree/composer.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-symfony/tree/src/Controller/HealthController.php +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-symfony/tree/tests/HealthControllerTest.php +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-symfony/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-vanilla/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-vanilla/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-vanilla/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-vanilla/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-vanilla/tree/composer.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-vanilla/tree/phpunit.xml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-vanilla/tree/src/Health.php +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-vanilla/tree/tests/HealthTest.php +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/php-vanilla/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-cli/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-cli/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-cli/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-cli/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-cli/tree/pyproject.toml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-cli/tree/src/app/__init__.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-cli/tree/src/app/cli.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-cli/tree/tests/test_cli.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-cli/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-django/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-django/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-django/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-django/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-django/tree/app/__init__.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-django/tree/app/apps.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-django/tree/app/tests.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-django/tree/app/views.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-django/tree/config/__init__.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-django/tree/config/asgi.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-django/tree/config/settings.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-django/tree/config/urls.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-django/tree/config/wsgi.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-django/tree/manage.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-django/tree/pyproject.toml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-django/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-fastapi/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-fastapi/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-fastapi/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-fastapi/tree/.gitignore +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-fastapi/tree/README.template.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-fastapi/tree/pyproject.toml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-fastapi/tree/ruff.toml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-fastapi/tree/src/api/__init__.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-fastapi/tree/src/main.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-fastapi/tree/tests/test_health.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-fastapi/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-flask/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-flask/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-flask/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-flask/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-flask/tree/pyproject.toml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-flask/tree/ruff.toml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-flask/tree/src/app.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-flask/tree/tests/test_health.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/py-flask/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/react-vite/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/react-vite/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/react-vite/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/react-vite/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/react-vite/tree/index.html +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/react-vite/tree/package.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/react-vite/tree/src/App.test.tsx +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/react-vite/tree/src/App.tsx +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/react-vite/tree/src/main.tsx +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/react-vite/tree/tsconfig.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/react-vite/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ruby-rails/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ruby-rails/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ruby-rails/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ruby-rails/tree/Gemfile +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ruby-rails/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ruby-rails/tree/app/controllers/health_controller.rb +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ruby-rails/tree/bin/rails +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ruby-rails/tree/config/application.rb +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ruby-rails/tree/config/boot.rb +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ruby-rails/tree/config/routes.rb +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ruby-rails/tree/test/controllers/health_controller_test.rb +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ruby-rails/tree/test/test_helper.rb +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ruby-rails/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/rust-axum/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/rust-axum/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/rust-axum/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/rust-axum/tree/Cargo.toml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/rust-axum/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/rust-axum/tree/src/main.rs +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/rust-axum/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/rust-cli/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/rust-cli/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/rust-cli/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/rust-cli/tree/Cargo.toml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/rust-cli/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/rust-cli/tree/src/main.rs +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/rust-cli/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/rust-leptos/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/rust-leptos/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/rust-leptos/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/rust-leptos/tree/Cargo.toml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/rust-leptos/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/rust-leptos/tree/src/main.rs +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/rust-leptos/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/swift-ios/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/swift-ios/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/swift-ios/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/swift-ios/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/swift-ios/tree/Sources/App/App.swift +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/swift-ios/tree/Sources/App/ContentView.swift +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/swift-ios/tree/Tests/AppTests/AppTests.swift +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/swift-ios/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/swift-vapor/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/swift-vapor/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/swift-vapor/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/swift-vapor/tree/Package.swift +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/swift-vapor/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/swift-vapor/tree/Sources/App/main.swift +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/swift-vapor/tree/Tests/AppTests/HealthTests.swift +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/swift-vapor/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-nestjs/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-nestjs/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-nestjs/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-nestjs/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-nestjs/tree/package.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-nestjs/tree/src/app.controller.spec.ts +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-nestjs/tree/src/app.controller.ts +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-nestjs/tree/src/app.module.ts +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-nestjs/tree/src/main.ts +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-nestjs/tree/tsconfig.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-nestjs/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-nextjs/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-nextjs/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-nextjs/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-nextjs/tree/.eslintrc.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-nextjs/tree/.gitignore +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-nextjs/tree/next.config.mjs +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-nextjs/tree/package.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-nextjs/tree/pnpm-workspace.yaml +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-nextjs/tree/src/app/layout.tsx +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-nextjs/tree/src/app/page.tsx +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-nextjs/tree/tsconfig.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-nextjs/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-remix/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-remix/practices.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-remix/stack.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-remix/tree/README.md +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-remix/tree/app/root.tsx +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-remix/tree/app/routes/_index.tsx +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-remix/tree/app/routes/health.test.ts +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-remix/tree/app/routes/health.ts +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-remix/tree/package.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-remix/tree/tsconfig.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/stacks/ts-remix/verify.json +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/templates/userpromptsubmit-hook.sh +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/utils/__init__.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/utils/cache.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/utils/http_client.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio/utils/serialization.py +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio_cli.egg-info/dependency_links.txt +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio_cli.egg-info/entry_points.txt +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/simplicio_cli.egg-info/requires.txt +0 -0
- {simplicio_cli-0.5.16 → simplicio_cli-0.5.17}/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.5.
|
|
3
|
+
Version: 0.5.17
|
|
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
|
|
@@ -655,8 +655,7 @@ user prompt. UserPromptSubmit is the right pre-hook for routing decisions.
|
|
|
655
655
|
| GLM (z.ai) | `glm-4.6` | `https://api.z.ai/api/paas/v4` |
|
|
656
656
|
| DeepSeek | `deepseek-chat` | `https://api.deepseek.com` |
|
|
657
657
|
| OpenAI | `gpt-4.1` | `https://api.openai.com/v1` |
|
|
658
|
-
| Local (
|
|
659
|
-
| Local (in-process) | `local-llama/default` | *(leave unset)* |
|
|
658
|
+
| Local (llama.cpp) | `local-llama/default` | *(leave unset)* |
|
|
660
659
|
| Anthropic native | `claude-opus-4-7` | *(leave unset)* |
|
|
661
660
|
|
|
662
661
|
If `SIMPLICIO_BASE_URL` is unset and the key is `ANTHROPIC_API_KEY`, it uses the
|
|
@@ -667,30 +666,28 @@ your `base_url` — so **any** OpenAI-like provider works without code changes.
|
|
|
667
666
|
simplicio smoke # prints provider config + one test call
|
|
668
667
|
```
|
|
669
668
|
|
|
670
|
-
#### Path 4 — local
|
|
669
|
+
#### Path 4 — local llama.cpp GGUF default
|
|
671
670
|
|
|
672
671
|
When **no provider is configured** (`SIMPLICIO_MODEL` and
|
|
673
|
-
`SIMPLICIO_BASE_URL` both unset), simplicio
|
|
674
|
-
`openbmb/minicpm5:latest`. If that call fails, it falls back to the in-process
|
|
672
|
+
`SIMPLICIO_BASE_URL` both unset), simplicio runs the in-process
|
|
675
673
|
[`llama-cpp-python`](https://github.com/abetlen/llama-cpp-python) backend with
|
|
676
|
-
`
|
|
674
|
+
`local-llama/default`, currently
|
|
675
|
+
`bartowski/Qwen_Qwen3.5-2B-GGUF::Qwen_Qwen3.5-2B-Q6_K.gguf`.
|
|
677
676
|
|
|
678
677
|
```bash
|
|
679
678
|
pip install 'simplicio-cli[local]' # pulls llama-cpp-python + huggingface-hub
|
|
679
|
+
simplicio doctor --install # downloads/validates the default GGUF
|
|
680
680
|
|
|
681
681
|
simplicio task "add input validation to createUser" \
|
|
682
|
-
--target src/users.ts --local # forces local
|
|
682
|
+
--target src/users.ts --local # forces local llama.cpp
|
|
683
683
|
|
|
684
|
-
# the
|
|
684
|
+
# the GGUF is fetched once from the Hugging Face Hub, then reused
|
|
685
685
|
```
|
|
686
686
|
|
|
687
687
|
Explicit routes (override the default model/weights):
|
|
688
688
|
|
|
689
689
|
```bash
|
|
690
|
-
SIMPLICIO_MODEL=
|
|
691
|
-
SIMPLICIO_BASE_URL=http://localhost:11434/v1
|
|
692
|
-
SIMPLICIO_API_KEY=ollama
|
|
693
|
-
SIMPLICIO_MODEL=local-llama/default # Qwen_Qwen3.5-2B-Q6_K.gguf fallback
|
|
690
|
+
SIMPLICIO_MODEL=local-llama/default # Qwen_Qwen3.5-2B-Q6_K.gguf default
|
|
694
691
|
SIMPLICIO_MODEL=local-llama/bartowski/Qwen_Qwen3.5-2B-GGUF::Qwen_Qwen3.5-2B-Q6_K.gguf
|
|
695
692
|
SIMPLICIO_MODEL=local-llama//models/my-model.gguf # direct local path
|
|
696
693
|
SIMPLICIO_LOCAL_MODEL_PATH=/models/my-model.gguf # always wins
|
|
@@ -610,8 +610,7 @@ user prompt. UserPromptSubmit is the right pre-hook for routing decisions.
|
|
|
610
610
|
| GLM (z.ai) | `glm-4.6` | `https://api.z.ai/api/paas/v4` |
|
|
611
611
|
| DeepSeek | `deepseek-chat` | `https://api.deepseek.com` |
|
|
612
612
|
| OpenAI | `gpt-4.1` | `https://api.openai.com/v1` |
|
|
613
|
-
| Local (
|
|
614
|
-
| Local (in-process) | `local-llama/default` | *(leave unset)* |
|
|
613
|
+
| Local (llama.cpp) | `local-llama/default` | *(leave unset)* |
|
|
615
614
|
| Anthropic native | `claude-opus-4-7` | *(leave unset)* |
|
|
616
615
|
|
|
617
616
|
If `SIMPLICIO_BASE_URL` is unset and the key is `ANTHROPIC_API_KEY`, it uses the
|
|
@@ -622,30 +621,28 @@ your `base_url` — so **any** OpenAI-like provider works without code changes.
|
|
|
622
621
|
simplicio smoke # prints provider config + one test call
|
|
623
622
|
```
|
|
624
623
|
|
|
625
|
-
#### Path 4 — local
|
|
624
|
+
#### Path 4 — local llama.cpp GGUF default
|
|
626
625
|
|
|
627
626
|
When **no provider is configured** (`SIMPLICIO_MODEL` and
|
|
628
|
-
`SIMPLICIO_BASE_URL` both unset), simplicio
|
|
629
|
-
`openbmb/minicpm5:latest`. If that call fails, it falls back to the in-process
|
|
627
|
+
`SIMPLICIO_BASE_URL` both unset), simplicio runs the in-process
|
|
630
628
|
[`llama-cpp-python`](https://github.com/abetlen/llama-cpp-python) backend with
|
|
631
|
-
`
|
|
629
|
+
`local-llama/default`, currently
|
|
630
|
+
`bartowski/Qwen_Qwen3.5-2B-GGUF::Qwen_Qwen3.5-2B-Q6_K.gguf`.
|
|
632
631
|
|
|
633
632
|
```bash
|
|
634
633
|
pip install 'simplicio-cli[local]' # pulls llama-cpp-python + huggingface-hub
|
|
634
|
+
simplicio doctor --install # downloads/validates the default GGUF
|
|
635
635
|
|
|
636
636
|
simplicio task "add input validation to createUser" \
|
|
637
|
-
--target src/users.ts --local # forces local
|
|
637
|
+
--target src/users.ts --local # forces local llama.cpp
|
|
638
638
|
|
|
639
|
-
# the
|
|
639
|
+
# the GGUF is fetched once from the Hugging Face Hub, then reused
|
|
640
640
|
```
|
|
641
641
|
|
|
642
642
|
Explicit routes (override the default model/weights):
|
|
643
643
|
|
|
644
644
|
```bash
|
|
645
|
-
SIMPLICIO_MODEL=
|
|
646
|
-
SIMPLICIO_BASE_URL=http://localhost:11434/v1
|
|
647
|
-
SIMPLICIO_API_KEY=ollama
|
|
648
|
-
SIMPLICIO_MODEL=local-llama/default # Qwen_Qwen3.5-2B-Q6_K.gguf fallback
|
|
645
|
+
SIMPLICIO_MODEL=local-llama/default # Qwen_Qwen3.5-2B-Q6_K.gguf default
|
|
649
646
|
SIMPLICIO_MODEL=local-llama/bartowski/Qwen_Qwen3.5-2B-GGUF::Qwen_Qwen3.5-2B-Q6_K.gguf
|
|
650
647
|
SIMPLICIO_MODEL=local-llama//models/my-model.gguf # direct local path
|
|
651
648
|
SIMPLICIO_LOCAL_MODEL_PATH=/models/my-model.gguf # always wins
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "simplicio-cli"
|
|
3
|
-
version = "0.5.
|
|
3
|
+
version = "0.5.17"
|
|
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" }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.5.17"
|
|
@@ -91,8 +91,8 @@ def _add_task_args(p: argparse.ArgumentParser, *, target_required: bool) -> None
|
|
|
91
91
|
p.add_argument(
|
|
92
92
|
"--local",
|
|
93
93
|
action="store_true",
|
|
94
|
-
help="force local
|
|
95
|
-
"
|
|
94
|
+
help="force local llama.cpp with Qwen3.5 GGUF; overrides "
|
|
95
|
+
"SIMPLICIO_MODEL/SIMPLICIO_BASE_URL",
|
|
96
96
|
)
|
|
97
97
|
|
|
98
98
|
|
|
@@ -121,11 +121,11 @@ def _add_run_args(p: argparse.ArgumentParser) -> None:
|
|
|
121
121
|
|
|
122
122
|
def _force_local_if_requested(a: argparse.Namespace) -> None:
|
|
123
123
|
if getattr(a, "local", False):
|
|
124
|
-
# Force Path 4: local
|
|
125
|
-
#
|
|
126
|
-
os.environ["SIMPLICIO_MODEL"] = "
|
|
127
|
-
os.environ
|
|
128
|
-
os.environ.
|
|
124
|
+
# Force Path 4: local in-process llama.cpp. This keeps local execution
|
|
125
|
+
# independent from Ollama or any HTTP service.
|
|
126
|
+
os.environ["SIMPLICIO_MODEL"] = "local-llama/default"
|
|
127
|
+
os.environ.pop("SIMPLICIO_BASE_URL", None)
|
|
128
|
+
os.environ.pop("SIMPLICIO_API_KEY", None)
|
|
129
129
|
|
|
130
130
|
|
|
131
131
|
def _run_task_command(a: argparse.Namespace) -> int:
|
|
@@ -609,6 +609,11 @@ def main(argv=None):
|
|
|
609
609
|
p_status.add_argument("--root", default=".")
|
|
610
610
|
p_status.add_argument("--json", action="store_true")
|
|
611
611
|
|
|
612
|
+
p_doctor = sub.add_parser("doctor", help="check local llama.cpp readiness")
|
|
613
|
+
p_doctor.add_argument("--install", action="store_true")
|
|
614
|
+
p_doctor.add_argument("--json", action="store_true")
|
|
615
|
+
p_doctor.add_argument("--list-tiers", action="store_true")
|
|
616
|
+
|
|
612
617
|
p_env_export = sub.add_parser(
|
|
613
618
|
"env-export",
|
|
614
619
|
help="print shell-safe exports from a dotenv file without sourcing it",
|
|
@@ -678,6 +683,17 @@ def main(argv=None):
|
|
|
678
683
|
return detect_main(detect_argv)
|
|
679
684
|
elif a.cmd == "status":
|
|
680
685
|
return _run_status_command(a)
|
|
686
|
+
elif a.cmd == "doctor":
|
|
687
|
+
from .doctor import main as doctor_main
|
|
688
|
+
|
|
689
|
+
doctor_argv = []
|
|
690
|
+
if a.install:
|
|
691
|
+
doctor_argv.append("--install")
|
|
692
|
+
if a.json:
|
|
693
|
+
doctor_argv.append("--json")
|
|
694
|
+
if a.list_tiers:
|
|
695
|
+
doctor_argv.append("--list-tiers")
|
|
696
|
+
return doctor_main(doctor_argv)
|
|
681
697
|
elif a.cmd == "env-export":
|
|
682
698
|
from .runtime_env import parse_env_file, shell_export_lines
|
|
683
699
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""doctor.py — `simplicio doctor` subcommand.
|
|
2
2
|
|
|
3
3
|
Prints detected hardware tier + recommended local model + install status.
|
|
4
|
-
With --install, opt-in to
|
|
4
|
+
With --install, opt-in to downloading the recommended GGUF. Without
|
|
5
5
|
the flag, never touches the disk. With --json, machine-readable output.
|
|
6
6
|
"""
|
|
7
7
|
from __future__ import annotations
|
|
@@ -14,9 +14,7 @@ from .hardware import detect
|
|
|
14
14
|
from .local_models import (
|
|
15
15
|
RECOMMENDATIONS,
|
|
16
16
|
ensure_recommended,
|
|
17
|
-
|
|
18
|
-
ollama_list_installed,
|
|
19
|
-
ollama_present,
|
|
17
|
+
model_file_path,
|
|
20
18
|
)
|
|
21
19
|
|
|
22
20
|
|
|
@@ -34,46 +32,41 @@ def _render_human(result, profile) -> None:
|
|
|
34
32
|
print()
|
|
35
33
|
print("recommended doer model:")
|
|
36
34
|
print(f" label {result.spec.label}")
|
|
37
|
-
print(f"
|
|
35
|
+
print(f" model id {result.spec.model_id}")
|
|
36
|
+
print(f" repo {result.spec.repo_id}")
|
|
37
|
+
print(f" file {result.spec.filename}")
|
|
38
|
+
print(f" path {model_file_path(result.spec)}")
|
|
38
39
|
print(f" size (Q4) ~{result.spec.size_gb_q4:.1f} GB")
|
|
39
40
|
print(f" notes {result.spec.notes}")
|
|
40
41
|
print()
|
|
41
|
-
print(
|
|
42
|
+
print(" runtime llama.cpp via llama-cpp-python")
|
|
42
43
|
print(f" can run {'yes' if result.can_run else 'NO'}")
|
|
43
|
-
print(f" can
|
|
44
|
+
print(f" can download {'yes' if result.can_download else 'NO'}")
|
|
44
45
|
print(f" installed {'YES' if result.installed else 'no'}")
|
|
45
46
|
if result.reason:
|
|
46
47
|
print(f" status {result.reason}")
|
|
47
48
|
print()
|
|
48
49
|
if result.installed:
|
|
49
|
-
print("
|
|
50
|
-
print(f" export SIMPLICIO_MODEL={result.spec.
|
|
51
|
-
print(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
print("→ to install:")
|
|
50
|
+
print("-> set SIMPLICIO_MODEL to use it explicitly:")
|
|
51
|
+
print(f" export SIMPLICIO_MODEL={result.spec.model_id}")
|
|
52
|
+
print(" unset SIMPLICIO_BASE_URL SIMPLICIO_API_KEY")
|
|
53
|
+
elif result.can_download:
|
|
54
|
+
print("-> to install:")
|
|
55
55
|
print(" simplicio doctor --install")
|
|
56
|
-
print(
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
print(
|
|
57
|
+
f" (or manually download {result.spec.repo_id}/{result.spec.filename} "
|
|
58
|
+
f"to {model_file_path(result.spec)})"
|
|
59
|
+
)
|
|
59
60
|
else:
|
|
60
|
-
print("
|
|
61
|
+
print("-> hardware is too small for the recommended model; "
|
|
61
62
|
"consider a smaller stack or move to cloud (SIMPLICIO_MODEL = "
|
|
62
63
|
"OpenRouter/HF/etc.)")
|
|
63
64
|
|
|
64
|
-
other_installed = [m for m in ollama_list_installed()
|
|
65
|
-
if m != result.spec.ollama_id]
|
|
66
|
-
if other_installed:
|
|
67
|
-
print()
|
|
68
|
-
print("other Ollama models you have installed:")
|
|
69
|
-
for m in other_installed[:10]:
|
|
70
|
-
print(f" - {m}")
|
|
71
|
-
|
|
72
65
|
|
|
73
66
|
def main(argv: list[str] | None = None) -> int:
|
|
74
67
|
p = argparse.ArgumentParser(prog="simplicio doctor")
|
|
75
68
|
p.add_argument("--install", action="store_true",
|
|
76
|
-
help="opt-in:
|
|
69
|
+
help="opt-in: download the recommended GGUF if not present")
|
|
77
70
|
p.add_argument("--json", action="store_true",
|
|
78
71
|
help="machine-readable output")
|
|
79
72
|
p.add_argument("--list-tiers", action="store_true",
|
|
@@ -83,20 +76,26 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
83
76
|
if args.list_tiers:
|
|
84
77
|
if args.json:
|
|
85
78
|
print(json.dumps({
|
|
86
|
-
tier: {
|
|
87
|
-
|
|
79
|
+
tier: {
|
|
80
|
+
"model_id": s.model_id,
|
|
81
|
+
"repo_id": s.repo_id,
|
|
82
|
+
"filename": s.filename,
|
|
83
|
+
"label": s.label,
|
|
84
|
+
"size_gb_q4": s.size_gb_q4,
|
|
85
|
+
"notes": s.notes,
|
|
86
|
+
}
|
|
88
87
|
for tier, s in RECOMMENDATIONS.items()
|
|
89
88
|
}, indent=2))
|
|
90
89
|
else:
|
|
91
|
-
print(f"{'tier':14s} {'size':>7s}
|
|
90
|
+
print(f"{'tier':14s} {'size':>7s} model id")
|
|
92
91
|
print("-" * 80)
|
|
93
92
|
for tier, spec in RECOMMENDATIONS.items():
|
|
94
|
-
print(f"{tier:14s} {spec.size_gb_q4:5.1f}GB {spec.
|
|
95
|
-
print(f"
|
|
93
|
+
print(f"{tier:14s} {spec.size_gb_q4:5.1f}GB {spec.model_id}")
|
|
94
|
+
print(f" -> {spec.label} - {spec.notes}")
|
|
96
95
|
return 0
|
|
97
96
|
|
|
98
97
|
profile = detect()
|
|
99
|
-
result = ensure_recommended(profile,
|
|
98
|
+
result = ensure_recommended(profile, auto_download=args.install)
|
|
100
99
|
|
|
101
100
|
if args.json:
|
|
102
101
|
print(json.dumps(result.to_dict(), indent=2))
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
"""local_models.py - hardware-tier -> llama.cpp GGUF recommendation.
|
|
2
|
+
|
|
3
|
+
Encodes the local LLM standard:
|
|
4
|
+
|
|
5
|
+
all tiers -> local-llama/default
|
|
6
|
+
bartowski/Qwen_Qwen3.5-2B-GGUF::Qwen_Qwen3.5-2B-Q6_K.gguf
|
|
7
|
+
|
|
8
|
+
The model runs in-process through llama-cpp-python. No Ollama daemon, pull, or
|
|
9
|
+
HTTP endpoint is required for the default local path.
|
|
10
|
+
|
|
11
|
+
Hard rule (issue #32 follow-up):
|
|
12
|
+
- NEVER auto-download a model that does not fit the detected tier.
|
|
13
|
+
- Downloads require explicit opt-in (SIMPLICIO_AUTO_DOWNLOAD=1 or
|
|
14
|
+
`simplicio doctor --install`). We tell the user the command and stop.
|
|
15
|
+
"""
|
|
16
|
+
from __future__ import annotations
|
|
17
|
+
|
|
18
|
+
import os
|
|
19
|
+
from dataclasses import dataclass
|
|
20
|
+
from pathlib import Path
|
|
21
|
+
|
|
22
|
+
from .hardware import HardwareProfile
|
|
23
|
+
from .providers import (
|
|
24
|
+
LOCAL_DEFAULT_FILE as DEFAULT_LOCAL_FILE,
|
|
25
|
+
LOCAL_DEFAULT_REPO as DEFAULT_LOCAL_REPO,
|
|
26
|
+
LOCAL_EXECUTOR_DIR,
|
|
27
|
+
LOCAL_MODEL_PREFIX,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
DEFAULT_LOCAL_MODEL_ID = f"{LOCAL_MODEL_PREFIX}default"
|
|
32
|
+
DEFAULT_LOCAL_LABEL = "Qwen3.5 2B Q6_K GGUF (llama.cpp)"
|
|
33
|
+
DEFAULT_LOCAL_SIZE_GB = 1.6
|
|
34
|
+
DEFAULT_LOCAL_NOTES = (
|
|
35
|
+
"canonical local doer; runs in-process with llama-cpp-python, no Ollama service"
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@dataclass
|
|
40
|
+
class ModelSpec:
|
|
41
|
+
tier: str
|
|
42
|
+
model_id: str
|
|
43
|
+
repo_id: str
|
|
44
|
+
filename: str
|
|
45
|
+
size_gb_q4: float
|
|
46
|
+
label: str
|
|
47
|
+
notes: str = ""
|
|
48
|
+
|
|
49
|
+
@property
|
|
50
|
+
def ollama_id(self) -> str:
|
|
51
|
+
"""Backward-compatible read alias for older callers."""
|
|
52
|
+
return self.model_id
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
RECOMMENDATIONS: dict[str, ModelSpec] = {
|
|
56
|
+
tier: ModelSpec(
|
|
57
|
+
tier,
|
|
58
|
+
DEFAULT_LOCAL_MODEL_ID,
|
|
59
|
+
DEFAULT_LOCAL_REPO,
|
|
60
|
+
DEFAULT_LOCAL_FILE,
|
|
61
|
+
DEFAULT_LOCAL_SIZE_GB,
|
|
62
|
+
DEFAULT_LOCAL_LABEL,
|
|
63
|
+
DEFAULT_LOCAL_NOTES,
|
|
64
|
+
)
|
|
65
|
+
for tier in ("cpu-tiny", "cpu-small", "gpu-mid", "gpu-large", "gpu-xlarge", "unknown")
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def local_model_dir() -> Path:
|
|
70
|
+
return Path(os.environ.get("SIMPLICIO_LOCAL_MODEL_DIR", LOCAL_EXECUTOR_DIR)).expanduser()
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def model_file_path(spec: ModelSpec) -> Path:
|
|
74
|
+
override = os.environ.get("SIMPLICIO_LOCAL_MODEL_PATH")
|
|
75
|
+
if override:
|
|
76
|
+
return Path(override).expanduser()
|
|
77
|
+
return local_model_dir() / spec.filename
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def _is_gguf_file(path: Path) -> bool:
|
|
81
|
+
try:
|
|
82
|
+
with path.open("rb") as handle:
|
|
83
|
+
return handle.read(4) == b"GGUF"
|
|
84
|
+
except OSError:
|
|
85
|
+
return False
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def model_file_present(spec: ModelSpec) -> bool:
|
|
89
|
+
return _is_gguf_file(model_file_path(spec))
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def is_installed(spec: ModelSpec | str) -> bool:
|
|
93
|
+
if isinstance(spec, ModelSpec):
|
|
94
|
+
return model_file_present(spec)
|
|
95
|
+
if spec.endswith(".gguf"):
|
|
96
|
+
return _is_gguf_file(local_model_dir() / spec)
|
|
97
|
+
if spec == DEFAULT_LOCAL_MODEL_ID:
|
|
98
|
+
return model_file_present(RECOMMENDATIONS["unknown"])
|
|
99
|
+
return False
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def download(spec: ModelSpec) -> tuple[bool, str]:
|
|
103
|
+
"""Download the recommended GGUF into the executor model directory."""
|
|
104
|
+
try:
|
|
105
|
+
from huggingface_hub import hf_hub_download
|
|
106
|
+
except ImportError:
|
|
107
|
+
return (
|
|
108
|
+
False,
|
|
109
|
+
"huggingface-hub not installed. Install extras: pip install 'simplicio-cli[local]'",
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
target_dir = local_model_dir()
|
|
113
|
+
target_dir.mkdir(parents=True, exist_ok=True)
|
|
114
|
+
try:
|
|
115
|
+
path = Path(
|
|
116
|
+
hf_hub_download(
|
|
117
|
+
repo_id=spec.repo_id,
|
|
118
|
+
filename=spec.filename,
|
|
119
|
+
local_dir=str(target_dir),
|
|
120
|
+
)
|
|
121
|
+
)
|
|
122
|
+
except Exception as exc: # noqa: BLE001 - rendered as CLI status
|
|
123
|
+
return False, str(exc)
|
|
124
|
+
if not _is_gguf_file(path):
|
|
125
|
+
return False, f"{path} is not a valid GGUF file"
|
|
126
|
+
return True, str(path)
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
@dataclass
|
|
130
|
+
class RecommendationResult:
|
|
131
|
+
spec: ModelSpec
|
|
132
|
+
profile: HardwareProfile
|
|
133
|
+
can_run: bool
|
|
134
|
+
can_download: bool
|
|
135
|
+
installed: bool
|
|
136
|
+
reason: str = ""
|
|
137
|
+
|
|
138
|
+
@property
|
|
139
|
+
def can_pull(self) -> bool:
|
|
140
|
+
"""Backward-compatible read alias for older callers."""
|
|
141
|
+
return self.can_download
|
|
142
|
+
|
|
143
|
+
def to_dict(self) -> dict:
|
|
144
|
+
return {
|
|
145
|
+
"tier": self.spec.tier,
|
|
146
|
+
"model_id": self.spec.model_id,
|
|
147
|
+
"repo_id": self.spec.repo_id,
|
|
148
|
+
"filename": self.spec.filename,
|
|
149
|
+
"model_path": str(model_file_path(self.spec)),
|
|
150
|
+
"label": self.spec.label,
|
|
151
|
+
"size_gb_q4": self.spec.size_gb_q4,
|
|
152
|
+
"notes": self.spec.notes,
|
|
153
|
+
"ram_gb": round(self.profile.ram_gb, 1),
|
|
154
|
+
"vram_gb": round(self.profile.vram_gb, 1),
|
|
155
|
+
"gpu": self.profile.gpu_name,
|
|
156
|
+
"apple_silicon": self.profile.apple_silicon,
|
|
157
|
+
"can_run": self.can_run,
|
|
158
|
+
"can_download": self.can_download,
|
|
159
|
+
"installed": self.installed,
|
|
160
|
+
"reason": self.reason,
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
# Safety margin: refuse to download if the detected resource is not at least
|
|
165
|
+
# (size + margin). We do not want a local automation flow to fill disk/RAM with
|
|
166
|
+
# a model it cannot actually run.
|
|
167
|
+
_SAFETY_MARGIN_GB = 4.0
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
def evaluate(profile: HardwareProfile) -> RecommendationResult:
|
|
171
|
+
"""Pick the local GGUF spec and decide whether the host can run/download it."""
|
|
172
|
+
spec = RECOMMENDATIONS.get(profile.tier, RECOMMENDATIONS["unknown"])
|
|
173
|
+
|
|
174
|
+
if profile.apple_silicon:
|
|
175
|
+
usable_gb = profile.ram_gb
|
|
176
|
+
else:
|
|
177
|
+
usable_gb = max(profile.vram_gb, profile.ram_gb)
|
|
178
|
+
needed_gb = spec.size_gb_q4 + _SAFETY_MARGIN_GB
|
|
179
|
+
|
|
180
|
+
can_run = usable_gb >= needed_gb
|
|
181
|
+
installed = is_installed(spec)
|
|
182
|
+
can_download = can_run and not installed
|
|
183
|
+
reason = ""
|
|
184
|
+
if not can_run:
|
|
185
|
+
reason = (
|
|
186
|
+
f"detected {usable_gb:.1f} GB usable < {needed_gb:.1f} GB "
|
|
187
|
+
f"required for {spec.label} (size {spec.size_gb_q4:.1f} GB + "
|
|
188
|
+
f"{_SAFETY_MARGIN_GB:.0f} GB safety margin)"
|
|
189
|
+
)
|
|
190
|
+
elif not installed:
|
|
191
|
+
reason = f"local GGUF not installed at {model_file_path(spec)}"
|
|
192
|
+
|
|
193
|
+
return RecommendationResult(
|
|
194
|
+
spec=spec,
|
|
195
|
+
profile=profile,
|
|
196
|
+
can_run=can_run,
|
|
197
|
+
can_download=can_download,
|
|
198
|
+
installed=installed,
|
|
199
|
+
reason=reason,
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
def ensure_recommended(
|
|
204
|
+
profile: HardwareProfile,
|
|
205
|
+
auto_download: bool = False,
|
|
206
|
+
*,
|
|
207
|
+
auto_pull: bool | None = None,
|
|
208
|
+
) -> RecommendationResult:
|
|
209
|
+
"""High-level orchestrator for the default local llama.cpp model.
|
|
210
|
+
|
|
211
|
+
If the recommended GGUF is missing and auto_download is true, download it.
|
|
212
|
+
Otherwise return a result the CLI can render so the user knows what to do.
|
|
213
|
+
`auto_pull` remains as a keyword-only alias for older code paths, but still
|
|
214
|
+
performs a GGUF download rather than any Ollama action.
|
|
215
|
+
"""
|
|
216
|
+
if auto_pull is not None:
|
|
217
|
+
auto_download = auto_download or auto_pull
|
|
218
|
+
|
|
219
|
+
result = evaluate(profile)
|
|
220
|
+
if result.installed:
|
|
221
|
+
return result
|
|
222
|
+
if not result.can_download:
|
|
223
|
+
return result
|
|
224
|
+
|
|
225
|
+
do_download = auto_download or os.environ.get(
|
|
226
|
+
"SIMPLICIO_AUTO_DOWNLOAD", ""
|
|
227
|
+
).strip() in ("1", "true", "True", "yes")
|
|
228
|
+
if not do_download:
|
|
229
|
+
result.reason = (
|
|
230
|
+
"model not installed - opt in to download with "
|
|
231
|
+
"`simplicio doctor --install` or `SIMPLICIO_AUTO_DOWNLOAD=1 ...` "
|
|
232
|
+
f"(will fetch ~{result.spec.size_gb_q4:.1f} GB)"
|
|
233
|
+
)
|
|
234
|
+
return result
|
|
235
|
+
|
|
236
|
+
ok, log = download(result.spec)
|
|
237
|
+
if ok:
|
|
238
|
+
result.installed = True
|
|
239
|
+
result.can_download = False
|
|
240
|
+
result.reason = f"downloaded GGUF to {log}"
|
|
241
|
+
else:
|
|
242
|
+
result.reason = f"GGUF download failed: {log[-300:]}"
|
|
243
|
+
return result
|