simplicio-cli 0.9.6__tar.gz → 0.10.0__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 (423) hide show
  1. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/PKG-INFO +12 -12
  2. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/README.md +10 -11
  3. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/pyproject.toml +12 -12
  4. simplicio_cli-0.10.0/simplicio/__init__.py +5 -0
  5. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/_cache.py +13 -1
  6. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/bench.py +21 -8
  7. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/cli.py +66 -61
  8. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/_shared.py +5 -1
  9. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/run.py +2 -1
  10. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/test_run.py +6 -2
  11. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/dod.py +39 -11
  12. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/ecosystem.py +15 -8
  13. simplicio_cli-0.10.0/simplicio/mapper_api.py +34 -0
  14. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/mechanical_edit.py +4 -4
  15. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/memory_store.py +2 -1
  16. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/observability.py +54 -27
  17. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/pipeline.py +5 -6
  18. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/precedent.py +1 -1
  19. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/providers.py +66 -105
  20. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/runtime_env.py +117 -58
  21. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/cli.py +2 -1
  22. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/skill_router.py +11 -6
  23. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/token_primitives.py +4 -2
  24. simplicio_cli-0.10.0/simplicio/utils/fs.py +27 -0
  25. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio_cli.egg-info/PKG-INFO +12 -12
  26. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio_cli.egg-info/SOURCES.txt +2 -2
  27. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio_cli.egg-info/requires.txt +1 -1
  28. simplicio_cli-0.9.6/simplicio/__init__.py +0 -1
  29. simplicio_cli-0.9.6/simplicio/commands/serve.py +0 -22
  30. simplicio_cli-0.9.6/simplicio/mcp_server.py +0 -261
  31. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/LICENSE +0 -0
  32. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/setup.cfg +0 -0
  33. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/adaptive.py +0 -0
  34. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/cache.py +0 -0
  35. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/cache_cli.py +0 -0
  36. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/__init__.py +0 -0
  37. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/bench.py +0 -0
  38. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/cache.py +0 -0
  39. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/claims.py +0 -0
  40. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/detect.py +0 -0
  41. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/doctor.py +0 -0
  42. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/edit.py +0 -0
  43. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/env_export.py +0 -0
  44. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/file.py +0 -0
  45. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/file_read.py +0 -0
  46. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/gate.py +0 -0
  47. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/index.py +0 -0
  48. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/init.py +0 -0
  49. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/inspect.py +0 -0
  50. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/memory.py +0 -0
  51. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/nest.py +0 -0
  52. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/runtime.py +0 -0
  53. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/score_skill.py +0 -0
  54. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/smoke.py +0 -0
  55. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/status.py +0 -0
  56. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/task.py +0 -0
  57. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/test.py +0 -0
  58. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/commands/token.py +0 -0
  59. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/detect.py +0 -0
  60. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/doctor.py +0 -0
  61. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/hardware.py +0 -0
  62. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/init.py +0 -0
  63. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/intent.py +0 -0
  64. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/local_models.py +0 -0
  65. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/mapper.py +0 -0
  66. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/orchestrator/__init__.py +0 -0
  67. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/orchestrator/cost_governor.py +0 -0
  68. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/orchestrator/feature.py +0 -0
  69. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/pipeline_fixers.py +0 -0
  70. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/prompt.py +0 -0
  71. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/py.typed +0 -0
  72. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/runtime_bridge.py +0 -0
  73. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/runtime_contracts.py +0 -0
  74. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/__init__.py +0 -0
  75. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/_pipeline_adapter.py +0 -0
  76. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/__init__.py +0 -0
  77. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/go_gin.py +0 -0
  78. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/markdown_document.py +0 -0
  79. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/php_laravel.py +0 -0
  80. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/python_cst.py +0 -0
  81. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/python_fastapi.py +0 -0
  82. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/python_orm.py +0 -0
  83. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/python_pydantic.py +0 -0
  84. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/python_pytest.py +0 -0
  85. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/registry.py +0 -0
  86. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/rust_axum.py +0 -0
  87. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/types.py +0 -0
  88. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/typescript_next_page.py +0 -0
  89. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/codegen/typescript_next_route.py +0 -0
  90. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/executor.py +0 -0
  91. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/plan_schema.py +0 -0
  92. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/planner.py +0 -0
  93. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/recipes.py +0 -0
  94. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/skill_opt.py +0 -0
  95. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/scratch/stack_registry.py +0 -0
  96. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/sprint_loader.py +0 -0
  97. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/SKILL.md +0 -0
  98. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/go-gin/admin-crud.yaml +0 -0
  99. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/go-gin/auth-jwt.yaml +0 -0
  100. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/go-gin/crud-resource.yaml +0 -0
  101. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/php-laravel/admin-crud.yaml +0 -0
  102. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/php-laravel/auth-jwt.yaml +0 -0
  103. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/php-laravel/crud-resource.yaml +0 -0
  104. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/php-vanilla/docs-marker.yaml +0 -0
  105. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/py-fastapi/admin-crud.yaml +0 -0
  106. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/py-fastapi/auth-jwt.yaml +0 -0
  107. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/py-fastapi/background-worker.yaml +0 -0
  108. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/py-fastapi/crud-resource.yaml +0 -0
  109. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/py-fastapi/file-upload.yaml +0 -0
  110. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/py-fastapi/oauth-integration.yaml +0 -0
  111. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/py-fastapi/scheduled-job.yaml +0 -0
  112. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/py-fastapi/websocket.yaml +0 -0
  113. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/rust-axum/admin-crud.yaml +0 -0
  114. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/rust-axum/auth-jwt.yaml +0 -0
  115. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/rust-axum/crud-resource.yaml +0 -0
  116. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/ts-nextjs/admin-crud.yaml +0 -0
  117. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/ts-nextjs/auth-jwt.yaml +0 -0
  118. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/recipes/ts-nextjs/crud-resource.yaml +0 -0
  119. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/simplicio_prompt.md +0 -0
  120. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/bash-cli/README.md +0 -0
  121. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/bash-cli/practices.md +0 -0
  122. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/bash-cli/stack.json +0 -0
  123. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/bash-cli/tree/README.md +0 -0
  124. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/bash-cli/tree/bin/app.sh +0 -0
  125. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/bash-cli/tree/test/app.bats +0 -0
  126. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/bash-cli/verify.json +0 -0
  127. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-aspnet/README.md +0 -0
  128. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-aspnet/practices.md +0 -0
  129. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-aspnet/stack.json +0 -0
  130. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-aspnet/tree/README.md +0 -0
  131. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-aspnet/tree/src/App.Api/App.Api.csproj +0 -0
  132. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-aspnet/tree/src/App.Api/Program.cs +0 -0
  133. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-aspnet/tree/tests/App.Tests/App.Tests.csproj +0 -0
  134. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-aspnet/tree/tests/App.Tests/HealthTests.cs +0 -0
  135. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-aspnet/verify.json +0 -0
  136. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-blazor/README.md +0 -0
  137. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-blazor/practices.md +0 -0
  138. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-blazor/stack.json +0 -0
  139. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-blazor/tree/README.md +0 -0
  140. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/App.Web.csproj +0 -0
  141. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/Components/App.razor +0 -0
  142. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/Components/Pages/Home.razor +0 -0
  143. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/Program.cs +0 -0
  144. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-blazor/tree/tests/App.Tests/App.Tests.csproj +0 -0
  145. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-blazor/tree/tests/App.Tests/HealthTests.cs +0 -0
  146. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/csharp-blazor/verify.json +0 -0
  147. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/dart-flutter/README.md +0 -0
  148. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/dart-flutter/practices.md +0 -0
  149. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/dart-flutter/stack.json +0 -0
  150. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/dart-flutter/tree/README.md +0 -0
  151. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/dart-flutter/tree/lib/main.dart +0 -0
  152. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/dart-flutter/tree/pubspec.yaml +0 -0
  153. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/dart-flutter/tree/test/widget_test.dart +0 -0
  154. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/dart-flutter/verify.json +0 -0
  155. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/README.md +0 -0
  156. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/practices.md +0 -0
  157. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/stack.json +0 -0
  158. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/tree/README.md +0 -0
  159. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/tree/config/config.exs +0 -0
  160. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app/application.ex +0 -0
  161. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app_web/controllers/health_controller.ex +0 -0
  162. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app_web/endpoint.ex +0 -0
  163. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app_web/router.ex +0 -0
  164. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/tree/mix.exs +0 -0
  165. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/tree/test/health_controller_test.exs +0 -0
  166. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/tree/test/test_helper.exs +0 -0
  167. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/elixir-phoenix/verify.json +0 -0
  168. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-cli/README.md +0 -0
  169. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-cli/practices.md +0 -0
  170. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-cli/stack.json +0 -0
  171. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-cli/tree/README.md +0 -0
  172. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-cli/tree/cmd/root.go +0 -0
  173. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-cli/tree/cmd/root_test.go +0 -0
  174. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-cli/tree/go.mod +0 -0
  175. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-cli/tree/main.go +0 -0
  176. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-cli/verify.json +0 -0
  177. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-echo/README.md +0 -0
  178. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-echo/practices.md +0 -0
  179. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-echo/stack.json +0 -0
  180. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-echo/tree/README.md +0 -0
  181. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-echo/tree/cmd/server/main.go +0 -0
  182. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-echo/tree/go.mod +0 -0
  183. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-echo/tree/internal/http/router.go +0 -0
  184. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-echo/tree/internal/http/router_test.go +0 -0
  185. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-echo/verify.json +0 -0
  186. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-gin/README.md +0 -0
  187. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-gin/practices.md +0 -0
  188. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-gin/stack.json +0 -0
  189. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-gin/tree/README.md +0 -0
  190. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-gin/tree/cmd/server/main.go +0 -0
  191. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-gin/tree/go.mod +0 -0
  192. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-gin/tree/internal/http/router.go +0 -0
  193. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-gin/tree/internal/http/router_test.go +0 -0
  194. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/go-gin/verify.json +0 -0
  195. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/java-spring/README.md +0 -0
  196. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/java-spring/practices.md +0 -0
  197. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/java-spring/stack.json +0 -0
  198. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/java-spring/tree/README.md +0 -0
  199. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/java-spring/tree/build.gradle.kts +0 -0
  200. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/java-spring/tree/settings.gradle.kts +0 -0
  201. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/java-spring/tree/src/main/java/com/example/Application.java +0 -0
  202. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/java-spring/tree/src/main/java/com/example/HealthController.java +0 -0
  203. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/java-spring/tree/src/test/java/com/example/HealthControllerTest.java +0 -0
  204. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/java-spring/verify.json +0 -0
  205. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/js-express/README.md +0 -0
  206. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/js-express/practices.md +0 -0
  207. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/js-express/stack.json +0 -0
  208. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/js-express/tree/README.md +0 -0
  209. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/js-express/tree/package.json +0 -0
  210. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/js-express/tree/src/app.js +0 -0
  211. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/js-express/tree/src/server.js +0 -0
  212. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/js-express/tree/tests/health.test.js +0 -0
  213. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/js-express/verify.json +0 -0
  214. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/README.md +0 -0
  215. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/practices.md +0 -0
  216. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/stack.json +0 -0
  217. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/tree/README.md +0 -0
  218. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/tree/app/build.gradle.kts +0 -0
  219. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/tree/app/src/main/AndroidManifest.xml +0 -0
  220. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/tree/app/src/main/java/com/example/app/MainActivity.kt +0 -0
  221. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/tree/app/src/main/res/values/styles.xml +0 -0
  222. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/tree/app/src/test/java/com/example/app/SmokeTest.kt +0 -0
  223. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/tree/build.gradle.kts +0 -0
  224. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/tree/settings.gradle.kts +0 -0
  225. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-android/verify.json +0 -0
  226. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-ktor/README.md +0 -0
  227. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-ktor/practices.md +0 -0
  228. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-ktor/stack.json +0 -0
  229. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-ktor/tree/README.md +0 -0
  230. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-ktor/tree/build.gradle.kts +0 -0
  231. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-ktor/tree/settings.gradle.kts +0 -0
  232. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-ktor/tree/src/main/kotlin/com/example/Application.kt +0 -0
  233. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-ktor/tree/src/test/kotlin/com/example/ApplicationTest.kt +0 -0
  234. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-ktor/verify.json +0 -0
  235. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-spring/README.md +0 -0
  236. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-spring/practices.md +0 -0
  237. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-spring/stack.json +0 -0
  238. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-spring/tree/README.md +0 -0
  239. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-spring/tree/build.gradle.kts +0 -0
  240. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-spring/tree/settings.gradle.kts +0 -0
  241. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-spring/tree/src/main/kotlin/com/example/Application.kt +0 -0
  242. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-spring/tree/src/main/kotlin/com/example/HealthController.kt +0 -0
  243. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-spring/tree/src/test/kotlin/com/example/HealthControllerTest.kt +0 -0
  244. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/kotlin-spring/verify.json +0 -0
  245. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/README.md +0 -0
  246. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/practices.md +0 -0
  247. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/stack.json +0 -0
  248. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/tree/README.md +0 -0
  249. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/tree/artisan +0 -0
  250. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/tree/bootstrap/app.php +0 -0
  251. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/tree/composer.json +0 -0
  252. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/tree/phpunit.xml +0 -0
  253. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/tree/routes/api.php +0 -0
  254. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/tree/routes/console.php +0 -0
  255. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/tree/tests/Feature/HealthTest.php +0 -0
  256. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/tree/tests/TestCase.php +0 -0
  257. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-laravel/verify.json +0 -0
  258. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-symfony/README.md +0 -0
  259. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-symfony/practices.md +0 -0
  260. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-symfony/stack.json +0 -0
  261. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-symfony/tree/README.md +0 -0
  262. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-symfony/tree/composer.json +0 -0
  263. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-symfony/tree/src/Controller/HealthController.php +0 -0
  264. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-symfony/tree/tests/HealthControllerTest.php +0 -0
  265. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-symfony/verify.json +0 -0
  266. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-vanilla/README.md +0 -0
  267. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-vanilla/practices.md +0 -0
  268. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-vanilla/stack.json +0 -0
  269. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-vanilla/tree/README.md +0 -0
  270. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-vanilla/tree/composer.json +0 -0
  271. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-vanilla/tree/phpunit.xml +0 -0
  272. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-vanilla/tree/src/Health.php +0 -0
  273. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-vanilla/tree/tests/HealthTest.php +0 -0
  274. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/php-vanilla/verify.json +0 -0
  275. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-cli/README.md +0 -0
  276. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-cli/practices.md +0 -0
  277. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-cli/stack.json +0 -0
  278. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-cli/tree/README.md +0 -0
  279. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-cli/tree/pyproject.toml +0 -0
  280. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-cli/tree/src/app/__init__.py +0 -0
  281. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-cli/tree/src/app/cli.py +0 -0
  282. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-cli/tree/tests/test_cli.py +0 -0
  283. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-cli/verify.json +0 -0
  284. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/README.md +0 -0
  285. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/practices.md +0 -0
  286. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/stack.json +0 -0
  287. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/README.md +0 -0
  288. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/app/__init__.py +0 -0
  289. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/app/apps.py +0 -0
  290. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/app/tests.py +0 -0
  291. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/app/views.py +0 -0
  292. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/config/__init__.py +0 -0
  293. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/config/asgi.py +0 -0
  294. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/config/settings.py +0 -0
  295. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/config/urls.py +0 -0
  296. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/config/wsgi.py +0 -0
  297. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/manage.py +0 -0
  298. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/tree/pyproject.toml +0 -0
  299. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-django/verify.json +0 -0
  300. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-fastapi/README.md +0 -0
  301. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-fastapi/practices.md +0 -0
  302. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-fastapi/stack.json +0 -0
  303. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-fastapi/tree/.gitignore +0 -0
  304. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-fastapi/tree/README.template.md +0 -0
  305. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-fastapi/tree/pyproject.toml +0 -0
  306. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-fastapi/tree/ruff.toml +0 -0
  307. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-fastapi/tree/src/api/__init__.py +0 -0
  308. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-fastapi/tree/src/main.py +0 -0
  309. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-fastapi/tree/tests/test_health.py +0 -0
  310. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-fastapi/verify.json +0 -0
  311. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-flask/README.md +0 -0
  312. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-flask/practices.md +0 -0
  313. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-flask/stack.json +0 -0
  314. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-flask/tree/README.md +0 -0
  315. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-flask/tree/pyproject.toml +0 -0
  316. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-flask/tree/ruff.toml +0 -0
  317. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-flask/tree/src/app.py +0 -0
  318. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-flask/tree/tests/test_health.py +0 -0
  319. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/py-flask/verify.json +0 -0
  320. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/react-vite/README.md +0 -0
  321. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/react-vite/practices.md +0 -0
  322. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/react-vite/stack.json +0 -0
  323. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/react-vite/tree/README.md +0 -0
  324. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/react-vite/tree/index.html +0 -0
  325. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/react-vite/tree/package.json +0 -0
  326. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/react-vite/tree/src/App.test.tsx +0 -0
  327. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/react-vite/tree/src/App.tsx +0 -0
  328. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/react-vite/tree/src/main.tsx +0 -0
  329. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/react-vite/tree/tsconfig.json +0 -0
  330. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/react-vite/verify.json +0 -0
  331. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/README.md +0 -0
  332. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/practices.md +0 -0
  333. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/stack.json +0 -0
  334. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/tree/Gemfile +0 -0
  335. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/tree/README.md +0 -0
  336. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/tree/app/controllers/health_controller.rb +0 -0
  337. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/tree/bin/rails +0 -0
  338. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/tree/config/application.rb +0 -0
  339. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/tree/config/boot.rb +0 -0
  340. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/tree/config/routes.rb +0 -0
  341. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/tree/test/controllers/health_controller_test.rb +0 -0
  342. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/tree/test/test_helper.rb +0 -0
  343. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ruby-rails/verify.json +0 -0
  344. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-axum/README.md +0 -0
  345. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-axum/practices.md +0 -0
  346. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-axum/stack.json +0 -0
  347. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-axum/tree/Cargo.toml +0 -0
  348. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-axum/tree/README.md +0 -0
  349. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-axum/tree/src/main.rs +0 -0
  350. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-axum/verify.json +0 -0
  351. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-cli/README.md +0 -0
  352. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-cli/practices.md +0 -0
  353. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-cli/stack.json +0 -0
  354. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-cli/tree/Cargo.toml +0 -0
  355. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-cli/tree/README.md +0 -0
  356. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-cli/tree/src/main.rs +0 -0
  357. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-cli/verify.json +0 -0
  358. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-leptos/README.md +0 -0
  359. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-leptos/practices.md +0 -0
  360. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-leptos/stack.json +0 -0
  361. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-leptos/tree/Cargo.toml +0 -0
  362. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-leptos/tree/README.md +0 -0
  363. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-leptos/tree/src/main.rs +0 -0
  364. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/rust-leptos/verify.json +0 -0
  365. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-ios/README.md +0 -0
  366. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-ios/practices.md +0 -0
  367. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-ios/stack.json +0 -0
  368. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-ios/tree/README.md +0 -0
  369. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-ios/tree/Sources/App/App.swift +0 -0
  370. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-ios/tree/Sources/App/ContentView.swift +0 -0
  371. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-ios/tree/Tests/AppTests/AppTests.swift +0 -0
  372. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-ios/verify.json +0 -0
  373. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-vapor/README.md +0 -0
  374. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-vapor/practices.md +0 -0
  375. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-vapor/stack.json +0 -0
  376. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-vapor/tree/Package.swift +0 -0
  377. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-vapor/tree/README.md +0 -0
  378. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-vapor/tree/Sources/App/main.swift +0 -0
  379. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-vapor/tree/Tests/AppTests/HealthTests.swift +0 -0
  380. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/swift-vapor/verify.json +0 -0
  381. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nestjs/README.md +0 -0
  382. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nestjs/practices.md +0 -0
  383. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nestjs/stack.json +0 -0
  384. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nestjs/tree/README.md +0 -0
  385. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nestjs/tree/package.json +0 -0
  386. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nestjs/tree/src/app.controller.spec.ts +0 -0
  387. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nestjs/tree/src/app.controller.ts +0 -0
  388. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nestjs/tree/src/app.module.ts +0 -0
  389. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nestjs/tree/src/main.ts +0 -0
  390. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nestjs/tree/tsconfig.json +0 -0
  391. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nestjs/verify.json +0 -0
  392. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/README.md +0 -0
  393. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/practices.md +0 -0
  394. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/stack.json +0 -0
  395. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/tree/.eslintrc.json +0 -0
  396. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/tree/.gitignore +0 -0
  397. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/tree/next.config.mjs +0 -0
  398. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/tree/package.json +0 -0
  399. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/tree/pnpm-workspace.yaml +0 -0
  400. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/tree/src/app/layout.tsx +0 -0
  401. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/tree/src/app/page.tsx +0 -0
  402. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/tree/tsconfig.json +0 -0
  403. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-nextjs/verify.json +0 -0
  404. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-remix/README.md +0 -0
  405. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-remix/practices.md +0 -0
  406. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-remix/stack.json +0 -0
  407. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-remix/tree/README.md +0 -0
  408. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-remix/tree/app/root.tsx +0 -0
  409. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-remix/tree/app/routes/_index.tsx +0 -0
  410. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-remix/tree/app/routes/health.test.ts +0 -0
  411. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-remix/tree/app/routes/health.ts +0 -0
  412. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-remix/tree/package.json +0 -0
  413. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-remix/tree/tsconfig.json +0 -0
  414. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/stacks/ts-remix/verify.json +0 -0
  415. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/templates/userpromptsubmit-hook.sh +0 -0
  416. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/toon_codec.py +0 -0
  417. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/utils/__init__.py +0 -0
  418. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/utils/cache.py +0 -0
  419. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/utils/http_client.py +0 -0
  420. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio/utils/serialization.py +0 -0
  421. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio_cli.egg-info/dependency_links.txt +0 -0
  422. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio_cli.egg-info/entry_points.txt +0 -0
  423. {simplicio_cli-0.9.6 → simplicio_cli-0.10.0}/simplicio_cli.egg-info/top_level.txt +0 -0
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: simplicio-cli
3
- Version: 0.9.6
3
+ Version: 0.10.0
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
7
- Project-URL: Homepage, https://github.com/wesleysimplicio/simplicio-cli
8
- Project-URL: Repository, https://github.com/wesleysimplicio/simplicio-cli
9
- Project-URL: Issues, https://github.com/wesleysimplicio/simplicio-cli/issues
10
- Project-URL: Changelog, https://github.com/wesleysimplicio/simplicio-cli/releases
7
+ Project-URL: Homepage, https://github.com/wesleysimplicio/simplicio-dev-cli
8
+ Project-URL: Repository, https://github.com/wesleysimplicio/simplicio-dev-cli
9
+ Project-URL: Issues, https://github.com/wesleysimplicio/simplicio-dev-cli/issues
10
+ Project-URL: Changelog, https://github.com/wesleysimplicio/simplicio-dev-cli/releases
11
11
  Keywords: llm,ai,agent,code-generation,prompt-engineering,openrouter,openai,anthropic,claude,developer-tools,cli,rag,embeddings,verify-loop,task-automation
12
12
  Classifier: Development Status :: 4 - Beta
13
13
  Classifier: Environment :: Console
@@ -19,6 +19,7 @@ Classifier: Programming Language :: Python :: 3 :: Only
19
19
  Classifier: Programming Language :: Python :: 3.10
20
20
  Classifier: Programming Language :: Python :: 3.11
21
21
  Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
22
23
  Classifier: Topic :: Software Development
23
24
  Classifier: Topic :: Software Development :: Code Generators
24
25
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
@@ -27,7 +28,7 @@ Requires-Python: >=3.10
27
28
  Description-Content-Type: text/markdown
28
29
  License-File: LICENSE
29
30
  Requires-Dist: numpy>=2.1.0
30
- Requires-Dist: simplicio-mapper>=0.17.0
31
+ Requires-Dist: simplicio-mapper>=0.18.0
31
32
  Requires-Dist: simplicio-prompt>=1.14.1
32
33
  Requires-Dist: httpx>=0.28.1
33
34
  Requires-Dist: orjson>=3.11.9
@@ -99,6 +100,10 @@ simplicio-py detect "hide the Delete button for non-admins"
99
100
  simplicio-py task "hide the Delete button for non-admins"
100
101
  ```
101
102
 
103
+ Auto-upgrade is now opt-in: set `SIMPLICIO_AUTO_UPGRADE=1` for session-start upgrades, or run `simplicio-py doctor --upgrade` explicitly.
104
+ Python consumers can expose the bundled mapper dependency directly with
105
+ `from simplicio import mapper_module, mapper_version` or `import simplicio.mapper_api`.
106
+
102
107
  ## What it does
103
108
 
104
109
  - Classifies the task before execution so small fixes stay small and sprint-scale work becomes a plan.
@@ -472,12 +477,7 @@ recorded to a separate append-only ledger,
472
477
  `.simplicio/ledger/savings-events.jsonl` (`simplicio.savings-event/v1`), via
473
478
  `simplicio.observability.record_savings_event()`.
474
479
 
475
- #### MCP server and cross-vendor memory
476
-
477
- `simplicio-dev-cli serve --mcp` runs this CLI as an MCP stdio server
478
- (stdlib-only JSON-RPC 2.0, no extra dependency), exposing `dev_cli_edit`,
479
- `dev_cli_validate`, and `dev_cli_memory` as tools any MCP client (Claude
480
- Code, Codex, Cursor, VS Code) can call directly.
480
+ #### Cross-vendor memory
481
481
 
482
482
  `simplicio-dev-cli memory init|store|recall` is a markdown + git store under
483
483
  `~/.simplicio/memory/` (override with `SIMPLICIO_MEMORY_DIR`) for handing
@@ -34,11 +34,15 @@ The new first screen is the doorway; the restored guide below is the workshop. T
34
34
 
35
35
  ## Quick Start
36
36
 
37
- ```bash
38
- pip install -U simplicio-cli
39
- simplicio-py detect "hide the Delete button for non-admins"
40
- simplicio-py task "hide the Delete button for non-admins"
41
- ```
37
+ ```bash
38
+ pip install -U simplicio-cli
39
+ simplicio-py detect "hide the Delete button for non-admins"
40
+ simplicio-py task "hide the Delete button for non-admins"
41
+ ```
42
+
43
+ Auto-upgrade is now opt-in: set `SIMPLICIO_AUTO_UPGRADE=1` for session-start upgrades, or run `simplicio-py doctor --upgrade` explicitly.
44
+ Python consumers can expose the bundled mapper dependency directly with
45
+ `from simplicio import mapper_module, mapper_version` or `import simplicio.mapper_api`.
42
46
 
43
47
  ## What it does
44
48
 
@@ -413,12 +417,7 @@ recorded to a separate append-only ledger,
413
417
  `.simplicio/ledger/savings-events.jsonl` (`simplicio.savings-event/v1`), via
414
418
  `simplicio.observability.record_savings_event()`.
415
419
 
416
- #### MCP server and cross-vendor memory
417
-
418
- `simplicio-dev-cli serve --mcp` runs this CLI as an MCP stdio server
419
- (stdlib-only JSON-RPC 2.0, no extra dependency), exposing `dev_cli_edit`,
420
- `dev_cli_validate`, and `dev_cli_memory` as tools any MCP client (Claude
421
- Code, Codex, Cursor, VS Code) can call directly.
420
+ #### Cross-vendor memory
422
421
 
423
422
  `simplicio-dev-cli memory init|store|recall` is a markdown + git store under
424
423
  `~/.simplicio/memory/` (override with `SIMPLICIO_MEMORY_DIR`) for handing
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "simplicio-cli"
3
- version = "0.9.6"
3
+ version = "0.10.0"
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" }
@@ -33,7 +33,8 @@ classifiers = [
33
33
  "Programming Language :: Python :: 3 :: Only",
34
34
  "Programming Language :: Python :: 3.10",
35
35
  "Programming Language :: Python :: 3.11",
36
- "Programming Language :: Python :: 3.12",
36
+ "Programming Language :: Python :: 3.12",
37
+ "Programming Language :: Python :: 3.13",
37
38
  "Topic :: Software Development",
38
39
  "Topic :: Software Development :: Code Generators",
39
40
  "Topic :: Software Development :: Libraries :: Python Modules",
@@ -52,7 +53,7 @@ classifiers = [
52
53
  # (generated, `--check`-able) for the full graph and #99 for the audit.
53
54
  dependencies = [
54
55
  "numpy>=2.1.0",
55
- "simplicio-mapper>=0.17.0",
56
+ "simplicio-mapper>=0.18.0",
56
57
  "simplicio-prompt>=1.14.1",
57
58
  "httpx>=0.28.1",
58
59
  "orjson>=3.11.9",
@@ -88,10 +89,10 @@ test = ["pytest>=8", "tomli>=2.0.1; python_version < '3.11'"]
88
89
  dev = ["simplicio-cli[test]", "ruff>=0.15.8", "mypy>=1.19.1"]
89
90
 
90
91
  [project.urls]
91
- Homepage = "https://github.com/wesleysimplicio/simplicio-cli"
92
- Repository = "https://github.com/wesleysimplicio/simplicio-cli"
93
- Issues = "https://github.com/wesleysimplicio/simplicio-cli/issues"
94
- Changelog = "https://github.com/wesleysimplicio/simplicio-cli/releases"
92
+ Homepage = "https://github.com/wesleysimplicio/simplicio-dev-cli"
93
+ Repository = "https://github.com/wesleysimplicio/simplicio-dev-cli"
94
+ Issues = "https://github.com/wesleysimplicio/simplicio-dev-cli/issues"
95
+ Changelog = "https://github.com/wesleysimplicio/simplicio-dev-cli/releases"
95
96
 
96
97
  [project.scripts]
97
98
  simplicio-cli = "simplicio.cli:main"
@@ -145,7 +146,7 @@ extend-exclude = [
145
146
  [tool.ruff.lint]
146
147
  # E/F = pyflakes+pycodestyle core, I = isort, UP = pyupgrade, B = bugbear,
147
148
  # T20 = flake8-print (issue #106 — blocks new print() regressions in
148
- # library/MCP-adjacent code; see per-file-ignores below for the documented
149
+ # library code; see per-file-ignores below for the documented
149
150
  # CLI-handler exception, where stdout IS the subcommand's intended output).
150
151
  select = ["E", "F", "I", "UP", "B", "T20"]
151
152
  # B008: PLAN_JSON-style default args show up in a few argparse builders;
@@ -157,8 +158,8 @@ ignore = []
157
158
  "tests/**/*.py" = ["E501", "T201"]
158
159
  # CLI-handler exception (#106): stdout IS the intended output of these
159
160
  # subcommand entry points (JSON payloads, tables, human summaries), so
160
- # print() is the correct tool here — never in mcp_server.py, providers.py,
161
- # pipeline.py, mapper.py, or any other library/MCP-adjacent module, which
161
+ # print() is the correct tool here — never in providers.py, pipeline.py,
162
+ # mapper.py, or any other library module, which
162
163
  # stay covered by the bare T201 rule above with zero suppressions.
163
164
  "simplicio/cli.py" = ["T201"]
164
165
  "simplicio/doctor.py" = ["T201"]
@@ -178,7 +179,7 @@ quote-style = "double"
178
179
  indent-style = "space"
179
180
 
180
181
  [tool.mypy]
181
- python_version = "3.10"
182
+ python_version = "3.13"
182
183
  files = ["simplicio"]
183
184
  # Baseline rigor (#102 AC): permissive on missing third-party stubs, but
184
185
  # real within the package. Tighten per-module (`[[tool.mypy.overrides]]`)
@@ -207,7 +208,6 @@ module = [
207
208
  "simplicio.commands.test_run",
208
209
  "simplicio.cache_cli",
209
210
  "simplicio.precedent",
210
- "simplicio.mcp_server",
211
211
  "simplicio.scratch.executor",
212
212
  "simplicio.orchestrator.feature",
213
213
  "simplicio.scratch.cli",
@@ -0,0 +1,5 @@
1
+ __version__ = "0.10.0"
2
+
3
+ from .mapper_api import mapper_module, mapper_version
4
+
5
+ __all__ = ["__version__", "mapper_module", "mapper_version"]
@@ -30,6 +30,16 @@ def _env_float(name: str, default: float) -> float:
30
30
  return default
31
31
 
32
32
 
33
+ def _env_int(name: str, default: int) -> int:
34
+ raw = os.environ.get(name)
35
+ if raw is None or not raw.strip():
36
+ return default
37
+ try:
38
+ return int(raw)
39
+ except ValueError:
40
+ return default
41
+
42
+
33
43
  def _cache_root() -> Path:
34
44
  override = os.environ.get("SIMPLICIO_CACHE_DIR")
35
45
  if override:
@@ -153,7 +163,9 @@ class CompletionCache:
153
163
  if os.path.exists(tmp_name):
154
164
  self._safe_unlink(Path(tmp_name))
155
165
  self.puts += 1
156
- self._evict_if_needed()
166
+ evict_every = max(1, _env_int("SIMPLICIO_CACHE_EVICT_EVERY", 16))
167
+ if self.puts == 1 or self.puts % evict_every == 0:
168
+ self._evict_if_needed()
157
169
 
158
170
  def clear(self) -> int:
159
171
  n = self.stats()["entries"]
@@ -14,6 +14,7 @@ import json
14
14
  import os
15
15
  import subprocess
16
16
  import time
17
+ from pathlib import Path
17
18
 
18
19
  from .observability import estimate_tokens, log_run
19
20
  from .prompt import build_prompt
@@ -21,15 +22,15 @@ from .providers import generate
21
22
  from .runtime_env import wrap_project_command
22
23
 
23
24
 
24
- def _test(output, root, test_cmd):
25
+ def _test(output: str, root: str, test_cmd: str) -> bool:
25
26
  os.makedirs(os.path.join(root, ".simplicio"), exist_ok=True)
26
- open(os.path.join(root, ".simplicio/bench_out.txt"), "w").write(output or "")
27
+ Path(root, ".simplicio", "bench_out.txt").write_text(output or "", encoding="utf-8")
27
28
  test_cmd = wrap_project_command(root, test_cmd)
28
29
  p = subprocess.run(test_cmd, shell=True, cwd=root, capture_output=True, text=True)
29
30
  return p.returncode == 0
30
31
 
31
32
 
32
- def _baseline(case, root):
33
+ def _baseline(case: dict[str, str], root: str) -> str:
33
34
  # baseline: raw goal, zero built context
34
35
  prompt = case["goal"]
35
36
  out = generate(prompt)
@@ -45,7 +46,7 @@ def _baseline(case, root):
45
46
  return out
46
47
 
47
48
 
48
- def _pipeline(case, root, stack):
49
+ def _pipeline(case: dict[str, str], root: str, stack: str) -> str:
49
50
  prompt = build_prompt(
50
51
  root,
51
52
  stack,
@@ -67,9 +68,19 @@ def _pipeline(case, root, stack):
67
68
  return out
68
69
 
69
70
 
70
- def run_bench(root, stack, cases_path):
71
- cases = json.load(open(cases_path))
71
+ def run_bench(root: str, stack: str, cases_path: str) -> int:
72
+ try:
73
+ cases = json.loads(Path(cases_path).read_text(encoding="utf-8"))
74
+ except (OSError, ValueError) as exc:
75
+ print(f"simplicio-py: error: cannot read benchmark cases: {exc}")
76
+ return 1
77
+ if not isinstance(cases, list):
78
+ print("simplicio-py: error: benchmark cases must be a JSON list")
79
+ return 1
72
80
  rows, n = [], len(cases)
81
+ if n == 0:
82
+ print("simplicio-py: error: benchmark cases list is empty")
83
+ return 1
73
84
  hits = {"without": 0, "with": 0}
74
85
  hallucination_flags = {"without": 0, "with": 0}
75
86
  for c in cases:
@@ -97,10 +108,12 @@ def run_bench(root, stack, cases_path):
97
108
  )
98
109
  out = os.path.join(root, "bench", "results.md")
99
110
  os.makedirs(os.path.dirname(out), exist_ok=True)
100
- open(out, "w").write(
111
+ Path(out).write_text(
101
112
  f"# Benchmark (generated by `simplicio-py bench`)\n\n"
102
113
  f"Provider: {os.environ.get('SIMPLICIO_PROVIDER', 'claude')} · "
103
- f"cases: {n} · date: {time.strftime('%Y-%m-%d')}\n\n{table}\n"
114
+ f"cases: {n} · date: {time.strftime('%Y-%m-%d')}\n\n{table}\n",
115
+ encoding="utf-8",
104
116
  )
105
117
  print(table)
106
118
  print(f"\n-> {out}")
119
+ return 0
@@ -55,23 +55,28 @@ def _dispatch_nested(argv: list[str]) -> int | None:
55
55
  parsing (unchanged by issue #103's cli.py cleanup)."""
56
56
  from .commands._shared import parse_rust_flags, try_route_via_simplicio
57
57
 
58
+ def wants_help(args: list[str]) -> bool:
59
+ return any(arg in {"-h", "--help"} for arg in args)
60
+
58
61
  if argv and argv[0] == "gate":
59
62
  clean_args, native, python = parse_rust_flags(argv[1:])
60
- result = try_route_via_simplicio(
61
- "gate", clean_args, prefer_native=native or not python, prefer_python=python
62
- )
63
- if result is not None:
64
- return result
63
+ if not wants_help(clean_args):
64
+ result = try_route_via_simplicio(
65
+ "gate", clean_args, prefer_native=native or not python, prefer_python=python
66
+ )
67
+ if result is not None:
68
+ return result
65
69
  from .commands.gate import main as gate_main
66
70
 
67
71
  return gate_main(clean_args)
68
72
  if argv and argv[0] == "nest":
69
73
  clean_args, native, python = parse_rust_flags(argv[1:])
70
- result = try_route_via_simplicio(
71
- "nest", clean_args, prefer_native=native or not python, prefer_python=python
72
- )
73
- if result is not None:
74
- return result
74
+ if not wants_help(clean_args):
75
+ result = try_route_via_simplicio(
76
+ "nest", clean_args, prefer_native=native or not python, prefer_python=python
77
+ )
78
+ if result is not None:
79
+ return result
75
80
  from .commands.nest import main as nest_main
76
81
 
77
82
  return nest_main(clean_args)
@@ -383,15 +388,6 @@ def _build_parser() -> argparse.ArgumentParser:
383
388
  p_runtime_doctor.add_argument("--root", default=".")
384
389
  p_runtime_doctor.add_argument("--json", action="store_true")
385
390
 
386
- p_serve = sub.add_parser(
387
- "serve", help="run simplicio-dev-cli as a server (--mcp for the MCP stdio protocol)"
388
- )
389
- p_serve.add_argument(
390
- "--mcp",
391
- action="store_true",
392
- help="serve MCP tools (dev_cli_edit, dev_cli_validate, dev_cli_memory) over stdio",
393
- )
394
-
395
391
  p_memory = sub.add_parser(
396
392
  "memory", help="cross-vendor memory handoff (markdown + git under ~/.simplicio/memory)"
397
393
  )
@@ -435,7 +431,6 @@ _COMMAND_MODULES = {
435
431
  "test": "test",
436
432
  "token": "token",
437
433
  "runtime": "runtime",
438
- "serve": "serve",
439
434
  "memory": "memory",
440
435
  }
441
436
 
@@ -448,48 +443,58 @@ def main(argv=None):
448
443
 
449
444
  configure_logging(quiet=quiet, verbose=verbose)
450
445
 
451
- # Session-start ecosystem-freshness check (closes the runtime gap where
452
- # pyproject pins >=X but the installed version is older). Idempotent +
453
- # opt-out via SIMPLICIO_NO_AUTO_UPGRADE=1. See simplicio/ecosystem.py.
454
446
  try:
455
- from .ecosystem import maybe_run_session_start
456
-
457
- maybe_run_session_start()
458
- except Exception as e:
459
- # Never let the freshness check break the CLI.
460
- print(f"{CLI_PROG}: ecosystem check skipped ({e})", file=sys.stderr)
461
-
462
- nested = _dispatch_nested(argv)
463
- if nested is not None:
464
- return nested
465
-
466
- ap = _build_parser()
467
- a = ap.parse_args(argv)
468
- maybe_autoinstall(a.cmd)
469
-
470
- # `mechanical-edit`/`edit`/`score-skill` need a little dispatch logic
471
- # of their own (edit falls back to mechanical-edit; score-skill tries
472
- # the Rust binary first) that doesn't fit the flat name->module table.
473
- if a.cmd == "mechanical-edit":
474
- from .commands.edit import run_mechanical_edit
475
-
476
- return run_mechanical_edit(a)
477
- if a.cmd == "edit":
478
- from .commands.edit import run_edit
479
-
480
- return run_edit(a)
481
- if a.cmd == "score-skill":
482
- from .commands.score_skill import run as score_skill_run
483
-
484
- return score_skill_run(a)
485
-
486
- module_name = _COMMAND_MODULES.get(a.cmd)
487
- if module_name is None:
488
- return 0
489
- import importlib
490
-
491
- command_module = importlib.import_module(f".commands.{module_name}", package=__package__)
492
- return command_module.run(a)
447
+ # Session-start ecosystem-freshness check (closes the runtime gap where
448
+ # pyproject pins >=X but the installed version is older). Idempotent +
449
+ # opt-in via SIMPLICIO_AUTO_UPGRADE=1. See simplicio/ecosystem.py.
450
+ try:
451
+ from .ecosystem import maybe_run_session_start
452
+
453
+ maybe_run_session_start()
454
+ except Exception as e:
455
+ # Never let the freshness check break the CLI.
456
+ print(f"{CLI_PROG}: ecosystem check skipped ({e})", file=sys.stderr)
457
+
458
+ nested = _dispatch_nested(argv)
459
+ if nested is not None:
460
+ return nested
461
+
462
+ ap = _build_parser()
463
+ a = ap.parse_args(argv)
464
+ maybe_autoinstall(a.cmd)
465
+
466
+ # `mechanical-edit`/`edit`/`score-skill` need a little dispatch logic
467
+ # of their own (edit falls back to mechanical-edit; score-skill tries
468
+ # the Rust binary first) that doesn't fit the flat name->module table.
469
+ if a.cmd == "mechanical-edit":
470
+ from .commands.edit import run_mechanical_edit
471
+
472
+ return run_mechanical_edit(a)
473
+ if a.cmd == "edit":
474
+ from .commands.edit import run_edit
475
+
476
+ return run_edit(a)
477
+ if a.cmd == "score-skill":
478
+ from .commands.score_skill import run as score_skill_run
479
+
480
+ return score_skill_run(a)
481
+
482
+ module_name = _COMMAND_MODULES.get(a.cmd)
483
+ if module_name is None:
484
+ return 0
485
+ import importlib
486
+
487
+ command_module = importlib.import_module(f".commands.{module_name}", package=__package__)
488
+ return command_module.run(a)
489
+ except KeyboardInterrupt:
490
+ return 130
491
+ except BrokenPipeError:
492
+ return 130
493
+ except Exception as exc:
494
+ if verbose:
495
+ raise
496
+ print(f"{CLI_PROG}: error: {exc}", file=sys.stderr)
497
+ return 1
493
498
 
494
499
 
495
500
  if __name__ == "__main__":
@@ -17,7 +17,11 @@ def read_text_source(path: str) -> str:
17
17
  """Read *path*, or stdin when *path* is the literal string ``"-"``."""
18
18
  if path == "-":
19
19
  return sys.stdin.read()
20
- return Path(path).read_text(encoding="utf-8")
20
+ try:
21
+ return Path(path).read_text(encoding="utf-8")
22
+ except (FileNotFoundError, OSError) as exc:
23
+ print(f"{Path(sys.argv[0]).name}: error: cannot read {path}: {exc}", file=sys.stderr)
24
+ raise SystemExit(2) from exc
21
25
 
22
26
 
23
27
  def force_local_if_requested(a: argparse.Namespace) -> None:
@@ -14,6 +14,7 @@ import sys
14
14
  import time
15
15
  from pathlib import Path
16
16
 
17
+ from ..utils.fs import write_text_atomic
17
18
  from ._shared import force_local_if_requested
18
19
 
19
20
  CLI_PROG = "simplicio-py"
@@ -158,7 +159,7 @@ def _write_sprint_state(
158
159
  "dod": dod_results,
159
160
  "cost": cost,
160
161
  }
161
- path.write_text(json.dumps(payload, indent=2, sort_keys=True), encoding="utf-8")
162
+ write_text_atomic(path, json.dumps(payload, indent=2, sort_keys=True), encoding="utf-8")
162
163
 
163
164
 
164
165
  def _run_sprint(a: argparse.Namespace) -> int:
@@ -69,7 +69,11 @@ def _run_via_runtime(a: argparse.Namespace, extra_args: list[str]) -> int | None
69
69
  binary = discover_simplicio()
70
70
  if binary is None:
71
71
  return None
72
- cmd = [binary, *_build_runtime_args(a, extra_args)]
72
+ binary_path = Path(binary)
73
+ if sys.platform == "win32" and binary_path.suffix.lower() not in {".exe", ".bat", ".cmd", ".ps1", ".py"}:
74
+ cmd = [sys.executable, binary, *_build_runtime_args(a, extra_args)]
75
+ else:
76
+ cmd = [binary, *_build_runtime_args(a, extra_args)]
73
77
  try:
74
78
  completed = subprocess.run(
75
79
  cmd,
@@ -93,7 +97,7 @@ def _run_via_runtime(a: argparse.Namespace, extra_args: list[str]) -> int | None
93
97
  _print_human(payload)
94
98
  if completed.stderr:
95
99
  print(completed.stderr, end="", file=sys.stderr)
96
- return completed.returncode
100
+ return int(payload.get("exit_code", completed.returncode))
97
101
 
98
102
 
99
103
  def _parse_pytest_summary(output: str) -> tuple[int | None, int | None, int | None, float | None, str | None]:
@@ -2,13 +2,16 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import os
5
6
  import re
7
+ import shlex
6
8
  import subprocess
7
9
  from dataclasses import dataclass
8
10
  from pathlib import Path
9
11
 
10
12
  _CHECK_RE = re.compile(r"^\s*-\s+\[(?P<mark>[ xX])\]\s+(?P<label>.+?)\s*$")
11
13
  _COMMAND_RE = re.compile(r"`([^`]+)`")
14
+ _SHELL_META_RE = re.compile(r"[|;&><$`]")
12
15
 
13
16
 
14
17
  @dataclass
@@ -54,6 +57,7 @@ def load_sprint_dod(sprint_root: str | Path) -> list[DodGate]:
54
57
 
55
58
  def run_dod_gates(root: str | Path, gates: list[DodGate]) -> list[dict]:
56
59
  results = []
60
+ allow_shell = os.environ.get("SIMPLICIO_DOD_ALLOW_SHELL", "").strip().lower() in {"1", "true", "yes"}
57
61
  for gate in gates:
58
62
  if not gate.command:
59
63
  results.append(
@@ -66,21 +70,45 @@ def run_dod_gates(root: str | Path, gates: list[DodGate]) -> list[dict]:
66
70
  }
67
71
  )
68
72
  continue
69
- proc = subprocess.run(
70
- gate.command,
71
- shell=True,
72
- cwd=root,
73
- capture_output=True,
74
- text=True,
75
- timeout=600,
76
- check=False,
77
- )
73
+ try:
74
+ if allow_shell:
75
+ proc = subprocess.run(
76
+ gate.command,
77
+ shell=True,
78
+ cwd=root,
79
+ capture_output=True,
80
+ text=True,
81
+ timeout=600,
82
+ check=False,
83
+ )
84
+ else:
85
+ if _SHELL_META_RE.search(gate.command):
86
+ raise ValueError(
87
+ "shell metacharacters are blocked by default; rerun with SIMPLICIO_DOD_ALLOW_SHELL=1"
88
+ )
89
+ proc = subprocess.run(
90
+ shlex.split(gate.command),
91
+ shell=False,
92
+ cwd=root,
93
+ capture_output=True,
94
+ text=True,
95
+ timeout=600,
96
+ check=False,
97
+ )
98
+ passed = proc.returncode == 0
99
+ log = (proc.stdout + proc.stderr)[-1500:]
100
+ except subprocess.TimeoutExpired as exc:
101
+ passed = False
102
+ log = f"command timed out after {exc.timeout}s"
103
+ except ValueError as exc:
104
+ passed = False
105
+ log = str(exc)
78
106
  results.append(
79
107
  {
80
108
  "label": gate.label,
81
- "passed": proc.returncode == 0,
109
+ "passed": passed,
82
110
  "command": gate.command,
83
- "log": (proc.stdout + proc.stderr)[-1500:],
111
+ "log": log,
84
112
  "manual": False,
85
113
  }
86
114
  )
@@ -16,9 +16,9 @@ API:
16
16
  Cached: PyPI lookups go through a 24h cache in ~/.simplicio/cache/pypi_versions.json
17
17
  so we don't hit pypi.org on every invocation.
18
18
 
19
- Opt-out:
20
- SIMPLICIO_NO_AUTO_UPGRADE=1 # skip session-start upgrade entirely
21
- SIMPLICIO_AUTO_UPGRADE=1 # force run even in CI
19
+ Controls:
20
+ SIMPLICIO_AUTO_UPGRADE=1 # enable session-start upgrade check
21
+ SIMPLICIO_NO_AUTO_UPGRADE=1 # skip it even when AUTO_UPGRADE is set
22
22
  """
23
23
 
24
24
  from __future__ import annotations
@@ -150,14 +150,19 @@ def _pypi_latest(name: str, timeout: float = 5.0, refresh: bool = False) -> str
150
150
 
151
151
 
152
152
  def _version_lt(a: str | None, b: str | None) -> bool:
153
- """Naive but adequate lex-on-int-tuple compare. Returns False if either is
154
- None — we don't try to guess what 'unknown' means."""
153
+ """PEP-440-lite compare for numeric releases plus dev/a/b/rc prereleases."""
155
154
  if a is None or b is None:
156
155
  return False
157
156
 
158
- def parse(v: str) -> tuple[int, ...]:
159
- parts = re.split(r"[^0-9]+", v)
160
- return tuple(int(x) for x in parts if x.isdigit())
157
+ def parse(v: str) -> tuple[tuple[int, ...], tuple[int, int]]:
158
+ match = re.match(r"^\s*(\d+(?:\.\d+)*)\s*([A-Za-z]+)?\s*(\d+)?\s*$", v)
159
+ if not match:
160
+ raise ValueError(v)
161
+ release = tuple(int(part) for part in match.group(1).split("."))
162
+ stage_raw = (match.group(2) or "").lower()
163
+ stage_num = int(match.group(3) or 0)
164
+ stage_order = {"dev": 0, "a": 1, "alpha": 1, "b": 2, "beta": 2, "rc": 3, "c": 3, "": 4}
165
+ return release, (stage_order.get(stage_raw, 4), stage_num)
161
166
 
162
167
  try:
163
168
  return parse(a) < parse(b)
@@ -297,6 +302,8 @@ def maybe_run_session_start() -> None:
297
302
  "yes",
298
303
  ):
299
304
  return
305
+ if os.environ.get("SIMPLICIO_AUTO_UPGRADE", "").strip().lower() not in {"1", "true", "yes"}:
306
+ return
300
307
 
301
308
  upgraded = ensure_latest()
302
309
  if upgraded:
@@ -0,0 +1,34 @@
1
+ """Public bridge to the installed ``simplicio-mapper`` package.
2
+
3
+ This keeps ``simplicio-cli`` as the operational CLI while exposing the
4
+ underlying mapper dependency for downstream Python consumers that want a
5
+ single import surface from this distribution.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from importlib import import_module
11
+ from importlib.metadata import version
12
+ from types import ModuleType
13
+ from typing import Any
14
+
15
+ _DIST_NAME = "simplicio-mapper"
16
+ _MODULE_NAME = "simplicio_mapper"
17
+
18
+
19
+ def mapper_module() -> ModuleType:
20
+ """Return the installed ``simplicio_mapper`` module."""
21
+ return import_module(_MODULE_NAME)
22
+
23
+
24
+ def mapper_version() -> str:
25
+ """Return the installed ``simplicio-mapper`` distribution version."""
26
+ return version(_DIST_NAME)
27
+
28
+
29
+ def __getattr__(name: str) -> Any:
30
+ """Proxy attributes to the underlying ``simplicio_mapper`` module."""
31
+ return getattr(mapper_module(), name)
32
+
33
+
34
+ __all__ = ["mapper_module", "mapper_version"]