kailash 0.4.1__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.1/src/kailash.egg-info → kailash-0.4.2}/PKG-INFO +1 -1
- {kailash-0.4.1 → kailash-0.4.2}/pyproject.toml +1 -1
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/__init__.py +3 -4
- {kailash-0.4.1 → 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.1 → 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.1 → kailash-0.4.2}/src/kailash/middleware/communication/api_gateway.py +49 -7
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/middleware/core/agent_ui.py +108 -1
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/middleware/mcp/enhanced_server.py +2 -2
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/code/python.py +18 -0
- {kailash-0.4.1 → kailash-0.4.2/src/kailash.egg-info}/PKG-INFO +1 -1
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash.egg-info/SOURCES.txt +3 -1
- kailash-0.4.1/src/kailash/middleware/auth/__init__.py +0 -33
- kailash-0.4.1/src/kailash/middleware/auth/kailash_jwt_auth.py +0 -616
- {kailash-0.4.1 → kailash-0.4.2}/LICENSE +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/MANIFEST.in +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/README.md +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/setup.cfg +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/setup.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/__main__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/access_control/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/access_control/managers.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/access_control/rule_evaluators.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/access_control.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/access_control_abac.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/api/auth.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/api/custom_nodes.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/api/custom_nodes_secure.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/api/gateway.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/api/mcp_integration.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/api/studio.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/api/workflow_api.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/cli/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/cli/commands.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/config/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/config/database_config.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/database/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/database/execution_pipeline.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/manifest.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/mcp/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/mcp/ai_registry_server.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/mcp/client.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/mcp/client_new.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/mcp/server.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/mcp/server_enhanced.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/mcp/servers/ai_registry.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/mcp/utils/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/mcp/utils/cache.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/mcp/utils/config.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/mcp/utils/formatters.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/mcp/utils/metrics.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/middleware/auth/access_control.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/middleware/auth/auth_manager.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/middleware/communication/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/middleware/communication/ai_chat.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/middleware/communication/events.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/middleware/communication/realtime.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/middleware/core/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/middleware/core/schema.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/middleware/core/workflows.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/middleware/database/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/middleware/database/base.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/middleware/database/base_models.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/middleware/database/enums.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/middleware/database/migrations.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/middleware/database/models.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/middleware/database/repositories.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/middleware/database/session_manager.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/middleware/mcp/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/middleware/mcp/client_integration.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/admin/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/admin/audit_log.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/admin/permission_check.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/admin/role_management.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/admin/security_event.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/admin/user_management.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/ai/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/ai/a2a.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/ai/agents.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/ai/ai_providers.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/ai/embedding_generator.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/ai/intelligent_agent_orchestrator.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/ai/iterative_llm_agent.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/ai/llm_agent.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/ai/models.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/ai/self_organizing.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/ai/vision_utils.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/alerts/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/alerts/base.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/alerts/discord.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/api/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/api/auth.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/api/graphql.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/api/http.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/api/monitoring.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/api/rate_limiting.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/api/rest.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/api/security.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/auth/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/auth/directory_integration.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/auth/enterprise_auth_provider.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/auth/mfa.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/auth/risk_assessment.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/auth/session_management.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/auth/sso.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/base.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/base_async.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/base_cycle_aware.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/base_with_acl.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/code/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/compliance/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/compliance/data_retention.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/compliance/gdpr.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/data/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/data/async_connection.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/data/async_sql.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/data/async_vector.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/data/directory.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/data/event_generation.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/data/file_discovery.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/data/readers.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/data/retrieval.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/data/sharepoint_graph.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/data/sources.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/data/sql.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/data/streaming.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/data/vector_db.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/data/writers.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/enterprise/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/enterprise/batch_processor.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/enterprise/data_lineage.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/logic/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/logic/async_operations.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/logic/convergence.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/logic/loop.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/logic/operations.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/logic/workflow.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/mixins/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/mixins/event_emitter.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/mixins/mcp.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/mixins/security.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/mixins.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/monitoring/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/monitoring/performance_benchmark.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/rag/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/rag/advanced.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/rag/agentic.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/rag/conversational.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/rag/evaluation.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/rag/federated.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/rag/graph.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/rag/multimodal.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/rag/optimized.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/rag/privacy.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/rag/query_processing.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/rag/realtime.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/rag/registry.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/rag/router.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/rag/similarity.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/rag/strategies.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/rag/workflows.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/security/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/security/abac_evaluator.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/security/audit_log.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/security/behavior_analysis.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/security/credential_manager.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/security/rotating_credentials.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/security/security_event.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/security/threat_detection.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/testing/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/testing/credential_testing.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/transform/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/transform/chunkers.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/transform/formatters.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/transform/processors.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/nodes/validation.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/runtime/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/runtime/access_controlled.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/runtime/async_local.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/runtime/docker.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/runtime/local.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/runtime/parallel.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/runtime/parallel_cyclic.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/runtime/runner.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/runtime/testing.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/sdk_exceptions.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/security.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/tracking/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/tracking/manager.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/tracking/metrics_collector.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/tracking/models.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/tracking/storage/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/tracking/storage/base.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/tracking/storage/database.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/tracking/storage/filesystem.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/utils/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/utils/export.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/utils/migrations/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/utils/migrations/generator.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/utils/migrations/models.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/utils/migrations/runner.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/utils/secure_logging.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/utils/templates.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/visualization/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/visualization/api.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/visualization/dashboard.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/visualization/performance.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/visualization/reports.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/workflow/__init__.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/workflow/builder.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/workflow/convergence.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/workflow/cycle_analyzer.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/workflow/cycle_builder.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/workflow/cycle_config.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/workflow/cycle_debugger.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/workflow/cycle_exceptions.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/workflow/cycle_profiler.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/workflow/cycle_state.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/workflow/cyclic_runner.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/workflow/graph.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/workflow/mermaid_visualizer.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/workflow/migration.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/workflow/mock_registry.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/workflow/resilience.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/workflow/runner.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/workflow/safety.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/workflow/state.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/workflow/templates.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/workflow/validation.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash/workflow/visualization.py +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash.egg-info/dependency_links.txt +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash.egg-info/entry_points.txt +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash.egg-info/not-zip-safe +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash.egg-info/requires.txt +0 -0
- {kailash-0.4.1 → kailash-0.4.2}/src/kailash.egg-info/top_level.txt +0 -0
@@ -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
|
-
and universal vision capabilities across OpenAI, Anthropic, and Ollama providers.
|
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")
|