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.
Files changed (415) hide show
  1. {simplicio_cli-0.8.0/simplicio_cli.egg-info → simplicio_cli-0.9.1}/PKG-INFO +2 -2
  2. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/pyproject.toml +2 -2
  3. simplicio_cli-0.9.1/simplicio/__init__.py +1 -0
  4. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/cli.py +165 -8
  5. simplicio_cli-0.9.1/simplicio/commands/file_read.py +155 -0
  6. simplicio_cli-0.9.1/simplicio/commands/test_run.py +236 -0
  7. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/mapper.py +76 -0
  8. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1/simplicio_cli.egg-info}/PKG-INFO +2 -2
  9. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio_cli.egg-info/SOURCES.txt +2 -18
  10. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio_cli.egg-info/requires.txt +1 -1
  11. simplicio_cli-0.8.0/simplicio/__init__.py +0 -1
  12. simplicio_cli-0.8.0/simplicio/templates/stacks/py-cli/tree/src/app/__pycache__/__init__.cpython-314.pyc +0 -0
  13. simplicio_cli-0.8.0/simplicio/templates/stacks/py-cli/tree/src/app/__pycache__/cli.cpython-314.pyc +0 -0
  14. simplicio_cli-0.8.0/simplicio/templates/stacks/py-cli/tree/tests/__pycache__/test_cli.cpython-314.pyc +0 -0
  15. simplicio_cli-0.8.0/simplicio/templates/stacks/py-django/tree/__pycache__/manage.cpython-314.pyc +0 -0
  16. simplicio_cli-0.8.0/simplicio/templates/stacks/py-django/tree/app/__pycache__/__init__.cpython-314.pyc +0 -0
  17. simplicio_cli-0.8.0/simplicio/templates/stacks/py-django/tree/app/__pycache__/apps.cpython-314.pyc +0 -0
  18. simplicio_cli-0.8.0/simplicio/templates/stacks/py-django/tree/app/__pycache__/tests.cpython-314.pyc +0 -0
  19. simplicio_cli-0.8.0/simplicio/templates/stacks/py-django/tree/app/__pycache__/views.cpython-314.pyc +0 -0
  20. simplicio_cli-0.8.0/simplicio/templates/stacks/py-django/tree/config/__pycache__/__init__.cpython-314.pyc +0 -0
  21. simplicio_cli-0.8.0/simplicio/templates/stacks/py-django/tree/config/__pycache__/asgi.cpython-314.pyc +0 -0
  22. simplicio_cli-0.8.0/simplicio/templates/stacks/py-django/tree/config/__pycache__/settings.cpython-314.pyc +0 -0
  23. simplicio_cli-0.8.0/simplicio/templates/stacks/py-django/tree/config/__pycache__/urls.cpython-314.pyc +0 -0
  24. simplicio_cli-0.8.0/simplicio/templates/stacks/py-django/tree/config/__pycache__/wsgi.cpython-314.pyc +0 -0
  25. simplicio_cli-0.8.0/simplicio/templates/stacks/py-fastapi/tree/src/__pycache__/main.cpython-314.pyc +0 -0
  26. simplicio_cli-0.8.0/simplicio/templates/stacks/py-fastapi/tree/src/api/__pycache__/__init__.cpython-314.pyc +0 -0
  27. simplicio_cli-0.8.0/simplicio/templates/stacks/py-fastapi/tree/tests/__pycache__/test_health.cpython-314.pyc +0 -0
  28. simplicio_cli-0.8.0/simplicio/templates/stacks/py-flask/tree/src/__pycache__/app.cpython-314.pyc +0 -0
  29. simplicio_cli-0.8.0/simplicio/templates/stacks/py-flask/tree/tests/__pycache__/test_health.cpython-314.pyc +0 -0
  30. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/LICENSE +0 -0
  31. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/README.md +0 -0
  32. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/setup.cfg +0 -0
  33. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/_cache.py +0 -0
  34. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/adaptive.py +0 -0
  35. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/bench.py +0 -0
  36. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/cache.py +0 -0
  37. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/cache_cli.py +0 -0
  38. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/commands/__init__.py +0 -0
  39. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/commands/claims.py +0 -0
  40. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/commands/gate.py +0 -0
  41. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/commands/nest.py +0 -0
  42. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/commands/score_skill.py +0 -0
  43. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/detect.py +0 -0
  44. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/doctor.py +0 -0
  45. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/dod.py +0 -0
  46. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/ecosystem.py +0 -0
  47. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/hardware.py +0 -0
  48. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/init.py +0 -0
  49. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/intent.py +0 -0
  50. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/local_models.py +0 -0
  51. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/mechanical_edit.py +0 -0
  52. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/observability.py +0 -0
  53. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/orchestrator/__init__.py +0 -0
  54. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/orchestrator/cost_governor.py +0 -0
  55. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/orchestrator/feature.py +0 -0
  56. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/pipeline.py +0 -0
  57. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/pipeline_fixers.py +0 -0
  58. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/precedent.py +0 -0
  59. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/prompt.py +0 -0
  60. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/providers.py +0 -0
  61. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/runtime_bridge.py +0 -0
  62. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/runtime_contracts.py +0 -0
  63. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/runtime_env.py +0 -0
  64. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/__init__.py +0 -0
  65. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/_pipeline_adapter.py +0 -0
  66. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/cli.py +0 -0
  67. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/__init__.py +0 -0
  68. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/go_gin.py +0 -0
  69. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/markdown_document.py +0 -0
  70. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/php_laravel.py +0 -0
  71. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/python_cst.py +0 -0
  72. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/python_fastapi.py +0 -0
  73. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/python_orm.py +0 -0
  74. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/python_pydantic.py +0 -0
  75. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/python_pytest.py +0 -0
  76. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/registry.py +0 -0
  77. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/rust_axum.py +0 -0
  78. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/types.py +0 -0
  79. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/typescript_next_page.py +0 -0
  80. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/codegen/typescript_next_route.py +0 -0
  81. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/executor.py +0 -0
  82. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/plan_schema.py +0 -0
  83. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/planner.py +0 -0
  84. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/recipes.py +0 -0
  85. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/skill_opt.py +0 -0
  86. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/scratch/stack_registry.py +0 -0
  87. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/skill_router.py +0 -0
  88. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/sprint_loader.py +0 -0
  89. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/SKILL.md +0 -0
  90. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/go-gin/admin-crud.yaml +0 -0
  91. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/go-gin/auth-jwt.yaml +0 -0
  92. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/go-gin/crud-resource.yaml +0 -0
  93. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/php-laravel/admin-crud.yaml +0 -0
  94. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/php-laravel/auth-jwt.yaml +0 -0
  95. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/php-laravel/crud-resource.yaml +0 -0
  96. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/php-vanilla/docs-marker.yaml +0 -0
  97. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/py-fastapi/admin-crud.yaml +0 -0
  98. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/py-fastapi/auth-jwt.yaml +0 -0
  99. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/py-fastapi/background-worker.yaml +0 -0
  100. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/py-fastapi/crud-resource.yaml +0 -0
  101. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/py-fastapi/file-upload.yaml +0 -0
  102. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/py-fastapi/oauth-integration.yaml +0 -0
  103. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/py-fastapi/scheduled-job.yaml +0 -0
  104. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/py-fastapi/websocket.yaml +0 -0
  105. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/rust-axum/admin-crud.yaml +0 -0
  106. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/rust-axum/auth-jwt.yaml +0 -0
  107. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/rust-axum/crud-resource.yaml +0 -0
  108. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/ts-nextjs/admin-crud.yaml +0 -0
  109. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/ts-nextjs/auth-jwt.yaml +0 -0
  110. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/recipes/ts-nextjs/crud-resource.yaml +0 -0
  111. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/simplicio_prompt.md +0 -0
  112. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/bash-cli/README.md +0 -0
  113. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/bash-cli/practices.md +0 -0
  114. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/bash-cli/stack.json +0 -0
  115. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/bash-cli/tree/README.md +0 -0
  116. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/bash-cli/tree/bin/app.sh +0 -0
  117. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/bash-cli/tree/test/app.bats +0 -0
  118. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/bash-cli/verify.json +0 -0
  119. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-aspnet/README.md +0 -0
  120. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-aspnet/practices.md +0 -0
  121. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-aspnet/stack.json +0 -0
  122. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-aspnet/tree/README.md +0 -0
  123. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-aspnet/tree/src/App.Api/App.Api.csproj +0 -0
  124. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-aspnet/tree/src/App.Api/Program.cs +0 -0
  125. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-aspnet/tree/tests/App.Tests/App.Tests.csproj +0 -0
  126. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-aspnet/tree/tests/App.Tests/HealthTests.cs +0 -0
  127. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-aspnet/verify.json +0 -0
  128. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-blazor/README.md +0 -0
  129. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-blazor/practices.md +0 -0
  130. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-blazor/stack.json +0 -0
  131. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-blazor/tree/README.md +0 -0
  132. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/App.Web.csproj +0 -0
  133. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/Components/App.razor +0 -0
  134. {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
  135. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/Program.cs +0 -0
  136. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-blazor/tree/tests/App.Tests/App.Tests.csproj +0 -0
  137. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-blazor/tree/tests/App.Tests/HealthTests.cs +0 -0
  138. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/csharp-blazor/verify.json +0 -0
  139. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/dart-flutter/README.md +0 -0
  140. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/dart-flutter/practices.md +0 -0
  141. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/dart-flutter/stack.json +0 -0
  142. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/dart-flutter/tree/README.md +0 -0
  143. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/dart-flutter/tree/lib/main.dart +0 -0
  144. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/dart-flutter/tree/pubspec.yaml +0 -0
  145. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/dart-flutter/tree/test/widget_test.dart +0 -0
  146. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/dart-flutter/verify.json +0 -0
  147. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/README.md +0 -0
  148. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/practices.md +0 -0
  149. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/stack.json +0 -0
  150. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/tree/README.md +0 -0
  151. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/tree/config/config.exs +0 -0
  152. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app/application.ex +0 -0
  153. {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
  154. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app_web/endpoint.ex +0 -0
  155. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app_web/router.ex +0 -0
  156. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/tree/mix.exs +0 -0
  157. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/tree/test/health_controller_test.exs +0 -0
  158. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/tree/test/test_helper.exs +0 -0
  159. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/elixir-phoenix/verify.json +0 -0
  160. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-cli/README.md +0 -0
  161. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-cli/practices.md +0 -0
  162. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-cli/stack.json +0 -0
  163. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-cli/tree/README.md +0 -0
  164. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-cli/tree/cmd/root.go +0 -0
  165. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-cli/tree/cmd/root_test.go +0 -0
  166. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-cli/tree/go.mod +0 -0
  167. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-cli/tree/main.go +0 -0
  168. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-cli/verify.json +0 -0
  169. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-echo/README.md +0 -0
  170. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-echo/practices.md +0 -0
  171. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-echo/stack.json +0 -0
  172. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-echo/tree/README.md +0 -0
  173. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-echo/tree/cmd/server/main.go +0 -0
  174. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-echo/tree/go.mod +0 -0
  175. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-echo/tree/internal/http/router.go +0 -0
  176. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-echo/tree/internal/http/router_test.go +0 -0
  177. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-echo/verify.json +0 -0
  178. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-gin/README.md +0 -0
  179. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-gin/practices.md +0 -0
  180. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-gin/stack.json +0 -0
  181. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-gin/tree/README.md +0 -0
  182. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-gin/tree/cmd/server/main.go +0 -0
  183. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-gin/tree/go.mod +0 -0
  184. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-gin/tree/internal/http/router.go +0 -0
  185. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-gin/tree/internal/http/router_test.go +0 -0
  186. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/go-gin/verify.json +0 -0
  187. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/java-spring/README.md +0 -0
  188. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/java-spring/practices.md +0 -0
  189. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/java-spring/stack.json +0 -0
  190. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/java-spring/tree/README.md +0 -0
  191. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/java-spring/tree/build.gradle.kts +0 -0
  192. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/java-spring/tree/settings.gradle.kts +0 -0
  193. {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
  194. {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
  195. {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
  196. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/java-spring/verify.json +0 -0
  197. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/js-express/README.md +0 -0
  198. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/js-express/practices.md +0 -0
  199. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/js-express/stack.json +0 -0
  200. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/js-express/tree/README.md +0 -0
  201. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/js-express/tree/package.json +0 -0
  202. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/js-express/tree/src/app.js +0 -0
  203. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/js-express/tree/src/server.js +0 -0
  204. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/js-express/tree/tests/health.test.js +0 -0
  205. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/js-express/verify.json +0 -0
  206. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-android/README.md +0 -0
  207. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-android/practices.md +0 -0
  208. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-android/stack.json +0 -0
  209. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-android/tree/README.md +0 -0
  210. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-android/tree/app/build.gradle.kts +0 -0
  211. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-android/tree/app/src/main/AndroidManifest.xml +0 -0
  212. {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
  213. {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
  214. {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
  215. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-android/tree/build.gradle.kts +0 -0
  216. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-android/tree/settings.gradle.kts +0 -0
  217. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-android/verify.json +0 -0
  218. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-ktor/README.md +0 -0
  219. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-ktor/practices.md +0 -0
  220. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-ktor/stack.json +0 -0
  221. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-ktor/tree/README.md +0 -0
  222. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-ktor/tree/build.gradle.kts +0 -0
  223. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-ktor/tree/settings.gradle.kts +0 -0
  224. {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
  225. {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
  226. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-ktor/verify.json +0 -0
  227. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-spring/README.md +0 -0
  228. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-spring/practices.md +0 -0
  229. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-spring/stack.json +0 -0
  230. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-spring/tree/README.md +0 -0
  231. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-spring/tree/build.gradle.kts +0 -0
  232. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-spring/tree/settings.gradle.kts +0 -0
  233. {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
  234. {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
  235. {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
  236. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/kotlin-spring/verify.json +0 -0
  237. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/README.md +0 -0
  238. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/practices.md +0 -0
  239. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/stack.json +0 -0
  240. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/tree/README.md +0 -0
  241. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/tree/artisan +0 -0
  242. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/tree/bootstrap/app.php +0 -0
  243. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/tree/composer.json +0 -0
  244. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/tree/phpunit.xml +0 -0
  245. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/tree/routes/api.php +0 -0
  246. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/tree/routes/console.php +0 -0
  247. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/tree/tests/Feature/HealthTest.php +0 -0
  248. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/tree/tests/TestCase.php +0 -0
  249. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-laravel/verify.json +0 -0
  250. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-symfony/README.md +0 -0
  251. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-symfony/practices.md +0 -0
  252. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-symfony/stack.json +0 -0
  253. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-symfony/tree/README.md +0 -0
  254. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-symfony/tree/composer.json +0 -0
  255. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-symfony/tree/src/Controller/HealthController.php +0 -0
  256. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-symfony/tree/tests/HealthControllerTest.php +0 -0
  257. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-symfony/verify.json +0 -0
  258. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-vanilla/README.md +0 -0
  259. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-vanilla/practices.md +0 -0
  260. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-vanilla/stack.json +0 -0
  261. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-vanilla/tree/README.md +0 -0
  262. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-vanilla/tree/composer.json +0 -0
  263. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-vanilla/tree/phpunit.xml +0 -0
  264. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-vanilla/tree/src/Health.php +0 -0
  265. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-vanilla/tree/tests/HealthTest.php +0 -0
  266. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/php-vanilla/verify.json +0 -0
  267. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-cli/README.md +0 -0
  268. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-cli/practices.md +0 -0
  269. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-cli/stack.json +0 -0
  270. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-cli/tree/README.md +0 -0
  271. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-cli/tree/pyproject.toml +0 -0
  272. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-cli/tree/src/app/__init__.py +0 -0
  273. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-cli/tree/src/app/cli.py +0 -0
  274. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-cli/tree/tests/test_cli.py +0 -0
  275. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-cli/verify.json +0 -0
  276. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/README.md +0 -0
  277. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/practices.md +0 -0
  278. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/stack.json +0 -0
  279. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/README.md +0 -0
  280. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/app/__init__.py +0 -0
  281. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/app/apps.py +0 -0
  282. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/app/tests.py +0 -0
  283. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/app/views.py +0 -0
  284. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/config/__init__.py +0 -0
  285. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/config/asgi.py +0 -0
  286. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/config/settings.py +0 -0
  287. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/config/urls.py +0 -0
  288. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/config/wsgi.py +0 -0
  289. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/manage.py +0 -0
  290. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/tree/pyproject.toml +0 -0
  291. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-django/verify.json +0 -0
  292. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-fastapi/README.md +0 -0
  293. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-fastapi/practices.md +0 -0
  294. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-fastapi/stack.json +0 -0
  295. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-fastapi/tree/.gitignore +0 -0
  296. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-fastapi/tree/README.template.md +0 -0
  297. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-fastapi/tree/pyproject.toml +0 -0
  298. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-fastapi/tree/ruff.toml +0 -0
  299. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-fastapi/tree/src/api/__init__.py +0 -0
  300. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-fastapi/tree/src/main.py +0 -0
  301. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-fastapi/tree/tests/test_health.py +0 -0
  302. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-fastapi/verify.json +0 -0
  303. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-flask/README.md +0 -0
  304. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-flask/practices.md +0 -0
  305. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-flask/stack.json +0 -0
  306. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-flask/tree/README.md +0 -0
  307. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-flask/tree/pyproject.toml +0 -0
  308. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-flask/tree/ruff.toml +0 -0
  309. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-flask/tree/src/app.py +0 -0
  310. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-flask/tree/tests/test_health.py +0 -0
  311. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/py-flask/verify.json +0 -0
  312. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/react-vite/README.md +0 -0
  313. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/react-vite/practices.md +0 -0
  314. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/react-vite/stack.json +0 -0
  315. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/react-vite/tree/README.md +0 -0
  316. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/react-vite/tree/index.html +0 -0
  317. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/react-vite/tree/package.json +0 -0
  318. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/react-vite/tree/src/App.test.tsx +0 -0
  319. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/react-vite/tree/src/App.tsx +0 -0
  320. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/react-vite/tree/src/main.tsx +0 -0
  321. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/react-vite/tree/tsconfig.json +0 -0
  322. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/react-vite/verify.json +0 -0
  323. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/README.md +0 -0
  324. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/practices.md +0 -0
  325. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/stack.json +0 -0
  326. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/tree/Gemfile +0 -0
  327. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/tree/README.md +0 -0
  328. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/tree/app/controllers/health_controller.rb +0 -0
  329. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/tree/bin/rails +0 -0
  330. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/tree/config/application.rb +0 -0
  331. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/tree/config/boot.rb +0 -0
  332. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/tree/config/routes.rb +0 -0
  333. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/tree/test/controllers/health_controller_test.rb +0 -0
  334. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/tree/test/test_helper.rb +0 -0
  335. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ruby-rails/verify.json +0 -0
  336. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-axum/README.md +0 -0
  337. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-axum/practices.md +0 -0
  338. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-axum/stack.json +0 -0
  339. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-axum/tree/Cargo.toml +0 -0
  340. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-axum/tree/README.md +0 -0
  341. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-axum/tree/src/main.rs +0 -0
  342. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-axum/verify.json +0 -0
  343. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-cli/README.md +0 -0
  344. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-cli/practices.md +0 -0
  345. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-cli/stack.json +0 -0
  346. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-cli/tree/Cargo.toml +0 -0
  347. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-cli/tree/README.md +0 -0
  348. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-cli/tree/src/main.rs +0 -0
  349. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-cli/verify.json +0 -0
  350. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-leptos/README.md +0 -0
  351. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-leptos/practices.md +0 -0
  352. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-leptos/stack.json +0 -0
  353. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-leptos/tree/Cargo.toml +0 -0
  354. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-leptos/tree/README.md +0 -0
  355. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-leptos/tree/src/main.rs +0 -0
  356. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/rust-leptos/verify.json +0 -0
  357. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-ios/README.md +0 -0
  358. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-ios/practices.md +0 -0
  359. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-ios/stack.json +0 -0
  360. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-ios/tree/README.md +0 -0
  361. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-ios/tree/Sources/App/App.swift +0 -0
  362. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-ios/tree/Sources/App/ContentView.swift +0 -0
  363. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-ios/tree/Tests/AppTests/AppTests.swift +0 -0
  364. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-ios/verify.json +0 -0
  365. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-vapor/README.md +0 -0
  366. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-vapor/practices.md +0 -0
  367. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-vapor/stack.json +0 -0
  368. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-vapor/tree/Package.swift +0 -0
  369. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-vapor/tree/README.md +0 -0
  370. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-vapor/tree/Sources/App/main.swift +0 -0
  371. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-vapor/tree/Tests/AppTests/HealthTests.swift +0 -0
  372. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/swift-vapor/verify.json +0 -0
  373. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nestjs/README.md +0 -0
  374. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nestjs/practices.md +0 -0
  375. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nestjs/stack.json +0 -0
  376. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nestjs/tree/README.md +0 -0
  377. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nestjs/tree/package.json +0 -0
  378. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nestjs/tree/src/app.controller.spec.ts +0 -0
  379. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nestjs/tree/src/app.controller.ts +0 -0
  380. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nestjs/tree/src/app.module.ts +0 -0
  381. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nestjs/tree/src/main.ts +0 -0
  382. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nestjs/tree/tsconfig.json +0 -0
  383. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nestjs/verify.json +0 -0
  384. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/README.md +0 -0
  385. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/practices.md +0 -0
  386. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/stack.json +0 -0
  387. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/tree/.eslintrc.json +0 -0
  388. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/tree/.gitignore +0 -0
  389. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/tree/next.config.mjs +0 -0
  390. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/tree/package.json +0 -0
  391. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/tree/pnpm-workspace.yaml +0 -0
  392. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/tree/src/app/layout.tsx +0 -0
  393. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/tree/src/app/page.tsx +0 -0
  394. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/tree/tsconfig.json +0 -0
  395. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-nextjs/verify.json +0 -0
  396. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-remix/README.md +0 -0
  397. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-remix/practices.md +0 -0
  398. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-remix/stack.json +0 -0
  399. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-remix/tree/README.md +0 -0
  400. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-remix/tree/app/root.tsx +0 -0
  401. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-remix/tree/app/routes/_index.tsx +0 -0
  402. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-remix/tree/app/routes/health.test.ts +0 -0
  403. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-remix/tree/app/routes/health.ts +0 -0
  404. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-remix/tree/package.json +0 -0
  405. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-remix/tree/tsconfig.json +0 -0
  406. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/stacks/ts-remix/verify.json +0 -0
  407. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/templates/userpromptsubmit-hook.sh +0 -0
  408. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/token_primitives.py +0 -0
  409. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/utils/__init__.py +0 -0
  410. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/utils/cache.py +0 -0
  411. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/utils/http_client.py +0 -0
  412. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio/utils/serialization.py +0 -0
  413. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio_cli.egg-info/dependency_links.txt +0 -0
  414. {simplicio_cli-0.8.0 → simplicio_cli-0.9.1}/simplicio_cli.egg-info/entry_points.txt +0 -0
  415. {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.8.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.11.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.8.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.11.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
- state_path = Path(a.root) / ".simplicio" / "sprint_state.json"
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 = {"state": "none", "path": str(state_path)}
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(payload, sort_keys=True))
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)