kailash 0.9.18__tar.gz → 0.9.20__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.
- {kailash-0.9.18/src/kailash.egg-info → kailash-0.9.20}/PKG-INFO +20 -19
- {kailash-0.9.18 → kailash-0.9.20}/README.md +16 -16
- {kailash-0.9.18 → kailash-0.9.20}/pyproject.toml +4 -3
- {kailash-0.9.18 → kailash-0.9.20}/setup.py +1 -1
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/__init__.py +1 -1
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/subscriptions.py +23 -23
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/__init__.py +1 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/ai_providers.py +237 -25
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/llm_agent.py +73 -15
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/code/python.py +178 -15
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/async_sql.py +93 -26
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/local.py +4 -1
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/builder.py +1 -1
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/templates.py +2 -1
- {kailash-0.9.18 → kailash-0.9.20/src/kailash.egg-info}/PKG-INFO +20 -19
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash.egg-info/SOURCES.txt +0 -1
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash.egg-info/requires.txt +3 -2
- kailash-0.9.18/src/kailash/nodes/ai/a2a_backup.py +0 -1807
- {kailash-0.9.18 → kailash-0.9.20}/LICENSE +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/MANIFEST.in +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/NOTICE +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/setup.cfg +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/__main__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/access_control/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/access_control/managers.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/access_control/rule_evaluators.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/access_control.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/access_control_abac.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/adapters/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/adapters/mcp_platform_adapter.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/analysis/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/analysis/conditional_branch_analyzer.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/api/auth.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/api/custom_nodes.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/api/custom_nodes_secure.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/api/gateway.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/api/mcp_integration.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/api/studio.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/api/workflow_api.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/channels/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/channels/api_channel.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/channels/base.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/channels/cli_channel.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/channels/event_router.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/channels/mcp_channel.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/channels/session.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/cli/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/cli/commands.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/cli/validate_imports.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/cli/validation_audit.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/client/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/client/enhanced_client.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/config/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/config/database_config.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/actors/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/actors/adaptive_pool_controller.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/actors/connection_actor.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/actors/supervisor.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/ml/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/ml/query_patterns.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/monitoring/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/monitoring/connection_metrics.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/optimization/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/resilience/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/resilience/bulkhead.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/resilience/circuit_breaker.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/resilience/health_monitor.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/database/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/database/execution_pipeline.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/compliance.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/consistency.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/coordination/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/coordination/global_ordering.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/coordination/leader_election.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/coordination/partition_detector.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/coordination/raft.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/discovery.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/location.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/migration/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/migration/edge_migration_service.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/migration/edge_migrator.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/monitoring/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/monitoring/edge_monitor.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/prediction/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/prediction/predictive_warmer.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/resource/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/resource/cloud_integration.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/resource/cost_optimizer.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/resource/docker_integration.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/resource/kubernetes_integration.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/resource/platform_integration.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/resource/predictive_scaler.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/resource/resource_analyzer.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/resource/resource_pools.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/gateway/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/gateway/api.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/gateway/enhanced_gateway.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/gateway/resource_resolver.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/gateway/security.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/integrations/dataflow_edge.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/manifest.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/advanced_features.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/ai_registry_server.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/auth.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/client.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/client_new.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/discovery.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/errors.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/oauth.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/protocol.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/registry_integration.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/server.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/servers/ai_registry.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/transports.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/utils/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/utils/cache.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/utils/config.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/utils/formatters.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/utils/metrics.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/auth/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/auth/access_control.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/auth/auth_manager.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/auth/exceptions.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/auth/jwt_auth.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/auth/models.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/auth/utils.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/communication/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/communication/ai_chat.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/communication/api_gateway.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/communication/events.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/communication/realtime.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/core/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/core/agent_ui.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/core/schema.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/core/workflows.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/database/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/database/base.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/database/base_models.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/database/enums.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/database/migrations.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/database/models.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/database/repositories.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/database/session_manager.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/gateway/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/gateway/checkpoint_manager.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/gateway/deduplicator.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/gateway/durable_gateway.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/gateway/durable_request.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/gateway/event_store.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/gateway/storage_backends.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/mcp/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/mcp/client_integration.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/mcp/enhanced_server.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/cli.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/compatibility_checker.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/configuration_validator.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/documentation_generator.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/examples/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/examples/complete_migration_example.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/migration_assistant.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/performance_comparator.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/regression_detector.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/tests/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/tests/test_compatibility_checker.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/tests/test_integration.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/tests/test_migration_assistant.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/tests/test_performance_comparator.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/monitoring/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/monitoring/alerts.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/monitoring/asyncsql_metrics.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/monitoring/metrics.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/__init___original.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/admin/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/admin/audit_log.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/admin/permission_check.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/admin/role_management.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/admin/schema.sql +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/admin/schema_manager.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/admin/security_event.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/admin/tenant_isolation.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/admin/transaction_utils.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/admin/user_management.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/a2a.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/agents.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/embedding_generator.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/hybrid_search.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/intelligent_agent_orchestrator.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/iterative_llm_agent.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/models.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/self_organizing.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/semantic_memory.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/streaming_analytics.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/vision_utils.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/alerts/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/alerts/base.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/alerts/discord.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/api/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/api/auth.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/api/graphql.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/api/http.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/api/monitoring.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/api/rate_limiting.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/api/rest.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/api/security.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/auth/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/auth/directory_integration.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/auth/enterprise_auth_provider.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/auth/mfa.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/auth/risk_assessment.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/auth/session_management.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/auth/sso.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/base.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/base_async.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/base_cycle_aware.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/base_with_acl.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/cache/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/cache/cache.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/cache/cache_invalidation.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/cache/redis_pool_manager.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/code/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/code/async_python.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/compliance/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/compliance/data_retention.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/compliance/gdpr.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/async_connection.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/async_vector.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/bulk_operations.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/directory.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/event_generation.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/file_discovery.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/optimistic_locking.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/query_builder.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/query_cache.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/query_pipeline.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/query_router.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/readers.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/redis.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/retrieval.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/sharepoint_graph.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/sources.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/sql.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/streaming.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/vector_db.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/workflow_connection_pool.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/writers.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/base.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/cloud_node.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/coordination.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/docker_node.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/edge_data.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/edge_migration_node.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/edge_monitoring_node.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/edge_state.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/edge_warming_node.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/kubernetes_node.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/platform_node.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/resource_analyzer_node.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/resource_optimizer_node.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/resource_scaler_node.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/enterprise/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/enterprise/audit_logger.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/enterprise/batch_processor.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/enterprise/data_lineage.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/enterprise/mcp_executor.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/enterprise/service_discovery.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/enterprise/tenant_assignment.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/governance.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/logic/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/logic/async_operations.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/logic/convergence.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/logic/intelligent_merge.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/logic/loop.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/logic/operations.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/logic/workflow.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/mixins/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/mixins/event_emitter.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/mixins/mcp.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/mixins/security.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/mixins.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/monitoring/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/monitoring/connection_dashboard.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/monitoring/deadlock_detector.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/monitoring/health_check.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/monitoring/log_processor.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/monitoring/metrics_collector.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/monitoring/performance_anomaly.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/monitoring/performance_benchmark.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/monitoring/race_condition_detector.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/monitoring/transaction_metrics.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/monitoring/transaction_monitor.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ports.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/advanced.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/agentic.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/conversational.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/evaluation.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/federated.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/graph.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/multimodal.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/optimized.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/privacy.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/query_processing.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/realtime.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/registry.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/router.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/similarity.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/strategies.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/workflows.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/security/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/security/abac_evaluator.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/security/audit_log.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/security/behavior_analysis.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/security/credential_manager.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/security/rotating_credentials.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/security/security_event.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/security/threat_detection.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/system/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/system/command_parser.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/testing/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/testing/credential_testing.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/transaction/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/transaction/distributed_transaction_manager.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/transaction/saga_coordinator.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/transaction/saga_state_storage.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/transaction/saga_step.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/transaction/transaction_context.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/transaction/two_phase_commit.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/transform/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/transform/chunkers.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/transform/formatters.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/transform/processors.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/validation/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/validation/test_executor.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/validation/validation_nodes.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/validation.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/planning/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/planning/dynamic_execution_planner.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/resources/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/resources/factory.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/resources/health.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/resources/reference.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/resources/registry.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/access_controlled.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/async_local.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/compatibility_reporter.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/docker.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/hierarchical_switch_executor.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/monitoring/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/monitoring/runtime_monitor.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/parallel.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/parallel_cyclic.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/parameter_injection.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/parameter_injector.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/performance_monitor.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/resource_manager.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/runner.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/secret_provider.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/testing.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/validation/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/validation/connection_context.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/validation/enhanced_error_formatter.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/validation/error_categorizer.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/validation/import_validator.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/validation/metrics.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/validation/performance.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/validation/suggestion_engine.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/sdk_exceptions.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/security.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/servers/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/servers/durable_workflow_server.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/servers/enterprise_workflow_server.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/servers/gateway.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/servers/workflow_server.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/testing/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/testing/async_test_case.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/testing/async_utils.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/testing/fixtures.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/testing/mock_registry.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/tracking/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/tracking/manager.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/tracking/metrics_collector.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/tracking/models.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/tracking/storage/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/tracking/storage/base.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/tracking/storage/database.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/tracking/storage/filesystem.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/circular_dependency_detector.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/data_paths.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/data_validation.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/export.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/migrations/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/migrations/generator.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/migrations/models.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/migrations/runner.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/resource_manager.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/secure_logging.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/templates.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/visualization/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/visualization/api.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/visualization/dashboard.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/visualization/performance.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/visualization/reports.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/__init__.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/async_builder.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/async_patterns.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/contracts.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/convergence.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/cycle_analyzer.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/cycle_builder.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/cycle_config.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/cycle_debugger.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/cycle_exceptions.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/cycle_profiler.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/cycle_state.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/cyclic_runner.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/edge_infrastructure.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/graph.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/input_handling.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/mermaid_visualizer.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/migration.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/mock_registry.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/resilience.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/runner.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/safety.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/state.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/type_inference.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/validation.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/visualization.py +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash.egg-info/dependency_links.txt +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash.egg-info/entry_points.txt +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash.egg-info/not-zip-safe +0 -0
- {kailash-0.9.18 → kailash-0.9.20}/src/kailash.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: kailash
|
3
|
-
Version: 0.9.
|
3
|
+
Version: 0.9.20
|
4
4
|
Summary: Python SDK for the Kailash container-node architecture
|
5
5
|
Home-page: https://github.com/integrum/kailash-python-sdk
|
6
6
|
Author: Integrum
|
@@ -53,7 +53,6 @@ Requires-Dist: pre-commit>=4.2.0
|
|
53
53
|
Requires-Dist: twine>=6.1.0
|
54
54
|
Requires-Dist: ollama>=0.5.1
|
55
55
|
Requires-Dist: sqlalchemy>=2.0.0
|
56
|
-
Requires-Dist: psycopg2-binary>=2.9.0
|
57
56
|
Requires-Dist: pymysql>=1.1.0
|
58
57
|
Requires-Dist: aiosqlite>=0.19.0
|
59
58
|
Requires-Dist: websockets>=12.0
|
@@ -70,7 +69,7 @@ Requires-Dist: qrcode>=8.2
|
|
70
69
|
Requires-Dist: aiofiles>=24.1.0
|
71
70
|
Requires-Dist: bcrypt>=4.3.0
|
72
71
|
Requires-Dist: plotly>=6.2.0
|
73
|
-
Requires-Dist: redis
|
72
|
+
Requires-Dist: redis>=6.2.0
|
74
73
|
Requires-Dist: faker>=37.4.0
|
75
74
|
Requires-Dist: structlog>=25.4.0
|
76
75
|
Requires-Dist: authlib>=1.6.0
|
@@ -86,6 +85,8 @@ Requires-Dist: seaborn>=0.13.2
|
|
86
85
|
Requires-Dist: sqlparse>=0.5.3
|
87
86
|
Requires-Dist: jsonschema>=4.24.0
|
88
87
|
Requires-Dist: openai>=1.97.1
|
88
|
+
Requires-Dist: pymongo>=4.15.2
|
89
|
+
Requires-Dist: psycopg>=3.2.10
|
89
90
|
Provides-Extra: dev
|
90
91
|
Requires-Dist: pytest>=7.0; extra == "dev"
|
91
92
|
Requires-Dist: pytest-cov>=3.0; extra == "dev"
|
@@ -121,28 +122,28 @@ Dynamic: requires-python
|
|
121
122
|
|
122
123
|
---
|
123
124
|
|
124
|
-
## 🔥 Latest Release: v0.9.
|
125
|
+
## 🔥 Latest Release: v0.9.20 (October 6, 2025)
|
125
126
|
|
126
|
-
**
|
127
|
+
**Provider Registry Fix & Multi-Modal Support**
|
127
128
|
|
128
|
-
###
|
129
|
-
- **
|
130
|
-
- **
|
131
|
-
- **
|
132
|
-
- **Patent Grant**: Includes Apache 2.0 patent protection clauses
|
129
|
+
### 🐛 Critical Bug Fixes
|
130
|
+
- **Mock Provider Bypass**: Removed hardcoded `if provider == "mock"` logic from LLMAgentNode
|
131
|
+
- **Tool Execution Flow**: Unified provider response generation for all providers
|
132
|
+
- **Provider Registry**: All providers now use consistent registry path
|
133
133
|
|
134
|
-
###
|
135
|
-
- **
|
136
|
-
- **
|
137
|
-
- **
|
138
|
-
- **
|
134
|
+
### ✨ Enhancements
|
135
|
+
- **Custom Mock Providers**: Enables signature-aware mock providers (e.g., KaizenMockProvider)
|
136
|
+
- **Multi-Modal Foundation**: Foundation for vision/audio processing in Kaizen AI framework
|
137
|
+
- **Tool Call Generation**: MockProvider generates mock tool_calls for action-oriented messages
|
138
|
+
- **Enhanced Testing**: 510+ tests passing with custom mock providers
|
139
139
|
|
140
140
|
### 📦 Package Updates
|
141
|
-
- **kailash**: v0.9.
|
142
|
-
- **kailash-
|
143
|
-
- **kailash-
|
141
|
+
- **kailash**: v0.9.20 - Provider registry fix & multi-modal support
|
142
|
+
- **kailash-kaizen**: v0.1.1 - AI agent framework (NEW!)
|
143
|
+
- **kailash-nexus**: v1.0.6 - Multi-channel platform
|
144
|
+
- **kailash-dataflow**: v0.5.0 - Database framework
|
144
145
|
|
145
|
-
[Full Changelog](sdk-users/6-reference/changelogs/releases/v0.9.
|
146
|
+
[Full Changelog](sdk-users/6-reference/changelogs/releases/v0.9.20-provider-registry-fix.md) | [Core SDK 0.9.20](https://pypi.org/project/kailash/0.9.20/) | [Kaizen 0.1.1](https://pypi.org/project/kailash-kaizen/0.1.1/) | [Nexus 1.0.6](https://pypi.org/project/kailash-nexus/1.0.6/) | [DataFlow 0.5.0](https://pypi.org/project/kailash-dataflow/0.5.0/)
|
146
147
|
|
147
148
|
## 🎯 What Makes Kailash Different
|
148
149
|
|
@@ -22,28 +22,28 @@
|
|
22
22
|
|
23
23
|
---
|
24
24
|
|
25
|
-
## 🔥 Latest Release: v0.9.
|
25
|
+
## 🔥 Latest Release: v0.9.20 (October 6, 2025)
|
26
26
|
|
27
|
-
**
|
27
|
+
**Provider Registry Fix & Multi-Modal Support**
|
28
28
|
|
29
|
-
###
|
30
|
-
- **
|
31
|
-
- **
|
32
|
-
- **
|
33
|
-
- **Patent Grant**: Includes Apache 2.0 patent protection clauses
|
29
|
+
### 🐛 Critical Bug Fixes
|
30
|
+
- **Mock Provider Bypass**: Removed hardcoded `if provider == "mock"` logic from LLMAgentNode
|
31
|
+
- **Tool Execution Flow**: Unified provider response generation for all providers
|
32
|
+
- **Provider Registry**: All providers now use consistent registry path
|
34
33
|
|
35
|
-
###
|
36
|
-
- **
|
37
|
-
- **
|
38
|
-
- **
|
39
|
-
- **
|
34
|
+
### ✨ Enhancements
|
35
|
+
- **Custom Mock Providers**: Enables signature-aware mock providers (e.g., KaizenMockProvider)
|
36
|
+
- **Multi-Modal Foundation**: Foundation for vision/audio processing in Kaizen AI framework
|
37
|
+
- **Tool Call Generation**: MockProvider generates mock tool_calls for action-oriented messages
|
38
|
+
- **Enhanced Testing**: 510+ tests passing with custom mock providers
|
40
39
|
|
41
40
|
### 📦 Package Updates
|
42
|
-
- **kailash**: v0.9.
|
43
|
-
- **kailash-
|
44
|
-
- **kailash-
|
41
|
+
- **kailash**: v0.9.20 - Provider registry fix & multi-modal support
|
42
|
+
- **kailash-kaizen**: v0.1.1 - AI agent framework (NEW!)
|
43
|
+
- **kailash-nexus**: v1.0.6 - Multi-channel platform
|
44
|
+
- **kailash-dataflow**: v0.5.0 - Database framework
|
45
45
|
|
46
|
-
[Full Changelog](sdk-users/6-reference/changelogs/releases/v0.9.
|
46
|
+
[Full Changelog](sdk-users/6-reference/changelogs/releases/v0.9.20-provider-registry-fix.md) | [Core SDK 0.9.20](https://pypi.org/project/kailash/0.9.20/) | [Kaizen 0.1.1](https://pypi.org/project/kailash-kaizen/0.1.1/) | [Nexus 1.0.6](https://pypi.org/project/kailash-nexus/1.0.6/) | [DataFlow 0.5.0](https://pypi.org/project/kailash-dataflow/0.5.0/)
|
47
47
|
|
48
48
|
## 🎯 What Makes Kailash Different
|
49
49
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "kailash"
|
7
|
-
version = "0.9.
|
7
|
+
version = "0.9.20"
|
8
8
|
description = "Python SDK for the Kailash container-node architecture"
|
9
9
|
authors = [
|
10
10
|
{name = "Integrum", email = "info@integrum.com"}
|
@@ -55,7 +55,6 @@ dependencies = [
|
|
55
55
|
"twine>=6.1.0",
|
56
56
|
"ollama>=0.5.1",
|
57
57
|
"sqlalchemy>=2.0.0",
|
58
|
-
"psycopg2-binary>=2.9.0",
|
59
58
|
"pymysql>=1.1.0",
|
60
59
|
"aiosqlite>=0.19.0",
|
61
60
|
"websockets>=12.0",
|
@@ -72,7 +71,7 @@ dependencies = [
|
|
72
71
|
"aiofiles>=24.1.0",
|
73
72
|
"bcrypt>=4.3.0",
|
74
73
|
"plotly>=6.2.0",
|
75
|
-
"redis
|
74
|
+
"redis>=6.2.0",
|
76
75
|
"faker>=37.4.0",
|
77
76
|
"structlog>=25.4.0",
|
78
77
|
"authlib>=1.6.0",
|
@@ -88,6 +87,8 @@ dependencies = [
|
|
88
87
|
"sqlparse>=0.5.3",
|
89
88
|
"jsonschema>=4.24.0",
|
90
89
|
"openai>=1.97.1",
|
90
|
+
"pymongo>=4.15.2",
|
91
|
+
"psycopg>=3.2.10",
|
91
92
|
]
|
92
93
|
|
93
94
|
[project.optional-dependencies]
|
@@ -13,7 +13,7 @@ with open(os.path.join(this_directory, "README.md"), encoding="utf-8") as f:
|
|
13
13
|
# Package configuration
|
14
14
|
setup(
|
15
15
|
name="kailash",
|
16
|
-
version="0.9.
|
16
|
+
version="0.9.19",
|
17
17
|
author="Integrum",
|
18
18
|
author_email="info@integrum.com",
|
19
19
|
description="Python SDK for the Kailash container-node architecture",
|
@@ -9,7 +9,7 @@ import uuid
|
|
9
9
|
import weakref
|
10
10
|
from abc import ABC, abstractmethod
|
11
11
|
from dataclasses import dataclass, field
|
12
|
-
from datetime import datetime, timedelta
|
12
|
+
from datetime import UTC, datetime, timedelta
|
13
13
|
from typing import Any, Callable, Dict, List, Optional, Protocol, Set, Union
|
14
14
|
|
15
15
|
# Optional Redis support
|
@@ -103,7 +103,7 @@ class DataEnrichmentTransformer(ResourceTransformer):
|
|
103
103
|
|
104
104
|
# Add transformation metadata
|
105
105
|
enriched_data["__transformation"] = {
|
106
|
-
"timestamp": datetime.
|
106
|
+
"timestamp": datetime.now(UTC).isoformat(),
|
107
107
|
"enriched_fields": list(self.enrichment_functions.keys()),
|
108
108
|
"transformer": "DataEnrichmentTransformer",
|
109
109
|
}
|
@@ -133,7 +133,7 @@ class FormatConverterTransformer(ResourceTransformer):
|
|
133
133
|
|
134
134
|
# Add transformation metadata
|
135
135
|
converted_data["__transformation"] = {
|
136
|
-
"timestamp": datetime.
|
136
|
+
"timestamp": datetime.now(UTC).isoformat(),
|
137
137
|
"conversions_applied": list(self.conversions.keys()),
|
138
138
|
"transformer": "FormatConverterTransformer",
|
139
139
|
}
|
@@ -213,7 +213,7 @@ class AggregationTransformer(ResourceTransformer):
|
|
213
213
|
|
214
214
|
# Add transformation metadata
|
215
215
|
aggregated_data["__transformation"] = {
|
216
|
-
"timestamp": datetime.
|
216
|
+
"timestamp": datetime.now(UTC).isoformat(),
|
217
217
|
"sources": list(self.data_sources.keys()),
|
218
218
|
"transformer": "AggregationTransformer",
|
219
219
|
}
|
@@ -285,7 +285,7 @@ class TransformationPipeline:
|
|
285
285
|
"uri_pattern": subscription.uri_pattern,
|
286
286
|
"fields": subscription.fields,
|
287
287
|
"fragments": subscription.fragments,
|
288
|
-
"timestamp": datetime.
|
288
|
+
"timestamp": datetime.now(UTC).isoformat(),
|
289
289
|
}
|
290
290
|
|
291
291
|
transformed_data = resource_data
|
@@ -332,7 +332,7 @@ class TransformationPipeline:
|
|
332
332
|
transformation_error = {
|
333
333
|
"transformer": transformer.__class__.__name__,
|
334
334
|
"error": str(e),
|
335
|
-
"timestamp": datetime.
|
335
|
+
"timestamp": datetime.now(UTC).isoformat(),
|
336
336
|
}
|
337
337
|
pipeline_metadata["errors"].append(transformation_error)
|
338
338
|
|
@@ -477,7 +477,7 @@ class CursorManager:
|
|
477
477
|
def generate_cursor(self) -> str:
|
478
478
|
"""Generate a unique cursor."""
|
479
479
|
cursor_id = str(uuid.uuid4())
|
480
|
-
timestamp = datetime.
|
480
|
+
timestamp = datetime.now(UTC)
|
481
481
|
|
482
482
|
cursor_data = f"{cursor_id}:{timestamp.isoformat()}"
|
483
483
|
cursor = hashlib.sha256(cursor_data.encode()).hexdigest()[:16]
|
@@ -501,7 +501,7 @@ class CursorManager:
|
|
501
501
|
return False
|
502
502
|
|
503
503
|
cursor_data = self._cursors[cursor]
|
504
|
-
age = datetime.
|
504
|
+
age = datetime.now(UTC) - cursor_data["created_at"]
|
505
505
|
|
506
506
|
if age > timedelta(seconds=self.ttl_seconds):
|
507
507
|
# Clean up expired cursor
|
@@ -520,7 +520,7 @@ class CursorManager:
|
|
520
520
|
async def cleanup_expired(self):
|
521
521
|
"""Remove expired cursors."""
|
522
522
|
async with self._lock:
|
523
|
-
now = datetime.
|
523
|
+
now = datetime.now(UTC)
|
524
524
|
expired = []
|
525
525
|
|
526
526
|
for cursor, data in self._cursors.items():
|
@@ -551,7 +551,7 @@ class ResourceMonitor:
|
|
551
551
|
self._resource_states[uri] = {
|
552
552
|
"hash": self._compute_hash(content),
|
553
553
|
"content": content,
|
554
|
-
"last_checked": datetime.
|
554
|
+
"last_checked": datetime.now(UTC),
|
555
555
|
}
|
556
556
|
|
557
557
|
def is_monitored(self, uri: str) -> bool:
|
@@ -570,12 +570,12 @@ class ResourceMonitor:
|
|
570
570
|
self._resource_states[uri] = {
|
571
571
|
"hash": new_hash,
|
572
572
|
"content": content,
|
573
|
-
"last_checked": datetime.
|
573
|
+
"last_checked": datetime.now(UTC),
|
574
574
|
}
|
575
575
|
return ResourceChange(
|
576
576
|
type=ResourceChangeType.CREATED,
|
577
577
|
uri=uri,
|
578
|
-
timestamp=datetime.
|
578
|
+
timestamp=datetime.now(UTC),
|
579
579
|
)
|
580
580
|
|
581
581
|
old_hash = self._resource_states[uri]["hash"]
|
@@ -585,16 +585,16 @@ class ResourceMonitor:
|
|
585
585
|
self._resource_states[uri] = {
|
586
586
|
"hash": new_hash,
|
587
587
|
"content": content,
|
588
|
-
"last_checked": datetime.
|
588
|
+
"last_checked": datetime.now(UTC),
|
589
589
|
}
|
590
590
|
return ResourceChange(
|
591
591
|
type=ResourceChangeType.UPDATED,
|
592
592
|
uri=uri,
|
593
|
-
timestamp=datetime.
|
593
|
+
timestamp=datetime.now(UTC),
|
594
594
|
)
|
595
595
|
|
596
596
|
# No change
|
597
|
-
self._resource_states[uri]["last_checked"] = datetime.
|
597
|
+
self._resource_states[uri]["last_checked"] = datetime.now(UTC)
|
598
598
|
return None
|
599
599
|
|
600
600
|
async def check_for_deletion(self, uri: str) -> Optional[ResourceChange]:
|
@@ -605,7 +605,7 @@ class ResourceMonitor:
|
|
605
605
|
return ResourceChange(
|
606
606
|
type=ResourceChangeType.DELETED,
|
607
607
|
uri=uri,
|
608
|
-
timestamp=datetime.
|
608
|
+
timestamp=datetime.now(UTC),
|
609
609
|
)
|
610
610
|
return None
|
611
611
|
|
@@ -1075,9 +1075,9 @@ class ResourceSubscriptionManager:
|
|
1075
1075
|
This method should be overridden or configured to fetch actual resource data.
|
1076
1076
|
For now, it returns basic resource information from the monitored state.
|
1077
1077
|
"""
|
1078
|
-
async with self.
|
1079
|
-
if uri in self.
|
1080
|
-
state = self.
|
1078
|
+
async with self.resource_monitor._lock:
|
1079
|
+
if uri in self.resource_monitor._resource_states:
|
1080
|
+
state = self.resource_monitor._resource_states[uri]
|
1081
1081
|
return {
|
1082
1082
|
"uri": uri,
|
1083
1083
|
"content": state.get("content", {}),
|
@@ -1279,8 +1279,8 @@ class DistributedSubscriptionManager(ResourceSubscriptionManager):
|
|
1279
1279
|
instance_key = f"mcp:instances:{self.server_instance_id}"
|
1280
1280
|
instance_data = {
|
1281
1281
|
"id": self.server_instance_id,
|
1282
|
-
"registered_at": datetime.
|
1283
|
-
"last_heartbeat": datetime.
|
1282
|
+
"registered_at": datetime.now(UTC).isoformat(),
|
1283
|
+
"last_heartbeat": datetime.now(UTC).isoformat(),
|
1284
1284
|
"subscriptions": 0,
|
1285
1285
|
}
|
1286
1286
|
|
@@ -1308,7 +1308,7 @@ class DistributedSubscriptionManager(ResourceSubscriptionManager):
|
|
1308
1308
|
|
1309
1309
|
instance_key = f"mcp:instances:{self.server_instance_id}"
|
1310
1310
|
await self.redis_client.hset(
|
1311
|
-
instance_key, "last_heartbeat", datetime.
|
1311
|
+
instance_key, "last_heartbeat", datetime.now(UTC).isoformat()
|
1312
1312
|
)
|
1313
1313
|
await self.redis_client.expire(instance_key, self.instance_timeout)
|
1314
1314
|
|
@@ -1348,7 +1348,7 @@ class DistributedSubscriptionManager(ResourceSubscriptionManager):
|
|
1348
1348
|
if last_heartbeat:
|
1349
1349
|
try:
|
1350
1350
|
heartbeat_time = datetime.fromisoformat(last_heartbeat)
|
1351
|
-
age = (datetime.
|
1351
|
+
age = (datetime.now(UTC) - heartbeat_time).total_seconds()
|
1352
1352
|
|
1353
1353
|
if age < self.instance_timeout:
|
1354
1354
|
current_instances.add(instance_id)
|