voodoo-framework 3.2.0__tar.gz → 3.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/PKG-INFO +1 -1
  2. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/__init__.py +1 -1
  3. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/state.py +16 -3
  4. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo_framework.egg-info/PKG-INFO +1 -1
  5. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/LICENSE +0 -0
  6. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/README.md +0 -0
  7. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/pyproject.toml +0 -0
  8. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/setup.cfg +0 -0
  9. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/adapters/__init__.py +0 -0
  10. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/adapters/capabilities.py +0 -0
  11. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/adapters/registry.py +0 -0
  12. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/adapters/tailwind.py +0 -0
  13. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/adapters/voodoo_css.py +0 -0
  14. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/agents/__init__.py +0 -0
  15. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/agents/models.py +0 -0
  16. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/agents/registry.py +0 -0
  17. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ai/__init__.py +0 -0
  18. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ai/agent.py +0 -0
  19. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ai/agent_legacy.py +0 -0
  20. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ai/agent_runtime_truth.py +0 -0
  21. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ai/providers/__init__.py +0 -0
  22. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ai/providers/anthropic.py +0 -0
  23. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ai/providers/gemini.py +0 -0
  24. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ai/providers/mock.py +0 -0
  25. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ai/providers/ollama.py +0 -0
  26. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ai/providers/openai.py +0 -0
  27. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ai/tools/__init__.py +0 -0
  28. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ai/tools/registry.py +0 -0
  29. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/auth/__init__.py +0 -0
  30. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/auth/cookies.py +0 -0
  31. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/auth/guards.py +0 -0
  32. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/auth/jwt.py +0 -0
  33. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/auth/middleware.py +0 -0
  34. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/auth/passwords.py +0 -0
  35. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/auth/user.py +0 -0
  36. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/__init__.py +0 -0
  37. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/__main__.py +0 -0
  38. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/agents.py +0 -0
  39. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/ai.py +0 -0
  40. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/approvals.py +0 -0
  41. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/auth.py +0 -0
  42. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/context.py +0 -0
  43. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/create.py +0 -0
  44. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/dev.py +0 -0
  45. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/doctor.py +0 -0
  46. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/executions.py +0 -0
  47. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/fabric.py +0 -0
  48. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/generate.py +0 -0
  49. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/graph.py +0 -0
  50. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/inspect.py +0 -0
  51. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/new.py +0 -0
  52. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/objects.py +0 -0
  53. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/protocol.py +0 -0
  54. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/recover.py +0 -0
  55. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/routes.py +0 -0
  56. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/scaffolding.py +0 -0
  57. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/schedules.py +0 -0
  58. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/start.py +0 -0
  59. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/status.py +0 -0
  60. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/tasks.py +0 -0
  61. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/terminal.py +0 -0
  62. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/theme.py +0 -0
  63. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/version.py +0 -0
  64. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/cli/workers_cmd.py +0 -0
  65. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/components.py +0 -0
  66. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/config.py +0 -0
  67. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/core/__init__.py +0 -0
  68. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/core/app.py +0 -0
  69. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/core/errors.py +0 -0
  70. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/core/events.py +0 -0
  71. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/core/render.py +0 -0
  72. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/core/routing.py +0 -0
  73. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/core/sitemap.py +0 -0
  74. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/core/state.py +0 -0
  75. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/data/__init__.py +0 -0
  76. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/data/base.py +0 -0
  77. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/data/model.py +0 -0
  78. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/data/store_backend.py +0 -0
  79. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/data/store_facade.py +0 -0
  80. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/data/store_model.py +0 -0
  81. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/edge/__init__.py +0 -0
  82. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/edge/auth.py +0 -0
  83. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/edge/errors.py +0 -0
  84. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/edge/gateway.py +0 -0
  85. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/edge/http.py +0 -0
  86. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/edge/models.py +0 -0
  87. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/edge/mqtt.py +0 -0
  88. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/edge/protocol.py +0 -0
  89. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/edge/simulator.py +0 -0
  90. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/edge/store.py +0 -0
  91. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/edge/store_voodoo.py +0 -0
  92. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/edge/world.py +0 -0
  93. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/i18n.py +0 -0
  94. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/integrations/__init__.py +0 -0
  95. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/integrations/ai/__init__.py +0 -0
  96. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/integrations/ai/anthropic.py +0 -0
  97. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/integrations/ai/gemini.py +0 -0
  98. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/integrations/ai/ollama.py +0 -0
  99. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/integrations/ai/openai.py +0 -0
  100. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/integrations/mcp/__init__.py +0 -0
  101. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/integrations/mcp/client.py +0 -0
  102. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/integrations/otel.py +0 -0
  103. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/memory/__init__.py +0 -0
  104. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/memory/interfaces.py +0 -0
  105. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/memory/sqlite.py +0 -0
  106. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/mesh/__init__.py +0 -0
  107. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/mesh/client.py +0 -0
  108. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/mesh/event_bus.py +0 -0
  109. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/observability/__init__.py +0 -0
  110. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/observability/api.py +0 -0
  111. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/observability/middleware.py +0 -0
  112. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/observability/store.py +0 -0
  113. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/primitives/__init__.py +0 -0
  114. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/primitives/capability.py +0 -0
  115. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/primitives/compute.py +0 -0
  116. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/primitives/constraint.py +0 -0
  117. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/primitives/effect.py +0 -0
  118. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/primitives/intent.py +0 -0
  119. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/primitives/resource.py +0 -0
  120. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/primitives/state.py +0 -0
  121. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/primitives/time.py +0 -0
  122. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/protocol/__init__.py +0 -0
  123. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/protocol/export.py +0 -0
  124. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/protocol/fabric.py +0 -0
  125. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/protocol/operational.py +0 -0
  126. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/protocol/schemas.py +0 -0
  127. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/py.typed +0 -0
  128. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/routing/api.py +0 -0
  129. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/routing/pages.py +0 -0
  130. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/__init__.py +0 -0
  131. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/agency/__init__.py +0 -0
  132. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/agency/adaptive.py +0 -0
  133. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/agency/goal.py +0 -0
  134. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/agency/goal_store.py +0 -0
  135. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/application_graph.py +0 -0
  136. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/capability.py +0 -0
  137. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/constraint.py +0 -0
  138. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/context.py +0 -0
  139. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/conventions.py +0 -0
  140. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/dependency_graph.py +0 -0
  141. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/distributed/__init__.py +0 -0
  142. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/distributed/auth.py +0 -0
  143. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/distributed/fabric.py +0 -0
  144. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/distributed/membership.py +0 -0
  145. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/distributed/remote.py +0 -0
  146. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/distributed/replay.py +0 -0
  147. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/errors.py +0 -0
  148. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/execution/__init__.py +0 -0
  149. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/execution/engine.py +0 -0
  150. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/execution/model.py +0 -0
  151. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/execution/world.py +0 -0
  152. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/extension.py +0 -0
  153. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/graph.py +0 -0
  154. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/human.py +0 -0
  155. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/identity.py +0 -0
  156. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/identity_store.py +0 -0
  157. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/inspection/__init__.py +0 -0
  158. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/inspection/dashboard.py +0 -0
  159. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/inspection/lineage.py +0 -0
  160. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/operations.py +0 -0
  161. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/persistence.py +0 -0
  162. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/planner.py +0 -0
  163. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/policy.py +0 -0
  164. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/reconciliation/__init__.py +0 -0
  165. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/reconciliation/reconcile.py +0 -0
  166. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/runtime.py +0 -0
  167. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/scheduling/__init__.py +0 -0
  168. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/scheduling/dispatch.py +0 -0
  169. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/scheduling/handoff.py +0 -0
  170. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/scheduling/schedule_service.py +0 -0
  171. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/scheduling/tasks.py +0 -0
  172. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/scheduling/work.py +0 -0
  173. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/scheduling/workers.py +0 -0
  174. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/store.py +0 -0
  175. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/task.py +0 -0
  176. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/transaction.py +0 -0
  177. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/workflow.py +0 -0
  178. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/runtime/workflow_store.py +0 -0
  179. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/schedule.py +0 -0
  180. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/security/__init__.py +0 -0
  181. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/security/cors.py +0 -0
  182. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/security/csrf.py +0 -0
  183. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/security/headers.py +0 -0
  184. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/security/passwords.py +0 -0
  185. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/security/rate_limit.py +0 -0
  186. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/security/redaction.py +0 -0
  187. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/security/secrets.py +0 -0
  188. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/seo.py +0 -0
  189. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/static/client.js +0 -0
  190. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/status.py +0 -0
  191. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/__init__.py +0 -0
  192. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/cache/__init__.py +0 -0
  193. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/cache/interfaces.py +0 -0
  194. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/cache/memory.py +0 -0
  195. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/cache/redis.py +0 -0
  196. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/database/__init__.py +0 -0
  197. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/database/interfaces.py +0 -0
  198. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/database/postgres.py +0 -0
  199. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/database/sqlite.py +0 -0
  200. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/events/__init__.py +0 -0
  201. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/events/interfaces.py +0 -0
  202. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/events/local.py +0 -0
  203. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/events/postgres.py +0 -0
  204. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/events/sqlite.py +0 -0
  205. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/events/store.py +0 -0
  206. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/execution/__init__.py +0 -0
  207. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/execution/migrations.py +0 -0
  208. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/execution/postgres.py +0 -0
  209. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/execution/sqlite.py +0 -0
  210. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/execution/store.py +0 -0
  211. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/manager.py +0 -0
  212. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/objects/__init__.py +0 -0
  213. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/objects/interfaces.py +0 -0
  214. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/objects/local.py +0 -0
  215. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/objects/s3.py +0 -0
  216. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/objects/store.py +0 -0
  217. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/queue/__init__.py +0 -0
  218. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/queue/interfaces.py +0 -0
  219. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/queue/memory.py +0 -0
  220. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/queue/postgres.py +0 -0
  221. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/queue/redis.py +0 -0
  222. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/queue/sqlite.py +0 -0
  223. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/queue/store.py +0 -0
  224. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/scheduler/__init__.py +0 -0
  225. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/scheduler/sqlite.py +0 -0
  226. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/storage/scheduler/store.py +0 -0
  227. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/__init__.py +0 -0
  228. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/brand.py +0 -0
  229. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/component.py +0 -0
  230. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/controls.py +0 -0
  231. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/data_extended.py +0 -0
  232. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/events.py +0 -0
  233. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/forms_extended.py +0 -0
  234. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/foundation.py +0 -0
  235. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/interaction_kernel.py +0 -0
  236. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/interactions.py +0 -0
  237. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/interactive.py +0 -0
  238. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/layout.py +0 -0
  239. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/library.py +0 -0
  240. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/markdown.py +0 -0
  241. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/navigation.py +0 -0
  242. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/navigation_extended.py +0 -0
  243. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/primitives.py +0 -0
  244. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/product.py +0 -0
  245. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/rendering.py +0 -0
  246. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/styles/__init__.py +0 -0
  247. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/styles/extended.py +0 -0
  248. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/styles/palette.py +0 -0
  249. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/styles/presets.py +0 -0
  250. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/styles/product.py +0 -0
  251. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/styles/system.py +0 -0
  252. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/styles/theme.py +0 -0
  253. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/styles/theme_contract.py +0 -0
  254. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/styles/voodoo_system.py +0 -0
  255. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/voodoo_system.py +0 -0
  256. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/ui/workspace.py +0 -0
  257. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/world/__init__.py +0 -0
  258. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/world/model.py +0 -0
  259. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/world/models.py +0 -0
  260. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/world/sqlite.py +0 -0
  261. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo/world/store.py +0 -0
  262. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo_framework.egg-info/SOURCES.txt +0 -0
  263. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo_framework.egg-info/dependency_links.txt +0 -0
  264. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo_framework.egg-info/entry_points.txt +0 -0
  265. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo_framework.egg-info/requires.txt +0 -0
  266. {voodoo_framework-3.2.0 → voodoo_framework-3.2.1}/src/voodoo_framework.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: voodoo-framework
3
- Version: 3.2.0
3
+ Version: 3.2.1
4
4
  Summary: The programmable runtime for adaptive applications and operational systems — from web and AI to distributed and physical systems.
5
5
  Author-email: Helder Perez <contact@helderperez.com>
6
6
  Maintainer-email: Helder Perez <contact@helderperez.com>
@@ -12,7 +12,7 @@ from .core import App, page, state
12
12
  from .data import Model
13
13
  from .runtime.scheduling.tasks import task
14
14
 
15
- __version__ = "3.2.0"
15
+ __version__ = "3.2.1"
16
16
 
17
17
  __all__ = [
18
18
  "Agent",
@@ -255,11 +255,24 @@ class StateRenderer:
255
255
 
256
256
  @staticmethod
257
257
  def _render_component(result: Any) -> str:
258
+ from voodoo.seo import SEO
258
259
  from voodoo.ui.component import Component
259
260
 
260
- if isinstance(result, Component):
261
- return result.render()
262
- return str(result)
261
+ # A page may return ``(SEO, Component)`` (or the reverse) — the same
262
+ # contract ``render_page_result`` honours on first render. A reactive
263
+ # re-render patches only the ``#root`` body, so unwrap the tuple and
264
+ # render just the component; the SEO metadata belongs to ``<head>``.
265
+ component = result
266
+ if isinstance(result, tuple) and len(result) == 2:
267
+ first, second = result
268
+ if isinstance(first, SEO):
269
+ component = second
270
+ elif isinstance(second, SEO):
271
+ component = first
272
+
273
+ if isinstance(component, Component):
274
+ return component.render()
275
+ return str(component)
263
276
 
264
277
  @staticmethod
265
278
  async def _broadcast_patch(element_id: str, html: str) -> None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: voodoo-framework
3
- Version: 3.2.0
3
+ Version: 3.2.1
4
4
  Summary: The programmable runtime for adaptive applications and operational systems — from web and AI to distributed and physical systems.
5
5
  Author-email: Helder Perez <contact@helderperez.com>
6
6
  Maintainer-email: Helder Perez <contact@helderperez.com>