kailash 0.2.1__tar.gz → 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. kailash-0.3.0/PKG-INFO +428 -0
  2. kailash-0.3.0/README.md +358 -0
  3. {kailash-0.2.1 → kailash-0.3.0}/pyproject.toml +2 -2
  4. {kailash-0.2.1 → kailash-0.3.0}/setup.py +1 -1
  5. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/__init__.py +1 -1
  6. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/api/custom_nodes_secure.py +2 -2
  7. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/api/studio_secure.py +1 -1
  8. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/mcp/client_new.py +1 -1
  9. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/ai/a2a.py +1 -1
  10. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/api/__init__.py +26 -0
  11. kailash-0.3.0/src/kailash/nodes/api/monitoring.py +463 -0
  12. kailash-0.3.0/src/kailash/nodes/api/security.py +822 -0
  13. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/base.py +3 -3
  14. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/code/python.py +6 -0
  15. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/data/__init__.py +9 -0
  16. kailash-0.3.0/src/kailash/nodes/data/directory.py +278 -0
  17. kailash-0.3.0/src/kailash/nodes/data/event_generation.py +297 -0
  18. kailash-0.3.0/src/kailash/nodes/data/file_discovery.py +601 -0
  19. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/data/sql.py +2 -2
  20. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/transform/processors.py +32 -1
  21. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/runtime/async_local.py +1 -1
  22. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/runtime/docker.py +4 -4
  23. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/runtime/local.py +41 -4
  24. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/runtime/parallel.py +2 -2
  25. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/runtime/parallel_cyclic.py +2 -2
  26. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/runtime/testing.py +2 -2
  27. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/utils/templates.py +6 -6
  28. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/visualization/performance.py +16 -3
  29. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/visualization/reports.py +5 -1
  30. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/workflow/convergence.py +1 -1
  31. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/workflow/cycle_analyzer.py +8 -1
  32. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/workflow/cyclic_runner.py +1 -1
  33. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/workflow/graph.py +33 -6
  34. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/workflow/visualization.py +10 -2
  35. kailash-0.3.0/src/kailash.egg-info/PKG-INFO +428 -0
  36. {kailash-0.2.1 → kailash-0.3.0}/src/kailash.egg-info/SOURCES.txt +5 -0
  37. kailash-0.2.1/PKG-INFO +0 -1617
  38. kailash-0.2.1/README.md +0 -1547
  39. kailash-0.2.1/src/kailash.egg-info/PKG-INFO +0 -1617
  40. {kailash-0.2.1 → kailash-0.3.0}/LICENSE +0 -0
  41. {kailash-0.2.1 → kailash-0.3.0}/MANIFEST.in +0 -0
  42. {kailash-0.2.1 → kailash-0.3.0}/setup.cfg +0 -0
  43. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/__main__.py +0 -0
  44. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/access_control.py +0 -0
  45. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/api/__init__.py +0 -0
  46. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/api/__main__.py +0 -0
  47. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/api/auth.py +0 -0
  48. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/api/custom_nodes.py +0 -0
  49. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/api/database.py +0 -0
  50. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/api/gateway.py +0 -0
  51. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/api/mcp_integration.py +0 -0
  52. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/api/studio.py +0 -0
  53. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/api/workflow_api.py +0 -0
  54. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/cli/__init__.py +0 -0
  55. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/cli/commands.py +0 -0
  56. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/manifest.py +0 -0
  57. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/mcp/__init__.py +0 -0
  58. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/mcp/__main__.py +0 -0
  59. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/mcp/ai_registry_server.py +0 -0
  60. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/mcp/client.py +0 -0
  61. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/mcp/server.py +0 -0
  62. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/mcp/server_new.py +0 -0
  63. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/mcp/servers/__init__.py +0 -0
  64. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/mcp/servers/ai_registry.py +0 -0
  65. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/__init__.py +0 -0
  66. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/ai/__init__.py +0 -0
  67. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/ai/agents.py +0 -0
  68. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/ai/ai_providers.py +0 -0
  69. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/ai/embedding_generator.py +0 -0
  70. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/ai/intelligent_agent_orchestrator.py +0 -0
  71. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/ai/iterative_llm_agent.py +0 -0
  72. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/ai/llm_agent.py +0 -0
  73. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/ai/models.py +0 -0
  74. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/ai/self_organizing.py +0 -0
  75. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/api/auth.py +0 -0
  76. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/api/graphql.py +0 -0
  77. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/api/http.py +0 -0
  78. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/api/rate_limiting.py +0 -0
  79. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/api/rest.py +0 -0
  80. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/base_async.py +0 -0
  81. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/base_cycle_aware.py +0 -0
  82. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/base_with_acl.py +0 -0
  83. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/code/__init__.py +0 -0
  84. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/data/readers.py +0 -0
  85. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/data/retrieval.py +0 -0
  86. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/data/sharepoint_graph.py +0 -0
  87. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/data/sources.py +0 -0
  88. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/data/streaming.py +0 -0
  89. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/data/vector_db.py +0 -0
  90. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/data/writers.py +0 -0
  91. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/logic/__init__.py +0 -0
  92. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/logic/async_operations.py +0 -0
  93. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/logic/convergence.py +0 -0
  94. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/logic/loop.py +0 -0
  95. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/logic/operations.py +0 -0
  96. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/logic/workflow.py +0 -0
  97. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/mixins/__init__.py +0 -0
  98. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/mixins/mcp.py +0 -0
  99. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/mixins.py +0 -0
  100. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/transform/__init__.py +0 -0
  101. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/transform/chunkers.py +0 -0
  102. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/nodes/transform/formatters.py +0 -0
  103. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/runtime/__init__.py +0 -0
  104. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/runtime/access_controlled.py +0 -0
  105. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/runtime/runner.py +0 -0
  106. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/sdk_exceptions.py +0 -0
  107. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/security.py +0 -0
  108. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/tracking/__init__.py +0 -0
  109. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/tracking/manager.py +0 -0
  110. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/tracking/metrics_collector.py +0 -0
  111. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/tracking/models.py +0 -0
  112. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/tracking/storage/__init__.py +0 -0
  113. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/tracking/storage/base.py +0 -0
  114. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/tracking/storage/database.py +0 -0
  115. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/tracking/storage/filesystem.py +0 -0
  116. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/utils/__init__.py +0 -0
  117. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/utils/export.py +0 -0
  118. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/visualization/__init__.py +0 -0
  119. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/visualization/api.py +0 -0
  120. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/visualization/dashboard.py +0 -0
  121. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/workflow/__init__.py +0 -0
  122. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/workflow/builder.py +0 -0
  123. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/workflow/cycle_builder.py +0 -0
  124. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/workflow/cycle_config.py +0 -0
  125. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/workflow/cycle_debugger.py +0 -0
  126. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/workflow/cycle_exceptions.py +0 -0
  127. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/workflow/cycle_profiler.py +0 -0
  128. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/workflow/cycle_state.py +0 -0
  129. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/workflow/mermaid_visualizer.py +0 -0
  130. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/workflow/migration.py +0 -0
  131. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/workflow/mock_registry.py +0 -0
  132. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/workflow/runner.py +0 -0
  133. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/workflow/safety.py +0 -0
  134. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/workflow/state.py +0 -0
  135. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/workflow/templates.py +0 -0
  136. {kailash-0.2.1 → kailash-0.3.0}/src/kailash/workflow/validation.py +0 -0
  137. {kailash-0.2.1 → kailash-0.3.0}/src/kailash.egg-info/dependency_links.txt +0 -0
  138. {kailash-0.2.1 → kailash-0.3.0}/src/kailash.egg-info/entry_points.txt +0 -0
  139. {kailash-0.2.1 → kailash-0.3.0}/src/kailash.egg-info/not-zip-safe +0 -0
  140. {kailash-0.2.1 → kailash-0.3.0}/src/kailash.egg-info/requires.txt +0 -0
  141. {kailash-0.2.1 → kailash-0.3.0}/src/kailash.egg-info/top_level.txt +0 -0
kailash-0.3.0/PKG-INFO ADDED
@@ -0,0 +1,428 @@
1
+ Metadata-Version: 2.4
2
+ Name: kailash
3
+ Version: 0.3.0
4
+ Summary: Python SDK for the Kailash container-node architecture
5
+ Home-page: https://github.com/integrum/kailash-python-sdk
6
+ Author: Integrum
7
+ Author-email: Integrum <info@integrum.com>
8
+ Project-URL: Homepage, https://github.com/integrum/kailash-python-sdk
9
+ Project-URL: Bug Tracker, https://github.com/integrum/kailash-python-sdk/issues
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Requires-Python: >=3.11
16
+ Description-Content-Type: text/markdown
17
+ License-File: LICENSE
18
+ Requires-Dist: networkx>=2.7
19
+ Requires-Dist: pydantic>=1.9
20
+ Requires-Dist: matplotlib>=3.5
21
+ Requires-Dist: pyyaml>=6.0
22
+ Requires-Dist: click>=8.0
23
+ Requires-Dist: pytest>=8.3.5
24
+ Requires-Dist: mcp[cli]>=1.9.2
25
+ Requires-Dist: pandas>=2.2.3
26
+ Requires-Dist: numpy>=2.2.5
27
+ Requires-Dist: scipy>=1.15.3
28
+ Requires-Dist: scikit-learn>=1.6.1
29
+ Requires-Dist: requests>=2.32.3
30
+ Requires-Dist: pytest-cov>=6.1.1
31
+ Requires-Dist: isort>=6.0.1
32
+ Requires-Dist: aiohttp>=3.12.4
33
+ Requires-Dist: ruff>=0.11.12
34
+ Requires-Dist: msal>=1.32.3
35
+ Requires-Dist: sphinx>=8.2.3
36
+ Requires-Dist: sphinx-rtd-theme>=3.0.2
37
+ Requires-Dist: sphinx-copybutton>=0.5.2
38
+ Requires-Dist: sphinxcontrib-mermaid>=1.0.0
39
+ Requires-Dist: sphinx-autobuild>=2024.10.3
40
+ Requires-Dist: autodoc>=0.5.0
41
+ Requires-Dist: myst-parser>=4.0.1
42
+ Requires-Dist: black>=25.1.0
43
+ Requires-Dist: psutil>=7.0.0
44
+ Requires-Dist: fastapi>=0.115.12
45
+ Requires-Dist: uvicorn[standard]>=0.31.0
46
+ Requires-Dist: pytest-asyncio>=1.0.0
47
+ Requires-Dist: pre-commit>=4.2.0
48
+ Requires-Dist: twine>=6.1.0
49
+ Requires-Dist: ollama>=0.5.1
50
+ Requires-Dist: sqlalchemy>=2.0.0
51
+ Requires-Dist: psycopg2-binary>=2.9.0
52
+ Requires-Dist: pymysql>=1.1.0
53
+ Requires-Dist: aiosqlite>=0.19.0
54
+ Requires-Dist: websockets>=12.0
55
+ Requires-Dist: httpx>=0.25.0
56
+ Requires-Dist: python-jose>=3.5.0
57
+ Requires-Dist: pytest-xdist>=3.6.0
58
+ Requires-Dist: pytest-timeout>=2.3.0
59
+ Requires-Dist: pytest-split>=0.9.0
60
+ Provides-Extra: dev
61
+ Requires-Dist: pytest>=7.0; extra == "dev"
62
+ Requires-Dist: pytest-cov>=3.0; extra == "dev"
63
+ Requires-Dist: black>=22.0; extra == "dev"
64
+ Requires-Dist: isort>=5.10; extra == "dev"
65
+ Requires-Dist: mypy>=0.9; extra == "dev"
66
+ Dynamic: author
67
+ Dynamic: home-page
68
+ Dynamic: license-file
69
+ Dynamic: requires-python
70
+
71
+ # Kailash Python SDK
72
+
73
+ <p align="center">
74
+ <a href="https://pypi.org/project/kailash/"><img src="https://img.shields.io/pypi/v/kailash.svg" alt="PyPI version"></a>
75
+ <a href="https://pypi.org/project/kailash/"><img src="https://img.shields.io/pypi/pyversions/kailash.svg" alt="Python versions"></a>
76
+ <a href="https://pepy.tech/project/kailash"><img src="https://static.pepy.tech/badge/kailash" alt="Downloads"></a>
77
+ <img src="https://img.shields.io/badge/license-MIT-green.svg" alt="MIT License">
78
+ <img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="Code style: black">
79
+ <img src="https://img.shields.io/badge/tests-751%20passing-brightgreen.svg" alt="Tests: 751 passing">
80
+ <img src="https://img.shields.io/badge/coverage-100%25-brightgreen.svg" alt="Coverage: 100%">
81
+ </p>
82
+
83
+ <p align="center">
84
+ <strong>A Pythonic SDK for the Kailash container-node architecture</strong>
85
+ </p>
86
+
87
+ <p align="center">
88
+ Build workflows that seamlessly integrate with Kailash's production environment while maintaining the flexibility to prototype quickly and iterate locally.
89
+ </p>
90
+
91
+ ---
92
+
93
+ ## ✨ Highlights
94
+
95
+ - 🚀 **Rapid Prototyping**: Create and test workflows locally without containerization
96
+ - 🏗️ **Architecture-Aligned**: Automatically ensures compliance with Kailash standards
97
+ - 🔄 **Seamless Handoff**: Export prototypes directly to production-ready formats
98
+ - 📊 **Real-time Monitoring**: Live dashboards with WebSocket streaming and performance metrics
99
+ - 🧩 **Extensible**: Easy to create custom nodes for domain-specific operations
100
+ - ⚡ **Fast Installation**: Uses `uv` for lightning-fast Python package management
101
+ - 🤖 **AI-Powered**: Complete LLM agents, embeddings, and hierarchical RAG architecture
102
+ - 🧠 **Retrieval-Augmented Generation**: Full RAG pipeline with intelligent document processing
103
+ - 🌐 **REST API Wrapper**: Expose any workflow as a production-ready API in 3 lines
104
+ - 🚪 **Multi-Workflow Gateway**: Manage multiple workflows through unified API with MCP integration
105
+ - 🤖 **Self-Organizing Agents**: Autonomous agent pools with intelligent team formation and convergence detection
106
+ - 🧠 **Agent-to-Agent Communication**: Shared memory pools and intelligent caching for coordinated multi-agent systems
107
+ - 🔒 **Production Security**: Comprehensive security framework with path traversal prevention, code sandboxing, and audit logging
108
+ - 🎨 **Visual Workflow Builder**: Kailash Workflow Studio - drag-and-drop interface for creating and managing workflows (coming soon)
109
+ - 🔁 **Cyclic Workflows (v0.2.0)**: Universal Hybrid Cyclic Graph Architecture with 30,000+ iterations/second performance
110
+ - 🛠️ **Developer Tools**: CycleAnalyzer, CycleDebugger, CycleProfiler for production-ready cyclic workflows
111
+ - 📈 **High Performance**: Optimized execution engine supporting 100,000+ iteration workflows
112
+ - 📁 **Enhanced Documentation (v0.2.2)**: Reorganized structure with production-ready workflow library
113
+
114
+ ## 🎯 Who Is This For?
115
+
116
+ The Kailash Python SDK is designed for:
117
+
118
+ - **AI Business Coaches (ABCs)** who need to prototype workflows quickly
119
+ - **Data Scientists** building ML pipelines compatible with production infrastructure
120
+ - **Engineers** who want to test Kailash workflows locally before deployment
121
+ - **Teams** looking to standardize their workflow development process
122
+
123
+ ## 🚀 Quick Start
124
+
125
+ ### Installation
126
+
127
+ **Requirements:** Python 3.11 or higher
128
+
129
+ ```bash
130
+ # Install uv if you haven't already
131
+ curl -LsSf https://astral.sh/uv/install.sh | sh
132
+
133
+ # For users: Install from PyPI
134
+ pip install kailash
135
+
136
+ # For developers: Clone and sync
137
+ git clone https://github.com/integrum/kailash-python-sdk.git
138
+ cd kailash-python-sdk
139
+ uv sync
140
+
141
+ # Set up SDK development infrastructure (optional but recommended)
142
+ ./scripts/setup-sdk-environment.sh
143
+ ```
144
+
145
+ ### Your First Workflow
146
+
147
+ ```python
148
+ from kailash.workflow import Workflow
149
+ from kailash.nodes.data import CSVReaderNode
150
+ from kailash.nodes.code import PythonCodeNode
151
+ from kailash.runtime.local import LocalRuntime
152
+ import pandas as pd
153
+
154
+ # Create a workflow
155
+ workflow = Workflow("customer_analysis", name="customer_analysis")
156
+
157
+ # Add data reader
158
+ reader = CSVReaderNode(file_path="customers.csv")
159
+ workflow.add_node("read_customers", reader)
160
+
161
+ # Add custom processing using Python code
162
+ def analyze_customers(data):
163
+ """Analyze customer data and compute metrics."""
164
+ df = pd.DataFrame(data)
165
+ # Convert total_spent to numeric
166
+ df['total_spent'] = pd.to_numeric(df['total_spent'])
167
+ return {
168
+ "result": {
169
+ "total_customers": len(df),
170
+ "avg_spend": df["total_spent"].mean(),
171
+ "top_customers": df.nlargest(10, "total_spent").to_dict("records")
172
+ }
173
+ }
174
+
175
+ processor = PythonCodeNode(code=analyze_customers)
176
+ workflow.add_node("analyze", processor)
177
+
178
+ # Connect nodes
179
+ workflow.connect("read_customers", "analyze", mapping={"data": "data"})
180
+
181
+ # Run locally
182
+ runtime = LocalRuntime()
183
+ results, run_id = runtime.execute(workflow, parameters={
184
+ "read_customers": {"file_path": "customers.csv"}
185
+ })
186
+
187
+ print(f"Total customers: {results['analyze']['result']['total_customers']}")
188
+ print(f"Average spend: ${results['analyze']['result']['avg_spend']:.2f}")
189
+ ```
190
+
191
+ ### Export to Production
192
+
193
+ ```python
194
+ # Export to Kailash container format
195
+ from kailash.utils.export import export_workflow
196
+
197
+ export_workflow(workflow, "customer_analysis.yaml")
198
+ ```
199
+
200
+ ## 📚 Documentation
201
+
202
+ ### For SDK Users
203
+
204
+ **Build solutions with the SDK:**
205
+ - `sdk-users/` - Everything you need to build with Kailash
206
+ - `developer/` - Node creation patterns and troubleshooting
207
+ - `workflows/` - Production-ready workflow library (NEW in v0.2.2)
208
+ - Quick-start patterns (30-second workflows)
209
+ - Industry-specific solutions (healthcare, finance)
210
+ - Enterprise integration patterns
211
+ - `essentials/` - Quick reference and cheatsheets
212
+ - `nodes/` - Comprehensive node catalog (66+ nodes)
213
+ - `patterns/` - Architectural patterns
214
+
215
+ ### For SDK Contributors
216
+
217
+ **Develop the SDK itself:**
218
+ - `sdk-contributors/` - Internal SDK development resources
219
+ - `architecture/` - ADRs and design decisions
220
+ - `project/` - TODOs and development tracking
221
+ - `training/` - LLM training examples
222
+
223
+ ### Shared Resources
224
+
225
+ - `shared/` - Resources for both users and contributors
226
+ - `mistakes/` - Common error patterns and solutions
227
+ - `frontend/` - UI development resources
228
+
229
+ ### Quick Links
230
+
231
+ - [SDK User Guide](sdk-users/README.md) - Build with the SDK
232
+ - [SDK Contributor Guide](sdk-contributors/README.md) - Develop the SDK
233
+ - [API Documentation](https://integrum.github.io/kailash-python-sdk)
234
+ - [Examples](examples/)
235
+ - [Release Notes](CHANGELOG.md)
236
+
237
+ ## 🔥 Advanced Features
238
+
239
+ ### Cyclic Workflows (Enhanced in v0.2.2)
240
+
241
+ Build iterative workflows with the new CycleBuilder API:
242
+
243
+ ```python
244
+ # Create an optimization cycle
245
+ workflow.create_cycle("optimization_loop")
246
+ .connect("processor", "processor")
247
+ .max_iterations(100)
248
+ .converge_when("quality >= 0.95")
249
+ .timeout(30)
250
+ .build()
251
+ ```
252
+
253
+ ### Self-Organizing Agent Pools
254
+
255
+ Create teams of AI agents that autonomously coordinate:
256
+
257
+ ```python
258
+ from kailash.nodes.ai import SelfOrganizingAgentPoolNode
259
+
260
+ agent_pool = SelfOrganizingAgentPoolNode(
261
+ formation_strategy="capability_matching",
262
+ convergence_strategy="quality_voting",
263
+ min_agents=3,
264
+ max_agents=10
265
+ )
266
+ workflow.add_node("agent_team", agent_pool)
267
+ ```
268
+
269
+ ### Hierarchical RAG Pipeline
270
+
271
+ Build sophisticated document processing systems:
272
+
273
+ ```python
274
+ from kailash.nodes.data import DocumentSourceNode, HierarchicalChunkerNode
275
+ from kailash.nodes.ai import EmbeddingGeneratorNode
276
+
277
+ # Build a complete RAG pipeline
278
+ workflow.add_node("docs", DocumentSourceNode(directory="./knowledge"))
279
+ workflow.add_node("chunker", HierarchicalChunkerNode(chunk_size=512))
280
+ workflow.add_node("embedder", EmbeddingGeneratorNode(provider="openai"))
281
+ ```
282
+
283
+ ### REST API Wrapper
284
+
285
+ Transform any workflow into a production API:
286
+
287
+ ```python
288
+ from kailash.api import WorkflowAPI
289
+
290
+ # Create API from workflow
291
+ api = WorkflowAPI(workflow, host="0.0.0.0", port=8000)
292
+ api.run()
293
+
294
+ # Your workflow is now available at:
295
+ # POST http://localhost:8000/execute
296
+ # GET http://localhost:8000/workflow/info
297
+ ```
298
+
299
+ ## 🏗️ Key Components
300
+
301
+ ### Nodes (60+ built-in)
302
+
303
+ - **Data**: CSVReaderNode, JSONReaderNode, SQLDatabaseNode, DirectoryReaderNode
304
+ - **Transform**: DataTransformer, DataFrameFilter, DataFrameJoiner
305
+ - **AI/ML**: LLMAgentNode, EmbeddingGeneratorNode, A2ACoordinatorNode
306
+ - **API**: RESTClientNode, GraphQLNode, AuthNode
307
+ - **Logic**: SwitchNode, MergeNode, ConvergenceCheckerNode
308
+ - **Code**: PythonCodeNode, WorkflowNode
309
+
310
+ ### Runtimes
311
+
312
+ - **LocalRuntime**: Test workflows on your machine
313
+ - **DockerRuntime**: Run in containers (coming soon)
314
+ - **ParallelRuntime**: Execute nodes concurrently
315
+ - **CyclicWorkflowExecutor**: Optimized for iterative workflows
316
+
317
+ ### Visualization
318
+
319
+ - **Mermaid diagrams**: Workflow structure visualization
320
+ - **Real-time dashboard**: Monitor execution with WebSocket streaming
321
+ - **Performance metrics**: Track execution time, resource usage
322
+
323
+ ## 🧪 Testing Your Workflows
324
+
325
+ ```python
326
+ # Use the testing runtime for unit tests
327
+ from kailash.runtime.testing import TestingRuntime
328
+
329
+ runtime = TestingRuntime()
330
+ runtime.set_mock_result("read_customers", {"data": test_data})
331
+ results, run_id = runtime.execute(workflow)
332
+ assert results["analyze"]["result"]["total_customers"] == len(test_data)
333
+ ```
334
+
335
+ ## 🚢 Production Deployment
336
+
337
+ 1. **Export your workflow**:
338
+ ```python
339
+ export_workflow(workflow, "workflow.yaml", format="kailash")
340
+ ```
341
+
342
+ 2. **Deploy to Kailash**:
343
+ ```bash
344
+ kailash deploy workflow.yaml --environment production
345
+ ```
346
+
347
+ 3. **Monitor in real-time**:
348
+ ```python
349
+ from kailash.visualization import DashboardServer
350
+
351
+ server = DashboardServer(port=8080)
352
+ server.start()
353
+ # Open http://localhost:8080 for live monitoring
354
+ ```
355
+
356
+ ## 🤝 Contributing
357
+
358
+ We welcome contributions! We use a **Claude Code-driven workflow** for all team collaboration.
359
+
360
+ ### 🚀 New Team Member?
361
+ **Start Here → [NEW_TEAM_MEMBER.md](NEW_TEAM_MEMBER.md)**
362
+
363
+ ### For Contributors
364
+ - **SDK Users**: See [sdk-users/CLAUDE.md](sdk-users/CLAUDE.md) for building with the SDK
365
+ - **SDK Contributors**: See [sdk-contributors/CLAUDE.md](sdk-contributors/CLAUDE.md) for SDK development
366
+ - **Team Collaboration**: Use [Claude Code Workflow System](sdk-contributors/operations/claude-code-workflows/) for all project management
367
+
368
+ ### Claude Code Workflow
369
+ All project management is done through conversational interaction with Claude Code:
370
+ - **No manual TODO editing** - Claude Code handles all updates
371
+ - **No direct GitHub issues** - Created through planning sessions
372
+ - **All progress tracked** - Through natural conversation
373
+
374
+ See [Contributing Guide](CONTRIBUTING.md) for complete details.
375
+
376
+ ### Development Setup
377
+
378
+ ```bash
379
+ # Clone the repository
380
+ git clone https://github.com/integrum/kailash-python-sdk.git
381
+ cd kailash-python-sdk
382
+
383
+ # Install with development dependencies
384
+ uv sync
385
+
386
+ # Run tests
387
+ pytest
388
+
389
+ # Run linting
390
+ black .
391
+ isort .
392
+ ruff check .
393
+
394
+ # Test all examples
395
+ python scripts/test-all-examples.py
396
+ ```
397
+
398
+ ## 📈 Project Status
399
+
400
+ - ✅ Core workflow engine
401
+ - ✅ 60+ production-ready nodes
402
+ - ✅ Local and parallel runtimes
403
+ - ✅ Export to container format
404
+ - ✅ Real-time monitoring
405
+ - ✅ Comprehensive test suite (751 tests)
406
+ - ✅ Self-organizing agent systems
407
+ - ✅ Hierarchical RAG architecture
408
+ - ✅ REST API wrapper
409
+ - ✅ Cyclic workflow support with CycleBuilder API
410
+ - ✅ Production security framework
411
+ - ✅ Comprehensive workflow library (v0.2.2)
412
+ - 🚧 Visual workflow builder (in progress)
413
+ - 🚧 Docker runtime
414
+ - 🚧 Cloud deployment tools
415
+
416
+ ## 📄 License
417
+
418
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
419
+
420
+ ## 🙏 Acknowledgments
421
+
422
+ Built with ❤️ by the Integrum team for the Kailash ecosystem.
423
+
424
+ ---
425
+
426
+ <p align="center">
427
+ <strong>Ready to build your first workflow? Check out our <a href="examples/">examples</a> or dive into the <a href="sdk-users/README.md">documentation</a>!</strong>
428
+ </p>