hexdag 0.7.0.dev5__tar.gz → 0.7.0.dev6__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.
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/PKG-INFO +50 -53
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/README.md +49 -52
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/__init__.py +16 -4
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/api/components.py +9 -15
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/api/execution.py +4 -4
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/api/export.py +1 -1
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/api/validation.py +5 -5
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/cli/commands/build_cmd.py +1 -1
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/cli/commands/init_cmd.py +40 -66
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/cli/commands/lint_cmd.py +1 -1
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/cli/commands/validate_cmd.py +5 -5
- {hexdag-0.7.0.dev5/hexdag/kernel/pipeline_builder → hexdag-0.7.0.dev6/hexdag/compiler}/__init__.py +19 -2
- {hexdag-0.7.0.dev5/hexdag/kernel/pipeline_builder → hexdag-0.7.0.dev6/hexdag/compiler}/component_instantiator.py +17 -20
- hexdag-0.7.0.dev5/hexdag/kernel/config/loader.py → hexdag-0.7.0.dev6/hexdag/compiler/config_loader.py +174 -70
- {hexdag-0.7.0.dev5/hexdag/kernel/pipeline_builder → hexdag-0.7.0.dev6/hexdag/compiler}/include_tag.py +3 -9
- {hexdag-0.7.0.dev5/hexdag/kernel/pipeline_builder → hexdag-0.7.0.dev6/hexdag/compiler}/plugins/__init__.py +6 -3
- hexdag-0.7.0.dev6/hexdag/compiler/plugins/config_definition.py +69 -0
- {hexdag-0.7.0.dev5/hexdag/kernel/pipeline_builder → hexdag-0.7.0.dev6/hexdag/compiler}/plugins/macro_definition.py +12 -6
- {hexdag-0.7.0.dev5/hexdag/kernel/pipeline_builder → hexdag-0.7.0.dev6/hexdag/compiler}/plugins/macro_entity.py +47 -10
- {hexdag-0.7.0.dev5/hexdag/kernel/pipeline_builder → hexdag-0.7.0.dev6/hexdag/compiler}/plugins/node_entity.py +55 -4
- {hexdag-0.7.0.dev5/hexdag/kernel/pipeline_builder → hexdag-0.7.0.dev6/hexdag/compiler}/preprocessing/__init__.py +3 -3
- {hexdag-0.7.0.dev5/hexdag/kernel/pipeline_builder → hexdag-0.7.0.dev6/hexdag/compiler}/preprocessing/env_vars.py +3 -3
- {hexdag-0.7.0.dev5/hexdag/kernel/pipeline_builder → hexdag-0.7.0.dev6/hexdag/compiler}/preprocessing/include.py +2 -4
- {hexdag-0.7.0.dev5/hexdag/kernel/pipeline_builder → hexdag-0.7.0.dev6/hexdag/compiler}/preprocessing/template.py +2 -3
- {hexdag-0.7.0.dev5/hexdag/kernel/pipeline_builder → hexdag-0.7.0.dev6/hexdag/compiler}/py_tag.py +3 -9
- {hexdag-0.7.0.dev5/hexdag/kernel/pipeline_builder → hexdag-0.7.0.dev6/hexdag/compiler}/tag_discovery.py +7 -7
- {hexdag-0.7.0.dev5/hexdag/kernel/pipeline_builder → hexdag-0.7.0.dev6/hexdag/compiler}/yaml_builder.py +67 -42
- {hexdag-0.7.0.dev5/hexdag/kernel/pipeline_builder → hexdag-0.7.0.dev6/hexdag/compiler}/yaml_validator.py +36 -7
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/docs/extractors.py +1 -1
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/docs/generators.py +337 -2
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/drivers/executors/local_executor.py +8 -8
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/drivers/http_client/http_client.py +37 -24
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/drivers/observer_manager/local.py +37 -5
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/drivers/pipeline_spawner/local.py +2 -2
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/drivers/vfs/local.py +53 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/drivers/vfs/providers/proc_entities_provider.py +2 -2
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/__init__.py +2 -0
- hexdag-0.7.0.dev6/hexdag/kernel/config/__init__.py +34 -0
- hexdag-0.7.0.dev6/hexdag/kernel/config/loader.py +35 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/config/models.py +68 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/configurable.py +5 -3
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/discovery.py +8 -13
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/domain/dag.py +89 -73
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/domain/entity_state.py +28 -6
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/domain/pipeline_run.py +13 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/domain/scheduled_task.py +14 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/exceptions.py +190 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/expression_parser.py +2 -11
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/linting/models.py +16 -1
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/linting/pipeline_rules.py +3 -5
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/body_executor.py +12 -16
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/components/adapter_lifecycle_manager.py +3 -3
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/components/checkpoint_manager.py +3 -3
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/components/execution_coordinator.py +7 -9
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/components/health_check_manager.py +4 -4
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/components/lifecycle_manager.py +35 -39
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/components/node_executor.py +4 -18
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/components/secret_manager.py +8 -6
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/events/decorators.py +12 -7
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/events/observers/core_observers.py +4 -4
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/hooks.py +24 -35
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/orchestrator.py +30 -22
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/orchestrator_factory.py +7 -4
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/port_wrappers.py +4 -3
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/prompt/template.py +4 -10
- hexdag-0.7.0.dev6/hexdag/kernel/pipeline_builder/__init__.py +34 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/pipeline_runner.py +6 -10
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/ports/__init__.py +2 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/ports/data_store.py +74 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/ports/detection.py +31 -11
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/ports/llm.py +12 -7
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/ports/secret.py +4 -4
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/ports/tool_router.py +3 -6
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/ports_builder.py +4 -2
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/protocols.py +3 -4
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/resolver.py +14 -18
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/schema/generator.py +80 -5
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/secrets.py +15 -12
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/types.py +4 -4
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/utils/schema_conversion.py +7 -3
- hexdag-0.7.0.dev6/hexdag/kernel/utils/serialization.py +42 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/utils/sql_validation.py +3 -2
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/validation/sanitized_types.py +7 -3
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/validation/secure_json.py +19 -9
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/yaml_macro.py +44 -26
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/mcp_server.py +23 -19
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/anthropic/anthropic_adapter.py +1 -1
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/database/csv/csv_adapter.py +3 -2
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/database/pgvector/pgvector_adapter.py +5 -4
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/database/sqlalchemy/sqlalchemy_adapter.py +2 -2
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/database/sqlite/sqlite_adapter.py +7 -6
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/memory/__init__.py +2 -0
- hexdag-0.7.0.dev6/hexdag/stdlib/adapters/memory/collection_memory.py +54 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/memory/file_memory_adapter.py +9 -9
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/memory/in_memory_memory.py +5 -3
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/memory/session_memory.py +2 -2
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/memory/sqlite_memory_adapter.py +10 -11
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/memory/state_memory.py +2 -2
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/mock/mock_database.py +2 -2
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/mock/mock_embedding.py +3 -1
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/mock/mock_llm.py +9 -3
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/openai/openai_adapter.py +11 -10
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/secret/local_secret_adapter.py +12 -8
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/lib/__init__.py +2 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/lib/entity_state.py +146 -42
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/lib/process_registry.py +59 -8
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/lib/process_registry_observer.py +12 -12
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/lib/scheduler.py +98 -6
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/macros/__init__.py +0 -3
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/macros/conversation_agent.py +15 -13
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/macros/reasoning_agent.py +5 -3
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/nodes/__init__.py +2 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/nodes/_discovery.py +2 -3
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/nodes/agent_node.py +3 -5
- hexdag-0.7.0.dev6/hexdag/stdlib/nodes/api_call_node.py +339 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/nodes/composite_node.py +2 -2
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/nodes/function_node.py +1 -11
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/nodes/llm_node.py +5 -39
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/nodes/port_call_node.py +1 -1
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/nodes/tool_call_node.py +3 -6
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/prompts/tool_prompts.py +3 -9
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/server/routes/execute.py +2 -2
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/server/routes/export.py +1 -1
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/server/routes/validate.py +1 -1
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/hexdag_etl/examples/01_simple_pandas_transform.py +1 -1
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/hexdag_etl/examples/02_simple_pandas_only.py +1 -1
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/hexdag_etl/examples/test_pandas_transform.py +1 -1
- hexdag-0.7.0.dev6/hexdag_plugins/storage/adapters/sql/__init__.py +8 -0
- hexdag-0.7.0.dev6/hexdag_plugins/storage/adapters/sql/collection_storage.py +155 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/pyproject.toml +2 -2
- hexdag-0.7.0.dev5/hexdag/kernel/config/__init__.py +0 -20
- hexdag-0.7.0.dev5/hexdag/stdlib/macros/tool_macro.py +0 -380
- hexdag-0.7.0.dev5/hexdag_plugins/storage/adapters/sql/__init__.py +0 -7
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/.gitignore +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/LICENSE +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/__main__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/api/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/api/documentation.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/api/pipeline.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/api/processes.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/api/vfs.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/cli/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/cli/__main__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/cli/commands/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/cli/commands/create_cmd.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/cli/commands/docs_cmd.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/cli/commands/generate_types_cmd.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/cli/commands/pipeline_cmd.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/cli/commands/plugin_dev_cmd.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/cli/commands/plugins_cmd.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/cli/commands/studio_cmd.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/cli/main.py +0 -0
- {hexdag-0.7.0.dev5/hexdag/kernel/pipeline_builder → hexdag-0.7.0.dev6/hexdag/compiler}/pipeline_config.py +0 -0
- {hexdag-0.7.0.dev5/hexdag/kernel/pipeline_builder → hexdag-0.7.0.dev6/hexdag/compiler}/preprocessing/_type_guards.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/docs/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/docs/models.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/drivers/executors/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/drivers/http_client/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/drivers/observer_manager/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/drivers/pipeline_spawner/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/drivers/vfs/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/drivers/vfs/providers/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/drivers/vfs/providers/lib_provider.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/drivers/vfs/providers/proc_runs_provider.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/drivers/vfs/providers/proc_scheduled_provider.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/context/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/context/execution_context.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/domain/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/domain/agent_tools.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/domain/vfs.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/lib_base.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/linting/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/linting/rules.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/logging.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/models/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/models/base.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/components/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/components/input_mapper.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/constants.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/events/README.md +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/events/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/events/batching.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/events/events.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/events/observers/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/events/observers/cost_profiler.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/events/observers/models.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/hook_context.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/models.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/orchestration/prompt/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/ports/api_call.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/ports/database.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/ports/executor.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/ports/file_storage.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/ports/healthcheck.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/ports/memory.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/ports/observer_manager.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/ports/pipeline_spawner.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/ports/vector_search.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/ports/vfs.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/schema/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/utils/async_warnings.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/utils/caching.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/utils/input_normalization.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/utils/node_timer.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/validation/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/kernel/validation/retry.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/py.typed +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/_discovery.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/anthropic/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/database/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/database/pgvector/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/database/sqlite/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/local/README.md +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/local/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/memory/schemas.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/mock/README.md +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/mock/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/mock/hexdag.toml +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/mock/mock_http.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/openai/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/adapters/secret/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/lib/database_tools.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/lib/vfs_tools.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/lib_base.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/macros/_discovery.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/macros/llm_macro.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/nodes/base_node_factory.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/nodes/data_node.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/nodes/expression_node.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/nodes/mapped_input.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/nodes/tool_utils.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/prompts/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/prompts/base.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/prompts/chat_prompts.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/stdlib/prompts/error_correction_prompts.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/build_ui.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/server/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/server/main.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/server/routes/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/server/routes/files.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/server/routes/plugins.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/index.html +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/package-lock.json +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/package.json +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/postcss.config.js +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/public/hexdag.svg +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/src/App.tsx +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/src/components/Canvas.tsx +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/src/components/ContextMenu.tsx +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/src/components/FileBrowser.tsx +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/src/components/Header.tsx +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/src/components/HexdagNode.tsx +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/src/components/NodeInspector.tsx +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/src/components/NodePalette.tsx +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/src/components/NodePortsSection.tsx +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/src/components/PluginManager.tsx +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/src/components/PortsEditor.tsx +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/src/components/PythonEditor.tsx +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/src/components/ValidationPanel.tsx +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/src/components/YamlEditor.tsx +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/src/components/index.ts +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/src/index.css +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/src/lib/api.ts +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/src/lib/nodeTemplates.ts +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/src/lib/store.ts +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/src/main.tsx +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/src/types/index.ts +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/src/vite-env.d.ts +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/tailwind.config.js +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/tsconfig.json +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/tsconfig.node.json +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag/studio/ui/vite.config.ts +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/.gitignore +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/README.md +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/azure/LICENSE +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/azure/README.md +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/azure/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/azure/adapters/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/azure/adapters/blob.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/azure/adapters/cosmos.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/azure/adapters/keyvault.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/azure/adapters/openai.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/azure/pyproject.toml +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/azure/tests/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/azure/tests/test_azure_blob_adapter.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/azure/tests/test_azure_cosmos_adapter.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/azure/tests/test_azure_keyvault_adapter.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/azure/tests/test_azure_openai_adapter.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/hexdag_etl/README.md +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/hexdag_etl/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/hexdag_etl/examples/03_file_io_pipeline.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/hexdag_etl/hexdag.toml +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/hexdag_etl/hexdag_etl/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/hexdag_etl/hexdag_etl/nodes/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/hexdag_etl/hexdag_etl/nodes/api_extract.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/hexdag_etl/hexdag_etl/nodes/base_node_factory.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/hexdag_etl/hexdag_etl/nodes/file_io.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/hexdag_etl/hexdag_etl/nodes/pandas_transform.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/hexdag_etl/hexdag_etl/nodes/sql_extract_load.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/hexdag_etl/pyproject.toml +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/hexdag_etl/test_transform.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/hexdag_etl/tests/test_plugin_integration.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/mysql_adapter/LICENSE +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/mysql_adapter/README.md +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/mysql_adapter/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/mysql_adapter/adapters/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/mysql_adapter/adapters/mysql.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/mysql_adapter/mysql_adapter.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/mysql_adapter/pyproject.toml +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/mysql_adapter/tests/test_mysql_adapter.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/pyproject.toml +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/storage/README.md +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/storage/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/storage/adapters/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/storage/adapters/file/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/storage/adapters/file/local.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/storage/adapters/sql/base.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/storage/adapters/sql/mysql.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/storage/adapters/sql/postgresql.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/storage/adapters/vector/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/storage/adapters/vector/chromadb.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/storage/adapters/vector/in_memory.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/storage/adapters/vector/pgvector.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/storage/ports/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/storage/ports/vector_store.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/storage/tests/__init__.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/storage/tests/test_local_file_storage.py +0 -0
- {hexdag-0.7.0.dev5 → hexdag-0.7.0.dev6}/hexdag_plugins/storage/tests/test_sql_adapters.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hexdag
|
|
3
|
-
Version: 0.7.0.
|
|
3
|
+
Version: 0.7.0.dev6
|
|
4
4
|
Summary: Lightweight DAG orchestration framework with enterprise pipeline capabilities
|
|
5
5
|
Project-URL: Homepage, https://hexdag.ai
|
|
6
6
|
Project-URL: Repository, https://github.com/omniviser/hexdag
|
|
@@ -102,18 +102,18 @@ infrastructure dependency without touching business logic.
|
|
|
102
102
|
|
|
103
103
|
## The OS Analogy
|
|
104
104
|
|
|
105
|
-
| Linux
|
|
106
|
-
|
|
107
|
-
| Kernel
|
|
108
|
-
| System calls
|
|
109
|
-
| Drivers
|
|
110
|
-
| `/lib`
|
|
111
|
-
| Processes
|
|
112
|
-
| `fork`/`exec`
|
|
113
|
-
| Process scheduler | `Scheduler`
|
|
114
|
-
| State machines
|
|
115
|
-
| `/usr/bin`
|
|
116
|
-
| Shell
|
|
105
|
+
| Linux | hexDAG | Purpose |
|
|
106
|
+
| ----------------- | ----------------- | ------------------------------------------------------------------------ |
|
|
107
|
+
| Kernel | `kernel/` | Core execution engine, system call interfaces (Protocols), domain models |
|
|
108
|
+
| System calls | `kernel/ports/` | Contracts for external capabilities (LLM, Memory, Database, etc.) |
|
|
109
|
+
| Drivers | `drivers/` | Low-level infrastructure (executor, observer manager, pipeline spawner) |
|
|
110
|
+
| `/lib` | `stdlib/` | Standard library -- built-in nodes, adapters, macros, system libs |
|
|
111
|
+
| Processes | Pipeline runs | Tracked by `ProcessRegistry` (like `ps`) |
|
|
112
|
+
| `fork`/`exec` | `PipelineSpawner` | Launch sub-pipelines from within a running pipeline |
|
|
113
|
+
| Process scheduler | `Scheduler` | Delayed and recurring pipeline execution |
|
|
114
|
+
| State machines | `EntityState` | Business entity lifecycle management |
|
|
115
|
+
| `/usr/bin` | `api/` | User-facing tools (MCP + Studio REST) |
|
|
116
|
+
| Shell | `cli/` | Command-line interface (`hexdag init`, `hexdag lint`, etc.) |
|
|
117
117
|
|
|
118
118
|
---
|
|
119
119
|
|
|
@@ -248,14 +248,14 @@ When adding something new:
|
|
|
248
248
|
|
|
249
249
|
All framework entities follow one pattern: **kernel defines contract, stdlib ships builtins, users write their own.**
|
|
250
250
|
|
|
251
|
-
| Entity
|
|
252
|
-
|
|
253
|
-
| Ports
|
|
254
|
-
| Adapters | Protocol in `kernel/ports/`
|
|
255
|
-
| Nodes
|
|
256
|
-
| Macros
|
|
257
|
-
| Prompts
|
|
258
|
-
| Libs
|
|
251
|
+
| Entity | Kernel Contract | Stdlib Builtins | User Custom |
|
|
252
|
+
| -------- | ------------------------------ | --------------------------------------------- | ------------------ |
|
|
253
|
+
| Ports | `kernel/ports/llm.py` | -- | `myapp.ports.X` |
|
|
254
|
+
| Adapters | Protocol in `kernel/ports/` | `stdlib/adapters/openai/` | `myapp.adapters.X` |
|
|
255
|
+
| Nodes | `NodeSpec` + `BaseNodeFactory` | `LLMNode`, `AgentNode`, `FunctionNode` | `myapp.nodes.X` |
|
|
256
|
+
| Macros | (convention) | `ReasoningAgent`, `ConversationAgent` | `myapp.macros.X` |
|
|
257
|
+
| Prompts | (convention) | `tool_prompts`, `error_correction` | `myapp.prompts.X` |
|
|
258
|
+
| Libs | `HexDAGLib` base class | `ProcessRegistry`, `EntityState`, `Scheduler` | `myapp.lib.X` |
|
|
259
259
|
|
|
260
260
|
Components are referenced by full Python module path in YAML:
|
|
261
261
|
|
|
@@ -273,12 +273,12 @@ nodes:
|
|
|
273
273
|
Libs are system-level capabilities for multi-pipeline coordination. Every public async
|
|
274
274
|
method on a `HexDAGLib` subclass auto-becomes an agent-callable tool.
|
|
275
275
|
|
|
276
|
-
| Lib
|
|
277
|
-
|
|
278
|
-
| **ProcessRegistry** | `ps`
|
|
279
|
-
| **EntityState**
|
|
280
|
-
| **Scheduler**
|
|
281
|
-
| **DatabaseTools**
|
|
276
|
+
| Lib | Linux Analogy | Purpose |
|
|
277
|
+
| ------------------- | -------------- | -------------------------------------------------------------------------------------------- |
|
|
278
|
+
| **ProcessRegistry** | `ps` | Track pipeline runs -- status, duration, results, parent/child relationships |
|
|
279
|
+
| **EntityState** | State machines | Declarative state machines for business entities with validated transitions and audit trails |
|
|
280
|
+
| **Scheduler** | `cron` / `at` | Delayed and recurring pipeline execution via asyncio timers |
|
|
281
|
+
| **DatabaseTools** | `sqlite3` CLI | Agent-callable SQL query tools wrapping any `SupportsQuery` adapter |
|
|
282
282
|
|
|
283
283
|
```python
|
|
284
284
|
from hexdag.kernel.lib_base import HexDAGLib
|
|
@@ -316,7 +316,7 @@ hexdag lint my_pipeline.yaml
|
|
|
316
316
|
|
|
317
317
|
### Macro System
|
|
318
318
|
Reusable pipeline templates that expand into full DAG subgraphs at build time.
|
|
319
|
-
Built-in macros: `ReasoningAgent`, `ConversationAgent`, `LLMMacro
|
|
319
|
+
Built-in macros: `ReasoningAgent`, `ConversationAgent`, `LLMMacro`.
|
|
320
320
|
|
|
321
321
|
### Event-Driven Observability
|
|
322
322
|
Comprehensive event system (`PipelineStarted`, `NodeCompleted`, `NodeFailed`, etc.)
|
|
@@ -378,17 +378,17 @@ export HEXDAG_PLUGIN_PATHS="./my_adapters:./my_nodes"
|
|
|
378
378
|
|
|
379
379
|
## CLI
|
|
380
380
|
|
|
381
|
-
| Command
|
|
382
|
-
|
|
383
|
-
| `hexdag init`
|
|
384
|
-
| `hexdag pipeline validate` | Validate a YAML pipeline
|
|
385
|
-
| `hexdag pipeline execute`
|
|
386
|
-
| `hexdag lint`
|
|
387
|
-
| `hexdag create`
|
|
388
|
-
| `hexdag build`
|
|
389
|
-
| `hexdag studio`
|
|
390
|
-
| `hexdag plugins`
|
|
391
|
-
| `hexdag docs`
|
|
381
|
+
| Command | Purpose |
|
|
382
|
+
| -------------------------- | ----------------------------------------- |
|
|
383
|
+
| `hexdag init` | Initialize a new hexDAG project |
|
|
384
|
+
| `hexdag pipeline validate` | Validate a YAML pipeline |
|
|
385
|
+
| `hexdag pipeline execute` | Execute a pipeline |
|
|
386
|
+
| `hexdag lint` | Lint YAML for best practices and security |
|
|
387
|
+
| `hexdag create` | Create pipeline templates from schemas |
|
|
388
|
+
| `hexdag build` | Build Docker containers for pipelines |
|
|
389
|
+
| `hexdag studio` | Launch the visual pipeline editor |
|
|
390
|
+
| `hexdag plugins` | Manage plugins and adapters |
|
|
391
|
+
| `hexdag docs` | Generate and serve documentation |
|
|
392
392
|
|
|
393
393
|
---
|
|
394
394
|
|
|
@@ -396,23 +396,20 @@ export HEXDAG_PLUGIN_PATHS="./my_adapters:./my_nodes"
|
|
|
396
396
|
|
|
397
397
|
### Interactive Notebooks
|
|
398
398
|
|
|
399
|
-
| Notebook
|
|
400
|
-
|
|
401
|
-
| [01. Introduction](notebooks/01_introduction.ipynb)
|
|
402
|
-
| [02. YAML Pipelines](notebooks/02_yaml_pipelines.ipynb)
|
|
403
|
-
| [03. Practical Workflow](notebooks/03_practical_workflow.ipynb)
|
|
404
|
-
| [06. Dynamic Reasoning Agent](notebooks/06_dynamic_reasoning_agent.ipynb)
|
|
405
|
-
| [YAML Includes & Composition](notebooks/03_yaml_includes_and_composition.ipynb) | Modular pipeline composition | --
|
|
399
|
+
| Notebook | Topic | Time |
|
|
400
|
+
| ------------------------------------------------------------------------------- | ---------------------------- | ------ |
|
|
401
|
+
| [01. Introduction](notebooks/01_introduction.ipynb) | Your first pipeline | 15 min |
|
|
402
|
+
| [02. YAML Pipelines](notebooks/02_yaml_pipelines.ipynb) | Declarative workflows | 25 min |
|
|
403
|
+
| [03. Practical Workflow](notebooks/03_practical_workflow.ipynb) | Real-world patterns | 30 min |
|
|
404
|
+
| [06. Dynamic Reasoning Agent](notebooks/06_dynamic_reasoning_agent.ipynb) | Advanced agent patterns | -- |
|
|
405
|
+
| [YAML Includes & Composition](notebooks/03_yaml_includes_and_composition.ipynb) | Modular pipeline composition | -- |
|
|
406
406
|
|
|
407
407
|
### Docs
|
|
408
408
|
|
|
409
|
-
- [Architecture](docs/ARCHITECTURE.md) -- System architecture and the
|
|
410
|
-
- [
|
|
411
|
-
- [
|
|
412
|
-
- [
|
|
413
|
-
- [Plugin System](docs/PLUGIN_SYSTEM.md) -- Custom component development
|
|
414
|
-
- [CLI Reference](docs/CLI_REFERENCE.md) -- Complete CLI documentation
|
|
415
|
-
- [Roadmap](ARCHITECTURE_ROADMAP.md) -- Planned kernel extensions (EventBus, LockPort, CentralAgent)
|
|
409
|
+
- [Architecture](docs/ARCHITECTURE.md) -- System architecture and the OS analogy
|
|
410
|
+
- [Roadmap](docs/ROADMAP.md) -- Development roadmap and planned kernel extensions
|
|
411
|
+
- [Quick Start](docs/quickstart.md) -- Build your first workflow
|
|
412
|
+
- [All Documentation](docs/README.md) -- Full documentation index
|
|
416
413
|
|
|
417
414
|
### Examples
|
|
418
415
|
|
|
@@ -19,18 +19,18 @@ infrastructure dependency without touching business logic.
|
|
|
19
19
|
|
|
20
20
|
## The OS Analogy
|
|
21
21
|
|
|
22
|
-
| Linux
|
|
23
|
-
|
|
24
|
-
| Kernel
|
|
25
|
-
| System calls
|
|
26
|
-
| Drivers
|
|
27
|
-
| `/lib`
|
|
28
|
-
| Processes
|
|
29
|
-
| `fork`/`exec`
|
|
30
|
-
| Process scheduler | `Scheduler`
|
|
31
|
-
| State machines
|
|
32
|
-
| `/usr/bin`
|
|
33
|
-
| Shell
|
|
22
|
+
| Linux | hexDAG | Purpose |
|
|
23
|
+
| ----------------- | ----------------- | ------------------------------------------------------------------------ |
|
|
24
|
+
| Kernel | `kernel/` | Core execution engine, system call interfaces (Protocols), domain models |
|
|
25
|
+
| System calls | `kernel/ports/` | Contracts for external capabilities (LLM, Memory, Database, etc.) |
|
|
26
|
+
| Drivers | `drivers/` | Low-level infrastructure (executor, observer manager, pipeline spawner) |
|
|
27
|
+
| `/lib` | `stdlib/` | Standard library -- built-in nodes, adapters, macros, system libs |
|
|
28
|
+
| Processes | Pipeline runs | Tracked by `ProcessRegistry` (like `ps`) |
|
|
29
|
+
| `fork`/`exec` | `PipelineSpawner` | Launch sub-pipelines from within a running pipeline |
|
|
30
|
+
| Process scheduler | `Scheduler` | Delayed and recurring pipeline execution |
|
|
31
|
+
| State machines | `EntityState` | Business entity lifecycle management |
|
|
32
|
+
| `/usr/bin` | `api/` | User-facing tools (MCP + Studio REST) |
|
|
33
|
+
| Shell | `cli/` | Command-line interface (`hexdag init`, `hexdag lint`, etc.) |
|
|
34
34
|
|
|
35
35
|
---
|
|
36
36
|
|
|
@@ -165,14 +165,14 @@ When adding something new:
|
|
|
165
165
|
|
|
166
166
|
All framework entities follow one pattern: **kernel defines contract, stdlib ships builtins, users write their own.**
|
|
167
167
|
|
|
168
|
-
| Entity
|
|
169
|
-
|
|
170
|
-
| Ports
|
|
171
|
-
| Adapters | Protocol in `kernel/ports/`
|
|
172
|
-
| Nodes
|
|
173
|
-
| Macros
|
|
174
|
-
| Prompts
|
|
175
|
-
| Libs
|
|
168
|
+
| Entity | Kernel Contract | Stdlib Builtins | User Custom |
|
|
169
|
+
| -------- | ------------------------------ | --------------------------------------------- | ------------------ |
|
|
170
|
+
| Ports | `kernel/ports/llm.py` | -- | `myapp.ports.X` |
|
|
171
|
+
| Adapters | Protocol in `kernel/ports/` | `stdlib/adapters/openai/` | `myapp.adapters.X` |
|
|
172
|
+
| Nodes | `NodeSpec` + `BaseNodeFactory` | `LLMNode`, `AgentNode`, `FunctionNode` | `myapp.nodes.X` |
|
|
173
|
+
| Macros | (convention) | `ReasoningAgent`, `ConversationAgent` | `myapp.macros.X` |
|
|
174
|
+
| Prompts | (convention) | `tool_prompts`, `error_correction` | `myapp.prompts.X` |
|
|
175
|
+
| Libs | `HexDAGLib` base class | `ProcessRegistry`, `EntityState`, `Scheduler` | `myapp.lib.X` |
|
|
176
176
|
|
|
177
177
|
Components are referenced by full Python module path in YAML:
|
|
178
178
|
|
|
@@ -190,12 +190,12 @@ nodes:
|
|
|
190
190
|
Libs are system-level capabilities for multi-pipeline coordination. Every public async
|
|
191
191
|
method on a `HexDAGLib` subclass auto-becomes an agent-callable tool.
|
|
192
192
|
|
|
193
|
-
| Lib
|
|
194
|
-
|
|
195
|
-
| **ProcessRegistry** | `ps`
|
|
196
|
-
| **EntityState**
|
|
197
|
-
| **Scheduler**
|
|
198
|
-
| **DatabaseTools**
|
|
193
|
+
| Lib | Linux Analogy | Purpose |
|
|
194
|
+
| ------------------- | -------------- | -------------------------------------------------------------------------------------------- |
|
|
195
|
+
| **ProcessRegistry** | `ps` | Track pipeline runs -- status, duration, results, parent/child relationships |
|
|
196
|
+
| **EntityState** | State machines | Declarative state machines for business entities with validated transitions and audit trails |
|
|
197
|
+
| **Scheduler** | `cron` / `at` | Delayed and recurring pipeline execution via asyncio timers |
|
|
198
|
+
| **DatabaseTools** | `sqlite3` CLI | Agent-callable SQL query tools wrapping any `SupportsQuery` adapter |
|
|
199
199
|
|
|
200
200
|
```python
|
|
201
201
|
from hexdag.kernel.lib_base import HexDAGLib
|
|
@@ -233,7 +233,7 @@ hexdag lint my_pipeline.yaml
|
|
|
233
233
|
|
|
234
234
|
### Macro System
|
|
235
235
|
Reusable pipeline templates that expand into full DAG subgraphs at build time.
|
|
236
|
-
Built-in macros: `ReasoningAgent`, `ConversationAgent`, `LLMMacro
|
|
236
|
+
Built-in macros: `ReasoningAgent`, `ConversationAgent`, `LLMMacro`.
|
|
237
237
|
|
|
238
238
|
### Event-Driven Observability
|
|
239
239
|
Comprehensive event system (`PipelineStarted`, `NodeCompleted`, `NodeFailed`, etc.)
|
|
@@ -295,17 +295,17 @@ export HEXDAG_PLUGIN_PATHS="./my_adapters:./my_nodes"
|
|
|
295
295
|
|
|
296
296
|
## CLI
|
|
297
297
|
|
|
298
|
-
| Command
|
|
299
|
-
|
|
300
|
-
| `hexdag init`
|
|
301
|
-
| `hexdag pipeline validate` | Validate a YAML pipeline
|
|
302
|
-
| `hexdag pipeline execute`
|
|
303
|
-
| `hexdag lint`
|
|
304
|
-
| `hexdag create`
|
|
305
|
-
| `hexdag build`
|
|
306
|
-
| `hexdag studio`
|
|
307
|
-
| `hexdag plugins`
|
|
308
|
-
| `hexdag docs`
|
|
298
|
+
| Command | Purpose |
|
|
299
|
+
| -------------------------- | ----------------------------------------- |
|
|
300
|
+
| `hexdag init` | Initialize a new hexDAG project |
|
|
301
|
+
| `hexdag pipeline validate` | Validate a YAML pipeline |
|
|
302
|
+
| `hexdag pipeline execute` | Execute a pipeline |
|
|
303
|
+
| `hexdag lint` | Lint YAML for best practices and security |
|
|
304
|
+
| `hexdag create` | Create pipeline templates from schemas |
|
|
305
|
+
| `hexdag build` | Build Docker containers for pipelines |
|
|
306
|
+
| `hexdag studio` | Launch the visual pipeline editor |
|
|
307
|
+
| `hexdag plugins` | Manage plugins and adapters |
|
|
308
|
+
| `hexdag docs` | Generate and serve documentation |
|
|
309
309
|
|
|
310
310
|
---
|
|
311
311
|
|
|
@@ -313,23 +313,20 @@ export HEXDAG_PLUGIN_PATHS="./my_adapters:./my_nodes"
|
|
|
313
313
|
|
|
314
314
|
### Interactive Notebooks
|
|
315
315
|
|
|
316
|
-
| Notebook
|
|
317
|
-
|
|
318
|
-
| [01. Introduction](notebooks/01_introduction.ipynb)
|
|
319
|
-
| [02. YAML Pipelines](notebooks/02_yaml_pipelines.ipynb)
|
|
320
|
-
| [03. Practical Workflow](notebooks/03_practical_workflow.ipynb)
|
|
321
|
-
| [06. Dynamic Reasoning Agent](notebooks/06_dynamic_reasoning_agent.ipynb)
|
|
322
|
-
| [YAML Includes & Composition](notebooks/03_yaml_includes_and_composition.ipynb) | Modular pipeline composition | --
|
|
316
|
+
| Notebook | Topic | Time |
|
|
317
|
+
| ------------------------------------------------------------------------------- | ---------------------------- | ------ |
|
|
318
|
+
| [01. Introduction](notebooks/01_introduction.ipynb) | Your first pipeline | 15 min |
|
|
319
|
+
| [02. YAML Pipelines](notebooks/02_yaml_pipelines.ipynb) | Declarative workflows | 25 min |
|
|
320
|
+
| [03. Practical Workflow](notebooks/03_practical_workflow.ipynb) | Real-world patterns | 30 min |
|
|
321
|
+
| [06. Dynamic Reasoning Agent](notebooks/06_dynamic_reasoning_agent.ipynb) | Advanced agent patterns | -- |
|
|
322
|
+
| [YAML Includes & Composition](notebooks/03_yaml_includes_and_composition.ipynb) | Modular pipeline composition | -- |
|
|
323
323
|
|
|
324
324
|
### Docs
|
|
325
325
|
|
|
326
|
-
- [Architecture](docs/ARCHITECTURE.md) -- System architecture and the
|
|
327
|
-
- [
|
|
328
|
-
- [
|
|
329
|
-
- [
|
|
330
|
-
- [Plugin System](docs/PLUGIN_SYSTEM.md) -- Custom component development
|
|
331
|
-
- [CLI Reference](docs/CLI_REFERENCE.md) -- Complete CLI documentation
|
|
332
|
-
- [Roadmap](ARCHITECTURE_ROADMAP.md) -- Planned kernel extensions (EventBus, LockPort, CentralAgent)
|
|
326
|
+
- [Architecture](docs/ARCHITECTURE.md) -- System architecture and the OS analogy
|
|
327
|
+
- [Roadmap](docs/ROADMAP.md) -- Development roadmap and planned kernel extensions
|
|
328
|
+
- [Quick Start](docs/quickstart.md) -- Build your first workflow
|
|
329
|
+
- [All Documentation](docs/README.md) -- Full documentation index
|
|
333
330
|
|
|
334
331
|
### Examples
|
|
335
332
|
|
|
@@ -36,12 +36,13 @@ DatabasePort = Database
|
|
|
36
36
|
# Define placeholders for lazy-loaded adapters to satisfy __all__ checking
|
|
37
37
|
# These will be replaced by __getattr__ when accessed
|
|
38
38
|
if TYPE_CHECKING:
|
|
39
|
+
from hexdag.compiler.yaml_builder import YamlPipelineBuilder
|
|
40
|
+
from hexdag.drivers.http_client import HttpClientDriver
|
|
39
41
|
from hexdag.kernel.domain import DirectedGraph, NodeSpec
|
|
40
42
|
from hexdag.kernel.orchestration.orchestrator import Orchestrator
|
|
41
|
-
from hexdag.kernel.pipeline_builder.yaml_builder import YamlPipelineBuilder
|
|
42
43
|
from hexdag.kernel.resolver import resolve, resolve_function
|
|
43
44
|
from hexdag.stdlib.adapters.memory import InMemoryMemory
|
|
44
|
-
from hexdag.stdlib.adapters.mock import MockDatabaseAdapter, MockLLM
|
|
45
|
+
from hexdag.stdlib.adapters.mock import MockDatabaseAdapter, MockHttpClient, MockLLM
|
|
45
46
|
|
|
46
47
|
|
|
47
48
|
# Deprecated top-level exports — use submodule imports or PipelineRunner instead.
|
|
@@ -51,8 +52,8 @@ _DEPRECATED_IMPORTS: dict[str, tuple[str, str]] = {
|
|
|
51
52
|
"Use PipelineRunner or import from 'hexdag.kernel.orchestration.orchestrator'.",
|
|
52
53
|
),
|
|
53
54
|
"YamlPipelineBuilder": (
|
|
54
|
-
"hexdag.
|
|
55
|
-
"Use PipelineRunner or import from 'hexdag.
|
|
55
|
+
"hexdag.compiler.yaml_builder",
|
|
56
|
+
"Use PipelineRunner or import from 'hexdag.compiler.yaml_builder'.",
|
|
56
57
|
),
|
|
57
58
|
"DirectedGraph": (
|
|
58
59
|
"hexdag.kernel.domain",
|
|
@@ -104,6 +105,14 @@ def __getattr__(name: str) -> Any:
|
|
|
104
105
|
from hexdag.stdlib.adapters.mock import MockDatabaseAdapter as _MockDatabaseAdapter
|
|
105
106
|
|
|
106
107
|
return _MockDatabaseAdapter
|
|
108
|
+
if name == "MockHttpClient":
|
|
109
|
+
from hexdag.stdlib.adapters.mock import MockHttpClient as _MockHttpClient
|
|
110
|
+
|
|
111
|
+
return _MockHttpClient
|
|
112
|
+
if name == "HttpClientDriver":
|
|
113
|
+
from hexdag.drivers.http_client import HttpClientDriver as _HttpClientDriver
|
|
114
|
+
|
|
115
|
+
return _HttpClientDriver
|
|
107
116
|
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
108
117
|
|
|
109
118
|
|
|
@@ -125,10 +134,13 @@ __all__ = [
|
|
|
125
134
|
"ToolRouter",
|
|
126
135
|
"Database",
|
|
127
136
|
"DatabasePort",
|
|
137
|
+
# Drivers
|
|
138
|
+
"HttpClientDriver",
|
|
128
139
|
# Testing and Development Adapters
|
|
129
140
|
"InMemoryMemory",
|
|
130
141
|
"MockLLM",
|
|
131
142
|
"MockDatabaseAdapter",
|
|
143
|
+
"MockHttpClient",
|
|
132
144
|
# Deprecated (still importable with warning)
|
|
133
145
|
"Orchestrator",
|
|
134
146
|
"DirectedGraph",
|
|
@@ -14,7 +14,15 @@ from __future__ import annotations
|
|
|
14
14
|
import logging
|
|
15
15
|
from typing import Any
|
|
16
16
|
|
|
17
|
-
from hexdag.
|
|
17
|
+
from hexdag.compiler.tag_discovery import discover_tags, get_tag_schema
|
|
18
|
+
from hexdag.kernel.discovery import (
|
|
19
|
+
discover_adapters_in_package,
|
|
20
|
+
discover_macros_in_module,
|
|
21
|
+
discover_plugins,
|
|
22
|
+
discover_tools_in_module,
|
|
23
|
+
discover_user_modules,
|
|
24
|
+
discover_user_plugins,
|
|
25
|
+
)
|
|
18
26
|
from hexdag.kernel.ports.detection import detect_port_type as detect_port_type
|
|
19
27
|
from hexdag.kernel.resolver import get_builtin_aliases, resolve
|
|
20
28
|
from hexdag.kernel.schema import SchemaGenerator
|
|
@@ -67,7 +75,6 @@ def list_nodes(include_deprecated: bool = False) -> list[dict[str, Any]]:
|
|
|
67
75
|
>>> any(n["kind"] == "llm_node" for n in nodes)
|
|
68
76
|
True
|
|
69
77
|
"""
|
|
70
|
-
from hexdag.kernel.discovery import discover_user_plugins
|
|
71
78
|
|
|
72
79
|
aliases = get_builtin_aliases()
|
|
73
80
|
seen_classes: set[str] = set()
|
|
@@ -198,13 +205,6 @@ def list_adapters(port_type: str | None = None) -> list[dict[str, Any]]:
|
|
|
198
205
|
>>> all(a["port_type"] == "llm" for a in adapters)
|
|
199
206
|
True
|
|
200
207
|
"""
|
|
201
|
-
from hexdag.kernel.discovery import (
|
|
202
|
-
discover_adapters_in_package,
|
|
203
|
-
discover_plugins,
|
|
204
|
-
discover_user_modules,
|
|
205
|
-
discover_user_plugins,
|
|
206
|
-
)
|
|
207
|
-
|
|
208
208
|
adapters: list[dict[str, Any]] = []
|
|
209
209
|
|
|
210
210
|
# 1. Discover builtin adapters dynamically
|
|
@@ -279,8 +279,6 @@ def _discover_entities(
|
|
|
279
279
|
Discovers from builtins, plugins, and optionally user modules.
|
|
280
280
|
Deduplicates by ``module_path`` and sorts by *sort_key*.
|
|
281
281
|
"""
|
|
282
|
-
from hexdag.kernel.discovery import discover_plugins, discover_user_modules
|
|
283
|
-
|
|
284
282
|
entities: list[dict[str, Any]] = []
|
|
285
283
|
seen: set[str] = set()
|
|
286
284
|
|
|
@@ -333,8 +331,6 @@ def list_tools() -> list[dict[str, Any]]:
|
|
|
333
331
|
>>> any(t["name"] == "tool_end" for t in tools)
|
|
334
332
|
True
|
|
335
333
|
"""
|
|
336
|
-
from hexdag.kernel.discovery import discover_tools_in_module
|
|
337
|
-
|
|
338
334
|
return _discover_entities(
|
|
339
335
|
discover_tools_in_module,
|
|
340
336
|
builtin_modules=["hexdag.kernel.domain.agent_tools"],
|
|
@@ -366,8 +362,6 @@ def list_macros() -> list[dict[str, Any]]:
|
|
|
366
362
|
>>> any(m["name"] == "ReasoningAgentMacro" for m in macros)
|
|
367
363
|
True
|
|
368
364
|
"""
|
|
369
|
-
from hexdag.kernel.discovery import discover_macros_in_module
|
|
370
|
-
|
|
371
365
|
return _discover_entities(
|
|
372
366
|
discover_macros_in_module,
|
|
373
367
|
builtin_modules=["hexdag.stdlib.macros"],
|
|
@@ -185,7 +185,7 @@ def dry_run(yaml_content: str, inputs: dict[str, Any] | None = None) -> dict[str
|
|
|
185
185
|
2
|
|
186
186
|
"""
|
|
187
187
|
try:
|
|
188
|
-
from hexdag.
|
|
188
|
+
from hexdag.compiler import YamlPipelineBuilder
|
|
189
189
|
|
|
190
190
|
builder = YamlPipelineBuilder()
|
|
191
191
|
graph, config = builder.build_from_yaml_string(yaml_content)
|
|
@@ -245,7 +245,7 @@ def create_ports_from_config(port_config: dict[str, Any]) -> dict[str, Any]:
|
|
|
245
245
|
>>> "llm" in ports
|
|
246
246
|
True
|
|
247
247
|
"""
|
|
248
|
-
from hexdag.
|
|
248
|
+
from hexdag.compiler.component_instantiator import ComponentInstantiator
|
|
249
249
|
|
|
250
250
|
instantiator = ComponentInstantiator()
|
|
251
251
|
try:
|
|
@@ -292,9 +292,9 @@ async def _execute_with_node_ports(
|
|
|
292
292
|
node_results: list[dict[str, Any]] = []
|
|
293
293
|
|
|
294
294
|
try:
|
|
295
|
+
from hexdag.compiler import YamlPipelineBuilder
|
|
295
296
|
from hexdag.kernel.orchestration.models import PortConfig, PortsConfiguration
|
|
296
297
|
from hexdag.kernel.orchestration.orchestrator import Orchestrator
|
|
297
|
-
from hexdag.kernel.pipeline_builder import YamlPipelineBuilder
|
|
298
298
|
|
|
299
299
|
builder = YamlPipelineBuilder()
|
|
300
300
|
graph, config = builder.build_from_yaml_string(yaml_content)
|
|
@@ -408,6 +408,7 @@ async def execute_streaming(
|
|
|
408
408
|
start_time = time.perf_counter()
|
|
409
409
|
|
|
410
410
|
try:
|
|
411
|
+
from hexdag.compiler import YamlPipelineBuilder
|
|
411
412
|
from hexdag.drivers.observer_manager import LocalObserverManager
|
|
412
413
|
from hexdag.kernel.orchestration.events import (
|
|
413
414
|
NodeCompleted,
|
|
@@ -419,7 +420,6 @@ async def execute_streaming(
|
|
|
419
420
|
)
|
|
420
421
|
from hexdag.kernel.orchestration.models import PortConfig, PortsConfiguration
|
|
421
422
|
from hexdag.kernel.orchestration.orchestrator import Orchestrator
|
|
422
|
-
from hexdag.kernel.pipeline_builder import YamlPipelineBuilder
|
|
423
423
|
|
|
424
424
|
builder = YamlPipelineBuilder()
|
|
425
425
|
graph, config = builder.build_from_yaml_string(yaml_content)
|
|
@@ -352,7 +352,7 @@ def _generate_main_py(project_name: str, pipeline: dict[str, Any]) -> str:
|
|
|
352
352
|
"",
|
|
353
353
|
"from dotenv import load_dotenv",
|
|
354
354
|
"",
|
|
355
|
-
"from hexdag.
|
|
355
|
+
"from hexdag.compiler import YamlPipelineBuilder",
|
|
356
356
|
"from hexdag.kernel.orchestration.orchestrator import Orchestrator",
|
|
357
357
|
]
|
|
358
358
|
|
|
@@ -10,8 +10,8 @@ from typing import Any
|
|
|
10
10
|
|
|
11
11
|
import yaml
|
|
12
12
|
|
|
13
|
-
from hexdag.
|
|
14
|
-
from hexdag.
|
|
13
|
+
from hexdag.compiler import YamlPipelineBuilder
|
|
14
|
+
from hexdag.compiler.yaml_validator import YamlValidator
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
def validate(yaml_content: str, lenient: bool = False) -> dict[str, Any]:
|
|
@@ -70,8 +70,8 @@ def _validate_full(yaml_content: str) -> dict[str, Any]:
|
|
|
70
70
|
return {
|
|
71
71
|
"valid": True,
|
|
72
72
|
"message": "Pipeline is valid",
|
|
73
|
-
"node_count": len(graph
|
|
74
|
-
"nodes": [node.name for node in graph.
|
|
73
|
+
"node_count": len(graph),
|
|
74
|
+
"nodes": [node.name for node in graph.values()],
|
|
75
75
|
"ports": list(config.ports.keys()) if config.ports else [],
|
|
76
76
|
}
|
|
77
77
|
except Exception as e:
|
|
@@ -104,7 +104,7 @@ def _validate_lenient(yaml_content: str) -> dict[str, Any]:
|
|
|
104
104
|
validator = YamlValidator()
|
|
105
105
|
report = validator.validate(parsed)
|
|
106
106
|
|
|
107
|
-
if not report
|
|
107
|
+
if not report:
|
|
108
108
|
return {
|
|
109
109
|
"valid": False,
|
|
110
110
|
"error": report.errors[0] if report.errors else "Validation failed",
|