voodoo-framework 2.7.1__tar.gz → 2.7.2__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 (340) hide show
  1. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/PKG-INFO +1 -1
  2. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/__init__.py +1 -1
  3. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/data/__init__.py +19 -2
  4. voodoo_framework-2.7.2/src/voodoo/storage/scheduler/__init__.py +49 -0
  5. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo_framework.egg-info/PKG-INFO +1 -1
  6. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_store_only_core_import.py +35 -0
  7. voodoo_framework-2.7.1/src/voodoo/storage/scheduler/__init__.py +0 -31
  8. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/LICENSE +0 -0
  9. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/README.md +0 -0
  10. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/pyproject.toml +0 -0
  11. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/setup.cfg +0 -0
  12. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/adapters/__init__.py +0 -0
  13. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/adapters/capabilities.py +0 -0
  14. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/adapters/registry.py +0 -0
  15. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/adapters/tailwind.py +0 -0
  16. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/adapters/voodoo_css.py +0 -0
  17. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/agent.py +0 -0
  18. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/agents/__init__.py +0 -0
  19. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/agents/models.py +0 -0
  20. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/agents/registry.py +0 -0
  21. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ai/__init__.py +0 -0
  22. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ai/agent.py +0 -0
  23. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ai/agent_legacy.py +0 -0
  24. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ai/agent_runtime_truth.py +0 -0
  25. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ai/providers/__init__.py +0 -0
  26. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ai/providers/anthropic.py +0 -0
  27. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ai/providers/gemini.py +0 -0
  28. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ai/providers/mock.py +0 -0
  29. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ai/providers/ollama.py +0 -0
  30. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ai/providers/openai.py +0 -0
  31. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ai/tools/__init__.py +0 -0
  32. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ai/tools/registry.py +0 -0
  33. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/api.py +0 -0
  34. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/auth/__init__.py +0 -0
  35. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/auth/cookies.py +0 -0
  36. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/auth/guards.py +0 -0
  37. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/auth/jwt.py +0 -0
  38. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/auth/middleware.py +0 -0
  39. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/auth/passwords.py +0 -0
  40. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/auth/user.py +0 -0
  41. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/__init__.py +0 -0
  42. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/__main__.py +0 -0
  43. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/agents.py +0 -0
  44. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/ai.py +0 -0
  45. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/approvals.py +0 -0
  46. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/auth.py +0 -0
  47. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/create.py +0 -0
  48. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/dev.py +0 -0
  49. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/doctor.py +0 -0
  50. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/executions.py +0 -0
  51. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/fabric.py +0 -0
  52. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/generate.py +0 -0
  53. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/inspect.py +0 -0
  54. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/new.py +0 -0
  55. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/objects.py +0 -0
  56. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/protocol.py +0 -0
  57. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/recover.py +0 -0
  58. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/routes.py +0 -0
  59. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/scaffolding.py +0 -0
  60. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/schedules.py +0 -0
  61. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/status.py +0 -0
  62. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/tasks.py +0 -0
  63. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/terminal.py +0 -0
  64. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/theme.py +0 -0
  65. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/version.py +0 -0
  66. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/cli/workers_cmd.py +0 -0
  67. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/components.py +0 -0
  68. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/config.py +0 -0
  69. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/core/__init__.py +0 -0
  70. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/core/app.py +0 -0
  71. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/core/errors.py +0 -0
  72. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/core/events.py +0 -0
  73. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/core/render.py +0 -0
  74. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/core/routing.py +0 -0
  75. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/core/sitemap.py +0 -0
  76. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/core/state.py +0 -0
  77. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/data/base.py +0 -0
  78. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/data/model.py +0 -0
  79. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/data/store_backend.py +0 -0
  80. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/data/store_facade.py +0 -0
  81. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/data/store_model.py +0 -0
  82. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/edge/__init__.py +0 -0
  83. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/edge/auth.py +0 -0
  84. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/edge/errors.py +0 -0
  85. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/edge/gateway.py +0 -0
  86. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/edge/http.py +0 -0
  87. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/edge/models.py +0 -0
  88. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/edge/mqtt.py +0 -0
  89. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/edge/protocol.py +0 -0
  90. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/edge/simulator.py +0 -0
  91. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/edge/store.py +0 -0
  92. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/edge/store_voodoo.py +0 -0
  93. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/edge/world.py +0 -0
  94. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/i18n.py +0 -0
  95. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/mcp/__init__.py +0 -0
  96. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/mcp/client.py +0 -0
  97. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/memory/__init__.py +0 -0
  98. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/memory/interfaces.py +0 -0
  99. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/memory/sqlite.py +0 -0
  100. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/mesh/__init__.py +0 -0
  101. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/mesh/auth.py +0 -0
  102. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/mesh/client.py +0 -0
  103. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/mesh/event_bus.py +0 -0
  104. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/mesh/remote.py +0 -0
  105. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/mesh/replay.py +0 -0
  106. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/primitives/__init__.py +0 -0
  107. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/primitives/capability.py +0 -0
  108. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/primitives/compute.py +0 -0
  109. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/primitives/constraint.py +0 -0
  110. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/primitives/effect.py +0 -0
  111. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/primitives/intent.py +0 -0
  112. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/primitives/resource.py +0 -0
  113. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/primitives/state.py +0 -0
  114. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/primitives/time.py +0 -0
  115. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/protocol/__init__.py +0 -0
  116. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/protocol/export.py +0 -0
  117. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/protocol/fabric.py +0 -0
  118. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/protocol/operational.py +0 -0
  119. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/protocol/schemas.py +0 -0
  120. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/py.typed +0 -0
  121. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/queue.py +0 -0
  122. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/routing/api.py +0 -0
  123. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/routing/pages.py +0 -0
  124. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/__init__.py +0 -0
  125. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/adaptive.py +0 -0
  126. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/capability.py +0 -0
  127. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/constraint.py +0 -0
  128. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/context.py +0 -0
  129. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/dashboard.py +0 -0
  130. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/engine.py +0 -0
  131. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/errors.py +0 -0
  132. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/execution.py +0 -0
  133. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/fabric.py +0 -0
  134. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/goal.py +0 -0
  135. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/goal_store.py +0 -0
  136. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/graph.py +0 -0
  137. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/human.py +0 -0
  138. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/identity.py +0 -0
  139. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/identity_store.py +0 -0
  140. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/membership.py +0 -0
  141. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/operations.py +0 -0
  142. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/persistence.py +0 -0
  143. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/planner.py +0 -0
  144. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/policy.py +0 -0
  145. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/scheduler.py +0 -0
  146. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/store.py +0 -0
  147. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/task.py +0 -0
  148. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/transaction.py +0 -0
  149. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/workflow.py +0 -0
  150. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/workflow_store.py +0 -0
  151. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/runtime/world_execution.py +0 -0
  152. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/schedule.py +0 -0
  153. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/security/__init__.py +0 -0
  154. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/security/cors.py +0 -0
  155. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/security/csrf.py +0 -0
  156. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/security/headers.py +0 -0
  157. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/security/passwords.py +0 -0
  158. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/security/rate_limit.py +0 -0
  159. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/security/redaction.py +0 -0
  160. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/security/secrets.py +0 -0
  161. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/seo.py +0 -0
  162. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/static/client.js +0 -0
  163. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/status.py +0 -0
  164. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/__init__.py +0 -0
  165. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/cache/__init__.py +0 -0
  166. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/cache/interfaces.py +0 -0
  167. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/cache/memory.py +0 -0
  168. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/cache/redis.py +0 -0
  169. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/database/__init__.py +0 -0
  170. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/database/interfaces.py +0 -0
  171. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/database/postgres.py +0 -0
  172. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/database/sqlite.py +0 -0
  173. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/events/__init__.py +0 -0
  174. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/events/interfaces.py +0 -0
  175. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/events/local.py +0 -0
  176. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/events/postgres.py +0 -0
  177. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/events/sqlite.py +0 -0
  178. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/events/store.py +0 -0
  179. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/execution/__init__.py +0 -0
  180. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/execution/migrations.py +0 -0
  181. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/execution/postgres.py +0 -0
  182. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/execution/sqlite.py +0 -0
  183. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/execution/store.py +0 -0
  184. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/manager.py +0 -0
  185. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/objects/__init__.py +0 -0
  186. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/objects/interfaces.py +0 -0
  187. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/objects/local.py +0 -0
  188. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/objects/s3.py +0 -0
  189. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/objects/store.py +0 -0
  190. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/queue/__init__.py +0 -0
  191. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/queue/interfaces.py +0 -0
  192. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/queue/memory.py +0 -0
  193. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/queue/postgres.py +0 -0
  194. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/queue/redis.py +0 -0
  195. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/queue/sqlite.py +0 -0
  196. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/queue/store.py +0 -0
  197. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/scheduler/sqlite.py +0 -0
  198. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/storage/scheduler/store.py +0 -0
  199. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/telemetry/__init__.py +0 -0
  200. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/telemetry/api.py +0 -0
  201. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/telemetry/middleware.py +0 -0
  202. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/telemetry/otlp.py +0 -0
  203. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/telemetry/store.py +0 -0
  204. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/theme.py +0 -0
  205. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/tools/__init__.py +0 -0
  206. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/tools/registry.py +0 -0
  207. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ui/__init__.py +0 -0
  208. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ui/component.py +0 -0
  209. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ui/events.py +0 -0
  210. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ui/interactive.py +0 -0
  211. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ui/layout.py +0 -0
  212. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ui/library.py +0 -0
  213. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ui/markdown.py +0 -0
  214. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ui/primitives.py +0 -0
  215. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ui/product.py +0 -0
  216. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ui/rendering.py +0 -0
  217. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ui/state.py +0 -0
  218. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ui/styles/__init__.py +0 -0
  219. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ui/styles/presets.py +0 -0
  220. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ui/styles/product.py +0 -0
  221. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ui/styles/system.py +0 -0
  222. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ui/styles/theme.py +0 -0
  223. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ui/styles/voodoo_system.py +0 -0
  224. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/ui/voodoo_system.py +0 -0
  225. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/workers/__init__.py +0 -0
  226. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/workers/queue.py +0 -0
  227. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/world/__init__.py +0 -0
  228. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/world/model.py +0 -0
  229. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/world/models.py +0 -0
  230. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/world/sqlite.py +0 -0
  231. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo/world/store.py +0 -0
  232. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo_framework.egg-info/SOURCES.txt +0 -0
  233. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo_framework.egg-info/dependency_links.txt +0 -0
  234. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo_framework.egg-info/entry_points.txt +0 -0
  235. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo_framework.egg-info/requires.txt +0 -0
  236. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/src/voodoo_framework.egg-info/top_level.txt +0 -0
  237. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_adaptive_agency_correctness.py +0 -0
  238. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_agency_runtime_truth.py +0 -0
  239. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_agent.py +0 -0
  240. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_agent_registry.py +0 -0
  241. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_agent_runtime.py +0 -0
  242. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_app.py +0 -0
  243. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_auth.py +0 -0
  244. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_capability_security.py +0 -0
  245. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_checkpoint_resume.py +0 -0
  246. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_chrome.py +0 -0
  247. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_cli.py +0 -0
  248. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_cli_fabric.py +0 -0
  249. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_cli_inspect.py +0 -0
  250. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_components.py +0 -0
  251. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_config.py +0 -0
  252. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_contract_api.py +0 -0
  253. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_create.py +0 -0
  254. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_create_store_smoke.py +0 -0
  255. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_data.py +0 -0
  256. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_design_system.py +0 -0
  257. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_design_system2.py +0 -0
  258. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_durable_goal_runtime.py +0 -0
  259. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_durable_hitl.py +0 -0
  260. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_durable_workflow_runtime.py +0 -0
  261. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_edge_device.py +0 -0
  262. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_edge_e2e.py +0 -0
  263. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_edge_gateway.py +0 -0
  264. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_edge_http.py +0 -0
  265. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_edge_protocol.py +0 -0
  266. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_edge_security.py +0 -0
  267. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_edge_voodoo_store.py +0 -0
  268. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_edge_world.py +0 -0
  269. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_events.py +0 -0
  270. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_execution_sqlite_store.py +0 -0
  271. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_goal_runtime.py +0 -0
  272. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_hitl_persistence_correctness.py +0 -0
  273. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_http_runtime.py +0 -0
  274. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_human.py +0 -0
  275. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_i18n.py +0 -0
  276. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_identity_execution.py +0 -0
  277. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_identity_foundation.py +0 -0
  278. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_integration.py +0 -0
  279. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_mcp.py +0 -0
  280. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_mcp_runtime.py +0 -0
  281. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_memory.py +0 -0
  282. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_mesh.py +0 -0
  283. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_mesh_event_bus.py +0 -0
  284. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_mesh_remote_auth.py +0 -0
  285. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_mesh_remote_authority.py +0 -0
  286. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_mesh_remote_execution.py +0 -0
  287. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_mesh_remote_outcomes.py +0 -0
  288. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_mesh_remote_replay.py +0 -0
  289. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_mesh_two_node_acceptance.py +0 -0
  290. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_model.py +0 -0
  291. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_node_membership.py +0 -0
  292. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_object_store.py +0 -0
  293. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_observability.py +0 -0
  294. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_operational_policy.py +0 -0
  295. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_operational_runtime_ui.py +0 -0
  296. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_persistence.py +0 -0
  297. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_planner_adaptive.py +0 -0
  298. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_primitives.py +0 -0
  299. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_product_components.py +0 -0
  300. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_protocol.py +0 -0
  301. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_protocol_fabric.py +0 -0
  302. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_protocol_operational.py +0 -0
  303. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_provider_switching.py +0 -0
  304. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_providers.py +0 -0
  305. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_public_api_3.py +0 -0
  306. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_queue.py +0 -0
  307. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_reactive.py +0 -0
  308. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_runtime.py +0 -0
  309. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_runtime_correctness.py +0 -0
  310. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_runtime_fabric.py +0 -0
  311. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_runtime_store_app_lifecycle.py +0 -0
  312. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_runtime_store_lifecycle.py +0 -0
  313. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_runtime_store_provider.py +0 -0
  314. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_runtime_transaction.py +0 -0
  315. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_scheduler.py +0 -0
  316. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_security.py +0 -0
  317. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_seo.py +0 -0
  318. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_sprint27_convergence.py +0 -0
  319. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_sprint28_acceptance.py +0 -0
  320. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_state.py +0 -0
  321. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_store_first_user_journey.py +0 -0
  322. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_store_model_backend.py +0 -0
  323. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_theme.py +0 -0
  324. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_theme_presets.py +0 -0
  325. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_tools.py +0 -0
  326. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_ui.py +0 -0
  327. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_ui_magic.py +0 -0
  328. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_ui_magic_acceptance.py +0 -0
  329. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_voodoo_store_events.py +0 -0
  330. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_voodoo_store_execution.py +0 -0
  331. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_voodoo_store_hitl_restart.py +0 -0
  332. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_voodoo_store_queue.py +0 -0
  333. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_voodoo_store_scheduler.py +0 -0
  334. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_voodoo_system_components.py +0 -0
  335. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_websocket.py +0 -0
  336. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_worker_retry_semantics.py +0 -0
  337. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_workers.py +0 -0
  338. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_world_aware_execution.py +0 -0
  339. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_world_model.py +0 -0
  340. {voodoo_framework-2.7.1 → voodoo_framework-2.7.2}/tests/test_world_sqlite.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: voodoo-framework
3
- Version: 2.7.1
3
+ Version: 2.7.2
4
4
  Summary: The programmable runtime for adaptive applications and operational systems — web, APIs, agents, workers, human workflows, distributed systems, and physical systems in one runtime.
5
5
  Author-email: Helder Perez <contact@helderperez.com>
6
6
  Maintainer-email: Helder Perez <contact@helderperez.com>
@@ -105,7 +105,7 @@ from .ui.styles import (
105
105
  from .ui.styles.theme import Theme, ThemeColors, create_theme
106
106
  from .workers import task
107
107
 
108
- __version__ = "2.7.1"
108
+ __version__ = "2.7.2"
109
109
 
110
110
  __all__ = [
111
111
  # Core runtime
@@ -37,6 +37,8 @@ __all__ = [
37
37
  "_triggers",
38
38
  ]
39
39
 
40
+ _sql_initialized = False
41
+
40
42
 
41
43
  async def init_db(*args: Any, **kwargs: Any) -> Any:
42
44
  """Compatibility entry point for the optional SQL subsystem.
@@ -44,9 +46,13 @@ async def init_db(*args: Any, **kwargs: Any) -> Any:
44
46
  Importing ``voodoo`` does not load SQL or require ``aiosqlite``. Calling
45
47
  this function explicitly opts into the legacy SQL adapter surface.
46
48
  """
49
+ global _sql_initialized
50
+
47
51
  from voodoo.data.base import init_db as _init_db
48
52
 
49
- return await _init_db(*args, **kwargs)
53
+ result = await _init_db(*args, **kwargs)
54
+ _sql_initialized = True
55
+ return result
50
56
 
51
57
 
52
58
  async def get_db() -> Any:
@@ -57,7 +63,18 @@ async def get_db() -> Any:
57
63
 
58
64
 
59
65
  async def close_db() -> None:
60
- """Close the explicitly initialized optional SQL connection."""
66
+ """Close SQL only when the optional subsystem was explicitly initialized.
67
+
68
+ The Store-first Runtime calls this compatibility hook during shutdown. A
69
+ default application must therefore treat it as a no-op instead of importing
70
+ the legacy SQLite adapter merely to discover that no SQL connection exists.
71
+ """
72
+ global _sql_initialized
73
+
74
+ if not _sql_initialized:
75
+ return
76
+
61
77
  from voodoo.data.base import close_db as _close_db
62
78
 
63
79
  await _close_db()
80
+ _sql_initialized = False
@@ -0,0 +1,49 @@
1
+ """Durable scheduler storage.
2
+
3
+ Voodoo Store is the canonical local-first scheduler provider. SQLite remains
4
+ available only as an explicit compatibility adapter and is imported lazily.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ from importlib import import_module
10
+ from pathlib import Path
11
+ from typing import Any
12
+
13
+ from voodoo.storage.scheduler.store import VoodooStoreScheduleStore
14
+
15
+ __all__ = [
16
+ "SQLiteScheduleStore",
17
+ "VoodooStoreScheduleStore",
18
+ "create_schedule_store",
19
+ ]
20
+
21
+ _LAZY_EXPORTS = {
22
+ "SQLiteScheduleStore": (
23
+ "voodoo.storage.scheduler.sqlite",
24
+ "SQLiteScheduleStore",
25
+ ),
26
+ }
27
+
28
+
29
+ def __getattr__(name: str) -> Any:
30
+ target = _LAZY_EXPORTS.get(name)
31
+ if target is None:
32
+ raise AttributeError(
33
+ f"module 'voodoo.storage.scheduler' has no attribute {name!r}"
34
+ )
35
+ module_name, symbol = target
36
+ value = getattr(import_module(module_name), symbol)
37
+ globals()[name] = value
38
+ return value
39
+
40
+
41
+ def create_schedule_store(_legacy_path: str | Path | None = None):
42
+ """Resolve the canonical Store-backed scheduler.
43
+
44
+ ``_legacy_path`` is accepted temporarily so the current App lifecycle can
45
+ retain its call shape. It is deliberately ignored: missing Store
46
+ temporal-work capabilities are an actionable error and never trigger a
47
+ SQLite fallback.
48
+ """
49
+ return VoodooStoreScheduleStore()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: voodoo-framework
3
- Version: 2.7.1
3
+ Version: 2.7.2
4
4
  Summary: The programmable runtime for adaptive applications and operational systems — web, APIs, agents, workers, human workflows, distributed systems, and physical systems in one runtime.
5
5
  Author-email: Helder Perez <contact@helderperez.com>
6
6
  Maintainer-email: Helder Perez <contact@helderperez.com>
@@ -26,6 +26,7 @@ assert "voodoo.storage.database.sqlite" not in sys.modules
26
26
  assert "voodoo.storage.events.sqlite" not in sys.modules
27
27
  assert "voodoo.storage.queue.sqlite" not in sys.modules
28
28
  assert "voodoo.storage.execution.sqlite" not in sys.modules
29
+ assert "voodoo.storage.scheduler.sqlite" not in sys.modules
29
30
  """
30
31
  result = subprocess.run(
31
32
  [sys.executable, "-c", code],
@@ -36,6 +37,40 @@ assert "voodoo.storage.execution.sqlite" not in sys.modules
36
37
  assert result.returncode == 0, result.stderr
37
38
 
38
39
 
40
+ def test_runtime_startup_does_not_require_aiosqlite(tmp_path) -> None:
41
+ code = r"""
42
+ import importlib.abc
43
+ import sys
44
+
45
+ class BlockAioSQLite(importlib.abc.MetaPathFinder):
46
+ def find_spec(self, fullname, path=None, target=None):
47
+ if fullname == "aiosqlite" or fullname.startswith("aiosqlite."):
48
+ raise ImportError("aiosqlite intentionally blocked by startup release gate")
49
+ return None
50
+
51
+ sys.meta_path.insert(0, BlockAioSQLite())
52
+
53
+ from starlette.testclient import TestClient
54
+ from voodoo.core import create_app
55
+
56
+ with TestClient(create_app()) as client:
57
+ assert client is not None
58
+
59
+ assert "aiosqlite" not in sys.modules
60
+ assert "voodoo.data.base" not in sys.modules
61
+ assert "voodoo.storage.database.sqlite" not in sys.modules
62
+ assert "voodoo.storage.scheduler.sqlite" not in sys.modules
63
+ """
64
+ result = subprocess.run(
65
+ [sys.executable, "-c", code],
66
+ cwd=tmp_path,
67
+ text=True,
68
+ capture_output=True,
69
+ check=False,
70
+ )
71
+ assert result.returncode == 0, result.stderr
72
+
73
+
39
74
  def test_public_model_module_has_no_sql_fallback_import() -> None:
40
75
  code = r"""
41
76
  import sys
@@ -1,31 +0,0 @@
1
- """Durable scheduler storage.
2
-
3
- Voodoo Store is the canonical local-first scheduler provider. SQLite remains
4
- available only as an explicit compatibility adapter; the Runtime never falls
5
- back to it when Store capabilities are missing.
6
- """
7
-
8
- from __future__ import annotations
9
-
10
- from pathlib import Path
11
-
12
- from voodoo.storage.scheduler.sqlite import SQLiteScheduleStore
13
- from voodoo.storage.scheduler.store import VoodooStoreScheduleStore
14
-
15
-
16
- def create_schedule_store(_legacy_path: str | Path | None = None):
17
- """Resolve the canonical Store-backed scheduler.
18
-
19
- ``_legacy_path`` is accepted temporarily so the current App lifecycle can
20
- retain its call shape while Sprint 28 removes legacy path plumbing. It is
21
- deliberately ignored: missing Store temporal-work capabilities are an
22
- actionable error and never trigger a SQLite fallback.
23
- """
24
- return VoodooStoreScheduleStore()
25
-
26
-
27
- __all__ = [
28
- "SQLiteScheduleStore",
29
- "VoodooStoreScheduleStore",
30
- "create_schedule_store",
31
- ]