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.
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/PKG-INFO +1 -1
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/__init__.py +1 -1
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/__init__.py +2 -0
- voodoo_framework-2.4.0/src/voodoo/cli/protocol.py +68 -0
- voodoo_framework-2.4.0/src/voodoo/protocol/__init__.py +97 -0
- voodoo_framework-2.4.0/src/voodoo/protocol/export.py +75 -0
- voodoo_framework-2.4.0/src/voodoo/protocol/schemas.py +455 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo_framework.egg-info/PKG-INFO +1 -1
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo_framework.egg-info/SOURCES.txt +5 -0
- voodoo_framework-2.4.0/tests/test_protocol.py +399 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/LICENSE +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/README.md +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/pyproject.toml +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/setup.cfg +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/adapters/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/adapters/capabilities.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/adapters/registry.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/adapters/tailwind.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/adapters/voodoo_css.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/agent.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/agents/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/agents/models.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/agents/registry.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ai/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ai/agent.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ai/providers/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ai/providers/anthropic.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ai/providers/gemini.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ai/providers/mock.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ai/providers/ollama.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ai/providers/openai.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ai/tools/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ai/tools/registry.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/api.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/auth/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/auth/cookies.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/auth/guards.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/auth/jwt.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/auth/middleware.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/auth/passwords.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/auth/user.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/__main__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/agents.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/ai.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/approvals.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/auth.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/dev.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/doctor.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/executions.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/generate.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/inspect.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/new.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/objects.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/recover.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/routes.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/scaffolding.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/schedules.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/status.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/tasks.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/terminal.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/theme.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/version.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/cli/workers_cmd.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/components.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/config.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/core/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/core/app.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/core/errors.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/core/events.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/core/render.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/core/routing.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/core/sitemap.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/core/state.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/data/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/data/base.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/data/model.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/i18n.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/mcp/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/mcp/client.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/memory/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/memory/interfaces.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/memory/sqlite.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/mesh/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/mesh/client.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/mesh/event_bus.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/primitives/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/primitives/capability.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/primitives/compute.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/primitives/constraint.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/primitives/effect.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/primitives/intent.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/primitives/resource.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/primitives/state.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/primitives/time.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/py.typed +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/queue.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/routing/api.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/routing/pages.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/adaptive.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/capability.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/constraint.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/context.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/engine.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/errors.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/execution.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/graph.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/human.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/persistence.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/planner.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/scheduler.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/task.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/runtime/workflow.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/schedule.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/security/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/security/cors.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/security/csrf.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/security/headers.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/security/passwords.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/security/rate_limit.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/security/redaction.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/security/secrets.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/seo.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/static/client.js +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/status.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/cache/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/cache/interfaces.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/cache/memory.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/cache/redis.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/database/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/database/interfaces.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/database/postgres.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/database/sqlite.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/events/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/events/interfaces.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/events/local.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/events/postgres.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/events/sqlite.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/execution/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/execution/migrations.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/execution/postgres.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/execution/sqlite.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/manager.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/objects/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/objects/interfaces.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/objects/local.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/objects/s3.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/queue/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/queue/interfaces.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/queue/memory.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/queue/postgres.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/queue/redis.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/queue/sqlite.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/scheduler/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/storage/scheduler/sqlite.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/telemetry/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/telemetry/api.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/telemetry/middleware.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/telemetry/otlp.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/telemetry/store.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/theme.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/tools/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/tools/registry.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ui/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ui/component.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ui/events.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ui/library.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ui/markdown.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ui/rendering.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ui/state.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ui/styles/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ui/styles/presets.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/ui/styles/theme.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/workers/__init__.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo/workers/queue.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo_framework.egg-info/dependency_links.txt +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo_framework.egg-info/entry_points.txt +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo_framework.egg-info/requires.txt +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/src/voodoo_framework.egg-info/top_level.txt +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_agent.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_agent_registry.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_agent_runtime.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_app.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_auth.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_capability_security.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_checkpoint_resume.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_chrome.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_cli.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_cli_inspect.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_components.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_config.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_contract_api.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_data.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_design_system.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_durable_hitl.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_events.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_execution_sqlite_store.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_http_runtime.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_human.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_i18n.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_integration.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_mcp.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_mcp_runtime.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_memory.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_mesh.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_mesh_event_bus.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_model.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_object_store.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_observability.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_persistence.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_planner_adaptive.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_primitives.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_provider_switching.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_providers.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_queue.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_reactive.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_runtime.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_scheduler.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_security.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_seo.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_state.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_theme.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_theme_presets.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_tools.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_ui.py +0 -0
- {voodoo_framework-2.3.0 → voodoo_framework-2.4.0}/tests/test_websocket.py +0 -0
- {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
|
+
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>
|
|
@@ -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
|