kailash 0.4.0__tar.gz → 0.4.2__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.4.0/src/kailash.egg-info → kailash-0.4.2}/PKG-INFO +4 -1
- {kailash-0.4.0 → kailash-0.4.2}/README.md +3 -0
- {kailash-0.4.0 → kailash-0.4.2}/pyproject.toml +1 -1
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/__init__.py +3 -4
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/__init__.py +4 -2
- kailash-0.4.2/src/kailash/middleware/auth/__init__.py +76 -0
- kailash-0.4.2/src/kailash/middleware/auth/exceptions.py +80 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/auth/jwt_auth.py +265 -123
- kailash-0.4.2/src/kailash/middleware/auth/models.py +137 -0
- kailash-0.4.2/src/kailash/middleware/auth/utils.py +257 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/communication/api_gateway.py +49 -7
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/core/agent_ui.py +108 -1
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/mcp/enhanced_server.py +2 -2
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/__init__.py +2 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/admin/__init__.py +9 -2
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/admin/audit_log.py +1 -1
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/admin/security_event.py +7 -3
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/ai/ai_providers.py +247 -40
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/ai/llm_agent.py +29 -3
- kailash-0.4.2/src/kailash/nodes/ai/vision_utils.py +148 -0
- kailash-0.4.2/src/kailash/nodes/alerts/__init__.py +26 -0
- kailash-0.4.2/src/kailash/nodes/alerts/base.py +234 -0
- kailash-0.4.2/src/kailash/nodes/alerts/discord.py +499 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/code/python.py +18 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/data/streaming.py +8 -8
- kailash-0.4.2/src/kailash/nodes/security/audit_log.py +103 -0
- kailash-0.4.2/src/kailash/nodes/security/security_event.py +133 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/security.py +1 -1
- {kailash-0.4.0 → kailash-0.4.2/src/kailash.egg-info}/PKG-INFO +4 -1
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash.egg-info/SOURCES.txt +7 -1
- kailash-0.4.0/src/kailash/middleware/auth/__init__.py +0 -33
- kailash-0.4.0/src/kailash/middleware/auth/kailash_jwt_auth.py +0 -616
- kailash-0.4.0/src/kailash/nodes/security/audit_log.py +0 -91
- kailash-0.4.0/src/kailash/nodes/security/security_event.py +0 -132
- {kailash-0.4.0 → kailash-0.4.2}/LICENSE +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/MANIFEST.in +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/setup.cfg +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/setup.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/__main__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/access_control/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/access_control/managers.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/access_control/rule_evaluators.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/access_control.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/access_control_abac.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/api/auth.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/api/custom_nodes.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/api/custom_nodes_secure.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/api/gateway.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/api/mcp_integration.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/api/studio.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/api/workflow_api.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/cli/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/cli/commands.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/config/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/config/database_config.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/database/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/database/execution_pipeline.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/manifest.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/mcp/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/mcp/ai_registry_server.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/mcp/client.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/mcp/client_new.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/mcp/server.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/mcp/server_enhanced.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/mcp/servers/ai_registry.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/mcp/utils/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/mcp/utils/cache.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/mcp/utils/config.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/mcp/utils/formatters.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/mcp/utils/metrics.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/auth/access_control.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/auth/auth_manager.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/communication/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/communication/ai_chat.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/communication/events.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/communication/realtime.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/core/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/core/schema.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/core/workflows.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/database/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/database/base.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/database/base_models.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/database/enums.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/database/migrations.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/database/models.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/database/repositories.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/database/session_manager.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/mcp/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/middleware/mcp/client_integration.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/admin/permission_check.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/admin/role_management.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/admin/user_management.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/ai/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/ai/a2a.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/ai/agents.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/ai/embedding_generator.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/ai/intelligent_agent_orchestrator.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/ai/iterative_llm_agent.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/ai/models.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/ai/self_organizing.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/api/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/api/auth.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/api/graphql.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/api/http.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/api/monitoring.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/api/rate_limiting.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/api/rest.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/api/security.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/auth/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/auth/directory_integration.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/auth/enterprise_auth_provider.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/auth/mfa.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/auth/risk_assessment.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/auth/session_management.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/auth/sso.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/base.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/base_async.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/base_cycle_aware.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/base_with_acl.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/code/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/compliance/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/compliance/data_retention.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/compliance/gdpr.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/data/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/data/async_connection.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/data/async_sql.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/data/async_vector.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/data/directory.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/data/event_generation.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/data/file_discovery.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/data/readers.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/data/retrieval.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/data/sharepoint_graph.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/data/sources.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/data/sql.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/data/vector_db.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/data/writers.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/enterprise/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/enterprise/batch_processor.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/enterprise/data_lineage.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/logic/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/logic/async_operations.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/logic/convergence.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/logic/loop.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/logic/operations.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/logic/workflow.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/mixins/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/mixins/event_emitter.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/mixins/mcp.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/mixins/security.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/mixins.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/monitoring/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/monitoring/performance_benchmark.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/rag/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/rag/advanced.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/rag/agentic.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/rag/conversational.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/rag/evaluation.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/rag/federated.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/rag/graph.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/rag/multimodal.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/rag/optimized.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/rag/privacy.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/rag/query_processing.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/rag/realtime.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/rag/registry.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/rag/router.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/rag/similarity.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/rag/strategies.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/rag/workflows.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/security/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/security/abac_evaluator.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/security/behavior_analysis.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/security/credential_manager.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/security/rotating_credentials.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/security/threat_detection.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/testing/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/testing/credential_testing.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/transform/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/transform/chunkers.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/transform/formatters.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/transform/processors.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/nodes/validation.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/runtime/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/runtime/access_controlled.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/runtime/async_local.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/runtime/docker.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/runtime/local.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/runtime/parallel.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/runtime/parallel_cyclic.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/runtime/runner.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/runtime/testing.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/sdk_exceptions.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/tracking/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/tracking/manager.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/tracking/metrics_collector.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/tracking/models.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/tracking/storage/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/tracking/storage/base.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/tracking/storage/database.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/tracking/storage/filesystem.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/utils/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/utils/export.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/utils/migrations/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/utils/migrations/generator.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/utils/migrations/models.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/utils/migrations/runner.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/utils/secure_logging.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/utils/templates.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/visualization/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/visualization/api.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/visualization/dashboard.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/visualization/performance.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/visualization/reports.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/workflow/__init__.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/workflow/builder.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/workflow/convergence.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/workflow/cycle_analyzer.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/workflow/cycle_builder.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/workflow/cycle_config.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/workflow/cycle_debugger.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/workflow/cycle_exceptions.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/workflow/cycle_profiler.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/workflow/cycle_state.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/workflow/cyclic_runner.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/workflow/graph.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/workflow/mermaid_visualizer.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/workflow/migration.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/workflow/mock_registry.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/workflow/resilience.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/workflow/runner.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/workflow/safety.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/workflow/state.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/workflow/templates.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/workflow/validation.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash/workflow/visualization.py +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash.egg-info/dependency_links.txt +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash.egg-info/entry_points.txt +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash.egg-info/not-zip-safe +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/src/kailash.egg-info/requires.txt +0 -0
- {kailash-0.4.0 → kailash-0.4.2}/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.4.
|
3
|
+
Version: 0.4.2
|
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
|
@@ -116,6 +116,7 @@ Dynamic: requires-python
|
|
116
116
|
- 📈 **High Performance**: Optimized execution engine supporting 100,000+ iteration workflows
|
117
117
|
- 📁 **Complete Finance Workflow Library (v0.3.1)**: Production-ready financial workflows with AI analysis
|
118
118
|
- 💼 **Enterprise Workflow Patterns**: Credit risk, portfolio optimization, trading signals, fraud detection
|
119
|
+
- 🔔 **Production Alert System**: Rich Discord alerts with rate limiting, retry logic, and rich embed support
|
119
120
|
- 🏭 **Session 067 Enhancements**: Business workflow templates, data lineage tracking, automatic credential rotation
|
120
121
|
- 🔄 **Zero-Downtime Operations**: Automatic credential rotation with enterprise notifications and audit trails
|
121
122
|
- 🌉 **Enterprise Middleware (v0.4.0)**: Production-ready middleware architecture with real-time agent-frontend communication, dynamic workflows, and AI chat integration
|
@@ -174,6 +175,7 @@ pip install kailash[user-management]
|
|
174
175
|
# Everything
|
175
176
|
pip install kailash[all]
|
176
177
|
```
|
178
|
+
>>>>>>> origin/main
|
177
179
|
|
178
180
|
## 🎯 Who Is This For?
|
179
181
|
|
@@ -522,6 +524,7 @@ api.run()
|
|
522
524
|
- **API**: RESTClientNode, GraphQLNode, AuthNode, HTTPRequestNode
|
523
525
|
- **Logic**: SwitchNode, MergeNode, ConvergenceCheckerNode
|
524
526
|
- **Code**: PythonCodeNode, WorkflowNode
|
527
|
+
- **Alerts**: DiscordAlertNode with rich embeds and rate limiting
|
525
528
|
- **Security**: EnhancedAccessControlManager (ABAC with 16 operators)
|
526
529
|
|
527
530
|
### Runtimes
|
@@ -42,6 +42,7 @@
|
|
42
42
|
- 📈 **High Performance**: Optimized execution engine supporting 100,000+ iteration workflows
|
43
43
|
- 📁 **Complete Finance Workflow Library (v0.3.1)**: Production-ready financial workflows with AI analysis
|
44
44
|
- 💼 **Enterprise Workflow Patterns**: Credit risk, portfolio optimization, trading signals, fraud detection
|
45
|
+
- 🔔 **Production Alert System**: Rich Discord alerts with rate limiting, retry logic, and rich embed support
|
45
46
|
- 🏭 **Session 067 Enhancements**: Business workflow templates, data lineage tracking, automatic credential rotation
|
46
47
|
- 🔄 **Zero-Downtime Operations**: Automatic credential rotation with enterprise notifications and audit trails
|
47
48
|
- 🌉 **Enterprise Middleware (v0.4.0)**: Production-ready middleware architecture with real-time agent-frontend communication, dynamic workflows, and AI chat integration
|
@@ -100,6 +101,7 @@ pip install kailash[user-management]
|
|
100
101
|
# Everything
|
101
102
|
pip install kailash[all]
|
102
103
|
```
|
104
|
+
>>>>>>> origin/main
|
103
105
|
|
104
106
|
## 🎯 Who Is This For?
|
105
107
|
|
@@ -448,6 +450,7 @@ api.run()
|
|
448
450
|
- **API**: RESTClientNode, GraphQLNode, AuthNode, HTTPRequestNode
|
449
451
|
- **Logic**: SwitchNode, MergeNode, ConvergenceCheckerNode
|
450
452
|
- **Code**: PythonCodeNode, WorkflowNode
|
453
|
+
- **Alerts**: DiscordAlertNode with rich embeds and rate limiting
|
451
454
|
- **Security**: EnhancedAccessControlManager (ABAC with 16 operators)
|
452
455
|
|
453
456
|
### Runtimes
|
@@ -3,9 +3,8 @@
|
|
3
3
|
The Kailash SDK provides a comprehensive framework for creating nodes and workflows
|
4
4
|
that align with container-node architecture while allowing rapid prototyping.
|
5
5
|
|
6
|
-
New in v0.4.
|
7
|
-
|
8
|
-
session management. Complete refactor from monolithic to composable middleware.
|
6
|
+
New in v0.4.2: Bug fixes including circular import resolution and JWT implementation
|
7
|
+
consolidation. Improved changelog organization with individual release files.
|
9
8
|
"""
|
10
9
|
|
11
10
|
from kailash.nodes.base import Node, NodeMetadata, NodeParameter
|
@@ -34,7 +33,7 @@ except ImportError:
|
|
34
33
|
# For backward compatibility
|
35
34
|
WorkflowGraph = Workflow
|
36
35
|
|
37
|
-
__version__ = "0.4.
|
36
|
+
__version__ = "0.4.2"
|
38
37
|
|
39
38
|
__all__ = [
|
40
39
|
# Core workflow components
|
@@ -36,7 +36,7 @@ The middleware consists of these interconnected layers:
|
|
36
36
|
|
37
37
|
**API Gateway Layer**:
|
38
38
|
- RESTful API endpoints with OpenAPI documentation
|
39
|
-
- JWT-based authentication using
|
39
|
+
- JWT-based authentication using JWTAuthManager
|
40
40
|
- Request/response middleware with comprehensive logging
|
41
41
|
- Dynamic schema generation for node discovery
|
42
42
|
|
@@ -181,9 +181,11 @@ Usage Examples
|
|
181
181
|
>>> workflow_id = await agent_ui.create_dynamic_workflow(
|
182
182
|
... session_id, workflow_config
|
183
183
|
... )
|
184
|
-
>>>
|
184
|
+
>>> # Use execute() for consistency with runtime API (preferred)
|
185
|
+
>>> execution_id = await agent_ui.execute(
|
185
186
|
... session_id, workflow_id, inputs={}
|
186
187
|
... )
|
188
|
+
>>> # Note: execute_workflow() is deprecated and will be removed in v1.0.0
|
187
189
|
|
188
190
|
Production Deployment
|
189
191
|
--------------------
|
@@ -0,0 +1,76 @@
|
|
1
|
+
"""
|
2
|
+
Enterprise Authentication and Authorization for Kailash Middleware
|
3
|
+
|
4
|
+
Provides comprehensive authentication, authorization, and tenant isolation
|
5
|
+
capabilities for the Kailash middleware layer.
|
6
|
+
|
7
|
+
Features:
|
8
|
+
- JWT-based authentication with refresh tokens
|
9
|
+
- Role-based access control (RBAC)
|
10
|
+
- Attribute-based access control (ABAC)
|
11
|
+
- Multi-tenant isolation
|
12
|
+
- API key authentication
|
13
|
+
- OAuth2/OIDC integration
|
14
|
+
- Session management
|
15
|
+
- Audit logging
|
16
|
+
"""
|
17
|
+
|
18
|
+
from .exceptions import (
|
19
|
+
AuthenticationError,
|
20
|
+
InvalidTokenError,
|
21
|
+
PermissionDeniedError,
|
22
|
+
TokenBlacklistedError,
|
23
|
+
TokenExpiredError,
|
24
|
+
)
|
25
|
+
|
26
|
+
# Import without circular dependencies
|
27
|
+
from .jwt_auth import JWTAuthManager
|
28
|
+
from .models import AuthenticationResult, JWTConfig, TokenPair, TokenPayload, UserClaims
|
29
|
+
from .utils import generate_key_pair, generate_secret_key, parse_bearer_token
|
30
|
+
|
31
|
+
# Import other components (check for circular deps)
|
32
|
+
try:
|
33
|
+
from .access_control import (
|
34
|
+
MiddlewareAccessControlManager,
|
35
|
+
MiddlewareAuthenticationMiddleware,
|
36
|
+
)
|
37
|
+
from .auth_manager import AuthLevel, MiddlewareAuthManager
|
38
|
+
|
39
|
+
_has_access_control = True
|
40
|
+
except ImportError:
|
41
|
+
# These imports might fail due to circular dependencies with communication
|
42
|
+
_has_access_control = False
|
43
|
+
|
44
|
+
# KailashJWTAuthManager has been consolidated into JWTAuthManager
|
45
|
+
# For backward compatibility, use JWTAuthManager directly
|
46
|
+
|
47
|
+
__all__ = [
|
48
|
+
# Core authentication (always available)
|
49
|
+
"JWTAuthManager",
|
50
|
+
"JWTConfig",
|
51
|
+
"TokenPayload",
|
52
|
+
"TokenPair",
|
53
|
+
"UserClaims",
|
54
|
+
"AuthenticationResult",
|
55
|
+
# Exceptions
|
56
|
+
"AuthenticationError",
|
57
|
+
"TokenExpiredError",
|
58
|
+
"InvalidTokenError",
|
59
|
+
"TokenBlacklistedError",
|
60
|
+
"PermissionDeniedError",
|
61
|
+
# Utilities
|
62
|
+
"generate_secret_key",
|
63
|
+
"generate_key_pair",
|
64
|
+
"parse_bearer_token",
|
65
|
+
]
|
66
|
+
|
67
|
+
# Add access control components if available
|
68
|
+
if _has_access_control:
|
69
|
+
__all__.extend(
|
70
|
+
[
|
71
|
+
"MiddlewareAuthManager",
|
72
|
+
"AuthLevel",
|
73
|
+
"MiddlewareAccessControlManager",
|
74
|
+
"MiddlewareAuthenticationMiddleware",
|
75
|
+
]
|
76
|
+
)
|
@@ -0,0 +1,80 @@
|
|
1
|
+
"""
|
2
|
+
Authentication Exceptions for Kailash Middleware
|
3
|
+
|
4
|
+
Provides exception classes for authentication errors without circular dependencies.
|
5
|
+
"""
|
6
|
+
|
7
|
+
|
8
|
+
class AuthenticationError(Exception):
|
9
|
+
"""Base exception for authentication errors."""
|
10
|
+
|
11
|
+
def __init__(self, message: str, error_code: str = None):
|
12
|
+
super().__init__(message)
|
13
|
+
self.error_code = error_code
|
14
|
+
|
15
|
+
|
16
|
+
class TokenExpiredError(AuthenticationError):
|
17
|
+
"""Raised when a JWT token has expired."""
|
18
|
+
|
19
|
+
def __init__(self, message: str = "Token has expired"):
|
20
|
+
super().__init__(message, "TOKEN_EXPIRED")
|
21
|
+
|
22
|
+
|
23
|
+
class InvalidTokenError(AuthenticationError):
|
24
|
+
"""Raised when a JWT token is invalid."""
|
25
|
+
|
26
|
+
def __init__(self, message: str = "Invalid token"):
|
27
|
+
super().__init__(message, "INVALID_TOKEN")
|
28
|
+
|
29
|
+
|
30
|
+
class TokenBlacklistedError(AuthenticationError):
|
31
|
+
"""Raised when a JWT token has been blacklisted/revoked."""
|
32
|
+
|
33
|
+
def __init__(self, message: str = "Token has been revoked"):
|
34
|
+
super().__init__(message, "TOKEN_BLACKLISTED")
|
35
|
+
|
36
|
+
|
37
|
+
class KeyRotationError(AuthenticationError):
|
38
|
+
"""Raised when key rotation fails."""
|
39
|
+
|
40
|
+
def __init__(self, message: str = "Key rotation failed"):
|
41
|
+
super().__init__(message, "KEY_ROTATION_ERROR")
|
42
|
+
|
43
|
+
|
44
|
+
class RefreshTokenError(AuthenticationError):
|
45
|
+
"""Raised when refresh token operations fail."""
|
46
|
+
|
47
|
+
def __init__(self, message: str = "Refresh token error"):
|
48
|
+
super().__init__(message, "REFRESH_TOKEN_ERROR")
|
49
|
+
|
50
|
+
|
51
|
+
class PermissionDeniedError(AuthenticationError):
|
52
|
+
"""Raised when user lacks required permissions."""
|
53
|
+
|
54
|
+
def __init__(
|
55
|
+
self, message: str = "Permission denied", required_permission: str = None
|
56
|
+
):
|
57
|
+
super().__init__(message, "PERMISSION_DENIED")
|
58
|
+
self.required_permission = required_permission
|
59
|
+
|
60
|
+
|
61
|
+
class RateLimitError(AuthenticationError):
|
62
|
+
"""Raised when authentication rate limit is exceeded."""
|
63
|
+
|
64
|
+
def __init__(self, message: str = "Rate limit exceeded", retry_after: int = None):
|
65
|
+
super().__init__(message, "RATE_LIMIT_EXCEEDED")
|
66
|
+
self.retry_after = retry_after
|
67
|
+
|
68
|
+
|
69
|
+
class InvalidCredentialsError(AuthenticationError):
|
70
|
+
"""Raised when login credentials are invalid."""
|
71
|
+
|
72
|
+
def __init__(self, message: str = "Invalid credentials"):
|
73
|
+
super().__init__(message, "INVALID_CREDENTIALS")
|
74
|
+
|
75
|
+
|
76
|
+
class SessionExpiredError(AuthenticationError):
|
77
|
+
"""Raised when a session has expired."""
|
78
|
+
|
79
|
+
def __init__(self, message: str = "Session has expired"):
|
80
|
+
super().__init__(message, "SESSION_EXPIRED")
|