voodoo-framework 2.3.0__tar.gz → 2.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/PKG-INFO +1 -1
  2. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/__init__.py +1 -1
  3. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/__init__.py +2 -0
  4. voodoo_framework-2.4.0/src/voodoo/cli/protocol.py +68 -0
  5. voodoo_framework-2.4.0/src/voodoo/protocol/__init__.py +97 -0
  6. voodoo_framework-2.4.0/src/voodoo/protocol/export.py +75 -0
  7. voodoo_framework-2.4.0/src/voodoo/protocol/schemas.py +455 -0
  8. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo_framework.egg-info/PKG-INFO +1 -1
  9. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo_framework.egg-info/SOURCES.txt +5 -0
  10. voodoo_framework-2.4.0/tests/test_protocol.py +399 -0
  11. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/LICENSE +0 -0
  12. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/README.md +0 -0
  13. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/pyproject.toml +0 -0
  14. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/setup.cfg +0 -0
  15. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/adapters/__init__.py +0 -0
  16. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/adapters/capabilities.py +0 -0
  17. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/adapters/registry.py +0 -0
  18. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/adapters/tailwind.py +0 -0
  19. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/adapters/voodoo_css.py +0 -0
  20. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/agent.py +0 -0
  21. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/agents/__init__.py +0 -0
  22. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/agents/models.py +0 -0
  23. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/agents/registry.py +0 -0
  24. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ai/__init__.py +0 -0
  25. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ai/agent.py +0 -0
  26. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ai/providers/__init__.py +0 -0
  27. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ai/providers/anthropic.py +0 -0
  28. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ai/providers/gemini.py +0 -0
  29. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ai/providers/mock.py +0 -0
  30. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ai/providers/ollama.py +0 -0
  31. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ai/providers/openai.py +0 -0
  32. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ai/tools/__init__.py +0 -0
  33. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ai/tools/registry.py +0 -0
  34. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/api.py +0 -0
  35. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/auth/__init__.py +0 -0
  36. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/auth/cookies.py +0 -0
  37. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/auth/guards.py +0 -0
  38. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/auth/jwt.py +0 -0
  39. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/auth/middleware.py +0 -0
  40. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/auth/passwords.py +0 -0
  41. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/auth/user.py +0 -0
  42. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/__main__.py +0 -0
  43. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/agents.py +0 -0
  44. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/ai.py +0 -0
  45. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/approvals.py +0 -0
  46. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/auth.py +0 -0
  47. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/dev.py +0 -0
  48. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/doctor.py +0 -0
  49. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/executions.py +0 -0
  50. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/generate.py +0 -0
  51. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/inspect.py +0 -0
  52. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/new.py +0 -0
  53. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/objects.py +0 -0
  54. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/recover.py +0 -0
  55. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/routes.py +0 -0
  56. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/scaffolding.py +0 -0
  57. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/schedules.py +0 -0
  58. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/status.py +0 -0
  59. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/tasks.py +0 -0
  60. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/terminal.py +0 -0
  61. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/theme.py +0 -0
  62. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/version.py +0 -0
  63. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/workers_cmd.py +0 -0
  64. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/components.py +0 -0
  65. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/config.py +0 -0
  66. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/core/__init__.py +0 -0
  67. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/core/app.py +0 -0
  68. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/core/errors.py +0 -0
  69. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/core/events.py +0 -0
  70. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/core/render.py +0 -0
  71. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/core/routing.py +0 -0
  72. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/core/sitemap.py +0 -0
  73. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/core/state.py +0 -0
  74. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/data/__init__.py +0 -0
  75. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/data/base.py +0 -0
  76. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/data/model.py +0 -0
  77. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/i18n.py +0 -0
  78. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/mcp/__init__.py +0 -0
  79. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/mcp/client.py +0 -0
  80. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/memory/__init__.py +0 -0
  81. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/memory/interfaces.py +0 -0
  82. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/memory/sqlite.py +0 -0
  83. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/mesh/__init__.py +0 -0
  84. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/mesh/client.py +0 -0
  85. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/mesh/event_bus.py +0 -0
  86. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/primitives/__init__.py +0 -0
  87. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/primitives/capability.py +0 -0
  88. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/primitives/compute.py +0 -0
  89. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/primitives/constraint.py +0 -0
  90. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/primitives/effect.py +0 -0
  91. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/primitives/intent.py +0 -0
  92. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/primitives/resource.py +0 -0
  93. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/primitives/state.py +0 -0
  94. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/primitives/time.py +0 -0
  95. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/py.typed +0 -0
  96. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/queue.py +0 -0
  97. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/routing/api.py +0 -0
  98. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/routing/pages.py +0 -0
  99. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/__init__.py +0 -0
  100. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/adaptive.py +0 -0
  101. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/capability.py +0 -0
  102. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/constraint.py +0 -0
  103. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/context.py +0 -0
  104. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/engine.py +0 -0
  105. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/errors.py +0 -0
  106. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/execution.py +0 -0
  107. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/graph.py +0 -0
  108. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/human.py +0 -0
  109. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/persistence.py +0 -0
  110. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/planner.py +0 -0
  111. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/scheduler.py +0 -0
  112. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/task.py +0 -0
  113. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/workflow.py +0 -0
  114. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/schedule.py +0 -0
  115. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/security/__init__.py +0 -0
  116. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/security/cors.py +0 -0
  117. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/security/csrf.py +0 -0
  118. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/security/headers.py +0 -0
  119. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/security/passwords.py +0 -0
  120. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/security/rate_limit.py +0 -0
  121. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/security/redaction.py +0 -0
  122. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/security/secrets.py +0 -0
  123. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/seo.py +0 -0
  124. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/static/client.js +0 -0
  125. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/status.py +0 -0
  126. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/__init__.py +0 -0
  127. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/cache/__init__.py +0 -0
  128. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/cache/interfaces.py +0 -0
  129. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/cache/memory.py +0 -0
  130. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/cache/redis.py +0 -0
  131. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/database/__init__.py +0 -0
  132. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/database/interfaces.py +0 -0
  133. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/database/postgres.py +0 -0
  134. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/database/sqlite.py +0 -0
  135. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/events/__init__.py +0 -0
  136. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/events/interfaces.py +0 -0
  137. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/events/local.py +0 -0
  138. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/events/postgres.py +0 -0
  139. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/events/sqlite.py +0 -0
  140. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/execution/__init__.py +0 -0
  141. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/execution/migrations.py +0 -0
  142. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/execution/postgres.py +0 -0
  143. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/execution/sqlite.py +0 -0
  144. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/manager.py +0 -0
  145. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/objects/__init__.py +0 -0
  146. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/objects/interfaces.py +0 -0
  147. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/objects/local.py +0 -0
  148. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/objects/s3.py +0 -0
  149. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/queue/__init__.py +0 -0
  150. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/queue/interfaces.py +0 -0
  151. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/queue/memory.py +0 -0
  152. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/queue/postgres.py +0 -0
  153. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/queue/redis.py +0 -0
  154. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/queue/sqlite.py +0 -0
  155. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/scheduler/__init__.py +0 -0
  156. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/scheduler/sqlite.py +0 -0
  157. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/telemetry/__init__.py +0 -0
  158. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/telemetry/api.py +0 -0
  159. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/telemetry/middleware.py +0 -0
  160. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/telemetry/otlp.py +0 -0
  161. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/telemetry/store.py +0 -0
  162. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/theme.py +0 -0
  163. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/tools/__init__.py +0 -0
  164. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/tools/registry.py +0 -0
  165. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ui/__init__.py +0 -0
  166. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ui/component.py +0 -0
  167. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ui/events.py +0 -0
  168. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ui/library.py +0 -0
  169. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ui/markdown.py +0 -0
  170. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ui/rendering.py +0 -0
  171. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ui/state.py +0 -0
  172. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ui/styles/__init__.py +0 -0
  173. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ui/styles/presets.py +0 -0
  174. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ui/styles/theme.py +0 -0
  175. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/workers/__init__.py +0 -0
  176. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/workers/queue.py +0 -0
  177. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo_framework.egg-info/dependency_links.txt +0 -0
  178. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo_framework.egg-info/entry_points.txt +0 -0
  179. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo_framework.egg-info/requires.txt +0 -0
  180. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo_framework.egg-info/top_level.txt +0 -0
  181. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_agent.py +0 -0
  182. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_agent_registry.py +0 -0
  183. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_agent_runtime.py +0 -0
  184. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_app.py +0 -0
  185. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_auth.py +0 -0
  186. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_capability_security.py +0 -0
  187. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_checkpoint_resume.py +0 -0
  188. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_chrome.py +0 -0
  189. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_cli.py +0 -0
  190. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_cli_inspect.py +0 -0
  191. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_components.py +0 -0
  192. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_config.py +0 -0
  193. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_contract_api.py +0 -0
  194. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_data.py +0 -0
  195. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_design_system.py +0 -0
  196. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_durable_hitl.py +0 -0
  197. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_events.py +0 -0
  198. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_execution_sqlite_store.py +0 -0
  199. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_http_runtime.py +0 -0
  200. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_human.py +0 -0
  201. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_i18n.py +0 -0
  202. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_integration.py +0 -0
  203. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_mcp.py +0 -0
  204. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_mcp_runtime.py +0 -0
  205. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_memory.py +0 -0
  206. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_mesh.py +0 -0
  207. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_mesh_event_bus.py +0 -0
  208. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_model.py +0 -0
  209. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_object_store.py +0 -0
  210. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_observability.py +0 -0
  211. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_persistence.py +0 -0
  212. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_planner_adaptive.py +0 -0
  213. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_primitives.py +0 -0
  214. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_provider_switching.py +0 -0
  215. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_providers.py +0 -0
  216. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_queue.py +0 -0
  217. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_reactive.py +0 -0
  218. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_runtime.py +0 -0
  219. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_scheduler.py +0 -0
  220. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_security.py +0 -0
  221. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_seo.py +0 -0
  222. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_state.py +0 -0
  223. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_theme.py +0 -0
  224. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_theme_presets.py +0 -0
  225. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_tools.py +0 -0
  226. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_ui.py +0 -0
  227. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_websocket.py +0 -0
  228. {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_workers.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: voodoo-framework
3
- Version: 2.3.0
3
+ Version: 2.4.0
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>
@@ -102,7 +102,7 @@ from .ui.styles import (
102
102
  from .ui.styles.theme import Theme, ThemeColors, create_theme
103
103
  from .workers import task
104
104
 
105
- __version__ = "2.3.0"
105
+ __version__ = "2.4.0"
106
106
 
107
107
  __all__ = [
108
108
  # Core runtime
@@ -10,6 +10,7 @@ from voodoo.cli import (
10
10
  generate,
11
11
  new,
12
12
  objects,
13
+ protocol,
13
14
  recover,
14
15
  routes,
15
16
  schedules,
@@ -43,6 +44,7 @@ app.add_typer(objects.objects_app, name="objects")
43
44
  app.add_typer(agents.agents_app, name="agents")
44
45
  app.add_typer(approvals.approvals_app, name="approvals")
45
46
  app.add_typer(theme.theme_app, name="theme")
47
+ app.add_typer(protocol.protocol_app, name="protocol")
46
48
  # Top-level aliases per the Sprint 3 CLI surface: `voodoo execution <id>`
47
49
  # (timeline from the journal) and `voodoo events` (recent journal events).
48
50
  app.command("execution")(executions.show_execution)
@@ -0,0 +1,68 @@
1
+ """CLI: ``voodoo protocol export`` — export JSON Schema for protocol entities."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import json
6
+ from pathlib import Path
7
+
8
+ import typer
9
+
10
+ from voodoo.protocol import export_json_schemas, schema_for
11
+
12
+ __all__ = ["protocol_app"]
13
+
14
+ protocol_app = typer.Typer(
15
+ name="protocol",
16
+ help="Protocol schema operations.",
17
+ no_args_is_help=True,
18
+ )
19
+
20
+
21
+ @protocol_app.command("export")
22
+ def export_schemas(
23
+ output: str = typer.Option(
24
+ "",
25
+ "--output",
26
+ "-o",
27
+ help="Output file path (default: stdout).",
28
+ ),
29
+ entity: str = typer.Option(
30
+ "",
31
+ "--entity",
32
+ "-e",
33
+ help="Export a single entity by name (e.g. 'Execution').",
34
+ ),
35
+ indent: int = typer.Option(2, "--indent", help="JSON indentation."),
36
+ ) -> None:
37
+ """Export JSON Schema for all Voodoo protocol entities."""
38
+ if entity:
39
+ try:
40
+ schema = schema_for(entity)
41
+ except KeyError:
42
+ typer.echo(f"Unknown entity: {entity}", err=True)
43
+ typer.echo(f"Available: {', '.join(sorted(_entity_names()))}", err=True)
44
+ raise typer.Exit(1) from None
45
+ result = json.dumps(schema, indent=indent, default=str)
46
+ else:
47
+ schemas = export_json_schemas()
48
+ result = json.dumps(schemas, indent=indent, default=str)
49
+
50
+ if output:
51
+ Path(output).write_text(result + "\n")
52
+ count = 1 if entity else len(_entity_names())
53
+ typer.echo(f"Exported {count} schema(s) to {output}")
54
+ else:
55
+ typer.echo(result)
56
+
57
+
58
+ @protocol_app.command("list")
59
+ def list_entities() -> None:
60
+ """List all protocol entity names."""
61
+ for name in sorted(_entity_names()):
62
+ typer.echo(name)
63
+
64
+
65
+ def _entity_names() -> list[str]:
66
+ from voodoo.protocol.schemas import PROTOCOL_ENTITIES
67
+
68
+ return list(PROTOCOL_ENTITIES.keys())
@@ -0,0 +1,97 @@
1
+ """Voodoo protocol — canonical entity schemas for cross-language interop.
2
+
3
+ This package defines the **stable semantic boundary** for the Voodoo runtime.
4
+ Every entity is a Pydantic model with a ``schema_version`` field and full
5
+ JSON Schema export support.
6
+
7
+ Quick start::
8
+
9
+ from voodoo.protocol import Execution, Intent, SCHEMA_VERSION
10
+
11
+ intent = Intent(name="summarize", params={"text": "hello"})
12
+ execution = Execution(
13
+ id="exec-001",
14
+ trace_id="trace-001",
15
+ intent=intent,
16
+ )
17
+
18
+ # Serialize to JSON
19
+ data = execution.model_dump(mode="json")
20
+
21
+ # Round-trip
22
+ restored = Execution.model_validate(data)
23
+
24
+ # Export JSON Schema
25
+ from voodoo.protocol import export_json_schemas
26
+ schemas = export_json_schemas()
27
+
28
+ See ``docs/protocol.md`` for the compatibility policy.
29
+ """
30
+
31
+ from __future__ import annotations
32
+
33
+ from .export import export_json_schemas, export_json_schemas_json, schema_for
34
+ from .schemas import (
35
+ PROTOCOL_ENTITIES,
36
+ SCHEMA_VERSION,
37
+ AgentEntity,
38
+ AgentRun,
39
+ Approval,
40
+ ApprovalStatus,
41
+ Capability,
42
+ ComputeKind,
43
+ ComputeSpec,
44
+ Constraint,
45
+ Effect,
46
+ EffectStatus,
47
+ Error,
48
+ Event,
49
+ Execution,
50
+ ExecutionStatus,
51
+ Identity,
52
+ Intent,
53
+ IntentStatus,
54
+ MemoryEntry,
55
+ ObjectRef,
56
+ Resource,
57
+ Task,
58
+ TaskStatus,
59
+ TelemetrySpan,
60
+ TimeSpec,
61
+ )
62
+
63
+ __all__ = [
64
+ # Schema metadata
65
+ "SCHEMA_VERSION",
66
+ "PROTOCOL_ENTITIES",
67
+ # Enums
68
+ "ExecutionStatus",
69
+ "IntentStatus",
70
+ "EffectStatus",
71
+ "TaskStatus",
72
+ "ApprovalStatus",
73
+ "ComputeKind",
74
+ # Core entities
75
+ "Identity",
76
+ "Capability",
77
+ "Constraint",
78
+ "Resource",
79
+ "TimeSpec",
80
+ "ComputeSpec",
81
+ "Intent",
82
+ "Effect",
83
+ "Execution",
84
+ "Task",
85
+ "Event",
86
+ "ObjectRef",
87
+ "Error",
88
+ "TelemetrySpan",
89
+ "Approval",
90
+ "AgentEntity",
91
+ "AgentRun",
92
+ "MemoryEntry",
93
+ # Export
94
+ "export_json_schemas",
95
+ "export_json_schemas_json",
96
+ "schema_for",
97
+ ]
@@ -0,0 +1,75 @@
1
+ """JSON Schema export for Voodoo protocol entities.
2
+
3
+ Usage::
4
+
5
+ from voodoo.protocol import export_json_schemas
6
+
7
+ # Export all schemas as a dict
8
+ schemas = export_json_schemas()
9
+
10
+ # Write to a file
11
+ import json
12
+ with open("voodoo-protocol.json", "w") as f:
13
+ json.dump(schemas, f, indent=2)
14
+ """
15
+
16
+ from __future__ import annotations
17
+
18
+ import json
19
+ from typing import Any
20
+
21
+ from .schemas import PROTOCOL_ENTITIES, SCHEMA_VERSION
22
+
23
+ __all__ = [
24
+ "export_json_schemas",
25
+ "export_json_schemas_json",
26
+ "schema_for",
27
+ ]
28
+
29
+
30
+ def export_json_schemas() -> dict[str, Any]:
31
+ """Export JSON Schema for all protocol entities.
32
+
33
+ Returns a dict keyed by entity name, where each value is the
34
+ JSON Schema for that entity (draft 2020-12).
35
+ """
36
+ schemas: dict[str, Any] = {}
37
+ for name, model in PROTOCOL_ENTITIES.items():
38
+ schema = model.model_json_schema()
39
+ # Add protocol-level metadata
40
+ schema["$schema"] = "https://json-schema.org/draft/2020-12/schema"
41
+ schema["$id"] = f"urn:voodoo:protocol:{name.lower()}:{SCHEMA_VERSION}"
42
+ schema["x-voodoo-schema-version"] = SCHEMA_VERSION
43
+ schemas[name] = schema
44
+ return schemas
45
+
46
+
47
+ def export_json_schemas_json(indent: int = 2) -> str:
48
+ """Export all protocol schemas as a JSON string."""
49
+ return json.dumps(export_json_schemas(), indent=indent, default=str)
50
+
51
+
52
+ def schema_for(entity_name: str) -> dict[str, Any]:
53
+ """Get JSON Schema for a single protocol entity by name.
54
+
55
+ Parameters
56
+ ----------
57
+ entity_name:
58
+ The entity name (e.g. "Execution", "Intent").
59
+
60
+ Returns
61
+ -------
62
+ dict:
63
+ The JSON Schema for the entity.
64
+
65
+ Raises
66
+ ------
67
+ KeyError:
68
+ If the entity name is not a known protocol entity.
69
+ """
70
+ model = PROTOCOL_ENTITIES[entity_name]
71
+ schema = model.model_json_schema()
72
+ schema["$schema"] = "https://json-schema.org/draft/2020-12/schema"
73
+ schema["$id"] = f"urn:voodoo:protocol:{entity_name.lower()}:{SCHEMA_VERSION}"
74
+ schema["x-voodoo-schema-version"] = SCHEMA_VERSION
75
+ return schema