simplicio-cli 0.9.1__tar.gz → 0.9.3__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 (447) hide show
  1. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/PKG-INFO +97 -7
  2. simplicio_cli-0.9.1/simplicio_cli.egg-info/PKG-INFO → simplicio_cli-0.9.3/README.md +77 -46
  3. simplicio_cli-0.9.3/pyproject.toml +215 -0
  4. simplicio_cli-0.9.3/simplicio/__init__.py +1 -0
  5. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/_cache.py +14 -26
  6. simplicio_cli-0.9.3/simplicio/adaptive.py +164 -0
  7. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/bench.py +57 -29
  8. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/cache.py +11 -5
  9. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/cache_cli.py +20 -13
  10. simplicio_cli-0.9.3/simplicio/cli.py +496 -0
  11. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/commands/__init__.py +5 -3
  12. simplicio_cli-0.9.3/simplicio/commands/_shared.py +76 -0
  13. simplicio_cli-0.9.3/simplicio/commands/bench.py +15 -0
  14. simplicio_cli-0.9.3/simplicio/commands/cache.py +36 -0
  15. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/commands/claims.py +152 -56
  16. simplicio_cli-0.9.3/simplicio/commands/detect.py +25 -0
  17. simplicio_cli-0.9.3/simplicio/commands/doctor.py +28 -0
  18. simplicio_cli-0.9.3/simplicio/commands/edit.py +66 -0
  19. simplicio_cli-0.9.3/simplicio/commands/env_export.py +30 -0
  20. simplicio_cli-0.9.3/simplicio/commands/file.py +22 -0
  21. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/commands/file_read.py +2 -4
  22. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/commands/gate.py +5 -5
  23. simplicio_cli-0.9.3/simplicio/commands/index.py +15 -0
  24. simplicio_cli-0.9.3/simplicio/commands/init.py +20 -0
  25. simplicio_cli-0.9.3/simplicio/commands/inspect.py +24 -0
  26. simplicio_cli-0.9.3/simplicio/commands/memory.py +48 -0
  27. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/commands/nest.py +4 -12
  28. simplicio_cli-0.9.3/simplicio/commands/run.py +352 -0
  29. simplicio_cli-0.9.3/simplicio/commands/runtime.py +30 -0
  30. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/commands/score_skill.py +38 -15
  31. simplicio_cli-0.9.3/simplicio/commands/serve.py +22 -0
  32. simplicio_cli-0.9.3/simplicio/commands/smoke.py +23 -0
  33. simplicio_cli-0.9.3/simplicio/commands/status.py +101 -0
  34. simplicio_cli-0.9.3/simplicio/commands/task.py +55 -0
  35. simplicio_cli-0.9.3/simplicio/commands/test.py +29 -0
  36. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/commands/test_run.py +2 -6
  37. simplicio_cli-0.9.3/simplicio/commands/token.py +64 -0
  38. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/detect.py +171 -33
  39. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/doctor.py +77 -38
  40. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/dod.py +0 -1
  41. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/ecosystem.py +38 -22
  42. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/hardware.py +16 -12
  43. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/init.py +19 -13
  44. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/intent.py +1 -0
  45. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/local_models.py +13 -8
  46. simplicio_cli-0.9.3/simplicio/mapper.py +593 -0
  47. simplicio_cli-0.9.3/simplicio/mcp_server.py +261 -0
  48. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/mechanical_edit.py +6 -7
  49. simplicio_cli-0.9.3/simplicio/memory_store.py +204 -0
  50. simplicio_cli-0.9.3/simplicio/observability.py +345 -0
  51. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/orchestrator/cost_governor.py +19 -12
  52. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/orchestrator/feature.py +5 -14
  53. simplicio_cli-0.9.3/simplicio/pipeline.py +571 -0
  54. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/pipeline_fixers.py +12 -8
  55. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/precedent.py +93 -23
  56. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/prompt.py +24 -11
  57. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/providers.py +243 -51
  58. simplicio_cli-0.9.3/simplicio/py.typed +0 -0
  59. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/runtime_bridge.py +1 -3
  60. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/runtime_contracts.py +17 -1
  61. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/runtime_env.py +0 -1
  62. simplicio_cli-0.9.3/simplicio/scratch/__init__.py +22 -0
  63. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/scratch/cli.py +31 -42
  64. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/scratch/codegen/go_gin.py +1 -3
  65. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/scratch/codegen/php_laravel.py +1 -3
  66. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/scratch/codegen/python_cst.py +5 -15
  67. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/scratch/codegen/python_fastapi.py +3 -8
  68. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/scratch/codegen/python_orm.py +3 -10
  69. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/scratch/codegen/python_pydantic.py +13 -50
  70. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/scratch/codegen/python_pytest.py +10 -32
  71. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/scratch/codegen/registry.py +2 -2
  72. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/scratch/codegen/rust_axum.py +1 -3
  73. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/scratch/codegen/typescript_next_page.py +1 -3
  74. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/scratch/codegen/typescript_next_route.py +5 -21
  75. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/scratch/executor.py +11 -26
  76. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/scratch/plan_schema.py +6 -15
  77. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/scratch/planner.py +8 -6
  78. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/scratch/recipes.py +33 -58
  79. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/scratch/skill_opt.py +12 -23
  80. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/scratch/stack_registry.py +7 -5
  81. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/skill_router.py +16 -7
  82. simplicio_cli-0.9.3/simplicio/templates/stacks/py-cli/tree/src/app/__pycache__/__init__.cpython-314.pyc +0 -0
  83. simplicio_cli-0.9.3/simplicio/templates/stacks/py-cli/tree/src/app/__pycache__/cli.cpython-314.pyc +0 -0
  84. simplicio_cli-0.9.3/simplicio/templates/stacks/py-cli/tree/tests/__pycache__/test_cli.cpython-314.pyc +0 -0
  85. simplicio_cli-0.9.3/simplicio/templates/stacks/py-django/tree/__pycache__/manage.cpython-314.pyc +0 -0
  86. simplicio_cli-0.9.3/simplicio/templates/stacks/py-django/tree/app/__pycache__/__init__.cpython-314.pyc +0 -0
  87. simplicio_cli-0.9.3/simplicio/templates/stacks/py-django/tree/app/__pycache__/apps.cpython-314.pyc +0 -0
  88. simplicio_cli-0.9.3/simplicio/templates/stacks/py-django/tree/app/__pycache__/tests.cpython-314.pyc +0 -0
  89. simplicio_cli-0.9.3/simplicio/templates/stacks/py-django/tree/app/__pycache__/views.cpython-314.pyc +0 -0
  90. simplicio_cli-0.9.3/simplicio/templates/stacks/py-django/tree/config/__pycache__/__init__.cpython-314.pyc +0 -0
  91. simplicio_cli-0.9.3/simplicio/templates/stacks/py-django/tree/config/__pycache__/asgi.cpython-314.pyc +0 -0
  92. simplicio_cli-0.9.3/simplicio/templates/stacks/py-django/tree/config/__pycache__/settings.cpython-314.pyc +0 -0
  93. simplicio_cli-0.9.3/simplicio/templates/stacks/py-django/tree/config/__pycache__/urls.cpython-314.pyc +0 -0
  94. simplicio_cli-0.9.3/simplicio/templates/stacks/py-django/tree/config/__pycache__/wsgi.cpython-314.pyc +0 -0
  95. simplicio_cli-0.9.3/simplicio/templates/stacks/py-fastapi/tree/src/__pycache__/main.cpython-314.pyc +0 -0
  96. simplicio_cli-0.9.3/simplicio/templates/stacks/py-fastapi/tree/src/api/__pycache__/__init__.cpython-314.pyc +0 -0
  97. simplicio_cli-0.9.3/simplicio/templates/stacks/py-fastapi/tree/tests/__pycache__/test_health.cpython-314.pyc +0 -0
  98. simplicio_cli-0.9.3/simplicio/templates/stacks/py-flask/tree/src/__pycache__/app.cpython-314.pyc +0 -0
  99. simplicio_cli-0.9.3/simplicio/templates/stacks/py-flask/tree/tests/__pycache__/test_health.cpython-314.pyc +0 -0
  100. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/token_primitives.py +0 -1
  101. simplicio_cli-0.9.3/simplicio/toon_codec.py +407 -0
  102. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/utils/cache.py +8 -6
  103. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/utils/http_client.py +8 -8
  104. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/utils/serialization.py +3 -0
  105. simplicio_cli-0.9.1/README.md → simplicio_cli-0.9.3/simplicio_cli.egg-info/PKG-INFO +136 -1
  106. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio_cli.egg-info/SOURCES.txt +42 -0
  107. simplicio_cli-0.9.3/simplicio_cli.egg-info/requires.txt +38 -0
  108. simplicio_cli-0.9.1/pyproject.toml +0 -94
  109. simplicio_cli-0.9.1/simplicio/__init__.py +0 -1
  110. simplicio_cli-0.9.1/simplicio/adaptive.py +0 -60
  111. simplicio_cli-0.9.1/simplicio/cli.py +0 -1220
  112. simplicio_cli-0.9.1/simplicio/mapper.py +0 -283
  113. simplicio_cli-0.9.1/simplicio/observability.py +0 -32
  114. simplicio_cli-0.9.1/simplicio/pipeline.py +0 -257
  115. simplicio_cli-0.9.1/simplicio/scratch/__init__.py +0 -16
  116. simplicio_cli-0.9.1/simplicio_cli.egg-info/requires.txt +0 -17
  117. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/LICENSE +0 -0
  118. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/setup.cfg +0 -0
  119. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/orchestrator/__init__.py +0 -0
  120. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/scratch/_pipeline_adapter.py +0 -0
  121. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/scratch/codegen/__init__.py +1 -1
  122. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/scratch/codegen/markdown_document.py +0 -0
  123. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/scratch/codegen/types.py +0 -0
  124. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/sprint_loader.py +0 -0
  125. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/SKILL.md +0 -0
  126. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/recipes/go-gin/admin-crud.yaml +0 -0
  127. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/recipes/go-gin/auth-jwt.yaml +0 -0
  128. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/recipes/go-gin/crud-resource.yaml +0 -0
  129. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/recipes/php-laravel/admin-crud.yaml +0 -0
  130. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/recipes/php-laravel/auth-jwt.yaml +0 -0
  131. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/recipes/php-laravel/crud-resource.yaml +0 -0
  132. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/recipes/php-vanilla/docs-marker.yaml +0 -0
  133. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/recipes/py-fastapi/admin-crud.yaml +0 -0
  134. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/recipes/py-fastapi/auth-jwt.yaml +0 -0
  135. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/recipes/py-fastapi/background-worker.yaml +0 -0
  136. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/recipes/py-fastapi/crud-resource.yaml +0 -0
  137. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/recipes/py-fastapi/file-upload.yaml +0 -0
  138. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/recipes/py-fastapi/oauth-integration.yaml +0 -0
  139. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/recipes/py-fastapi/scheduled-job.yaml +0 -0
  140. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/recipes/py-fastapi/websocket.yaml +0 -0
  141. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/recipes/rust-axum/admin-crud.yaml +0 -0
  142. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/recipes/rust-axum/auth-jwt.yaml +0 -0
  143. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/recipes/rust-axum/crud-resource.yaml +0 -0
  144. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/recipes/ts-nextjs/admin-crud.yaml +0 -0
  145. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/recipes/ts-nextjs/auth-jwt.yaml +0 -0
  146. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/recipes/ts-nextjs/crud-resource.yaml +0 -0
  147. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/simplicio_prompt.md +0 -0
  148. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/bash-cli/README.md +0 -0
  149. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/bash-cli/practices.md +0 -0
  150. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/bash-cli/stack.json +0 -0
  151. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/bash-cli/tree/README.md +0 -0
  152. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/bash-cli/tree/bin/app.sh +0 -0
  153. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/bash-cli/tree/test/app.bats +0 -0
  154. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/bash-cli/verify.json +0 -0
  155. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/csharp-aspnet/README.md +0 -0
  156. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/csharp-aspnet/practices.md +0 -0
  157. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/csharp-aspnet/stack.json +0 -0
  158. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/csharp-aspnet/tree/README.md +0 -0
  159. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/csharp-aspnet/tree/src/App.Api/App.Api.csproj +0 -0
  160. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/csharp-aspnet/tree/src/App.Api/Program.cs +0 -0
  161. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/csharp-aspnet/tree/tests/App.Tests/App.Tests.csproj +0 -0
  162. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/csharp-aspnet/tree/tests/App.Tests/HealthTests.cs +0 -0
  163. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/csharp-aspnet/verify.json +0 -0
  164. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/csharp-blazor/README.md +0 -0
  165. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/csharp-blazor/practices.md +0 -0
  166. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/csharp-blazor/stack.json +0 -0
  167. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/csharp-blazor/tree/README.md +0 -0
  168. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/App.Web.csproj +0 -0
  169. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/Components/App.razor +0 -0
  170. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/Components/Pages/Home.razor +0 -0
  171. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/csharp-blazor/tree/src/App.Web/Program.cs +0 -0
  172. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/csharp-blazor/tree/tests/App.Tests/App.Tests.csproj +0 -0
  173. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/csharp-blazor/tree/tests/App.Tests/HealthTests.cs +0 -0
  174. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/csharp-blazor/verify.json +0 -0
  175. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/dart-flutter/README.md +0 -0
  176. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/dart-flutter/practices.md +0 -0
  177. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/dart-flutter/stack.json +0 -0
  178. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/dart-flutter/tree/README.md +0 -0
  179. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/dart-flutter/tree/lib/main.dart +0 -0
  180. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/dart-flutter/tree/pubspec.yaml +0 -0
  181. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/dart-flutter/tree/test/widget_test.dart +0 -0
  182. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/dart-flutter/verify.json +0 -0
  183. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/elixir-phoenix/README.md +0 -0
  184. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/elixir-phoenix/practices.md +0 -0
  185. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/elixir-phoenix/stack.json +0 -0
  186. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/elixir-phoenix/tree/README.md +0 -0
  187. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/elixir-phoenix/tree/config/config.exs +0 -0
  188. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app/application.ex +0 -0
  189. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app_web/controllers/health_controller.ex +0 -0
  190. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app_web/endpoint.ex +0 -0
  191. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/elixir-phoenix/tree/lib/app_web/router.ex +0 -0
  192. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/elixir-phoenix/tree/mix.exs +0 -0
  193. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/elixir-phoenix/tree/test/health_controller_test.exs +0 -0
  194. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/elixir-phoenix/tree/test/test_helper.exs +0 -0
  195. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/elixir-phoenix/verify.json +0 -0
  196. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-cli/README.md +0 -0
  197. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-cli/practices.md +0 -0
  198. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-cli/stack.json +0 -0
  199. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-cli/tree/README.md +0 -0
  200. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-cli/tree/cmd/root.go +0 -0
  201. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-cli/tree/cmd/root_test.go +0 -0
  202. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-cli/tree/go.mod +0 -0
  203. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-cli/tree/main.go +0 -0
  204. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-cli/verify.json +0 -0
  205. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-echo/README.md +0 -0
  206. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-echo/practices.md +0 -0
  207. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-echo/stack.json +0 -0
  208. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-echo/tree/README.md +0 -0
  209. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-echo/tree/cmd/server/main.go +0 -0
  210. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-echo/tree/go.mod +0 -0
  211. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-echo/tree/internal/http/router.go +0 -0
  212. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-echo/tree/internal/http/router_test.go +0 -0
  213. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-echo/verify.json +0 -0
  214. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-gin/README.md +0 -0
  215. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-gin/practices.md +0 -0
  216. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-gin/stack.json +0 -0
  217. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-gin/tree/README.md +0 -0
  218. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-gin/tree/cmd/server/main.go +0 -0
  219. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-gin/tree/go.mod +0 -0
  220. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-gin/tree/internal/http/router.go +0 -0
  221. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-gin/tree/internal/http/router_test.go +0 -0
  222. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/go-gin/verify.json +0 -0
  223. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/java-spring/README.md +0 -0
  224. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/java-spring/practices.md +0 -0
  225. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/java-spring/stack.json +0 -0
  226. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/java-spring/tree/README.md +0 -0
  227. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/java-spring/tree/build.gradle.kts +0 -0
  228. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/java-spring/tree/settings.gradle.kts +0 -0
  229. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/java-spring/tree/src/main/java/com/example/Application.java +0 -0
  230. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/java-spring/tree/src/main/java/com/example/HealthController.java +0 -0
  231. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/java-spring/tree/src/test/java/com/example/HealthControllerTest.java +0 -0
  232. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/java-spring/verify.json +0 -0
  233. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/js-express/README.md +0 -0
  234. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/js-express/practices.md +0 -0
  235. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/js-express/stack.json +0 -0
  236. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/js-express/tree/README.md +0 -0
  237. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/js-express/tree/package.json +0 -0
  238. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/js-express/tree/src/app.js +0 -0
  239. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/js-express/tree/src/server.js +0 -0
  240. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/js-express/tree/tests/health.test.js +0 -0
  241. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/js-express/verify.json +0 -0
  242. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-android/README.md +0 -0
  243. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-android/practices.md +0 -0
  244. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-android/stack.json +0 -0
  245. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-android/tree/README.md +0 -0
  246. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-android/tree/app/build.gradle.kts +0 -0
  247. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-android/tree/app/src/main/AndroidManifest.xml +0 -0
  248. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-android/tree/app/src/main/java/com/example/app/MainActivity.kt +0 -0
  249. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-android/tree/app/src/main/res/values/styles.xml +0 -0
  250. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-android/tree/app/src/test/java/com/example/app/SmokeTest.kt +0 -0
  251. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-android/tree/build.gradle.kts +0 -0
  252. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-android/tree/settings.gradle.kts +0 -0
  253. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-android/verify.json +0 -0
  254. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-ktor/README.md +0 -0
  255. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-ktor/practices.md +0 -0
  256. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-ktor/stack.json +0 -0
  257. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-ktor/tree/README.md +0 -0
  258. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-ktor/tree/build.gradle.kts +0 -0
  259. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-ktor/tree/settings.gradle.kts +0 -0
  260. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-ktor/tree/src/main/kotlin/com/example/Application.kt +0 -0
  261. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-ktor/tree/src/test/kotlin/com/example/ApplicationTest.kt +0 -0
  262. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-ktor/verify.json +0 -0
  263. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-spring/README.md +0 -0
  264. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-spring/practices.md +0 -0
  265. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-spring/stack.json +0 -0
  266. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-spring/tree/README.md +0 -0
  267. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-spring/tree/build.gradle.kts +0 -0
  268. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-spring/tree/settings.gradle.kts +0 -0
  269. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-spring/tree/src/main/kotlin/com/example/Application.kt +0 -0
  270. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-spring/tree/src/main/kotlin/com/example/HealthController.kt +0 -0
  271. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-spring/tree/src/test/kotlin/com/example/HealthControllerTest.kt +0 -0
  272. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/kotlin-spring/verify.json +0 -0
  273. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-laravel/README.md +0 -0
  274. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-laravel/practices.md +0 -0
  275. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-laravel/stack.json +0 -0
  276. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-laravel/tree/README.md +0 -0
  277. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-laravel/tree/artisan +0 -0
  278. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-laravel/tree/bootstrap/app.php +0 -0
  279. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-laravel/tree/composer.json +0 -0
  280. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-laravel/tree/phpunit.xml +0 -0
  281. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-laravel/tree/routes/api.php +0 -0
  282. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-laravel/tree/routes/console.php +0 -0
  283. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-laravel/tree/tests/Feature/HealthTest.php +0 -0
  284. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-laravel/tree/tests/TestCase.php +0 -0
  285. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-laravel/verify.json +0 -0
  286. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-symfony/README.md +0 -0
  287. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-symfony/practices.md +0 -0
  288. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-symfony/stack.json +0 -0
  289. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-symfony/tree/README.md +0 -0
  290. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-symfony/tree/composer.json +0 -0
  291. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-symfony/tree/src/Controller/HealthController.php +0 -0
  292. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-symfony/tree/tests/HealthControllerTest.php +0 -0
  293. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-symfony/verify.json +0 -0
  294. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-vanilla/README.md +0 -0
  295. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-vanilla/practices.md +0 -0
  296. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-vanilla/stack.json +0 -0
  297. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-vanilla/tree/README.md +0 -0
  298. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-vanilla/tree/composer.json +0 -0
  299. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-vanilla/tree/phpunit.xml +0 -0
  300. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-vanilla/tree/src/Health.php +0 -0
  301. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-vanilla/tree/tests/HealthTest.php +0 -0
  302. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/php-vanilla/verify.json +0 -0
  303. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-cli/README.md +0 -0
  304. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-cli/practices.md +0 -0
  305. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-cli/stack.json +0 -0
  306. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-cli/tree/README.md +0 -0
  307. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-cli/tree/pyproject.toml +0 -0
  308. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-cli/tree/src/app/__init__.py +0 -0
  309. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-cli/tree/src/app/cli.py +0 -0
  310. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-cli/tree/tests/test_cli.py +0 -0
  311. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-cli/verify.json +0 -0
  312. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-django/README.md +0 -0
  313. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-django/practices.md +0 -0
  314. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-django/stack.json +0 -0
  315. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-django/tree/README.md +0 -0
  316. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-django/tree/app/__init__.py +0 -0
  317. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-django/tree/app/apps.py +0 -0
  318. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-django/tree/app/tests.py +0 -0
  319. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-django/tree/app/views.py +0 -0
  320. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-django/tree/config/__init__.py +0 -0
  321. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-django/tree/config/asgi.py +0 -0
  322. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-django/tree/config/settings.py +0 -0
  323. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-django/tree/config/urls.py +0 -0
  324. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-django/tree/config/wsgi.py +0 -0
  325. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-django/tree/manage.py +0 -0
  326. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-django/tree/pyproject.toml +0 -0
  327. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-django/verify.json +0 -0
  328. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-fastapi/README.md +0 -0
  329. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-fastapi/practices.md +0 -0
  330. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-fastapi/stack.json +0 -0
  331. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-fastapi/tree/.gitignore +0 -0
  332. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-fastapi/tree/README.template.md +0 -0
  333. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-fastapi/tree/pyproject.toml +0 -0
  334. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-fastapi/tree/ruff.toml +0 -0
  335. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-fastapi/tree/src/api/__init__.py +0 -0
  336. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-fastapi/tree/src/main.py +0 -0
  337. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-fastapi/tree/tests/test_health.py +0 -0
  338. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-fastapi/verify.json +0 -0
  339. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-flask/README.md +0 -0
  340. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-flask/practices.md +0 -0
  341. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-flask/stack.json +0 -0
  342. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-flask/tree/README.md +0 -0
  343. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-flask/tree/pyproject.toml +0 -0
  344. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-flask/tree/ruff.toml +0 -0
  345. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-flask/tree/src/app.py +0 -0
  346. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-flask/tree/tests/test_health.py +0 -0
  347. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/py-flask/verify.json +0 -0
  348. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/react-vite/README.md +0 -0
  349. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/react-vite/practices.md +0 -0
  350. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/react-vite/stack.json +0 -0
  351. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/react-vite/tree/README.md +0 -0
  352. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/react-vite/tree/index.html +0 -0
  353. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/react-vite/tree/package.json +0 -0
  354. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/react-vite/tree/src/App.test.tsx +0 -0
  355. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/react-vite/tree/src/App.tsx +0 -0
  356. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/react-vite/tree/src/main.tsx +0 -0
  357. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/react-vite/tree/tsconfig.json +0 -0
  358. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/react-vite/verify.json +0 -0
  359. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ruby-rails/README.md +0 -0
  360. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ruby-rails/practices.md +0 -0
  361. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ruby-rails/stack.json +0 -0
  362. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ruby-rails/tree/Gemfile +0 -0
  363. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ruby-rails/tree/README.md +0 -0
  364. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ruby-rails/tree/app/controllers/health_controller.rb +0 -0
  365. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ruby-rails/tree/bin/rails +0 -0
  366. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ruby-rails/tree/config/application.rb +0 -0
  367. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ruby-rails/tree/config/boot.rb +0 -0
  368. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ruby-rails/tree/config/routes.rb +0 -0
  369. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ruby-rails/tree/test/controllers/health_controller_test.rb +0 -0
  370. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ruby-rails/tree/test/test_helper.rb +0 -0
  371. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ruby-rails/verify.json +0 -0
  372. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/rust-axum/README.md +0 -0
  373. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/rust-axum/practices.md +0 -0
  374. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/rust-axum/stack.json +0 -0
  375. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/rust-axum/tree/Cargo.toml +0 -0
  376. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/rust-axum/tree/README.md +0 -0
  377. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/rust-axum/tree/src/main.rs +0 -0
  378. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/rust-axum/verify.json +0 -0
  379. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/rust-cli/README.md +0 -0
  380. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/rust-cli/practices.md +0 -0
  381. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/rust-cli/stack.json +0 -0
  382. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/rust-cli/tree/Cargo.toml +0 -0
  383. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/rust-cli/tree/README.md +0 -0
  384. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/rust-cli/tree/src/main.rs +0 -0
  385. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/rust-cli/verify.json +0 -0
  386. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/rust-leptos/README.md +0 -0
  387. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/rust-leptos/practices.md +0 -0
  388. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/rust-leptos/stack.json +0 -0
  389. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/rust-leptos/tree/Cargo.toml +0 -0
  390. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/rust-leptos/tree/README.md +0 -0
  391. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/rust-leptos/tree/src/main.rs +0 -0
  392. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/rust-leptos/verify.json +0 -0
  393. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/swift-ios/README.md +0 -0
  394. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/swift-ios/practices.md +0 -0
  395. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/swift-ios/stack.json +0 -0
  396. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/swift-ios/tree/README.md +0 -0
  397. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/swift-ios/tree/Sources/App/App.swift +0 -0
  398. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/swift-ios/tree/Sources/App/ContentView.swift +0 -0
  399. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/swift-ios/tree/Tests/AppTests/AppTests.swift +0 -0
  400. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/swift-ios/verify.json +0 -0
  401. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/swift-vapor/README.md +0 -0
  402. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/swift-vapor/practices.md +0 -0
  403. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/swift-vapor/stack.json +0 -0
  404. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/swift-vapor/tree/Package.swift +0 -0
  405. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/swift-vapor/tree/README.md +0 -0
  406. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/swift-vapor/tree/Sources/App/main.swift +0 -0
  407. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/swift-vapor/tree/Tests/AppTests/HealthTests.swift +0 -0
  408. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/swift-vapor/verify.json +0 -0
  409. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-nestjs/README.md +0 -0
  410. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-nestjs/practices.md +0 -0
  411. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-nestjs/stack.json +0 -0
  412. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-nestjs/tree/README.md +0 -0
  413. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-nestjs/tree/package.json +0 -0
  414. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-nestjs/tree/src/app.controller.spec.ts +0 -0
  415. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-nestjs/tree/src/app.controller.ts +0 -0
  416. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-nestjs/tree/src/app.module.ts +0 -0
  417. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-nestjs/tree/src/main.ts +0 -0
  418. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-nestjs/tree/tsconfig.json +0 -0
  419. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-nestjs/verify.json +0 -0
  420. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-nextjs/README.md +0 -0
  421. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-nextjs/practices.md +0 -0
  422. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-nextjs/stack.json +0 -0
  423. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-nextjs/tree/.eslintrc.json +0 -0
  424. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-nextjs/tree/.gitignore +0 -0
  425. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-nextjs/tree/next.config.mjs +0 -0
  426. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-nextjs/tree/package.json +0 -0
  427. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-nextjs/tree/pnpm-workspace.yaml +0 -0
  428. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-nextjs/tree/src/app/layout.tsx +0 -0
  429. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-nextjs/tree/src/app/page.tsx +0 -0
  430. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-nextjs/tree/tsconfig.json +0 -0
  431. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-nextjs/verify.json +0 -0
  432. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-remix/README.md +0 -0
  433. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-remix/practices.md +0 -0
  434. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-remix/stack.json +0 -0
  435. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-remix/tree/README.md +0 -0
  436. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-remix/tree/app/root.tsx +0 -0
  437. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-remix/tree/app/routes/_index.tsx +0 -0
  438. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-remix/tree/app/routes/health.test.ts +0 -0
  439. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-remix/tree/app/routes/health.ts +0 -0
  440. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-remix/tree/package.json +0 -0
  441. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-remix/tree/tsconfig.json +0 -0
  442. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/stacks/ts-remix/verify.json +0 -0
  443. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/templates/userpromptsubmit-hook.sh +0 -0
  444. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio/utils/__init__.py +0 -0
  445. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio_cli.egg-info/dependency_links.txt +0 -0
  446. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/simplicio_cli.egg-info/entry_points.txt +0 -0
  447. {simplicio_cli-0.9.1 → simplicio_cli-0.9.3}/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.9.1
3
+ Version: 0.9.3
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
@@ -26,21 +26,35 @@ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
26
26
  Requires-Python: >=3.10
27
27
  Description-Content-Type: text/markdown
28
28
  License-File: LICENSE
29
- Requires-Dist: sentence-transformers>=5.6.0
30
- Requires-Dist: numpy>=2.5.0
31
- Requires-Dist: anthropic>=0.112.0
32
- Requires-Dist: openai>=2.44.0
33
- Requires-Dist: simplicio-mapper>=0.13.0
29
+ Requires-Dist: numpy>=2.1.0
30
+ Requires-Dist: simplicio-mapper>=0.16.0
34
31
  Requires-Dist: simplicio-prompt>=1.14.1
35
32
  Requires-Dist: httpx>=0.28.1
36
33
  Requires-Dist: orjson>=3.11.9
37
34
  Requires-Dist: diskcache>=5.6.3
38
35
  Requires-Dist: libcst>=1.8.6
36
+ Provides-Extra: providers
37
+ Requires-Dist: anthropic>=0.112.0; extra == "providers"
38
+ Requires-Dist: openai>=2.44.0; extra == "providers"
39
+ Provides-Extra: ml
40
+ Requires-Dist: sentence-transformers>=5.6.0; extra == "ml"
39
41
  Provides-Extra: bench
40
42
  Requires-Dist: fpdf2>=2.8.7; extra == "bench"
41
43
  Provides-Extra: local
42
44
  Requires-Dist: llama-cpp-python>=0.3.32; extra == "local"
43
45
  Requires-Dist: huggingface-hub>=1.21.0; extra == "local"
46
+ Provides-Extra: all
47
+ Requires-Dist: simplicio-cli[providers]; extra == "all"
48
+ Requires-Dist: simplicio-cli[ml]; extra == "all"
49
+ Requires-Dist: simplicio-cli[bench]; extra == "all"
50
+ Requires-Dist: simplicio-cli[local]; extra == "all"
51
+ Provides-Extra: test
52
+ Requires-Dist: pytest>=8; extra == "test"
53
+ Requires-Dist: tomli>=2.0.1; python_version < "3.11" and extra == "test"
54
+ Provides-Extra: dev
55
+ Requires-Dist: simplicio-cli[test]; extra == "dev"
56
+ Requires-Dist: ruff>=0.15.8; extra == "dev"
57
+ Requires-Dist: mypy>=1.19.1; extra == "dev"
44
58
  Dynamic: license-file
45
59
 
46
60
  <h1 align="center">simplicio-cli</h1>
@@ -136,7 +150,12 @@ delivery status"]
136
150
 
137
151
  ## Documentation standard
138
152
 
139
- - [docs/PYTHON_PACKAGE_INTERDEPENDENCE.md](docs/PYTHON_PACKAGE_INTERDEPENDENCE.md)
153
+ - [docs/PYTHON_PACKAGE_INTERDEPENDENCE.md](docs/PYTHON_PACKAGE_INTERDEPENDENCE.md)
154
+ **generated, not hand-edited** (#101). Regenerate after touching
155
+ `pyproject.toml`'s version/dependencies/extras:
156
+ `python3 scripts/gen_package_interdependence.py`. CI enforces it hasn't
157
+ drifted (`python3 scripts/gen_package_interdependence.py --check`, also
158
+ covered by `tests/python/test_generated_docs.py`).
140
159
  - [docs/LLM_USAGE_POLICY.md](docs/LLM_USAGE_POLICY.md)
141
160
  - [docs/readme-globalization-standard.md](docs/readme-globalization-standard.md)
142
161
 
@@ -435,6 +454,38 @@ classifies failures, and sends targeted retry feedback. Bench and pipeline runs
435
454
  can append lightweight JSONL records to `.simplicio/runs.jsonl` with prompt
436
455
  variant, model/provider, estimated tokens, target, mode and failure class.
437
456
 
457
+ **TOON-encoded prompt context (`SIMPLICIO_PROMPT_TOON`, default on).** The
458
+ uniform-array context blocks injected into generation prompts — mapper
459
+ handoff `files[]`, project-map `Relevant files`, `Precedent candidates` — are
460
+ rendered as [TOON](https://github.com/toon-format/toon) instead of
461
+ hand-rolled bullets, ~27% fewer tokens on the same content (measured over
462
+ `bench/cases.json`, see `bench/results_toon_ab.md`), losslessly. Non-uniform
463
+ arrays fall back to compact JSON automatically. Set
464
+ `SIMPLICIO_PROMPT_TOON=0` to restore the legacy bullet rendering.
465
+
466
+ **Per-call usage events (`SIMPLICIO_LOG_ROOT`, opt-in).** Point this at a
467
+ project root and `generate()`/`planner_complete()` append one usage event to
468
+ `.simplicio/runs.jsonl` per provider call (cache hit or miss), labeling
469
+ whether the token count is real provider-reported usage or the canonical
470
+ estimator's guess. TOON activations and other measured token savings are
471
+ recorded to a separate append-only ledger,
472
+ `.simplicio/ledger/savings-events.jsonl` (`simplicio.savings-event/v1`), via
473
+ `simplicio.observability.record_savings_event()`.
474
+
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.
481
+
482
+ `simplicio-dev-cli memory init|store|recall` is a markdown + git store under
483
+ `~/.simplicio/memory/` (override with `SIMPLICIO_MEMORY_DIR`) for handing
484
+ context off between agent vendors — a decision stored by one tool is
485
+ recallable by another. Recall is deterministic keyword search, no LLM call,
486
+ no network; real FTS5/vector-hybrid recall is a documented follow-up, not
487
+ claimed here.
488
+
438
489
  **The idea in one line: don't ask the model to guess — hand it the path.**
439
490
  Each layer terminates one decision the model would otherwise hallucinate.
440
491
  Relevant > complete — inject the *right* context, never *all* of it.
@@ -449,6 +500,45 @@ pip install simplicio-cli # from PyPI (pulls simplicio-mapper + simpli
449
500
  pip install -e . # from this repo
450
501
  ```
451
502
 
503
+ #### Install profiles (extras)
504
+
505
+ The base install (above) is just the executor/contract/mapper-context/
506
+ edit-verify core — **no PyTorch, no provider SDKs**. Everything else is an
507
+ opt-in extra, picked to match what the code actually imports (#99):
508
+
509
+ | Extra | Adds | When you need it |
510
+ |---|---|---|
511
+ | *(base)* | `numpy`, `simplicio-mapper`, `simplicio-prompt`, `httpx`, `orjson`, `diskcache`, `libcst` | mechanical edit, mapper handoff, doctor/runtime contracts, `claude-cli`/`codex-cli` shell-out providers, cache/token primitives. `numpy` stays in base because `task`/`run`'s precedent+skill-router cosine-similarity ranking imports it unconditionally — it's lightweight (no GPU/torch), unlike the embedding model itself. |
512
+ | `simplicio-cli[providers]` | `openai`, `anthropic` | native Anthropic models, or any OpenAI-compatible endpoint (OpenRouter, GLM, DeepSeek, ...) via `SIMPLICIO_MODEL`/`SIMPLICIO_BASE_URL`. |
513
+ | `simplicio-cli[ml]` | `sentence-transformers` (pulls PyTorch, ~3 GB) | semantic precedent/skill ranking once cached vectors run out (`all-MiniLM-L6-v2`). |
514
+ | `simplicio-cli[local]` | `llama-cpp-python`, `huggingface-hub` | offline in-process inference (default local GGUF, or any `local-llama/<repo>::<file>` model). |
515
+ | `simplicio-cli[bench]` | `fpdf2` | `bench` command's PDF report. |
516
+ | `simplicio-cli[all]` | union of the four above | everything. |
517
+
518
+ Missing an extra never crashes with a raw traceback — every optional import
519
+ is guarded and raises an actionable error naming the exact extra to install
520
+ (e.g. `pip install 'simplicio-cli[providers]'`).
521
+
522
+ #### Local-equivalent of the CI gate
523
+
524
+ `.github/workflows/ci.yml` is the primary required gate (the Node/Playwright
525
+ harness in `starter-e2e.yml` validates the starter-kit template only and does
526
+ not gate merges). Reproduce it locally with:
527
+
528
+ ```bash
529
+ pip install -e ".[test]" # base install + pytest (+ tomli on 3.10)
530
+ pytest # tests/python + tests/contracts, per pyproject.toml testpaths
531
+ python3 scripts/gen_package_interdependence.py --check # generated-doc drift gate (#101)
532
+ simplicio-py --help # entrypoint smoke (x3)
533
+ simplicio-cli --help
534
+ simplicio-dev-cli --help
535
+
536
+ pip install -e ".[providers]" && python -c "import openai, anthropic" # extras coverage
537
+ pip install build twine
538
+ python -m build # sdist + wheel
539
+ python -m twine check dist/* # packaging smoke
540
+ ```
541
+
452
542
  The install ships **three Simplicio packages** that play distinct roles:
453
543
 
454
544
  - **`simplicio-cli`** (this repo) — the 6-layer task contract + verify loop.
@@ -1,48 +1,3 @@
1
- Metadata-Version: 2.4
2
- Name: simplicio-cli
3
- Version: 0.9.1
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
- Author-email: Wesley Simplicio <wesleybob4@gmail.com>
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
11
- Keywords: llm,ai,agent,code-generation,prompt-engineering,openrouter,openai,anthropic,claude,developer-tools,cli,rag,embeddings,verify-loop,task-automation
12
- Classifier: Development Status :: 4 - Beta
13
- Classifier: Environment :: Console
14
- Classifier: Intended Audience :: Developers
15
- Classifier: License :: OSI Approved :: MIT License
16
- Classifier: Operating System :: OS Independent
17
- Classifier: Programming Language :: Python :: 3
18
- Classifier: Programming Language :: Python :: 3 :: Only
19
- Classifier: Programming Language :: Python :: 3.10
20
- Classifier: Programming Language :: Python :: 3.11
21
- Classifier: Programming Language :: Python :: 3.12
22
- Classifier: Topic :: Software Development
23
- Classifier: Topic :: Software Development :: Code Generators
24
- Classifier: Topic :: Software Development :: Libraries :: Python Modules
25
- Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
26
- Requires-Python: >=3.10
27
- Description-Content-Type: text/markdown
28
- License-File: LICENSE
29
- Requires-Dist: sentence-transformers>=5.6.0
30
- Requires-Dist: numpy>=2.5.0
31
- Requires-Dist: anthropic>=0.112.0
32
- Requires-Dist: openai>=2.44.0
33
- Requires-Dist: simplicio-mapper>=0.13.0
34
- Requires-Dist: simplicio-prompt>=1.14.1
35
- Requires-Dist: httpx>=0.28.1
36
- Requires-Dist: orjson>=3.11.9
37
- Requires-Dist: diskcache>=5.6.3
38
- Requires-Dist: libcst>=1.8.6
39
- Provides-Extra: bench
40
- Requires-Dist: fpdf2>=2.8.7; extra == "bench"
41
- Provides-Extra: local
42
- Requires-Dist: llama-cpp-python>=0.3.32; extra == "local"
43
- Requires-Dist: huggingface-hub>=1.21.0; extra == "local"
44
- Dynamic: license-file
45
-
46
1
  <h1 align="center">simplicio-cli</h1>
47
2
 
48
3
  <p align="center">
@@ -136,7 +91,12 @@ delivery status"]
136
91
 
137
92
  ## Documentation standard
138
93
 
139
- - [docs/PYTHON_PACKAGE_INTERDEPENDENCE.md](docs/PYTHON_PACKAGE_INTERDEPENDENCE.md)
94
+ - [docs/PYTHON_PACKAGE_INTERDEPENDENCE.md](docs/PYTHON_PACKAGE_INTERDEPENDENCE.md)
95
+ **generated, not hand-edited** (#101). Regenerate after touching
96
+ `pyproject.toml`'s version/dependencies/extras:
97
+ `python3 scripts/gen_package_interdependence.py`. CI enforces it hasn't
98
+ drifted (`python3 scripts/gen_package_interdependence.py --check`, also
99
+ covered by `tests/python/test_generated_docs.py`).
140
100
  - [docs/LLM_USAGE_POLICY.md](docs/LLM_USAGE_POLICY.md)
141
101
  - [docs/readme-globalization-standard.md](docs/readme-globalization-standard.md)
142
102
 
@@ -435,6 +395,38 @@ classifies failures, and sends targeted retry feedback. Bench and pipeline runs
435
395
  can append lightweight JSONL records to `.simplicio/runs.jsonl` with prompt
436
396
  variant, model/provider, estimated tokens, target, mode and failure class.
437
397
 
398
+ **TOON-encoded prompt context (`SIMPLICIO_PROMPT_TOON`, default on).** The
399
+ uniform-array context blocks injected into generation prompts — mapper
400
+ handoff `files[]`, project-map `Relevant files`, `Precedent candidates` — are
401
+ rendered as [TOON](https://github.com/toon-format/toon) instead of
402
+ hand-rolled bullets, ~27% fewer tokens on the same content (measured over
403
+ `bench/cases.json`, see `bench/results_toon_ab.md`), losslessly. Non-uniform
404
+ arrays fall back to compact JSON automatically. Set
405
+ `SIMPLICIO_PROMPT_TOON=0` to restore the legacy bullet rendering.
406
+
407
+ **Per-call usage events (`SIMPLICIO_LOG_ROOT`, opt-in).** Point this at a
408
+ project root and `generate()`/`planner_complete()` append one usage event to
409
+ `.simplicio/runs.jsonl` per provider call (cache hit or miss), labeling
410
+ whether the token count is real provider-reported usage or the canonical
411
+ estimator's guess. TOON activations and other measured token savings are
412
+ recorded to a separate append-only ledger,
413
+ `.simplicio/ledger/savings-events.jsonl` (`simplicio.savings-event/v1`), via
414
+ `simplicio.observability.record_savings_event()`.
415
+
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.
422
+
423
+ `simplicio-dev-cli memory init|store|recall` is a markdown + git store under
424
+ `~/.simplicio/memory/` (override with `SIMPLICIO_MEMORY_DIR`) for handing
425
+ context off between agent vendors — a decision stored by one tool is
426
+ recallable by another. Recall is deterministic keyword search, no LLM call,
427
+ no network; real FTS5/vector-hybrid recall is a documented follow-up, not
428
+ claimed here.
429
+
438
430
  **The idea in one line: don't ask the model to guess — hand it the path.**
439
431
  Each layer terminates one decision the model would otherwise hallucinate.
440
432
  Relevant > complete — inject the *right* context, never *all* of it.
@@ -449,6 +441,45 @@ pip install simplicio-cli # from PyPI (pulls simplicio-mapper + simpli
449
441
  pip install -e . # from this repo
450
442
  ```
451
443
 
444
+ #### Install profiles (extras)
445
+
446
+ The base install (above) is just the executor/contract/mapper-context/
447
+ edit-verify core — **no PyTorch, no provider SDKs**. Everything else is an
448
+ opt-in extra, picked to match what the code actually imports (#99):
449
+
450
+ | Extra | Adds | When you need it |
451
+ |---|---|---|
452
+ | *(base)* | `numpy`, `simplicio-mapper`, `simplicio-prompt`, `httpx`, `orjson`, `diskcache`, `libcst` | mechanical edit, mapper handoff, doctor/runtime contracts, `claude-cli`/`codex-cli` shell-out providers, cache/token primitives. `numpy` stays in base because `task`/`run`'s precedent+skill-router cosine-similarity ranking imports it unconditionally — it's lightweight (no GPU/torch), unlike the embedding model itself. |
453
+ | `simplicio-cli[providers]` | `openai`, `anthropic` | native Anthropic models, or any OpenAI-compatible endpoint (OpenRouter, GLM, DeepSeek, ...) via `SIMPLICIO_MODEL`/`SIMPLICIO_BASE_URL`. |
454
+ | `simplicio-cli[ml]` | `sentence-transformers` (pulls PyTorch, ~3 GB) | semantic precedent/skill ranking once cached vectors run out (`all-MiniLM-L6-v2`). |
455
+ | `simplicio-cli[local]` | `llama-cpp-python`, `huggingface-hub` | offline in-process inference (default local GGUF, or any `local-llama/<repo>::<file>` model). |
456
+ | `simplicio-cli[bench]` | `fpdf2` | `bench` command's PDF report. |
457
+ | `simplicio-cli[all]` | union of the four above | everything. |
458
+
459
+ Missing an extra never crashes with a raw traceback — every optional import
460
+ is guarded and raises an actionable error naming the exact extra to install
461
+ (e.g. `pip install 'simplicio-cli[providers]'`).
462
+
463
+ #### Local-equivalent of the CI gate
464
+
465
+ `.github/workflows/ci.yml` is the primary required gate (the Node/Playwright
466
+ harness in `starter-e2e.yml` validates the starter-kit template only and does
467
+ not gate merges). Reproduce it locally with:
468
+
469
+ ```bash
470
+ pip install -e ".[test]" # base install + pytest (+ tomli on 3.10)
471
+ pytest # tests/python + tests/contracts, per pyproject.toml testpaths
472
+ python3 scripts/gen_package_interdependence.py --check # generated-doc drift gate (#101)
473
+ simplicio-py --help # entrypoint smoke (x3)
474
+ simplicio-cli --help
475
+ simplicio-dev-cli --help
476
+
477
+ pip install -e ".[providers]" && python -c "import openai, anthropic" # extras coverage
478
+ pip install build twine
479
+ python -m build # sdist + wheel
480
+ python -m twine check dist/* # packaging smoke
481
+ ```
482
+
452
483
  The install ships **three Simplicio packages** that play distinct roles:
453
484
 
454
485
  - **`simplicio-cli`** (this repo) — the 6-layer task contract + verify loop.
@@ -0,0 +1,215 @@
1
+ [project]
2
+ name = "simplicio-cli"
3
+ version = "0.9.3"
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
+ readme = "README.md"
6
+ license = { text = "MIT" }
7
+ requires-python = ">=3.10"
8
+ authors = [{ name = "Wesley Simplicio", email = "wesleybob4@gmail.com" }]
9
+ keywords = [
10
+ "llm",
11
+ "ai",
12
+ "agent",
13
+ "code-generation",
14
+ "prompt-engineering",
15
+ "openrouter",
16
+ "openai",
17
+ "anthropic",
18
+ "claude",
19
+ "developer-tools",
20
+ "cli",
21
+ "rag",
22
+ "embeddings",
23
+ "verify-loop",
24
+ "task-automation",
25
+ ]
26
+ classifiers = [
27
+ "Development Status :: 4 - Beta",
28
+ "Environment :: Console",
29
+ "Intended Audience :: Developers",
30
+ "License :: OSI Approved :: MIT License",
31
+ "Operating System :: OS Independent",
32
+ "Programming Language :: Python :: 3",
33
+ "Programming Language :: Python :: 3 :: Only",
34
+ "Programming Language :: Python :: 3.10",
35
+ "Programming Language :: Python :: 3.11",
36
+ "Programming Language :: Python :: 3.12",
37
+ "Topic :: Software Development",
38
+ "Topic :: Software Development :: Code Generators",
39
+ "Topic :: Software Development :: Libraries :: Python Modules",
40
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
41
+ ]
42
+ # Base install is the executor/contract/mapper-context/edit-verify core:
43
+ # mechanical edit, mapper handoff, task/run pipeline (precedent + skill
44
+ # router use numpy for cosine-similarity ranking, but NOT the embedding
45
+ # model itself), doctor/runtime contracts, caching. numpy stays in base
46
+ # (lightweight, no GPU/torch) because it is imported unconditionally by
47
+ # simplicio.cache -> simplicio.precedent/skill_router, which the core
48
+ # `task`/`run` commands import even when no remote/semantic provider is
49
+ # configured. The genuinely heavy ML dependency (sentence-transformers,
50
+ # which pulls PyTorch + CUDA wheels, ~3 GB) moves to the `ml` extra; remote
51
+ # provider SDKs move to `providers`. See docs/PYTHON_PACKAGE_INTERDEPENDENCE.md
52
+ # (generated, `--check`-able) for the full graph and #99 for the audit.
53
+ dependencies = [
54
+ "numpy>=2.1.0",
55
+ "simplicio-mapper>=0.16.0",
56
+ "simplicio-prompt>=1.14.1",
57
+ "httpx>=0.28.1",
58
+ "orjson>=3.11.9",
59
+ "diskcache>=5.6.3",
60
+ "libcst>=1.8.6",
61
+ ]
62
+
63
+ [project.optional-dependencies]
64
+ # Remote LLM provider SDKs (native Anthropic path + any OpenAI-compatible
65
+ # endpoint: OpenRouter, GLM, DeepSeek, ...). Not needed for claude-cli/
66
+ # codex-cli shell-out providers or the local llama.cpp path.
67
+ providers = ["anthropic>=0.112.0", "openai>=2.44.0"]
68
+ # Semantic precedent/skill ranking (sentence-transformers -> PyTorch). Only
69
+ # needed once `task`/`run` actually reach the embedding path (no cached
70
+ # vectors yet); the numpy-only cosine-similarity math stays in base.
71
+ ml = ["sentence-transformers>=5.6.0"]
72
+ bench = ["fpdf2>=2.8.7"]
73
+ # Offline fallback in-process inference. Pulls the llama.cpp Python bindings
74
+ # plus huggingface-hub to fetch MiniCPM5-1B-Q4_K_M.gguf.
75
+ local = ["llama-cpp-python>=0.3.32", "huggingface-hub>=1.21.0"]
76
+ all = [
77
+ "simplicio-cli[providers]",
78
+ "simplicio-cli[ml]",
79
+ "simplicio-cli[bench]",
80
+ "simplicio-cli[local]",
81
+ ]
82
+ # CI/dev-only, not a product extra: pytest to run tests/python, plus tomli
83
+ # on 3.10 (tomllib is stdlib only from 3.11+; several tests parse this file).
84
+ test = ["pytest>=8", "tomli>=2.0.1; python_version < '3.11'"]
85
+ # CI/dev-only lint+type gate (#102): never a base/product dependency.
86
+ # `ruff format --check .` / `ruff check .` / `mypy simplicio` is the local
87
+ # command (see CONTRIBUTING.md / AGENTS.md "Comandos importantes").
88
+ dev = ["simplicio-cli[test]", "ruff>=0.15.8", "mypy>=1.19.1"]
89
+
90
+ [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"
95
+
96
+ [project.scripts]
97
+ simplicio-cli = "simplicio.cli:main"
98
+ simplicio-py = "simplicio.cli:main"
99
+ simplicio-dev-cli = "simplicio.cli:main"
100
+
101
+ [build-system]
102
+ requires = ["setuptools>=68", "wheel"]
103
+ build-backend = "setuptools.build_meta"
104
+
105
+ [tool.setuptools.packages.find]
106
+ where = ["."]
107
+ include = ["simplicio*"]
108
+
109
+ [tool.setuptools.package-data]
110
+ simplicio = [
111
+ "py.typed",
112
+ "templates/*.md",
113
+ "templates/*.sh",
114
+ "templates/recipes/**/*.json",
115
+ "templates/recipes/**/*.yaml",
116
+ "templates/recipes/**/*.yml",
117
+ "templates/stacks/**/*",
118
+ "templates/stacks/*/tree/.gitignore",
119
+ "templates/stacks/*/tree/.eslintrc.json",
120
+ ]
121
+
122
+ [tool.pytest.ini_options]
123
+ pythonpath = ["."]
124
+ testpaths = ["tests/python", "tests/contracts"]
125
+
126
+ # --------------------------------------------------------------------------- #
127
+ # Lint / type gate (#102). Dev-only tooling — see the `dev` extra above.
128
+ # Baseline is intentionally permissive (not `mypy --strict`); documented here
129
+ # rather than left implicit so future tightening is a deliberate diff.
130
+ # --------------------------------------------------------------------------- #
131
+ [tool.ruff]
132
+ # 110 rather than the ruff default of 88: several product modules carry
133
+ # long but meaningful lines (URLs, JSON schema literals, long f-strings in
134
+ # provider/pipeline diagnostics) that read worse wrapped than left alone.
135
+ line-length = 110
136
+ target-version = "py310"
137
+ extend-exclude = [
138
+ "bench",
139
+ "output",
140
+ ".simplicio",
141
+ ".orchestrator",
142
+ "simplicio/templates",
143
+ ]
144
+
145
+ [tool.ruff.lint]
146
+ # E/F = pyflakes+pycodestyle core, I = isort, UP = pyupgrade, B = bugbear,
147
+ # T20 = flake8-print (issue #106 — blocks new print() regressions in
148
+ # library/MCP-adjacent code; see per-file-ignores below for the documented
149
+ # CLI-handler exception, where stdout IS the subcommand's intended output).
150
+ select = ["E", "F", "I", "UP", "B", "T20"]
151
+ # B008: PLAN_JSON-style default args show up in a few argparse builders;
152
+ # revisit case-by-case with a scoped noqa instead of a blanket ignore.
153
+ ignore = []
154
+
155
+ [tool.ruff.lint.per-file-ignores]
156
+ # Test modules intentionally shadow fixtures/imports and use long fixtures.
157
+ "tests/**/*.py" = ["E501", "T201"]
158
+ # CLI-handler exception (#106): stdout IS the intended output of these
159
+ # 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
162
+ # stay covered by the bare T201 rule above with zero suppressions.
163
+ "simplicio/cli.py" = ["T201"]
164
+ "simplicio/doctor.py" = ["T201"]
165
+ "simplicio/init.py" = ["T201"]
166
+ "simplicio/cache_cli.py" = ["T201"]
167
+ "simplicio/bench.py" = ["T201"]
168
+ "simplicio/detect.py" = ["T201"]
169
+ "simplicio/commands/*.py" = ["T201"]
170
+ "simplicio/scratch/cli.py" = ["T201"]
171
+ "simplicio/scratch/skill_opt.py" = ["T201"]
172
+ # Standalone dev/CI scripts outside the `simplicio` package — their stdout
173
+ # is their entire purpose (doc-generator output, demo pipeline summary).
174
+ "scripts/**/*.py" = ["T201"]
175
+
176
+ [tool.ruff.format]
177
+ quote-style = "double"
178
+ indent-style = "space"
179
+
180
+ [tool.mypy]
181
+ python_version = "3.10"
182
+ files = ["simplicio"]
183
+ # Baseline rigor (#102 AC): permissive on missing third-party stubs, but
184
+ # real within the package. Tighten per-module (`[[tool.mypy.overrides]]`)
185
+ # once a module's own tests give confidence to raise the bar.
186
+ ignore_missing_imports = true
187
+ warn_redundant_casts = true
188
+ warn_unused_ignores = false
189
+ exclude = ["simplicio/templates/"]
190
+
191
+ # Legacy-debt allowlist (#102 baseline): these modules predate the mypy gate
192
+ # and lean on dynamic dict/Any shapes (JSON-parsed configs, duck-typed
193
+ # introspection over an optional `libcst`/`cst` dependency, dataclass-ish
194
+ # `object` placeholders) that a real fix means non-trivial refactors, not a
195
+ # quick annotation. Tracked as debt rather than silenced with a blanket
196
+ # `ignore_missing_imports`-style rule repo-wide. New code should NOT be
197
+ # added to this list — annotate it properly instead. Shrink this list as
198
+ # each module gets tightened (see issue #102 follow-up).
199
+ [[tool.mypy.overrides]]
200
+ module = [
201
+ "simplicio.scratch.codegen.python_cst",
202
+ "simplicio.scratch.stack_registry",
203
+ "simplicio.mechanical_edit",
204
+ "simplicio.orchestrator.cost_governor",
205
+ "simplicio.scratch.codegen.typescript_next_route",
206
+ "simplicio.scratch.codegen.python_orm",
207
+ "simplicio.commands.test_run",
208
+ "simplicio.cache_cli",
209
+ "simplicio.precedent",
210
+ "simplicio.mcp_server",
211
+ "simplicio.scratch.executor",
212
+ "simplicio.orchestrator.feature",
213
+ "simplicio.scratch.cli",
214
+ ]
215
+ ignore_errors = true
@@ -0,0 +1 @@
1
+ __version__ = "0.9.3"
@@ -10,7 +10,7 @@ import tempfile
10
10
  import time
11
11
  from dataclasses import dataclass, field
12
12
  from pathlib import Path
13
- from typing import Any, Dict, Optional
13
+ from typing import Any
14
14
 
15
15
 
16
16
  def _env_flag(name: str, default: bool) -> bool:
@@ -55,9 +55,9 @@ class CacheEntry:
55
55
  provider_id: str = ""
56
56
  model: str = ""
57
57
  created_at: float = field(default_factory=time.time)
58
- metadata: Dict[str, Any] = field(default_factory=dict)
58
+ metadata: dict[str, Any] = field(default_factory=dict)
59
59
 
60
- def to_dict(self) -> Dict[str, Any]:
60
+ def to_dict(self) -> dict[str, Any]:
61
61
  return {
62
62
  "completion": self.completion,
63
63
  "provider_id": self.provider_id,
@@ -67,7 +67,7 @@ class CacheEntry:
67
67
  }
68
68
 
69
69
  @classmethod
70
- def from_dict(cls, payload: Dict[str, Any]) -> "CacheEntry":
70
+ def from_dict(cls, payload: dict[str, Any]) -> CacheEntry:
71
71
  return cls(
72
72
  completion=str(payload.get("completion", "")),
73
73
  provider_id=str(payload.get("provider_id", "")),
@@ -80,20 +80,14 @@ class CacheEntry:
80
80
  class CompletionCache:
81
81
  def __init__(
82
82
  self,
83
- root: Optional[Path] = None,
83
+ root: Path | None = None,
84
84
  *,
85
- ttl_days: Optional[float] = None,
86
- max_mb: Optional[float] = None,
85
+ ttl_days: float | None = None,
86
+ max_mb: float | None = None,
87
87
  ) -> None:
88
88
  self.root = Path(root) if root is not None else _cache_root()
89
- self.ttl_days = (
90
- ttl_days
91
- if ttl_days is not None
92
- else _env_float("SIMPLICIO_CACHE_TTL_DAYS", 30)
93
- )
94
- self.max_mb = (
95
- max_mb if max_mb is not None else _env_float("SIMPLICIO_CACHE_MAX_MB", 500)
96
- )
89
+ self.ttl_days = ttl_days if ttl_days is not None else _env_float("SIMPLICIO_CACHE_TTL_DAYS", 30)
90
+ self.max_mb = max_mb if max_mb is not None else _env_float("SIMPLICIO_CACHE_MAX_MB", 500)
97
91
  self.hits = 0
98
92
  self.misses = 0
99
93
  self.puts = 0
@@ -109,7 +103,7 @@ class CompletionCache:
109
103
  def path_for(self, key: str) -> Path:
110
104
  return self.root / key[:2] / f"{key}.json"
111
105
 
112
- def get(self, key: str) -> Optional[CacheEntry]:
106
+ def get(self, key: str) -> CacheEntry | None:
113
107
  if not self.enabled or self.bust:
114
108
  self.misses += 1
115
109
  return None
@@ -167,7 +161,7 @@ class CompletionCache:
167
161
  shutil.rmtree(self.root)
168
162
  return int(n)
169
163
 
170
- def stats(self) -> Dict[str, Any]:
164
+ def stats(self) -> dict[str, Any]:
171
165
  files = list(self._files())
172
166
  total_bytes = sum(path.stat().st_size for path in files if path.exists())
173
167
  now = time.time()
@@ -182,9 +176,7 @@ class CompletionCache:
182
176
  "hits": self.hits,
183
177
  "misses": self.misses,
184
178
  "puts": self.puts,
185
- "hit_rate": round(self.hits / (self.hits + self.misses), 4)
186
- if self.hits + self.misses
187
- else 0.0,
179
+ "hit_rate": round(self.hits / (self.hits + self.misses), 4) if self.hits + self.misses else 0.0,
188
180
  "bytes": total_bytes,
189
181
  "mb": round(total_bytes / (1024 * 1024), 3),
190
182
  "oldest_age_s": round(oldest, 3) if oldest is not None else None,
@@ -233,7 +225,7 @@ class CompletionCache:
233
225
  return
234
226
 
235
227
 
236
- _cache: Optional[CompletionCache] = None
228
+ _cache: CompletionCache | None = None
237
229
 
238
230
 
239
231
  def cache() -> CompletionCache:
@@ -248,11 +240,7 @@ def _is_completion_cache_file(root: Path, path: Path) -> bool:
248
240
  rel = path.relative_to(root)
249
241
  except ValueError:
250
242
  return False
251
- return (
252
- len(rel.parts) == 2
253
- and len(path.stem) == 64
254
- and rel.parts[0] == path.stem[:2]
255
- )
243
+ return len(rel.parts) == 2 and len(path.stem) == 64 and rel.parts[0] == path.stem[:2]
256
244
 
257
245
 
258
246
  def reset_for_tests() -> None: