kailash 0.3.2__py3-none-any.whl → 0.4.1__py3-none-any.whl

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 (151) hide show
  1. kailash/__init__.py +33 -1
  2. kailash/access_control/__init__.py +129 -0
  3. kailash/access_control/managers.py +461 -0
  4. kailash/access_control/rule_evaluators.py +467 -0
  5. kailash/access_control_abac.py +825 -0
  6. kailash/config/__init__.py +27 -0
  7. kailash/config/database_config.py +359 -0
  8. kailash/database/__init__.py +28 -0
  9. kailash/database/execution_pipeline.py +499 -0
  10. kailash/middleware/__init__.py +306 -0
  11. kailash/middleware/auth/__init__.py +33 -0
  12. kailash/middleware/auth/access_control.py +436 -0
  13. kailash/middleware/auth/auth_manager.py +422 -0
  14. kailash/middleware/auth/jwt_auth.py +477 -0
  15. kailash/middleware/auth/kailash_jwt_auth.py +616 -0
  16. kailash/middleware/communication/__init__.py +37 -0
  17. kailash/middleware/communication/ai_chat.py +989 -0
  18. kailash/middleware/communication/api_gateway.py +802 -0
  19. kailash/middleware/communication/events.py +470 -0
  20. kailash/middleware/communication/realtime.py +710 -0
  21. kailash/middleware/core/__init__.py +21 -0
  22. kailash/middleware/core/agent_ui.py +890 -0
  23. kailash/middleware/core/schema.py +643 -0
  24. kailash/middleware/core/workflows.py +396 -0
  25. kailash/middleware/database/__init__.py +63 -0
  26. kailash/middleware/database/base.py +113 -0
  27. kailash/middleware/database/base_models.py +525 -0
  28. kailash/middleware/database/enums.py +106 -0
  29. kailash/middleware/database/migrations.py +12 -0
  30. kailash/{api/database.py → middleware/database/models.py} +183 -291
  31. kailash/middleware/database/repositories.py +685 -0
  32. kailash/middleware/database/session_manager.py +19 -0
  33. kailash/middleware/mcp/__init__.py +38 -0
  34. kailash/middleware/mcp/client_integration.py +585 -0
  35. kailash/middleware/mcp/enhanced_server.py +576 -0
  36. kailash/nodes/__init__.py +27 -3
  37. kailash/nodes/admin/__init__.py +42 -0
  38. kailash/nodes/admin/audit_log.py +794 -0
  39. kailash/nodes/admin/permission_check.py +864 -0
  40. kailash/nodes/admin/role_management.py +823 -0
  41. kailash/nodes/admin/security_event.py +1523 -0
  42. kailash/nodes/admin/user_management.py +944 -0
  43. kailash/nodes/ai/a2a.py +24 -7
  44. kailash/nodes/ai/ai_providers.py +248 -40
  45. kailash/nodes/ai/embedding_generator.py +11 -11
  46. kailash/nodes/ai/intelligent_agent_orchestrator.py +99 -11
  47. kailash/nodes/ai/llm_agent.py +436 -5
  48. kailash/nodes/ai/self_organizing.py +85 -10
  49. kailash/nodes/ai/vision_utils.py +148 -0
  50. kailash/nodes/alerts/__init__.py +26 -0
  51. kailash/nodes/alerts/base.py +234 -0
  52. kailash/nodes/alerts/discord.py +499 -0
  53. kailash/nodes/api/auth.py +287 -6
  54. kailash/nodes/api/rest.py +151 -0
  55. kailash/nodes/auth/__init__.py +17 -0
  56. kailash/nodes/auth/directory_integration.py +1228 -0
  57. kailash/nodes/auth/enterprise_auth_provider.py +1328 -0
  58. kailash/nodes/auth/mfa.py +2338 -0
  59. kailash/nodes/auth/risk_assessment.py +872 -0
  60. kailash/nodes/auth/session_management.py +1093 -0
  61. kailash/nodes/auth/sso.py +1040 -0
  62. kailash/nodes/base.py +344 -13
  63. kailash/nodes/base_cycle_aware.py +4 -2
  64. kailash/nodes/base_with_acl.py +1 -1
  65. kailash/nodes/code/python.py +283 -10
  66. kailash/nodes/compliance/__init__.py +9 -0
  67. kailash/nodes/compliance/data_retention.py +1888 -0
  68. kailash/nodes/compliance/gdpr.py +2004 -0
  69. kailash/nodes/data/__init__.py +22 -2
  70. kailash/nodes/data/async_connection.py +469 -0
  71. kailash/nodes/data/async_sql.py +757 -0
  72. kailash/nodes/data/async_vector.py +598 -0
  73. kailash/nodes/data/readers.py +767 -0
  74. kailash/nodes/data/retrieval.py +360 -1
  75. kailash/nodes/data/sharepoint_graph.py +397 -21
  76. kailash/nodes/data/sql.py +94 -5
  77. kailash/nodes/data/streaming.py +68 -8
  78. kailash/nodes/data/vector_db.py +54 -4
  79. kailash/nodes/enterprise/__init__.py +13 -0
  80. kailash/nodes/enterprise/batch_processor.py +741 -0
  81. kailash/nodes/enterprise/data_lineage.py +497 -0
  82. kailash/nodes/logic/convergence.py +31 -9
  83. kailash/nodes/logic/operations.py +14 -3
  84. kailash/nodes/mixins/__init__.py +8 -0
  85. kailash/nodes/mixins/event_emitter.py +201 -0
  86. kailash/nodes/mixins/mcp.py +9 -4
  87. kailash/nodes/mixins/security.py +165 -0
  88. kailash/nodes/monitoring/__init__.py +7 -0
  89. kailash/nodes/monitoring/performance_benchmark.py +2497 -0
  90. kailash/nodes/rag/__init__.py +284 -0
  91. kailash/nodes/rag/advanced.py +1615 -0
  92. kailash/nodes/rag/agentic.py +773 -0
  93. kailash/nodes/rag/conversational.py +999 -0
  94. kailash/nodes/rag/evaluation.py +875 -0
  95. kailash/nodes/rag/federated.py +1188 -0
  96. kailash/nodes/rag/graph.py +721 -0
  97. kailash/nodes/rag/multimodal.py +671 -0
  98. kailash/nodes/rag/optimized.py +933 -0
  99. kailash/nodes/rag/privacy.py +1059 -0
  100. kailash/nodes/rag/query_processing.py +1335 -0
  101. kailash/nodes/rag/realtime.py +764 -0
  102. kailash/nodes/rag/registry.py +547 -0
  103. kailash/nodes/rag/router.py +837 -0
  104. kailash/nodes/rag/similarity.py +1854 -0
  105. kailash/nodes/rag/strategies.py +566 -0
  106. kailash/nodes/rag/workflows.py +575 -0
  107. kailash/nodes/security/__init__.py +19 -0
  108. kailash/nodes/security/abac_evaluator.py +1411 -0
  109. kailash/nodes/security/audit_log.py +103 -0
  110. kailash/nodes/security/behavior_analysis.py +1893 -0
  111. kailash/nodes/security/credential_manager.py +401 -0
  112. kailash/nodes/security/rotating_credentials.py +760 -0
  113. kailash/nodes/security/security_event.py +133 -0
  114. kailash/nodes/security/threat_detection.py +1103 -0
  115. kailash/nodes/testing/__init__.py +9 -0
  116. kailash/nodes/testing/credential_testing.py +499 -0
  117. kailash/nodes/transform/__init__.py +10 -2
  118. kailash/nodes/transform/chunkers.py +592 -1
  119. kailash/nodes/transform/processors.py +484 -14
  120. kailash/nodes/validation.py +321 -0
  121. kailash/runtime/access_controlled.py +1 -1
  122. kailash/runtime/async_local.py +41 -7
  123. kailash/runtime/docker.py +1 -1
  124. kailash/runtime/local.py +474 -55
  125. kailash/runtime/parallel.py +1 -1
  126. kailash/runtime/parallel_cyclic.py +1 -1
  127. kailash/runtime/testing.py +210 -2
  128. kailash/security.py +1 -1
  129. kailash/utils/migrations/__init__.py +25 -0
  130. kailash/utils/migrations/generator.py +433 -0
  131. kailash/utils/migrations/models.py +231 -0
  132. kailash/utils/migrations/runner.py +489 -0
  133. kailash/utils/secure_logging.py +342 -0
  134. kailash/workflow/__init__.py +16 -0
  135. kailash/workflow/cyclic_runner.py +3 -4
  136. kailash/workflow/graph.py +70 -2
  137. kailash/workflow/resilience.py +249 -0
  138. kailash/workflow/templates.py +726 -0
  139. {kailash-0.3.2.dist-info → kailash-0.4.1.dist-info}/METADATA +256 -20
  140. kailash-0.4.1.dist-info/RECORD +227 -0
  141. kailash/api/__init__.py +0 -17
  142. kailash/api/__main__.py +0 -6
  143. kailash/api/studio_secure.py +0 -893
  144. kailash/mcp/__main__.py +0 -13
  145. kailash/mcp/server_new.py +0 -336
  146. kailash/mcp/servers/__init__.py +0 -12
  147. kailash-0.3.2.dist-info/RECORD +0 -136
  148. {kailash-0.3.2.dist-info → kailash-0.4.1.dist-info}/WHEEL +0 -0
  149. {kailash-0.3.2.dist-info → kailash-0.4.1.dist-info}/entry_points.txt +0 -0
  150. {kailash-0.3.2.dist-info → kailash-0.4.1.dist-info}/licenses/LICENSE +0 -0
  151. {kailash-0.3.2.dist-info → kailash-0.4.1.dist-info}/top_level.txt +0 -0
kailash/mcp/__main__.py DELETED
@@ -1,13 +0,0 @@
1
- """
2
- Entry point for running MCP servers as modules.
3
-
4
- Usage:
5
- python -m kailash.mcp.ai_registry_server
6
- """
7
-
8
- import asyncio
9
-
10
- from .ai_registry_server import main
11
-
12
- if __name__ == "__main__":
13
- asyncio.run(main())
kailash/mcp/server_new.py DELETED
@@ -1,336 +0,0 @@
1
- """
2
- MCP Server - Base class for creating MCP servers using FastMCP.
3
-
4
- This provides a clean way to create MCP servers that run as standalone services,
5
- not as workflow nodes.
6
- """
7
-
8
- import asyncio
9
- import logging
10
- import signal
11
- import sys
12
- from typing import Callable, List, Optional
13
-
14
- try:
15
- from mcp.server import Server
16
- from mcp.server.models import InitializationOptions
17
- from mcp.types import Resource, TextContent, Tool
18
-
19
- MCP_AVAILABLE = True
20
- except ImportError:
21
- MCP_AVAILABLE = False
22
-
23
-
24
- class MCPServer:
25
- """
26
- Base class for creating MCP servers.
27
-
28
- This class provides a foundation for building MCP servers that expose
29
- tools, resources, and prompts. Servers run as standalone processes,
30
- not as workflow nodes.
31
-
32
- Examples:
33
- >>> class MyServer(MCPServer):
34
- ... def setup(self):
35
- ... @self.tool()
36
- ... def search(query: str) -> str:
37
- ... return f"Searching for: {query}"
38
- ...
39
- ... @self.resource("data://example")
40
- ... def get_example():
41
- ... return "Example data"
42
- >>>
43
- >>> server = MyServer("my-server", port=8080)
44
- >>> server.run() # Runs until stopped
45
- """
46
-
47
- def __init__(self, name: str, port: Optional[int] = None):
48
- """
49
- Initialize MCP server.
50
-
51
- Args:
52
- name: Server name
53
- port: Port for HTTP transport (None for stdio)
54
- """
55
- if not MCP_AVAILABLE:
56
- raise ImportError("MCP SDK not available. Install with: pip install mcp")
57
-
58
- self.name = name
59
- self.port = port
60
- self.logger = logging.getLogger(f"mcp.{name}")
61
-
62
- # Create MCP server
63
- self.server = Server(name)
64
- self._setup_done = False
65
- self._tools = {}
66
- self._resources = {}
67
- self._prompts = {}
68
-
69
- # Setup signal handlers
70
- signal.signal(signal.SIGINT, self._signal_handler)
71
- signal.signal(signal.SIGTERM, self._signal_handler)
72
-
73
- def _signal_handler(self, signum, frame):
74
- """Handle shutdown signals."""
75
- self.logger.info(f"Received signal {signum}, shutting down...")
76
- sys.exit(0)
77
-
78
- def setup(self):
79
- """
80
- Override this method to setup server tools, resources, and prompts.
81
-
82
- Example:
83
- def setup(self):
84
- @self.tool()
85
- def my_tool(arg: str) -> str:
86
- return f"Processed: {arg}"
87
- """
88
- pass
89
-
90
- def tool(self, name: Optional[str] = None, description: Optional[str] = None):
91
- """
92
- Decorator to register a tool with the MCP server.
93
-
94
- Args:
95
- name: Tool name (defaults to function name)
96
- description: Tool description (defaults to docstring)
97
-
98
- Returns:
99
- Decorator function
100
- """
101
-
102
- def decorator(func: Callable):
103
- tool_name = name or func.__name__
104
- tool_desc = description or (func.__doc__ or "").strip()
105
-
106
- # Register with MCP server
107
- @self.server.call_tool()
108
- async def handle_tool_call(name: str, arguments: dict) -> List[TextContent]:
109
- if name == tool_name:
110
- try:
111
- # Call the tool function
112
- if asyncio.iscoroutinefunction(func):
113
- result = await func(**arguments)
114
- else:
115
- result = func(**arguments)
116
-
117
- # Convert result to TextContent
118
- if isinstance(result, str):
119
- return [TextContent(type="text", text=result)]
120
- else:
121
- import json
122
-
123
- return [
124
- TextContent(
125
- type="text", text=json.dumps(result, indent=2)
126
- )
127
- ]
128
- except Exception as e:
129
- error_msg = f"Tool '{tool_name}' failed: {str(e)}"
130
- self.logger.error(error_msg, exc_info=True)
131
- return [TextContent(type="text", text=f"Error: {error_msg}")]
132
-
133
- raise ValueError(f"Unknown tool: {name}")
134
-
135
- # Store tool metadata
136
- self._tools[tool_name] = {
137
- "name": tool_name,
138
- "description": tool_desc,
139
- "function": func,
140
- }
141
-
142
- return func
143
-
144
- return decorator
145
-
146
- def resource(
147
- self, uri: str, name: Optional[str] = None, description: Optional[str] = None
148
- ):
149
- """
150
- Decorator to register a resource with the MCP server.
151
-
152
- Args:
153
- uri: Resource URI
154
- name: Resource name
155
- description: Resource description
156
-
157
- Returns:
158
- Decorator function
159
- """
160
-
161
- def decorator(func: Callable):
162
- resource_name = name or uri.split("/")[-1]
163
- resource_desc = description or (func.__doc__ or "").strip()
164
-
165
- # Store resource metadata
166
- self._resources[uri] = {
167
- "uri": uri,
168
- "name": resource_name,
169
- "description": resource_desc,
170
- "function": func,
171
- }
172
-
173
- return func
174
-
175
- return decorator
176
-
177
- def _setup_handlers(self):
178
- """Setup MCP protocol handlers."""
179
- if self._setup_done:
180
- return
181
-
182
- # Call user setup
183
- self.setup()
184
-
185
- # Register list_tools handler
186
- @self.server.list_tools()
187
- async def handle_list_tools() -> List[Tool]:
188
- tools = []
189
- for tool_name, tool_info in self._tools.items():
190
- # Generate input schema from function signature
191
- import inspect
192
-
193
- sig = inspect.signature(tool_info["function"])
194
-
195
- properties = {}
196
- required = []
197
-
198
- for param_name, param in sig.parameters.items():
199
- if param_name == "self":
200
- continue
201
-
202
- # Determine type
203
- param_type = "string" # Default
204
- if param.annotation != inspect.Parameter.empty:
205
- if param.annotation is int:
206
- param_type = "integer"
207
- elif param.annotation is float:
208
- param_type = "number"
209
- elif param.annotation is bool:
210
- param_type = "boolean"
211
- elif param.annotation is dict:
212
- param_type = "object"
213
- elif param.annotation is list:
214
- param_type = "array"
215
-
216
- properties[param_name] = {
217
- "type": param_type,
218
- "description": f"Parameter {param_name}",
219
- }
220
-
221
- if param.default == inspect.Parameter.empty:
222
- required.append(param_name)
223
-
224
- input_schema = {
225
- "type": "object",
226
- "properties": properties,
227
- "required": required,
228
- }
229
-
230
- tools.append(
231
- Tool(
232
- name=tool_name,
233
- description=tool_info["description"],
234
- inputSchema=input_schema,
235
- )
236
- )
237
-
238
- return tools
239
-
240
- # Register list_resources handler
241
- @self.server.list_resources()
242
- async def handle_list_resources() -> List[Resource]:
243
- resources = []
244
- for uri, resource_info in self._resources.items():
245
- resources.append(
246
- Resource(
247
- uri=uri,
248
- name=resource_info["name"],
249
- description=resource_info["description"],
250
- mimeType="text/plain", # Default, could be customized
251
- )
252
- )
253
- return resources
254
-
255
- # Register read_resource handler
256
- @self.server.read_resource()
257
- async def handle_read_resource(uri: str) -> List[TextContent]:
258
- if uri in self._resources:
259
- resource_info = self._resources[uri]
260
- func = resource_info["function"]
261
-
262
- try:
263
- # Call the resource function
264
- if asyncio.iscoroutinefunction(func):
265
- result = await func()
266
- else:
267
- result = func()
268
-
269
- # Convert result to TextContent
270
- if isinstance(result, str):
271
- return [TextContent(type="text", text=result)]
272
- else:
273
- import json
274
-
275
- return [
276
- TextContent(type="text", text=json.dumps(result, indent=2))
277
- ]
278
- except Exception as e:
279
- error_msg = f"Resource '{uri}' failed: {str(e)}"
280
- self.logger.error(error_msg, exc_info=True)
281
- return [TextContent(type="text", text=f"Error: {error_msg}")]
282
-
283
- raise ValueError(f"Resource not found: {uri}")
284
-
285
- self._setup_done = True
286
-
287
- def run(self):
288
- """
289
- Run the MCP server.
290
-
291
- This method blocks until the server is stopped.
292
- """
293
- self._setup_handlers()
294
-
295
- self.logger.info(f"Starting MCP server '{self.name}'")
296
-
297
- if self.port is not None:
298
- # HTTP/SSE transport
299
- self.logger.info(f"Server will listen on port {self.port}")
300
- # Note: Actual HTTP server implementation would go here
301
- # For now, we'll use stdio as the primary transport
302
-
303
- # Run with stdio transport
304
- import mcp.server.stdio
305
-
306
- # Configure server options
307
- init_options = InitializationOptions(
308
- server_name=self.name,
309
- server_version="1.0.0",
310
- capabilities=self.server.get_capabilities(),
311
- )
312
-
313
- # Run the server
314
- asyncio.run(
315
- mcp.server.stdio.stdio_server(self.server.request_handlers, init_options)
316
- )
317
-
318
- async def arun(self):
319
- """
320
- Async version of run().
321
-
322
- Use this if you need to run the server in an existing async context.
323
- """
324
- self._setup_handlers()
325
-
326
- self.logger.info(f"Starting MCP server '{self.name}' (async)")
327
-
328
- import mcp.server.stdio
329
-
330
- init_options = InitializationOptions(
331
- server_name=self.name,
332
- server_version="1.0.0",
333
- capabilities=self.server.get_capabilities(),
334
- )
335
-
336
- await mcp.server.stdio.stdio_server(self.server.request_handlers, init_options)
@@ -1,12 +0,0 @@
1
- """
2
- Pre-built MCP servers for common use cases.
3
-
4
- Available servers:
5
- - AIRegistryServer: Provides access to AI use case registry data
6
- - FileSystemServer: Provides access to local file system
7
- - DatabaseServer: Provides access to database resources
8
- """
9
-
10
- from .ai_registry import AIRegistryServer
11
-
12
- __all__ = ["AIRegistryServer"]
@@ -1,136 +0,0 @@
1
- kailash/__init__.py,sha256=bvM6Yopv0yxkaLCEHIK3IdJJ4yy3SSJqyIw1b6_nX_8,902
2
- kailash/__main__.py,sha256=vr7TVE5o16V6LsTmRFKG6RDKUXHpIWYdZ6Dok2HkHnI,198
3
- kailash/access_control.py,sha256=2ctdRFeSeu-d7DU04Aovxh6Rt_4t3IyQfkKEjTeQiMM,25519
4
- kailash/manifest.py,sha256=qzOmeMGWz20Sp4IJitSH9gTVbGng7hlimc96VTW4KI8,24814
5
- kailash/sdk_exceptions.py,sha256=dueSUxUYqKXmHS5mwl6QtEzP6a0rMGXcBFGCh5sT0tg,10179
6
- kailash/security.py,sha256=2hHb3Ag-jZ7UCvjUiX0JK2fBRaIhNFYpI3fN_JPPOgA,26455
7
- kailash/api/__init__.py,sha256=9Ofp4qTZCry_hovrtSjPjqyZbrccoPqyz9za_TfSHVg,445
8
- kailash/api/__main__.py,sha256=79v7N6eCFQ2Otcv66wAv2iM2hD6mwJ__pNiR9yy_qd4,120
9
- kailash/api/auth.py,sha256=SnEgCJ2AkFQORDiFHW4-DsMf2HZ4Ox2qfi1iL75wdG0,19913
10
- kailash/api/custom_nodes.py,sha256=ATCrfAgYJhspKmgTdpWgPrSHkea6YLHcjjvaL_zfuqk,10614
11
- kailash/api/custom_nodes_secure.py,sha256=2BVO2OvTmMXXB3ccLxTJck6k7p3W9rNmCb1rQeylxoA,13184
12
- kailash/api/database.py,sha256=XKHu9RrV56zUr9jid8usDlVv38HgUAduP7XY0qELKHI,19423
13
- kailash/api/gateway.py,sha256=kqdYvf77_xt87SIWO2paIll6e1pbdOdvXuLgUkKInG0,12536
14
- kailash/api/mcp_integration.py,sha256=xY5VjYXh4bFuNyyWBXEuTm4jjwUn8_9QxZpa4hh6a0Q,14521
15
- kailash/api/studio.py,sha256=F48J0dzqv48n_OiGPR7VGQk7KfH39yHNk9rQNM_-fJM,34888
16
- kailash/api/studio_secure.py,sha256=VuvvSOYDuwEqiCJbZkHaUETHOkVi83mLworjP4eLeEw,32201
17
- kailash/api/workflow_api.py,sha256=1Y8EfjqBJrs9rettbGHH_SifDi1c-cwibDk3GGG-NUo,13139
18
- kailash/cli/__init__.py,sha256=kJaqsBp3fRmagJhqA6LMwMbEa_Vkz93hIPH3W5Mn5r0,97
19
- kailash/cli/commands.py,sha256=lv1S1uB0JQE4tiQCJIa1HCbjYDbFE9KwcK3M1jRtRU4,18168
20
- kailash/mcp/__init__.py,sha256=jQHP7EVT126QXmi0TqR1mU3QNrUeEB4oIC4sD4B2a8c,1813
21
- kailash/mcp/__main__.py,sha256=ohgrksZZ8Z5IDZToH12IUVtW3dl5NtQ63UmprNzGFZ0,215
22
- kailash/mcp/ai_registry_server.py,sha256=9pOzJnJFpxJnZPfLo2QvVZ5yvAq5IRqzXPbQL1rL1ns,28104
23
- kailash/mcp/client.py,sha256=sTouSiuiu1nbahMXSWcP8-mr1k7cqdBCzSxm8G7le-s,16058
24
- kailash/mcp/client_new.py,sha256=YU671JvAM0uvuX0uhGZCIKI8co3fqz0cs6HqLZ59Xyo,10285
25
- kailash/mcp/server.py,sha256=aWU0DHj89FN_eEgH6aVjA05WjthugrXMHdPlgwJ6kZg,8246
26
- kailash/mcp/server_enhanced.py,sha256=lRIDSNs0c8urMq_SURwi7eBhTWKa-rq2FAB8xZf9CwI,14724
27
- kailash/mcp/server_new.py,sha256=GukeeVSNuJG99hYo0cQs-oiPhT8UUaxr9yl96NYClXc,10914
28
- kailash/mcp/servers/__init__.py,sha256=Ajho8j0chg36_DlMsyP6DLsvODgGesOvO0f95BgLxro,325
29
- kailash/mcp/servers/ai_registry.py,sha256=7k17ld0DUQYL476N5EbiNpPy8D0HqPRhrl8Wk1ajjj8,9992
30
- kailash/mcp/utils/__init__.py,sha256=R20N-iiKXUPxc9MOh6vPO1vIfkPmwhEQ5KNFgGd4xSs,771
31
- kailash/mcp/utils/cache.py,sha256=dLEseovPaXL4lRzMSw7tqd3tJHwnWfhdZ-HKGyScJXI,8414
32
- kailash/mcp/utils/config.py,sha256=DyZxgdy3vqI5pwhQ_E-42mhueVGNHiuOtTUOrM9HC_U,8124
33
- kailash/mcp/utils/formatters.py,sha256=D-2j1nvmprApiUI13HWY-L2_WPSAcJDtVdHcshAuOdo,9740
34
- kailash/mcp/utils/metrics.py,sha256=MNUjWGQyq1EGdeqzAKCCZJNgcWHOyaYAV8MlS2cb-4k,13754
35
- kailash/nodes/__init__.py,sha256=MO2N1k-lq68CuQvsWiYV2GQG0T15X41E1aRkLFL46kU,650
36
- kailash/nodes/base.py,sha256=uKhpaLo5RiVS4Re1L6dxPGFC9AP0hnqrgSHeGVvf6Kw,38153
37
- kailash/nodes/base_async.py,sha256=cjp0tedoxvwqr9fdC385vqInb3WTR0Wcx3ecLxhHiY0,6593
38
- kailash/nodes/base_cycle_aware.py,sha256=fKndnGKSuYcwIs_84ueHTV9n8-jwxrh9b04V2pb912I,13287
39
- kailash/nodes/base_with_acl.py,sha256=3UpRaYOHsGVQsbDwz0oj4yGDRjOfi3nIV7nf3StCW-s,11838
40
- kailash/nodes/mixins.py,sha256=ncAdNQPe1sphLByeerP6G_s8mjFLt7dM4baiozzIBPA,12083
41
- kailash/nodes/ai/__init__.py,sha256=rslxIS8jlovshiNgWqVzQjD_kfT_3h3Ct03sk-iRe6U,2202
42
- kailash/nodes/ai/a2a.py,sha256=X8abbpOsi_DQOYtl8X0mJYmY77pBKaDR9LimO9C6cNI,69313
43
- kailash/nodes/ai/agents.py,sha256=CRA3cdapQjpuvOniXUh6ZVWAlRxUIepVw1BROW6QzdY,20373
44
- kailash/nodes/ai/ai_providers.py,sha256=uWoeqPBh7agEOjb7nMvs9PXkxKmC1EXy7p4pvlAYBBU,52974
45
- kailash/nodes/ai/embedding_generator.py,sha256=jmmjNIej5NyZuKc_P5GkIQ7K--1vauw4SyN4Qbrr0PI,31823
46
- kailash/nodes/ai/intelligent_agent_orchestrator.py,sha256=5y2V1zexPxZycdhYvgWbG_iPvPOybDwZqP6Gl2l4aYQ,80234
47
- kailash/nodes/ai/iterative_llm_agent.py,sha256=pv54W_YDfDPDl6DJf0ul9_rs2mL2kE_C59sSAJ4CRn8,52884
48
- kailash/nodes/ai/llm_agent.py,sha256=vhOosoJVpJXqGLTUeQKyJ3aJPkvRJzo2xHtwYndFC64,60739
49
- kailash/nodes/ai/models.py,sha256=wsEeUTuegy87mnLtKgSTg7ggCXvC1n3MsL-iZ4qujHs,16393
50
- kailash/nodes/ai/self_organizing.py,sha256=lh2bzJQjCzyay5bOfgcr63kIcvcHzGLiRrOyY1Eiz-4,60567
51
- kailash/nodes/api/__init__.py,sha256=dzK6kiAdJcTQa7NSBkSmd5CCTSefBlMZMewGlTJSr0c,2334
52
- kailash/nodes/api/auth.py,sha256=sZJjsIooV-nx3mNImdDu2Q3nE4aRXYhQqMTMxIgvGGk,19421
53
- kailash/nodes/api/graphql.py,sha256=6UBqWBbAysrerrx9lQMwwRM6mZT4-65ZINPhC_ObWmA,16975
54
- kailash/nodes/api/http.py,sha256=LOWT4fIv4Qs7yCjmnahQK2H7ABrCNdMZiZSrCjKr00Y,38345
55
- kailash/nodes/api/monitoring.py,sha256=vV0nLPyqw34YgsZvuegxNMSLyHU59pMdnzkdXelPYFc,17468
56
- kailash/nodes/api/rate_limiting.py,sha256=kzArU7OrkDGLSqbjiOs5TSZz4VJsLeQYuYzOzwkfqSI,19657
57
- kailash/nodes/api/rest.py,sha256=cDNcdyqbk_q51ayAITDJ2GKFG9P5mmp9iLWfDukLaUE,43320
58
- kailash/nodes/api/security.py,sha256=VxMl5p7jWF2ViAqzHTFkte6agUiS9QEiQztV9l9PzDk,31134
59
- kailash/nodes/code/__init__.py,sha256=L3QBfnITPb6v-Wbq2ezNWt8xDlC4uGaTgrkqIJ9vGKU,1191
60
- kailash/nodes/code/python.py,sha256=u7ds-h-WneecVXZ8Kk_s7tiUpy9LJXJLe5znCiI3bZo,39343
61
- kailash/nodes/data/__init__.py,sha256=doke_AW6pax3rONERFPgYv0EGJUcSBq40d-P9Bty0OM,4389
62
- kailash/nodes/data/directory.py,sha256=fbfLqD_ijRubk-4xew3604QntPsyDxqaF4k6TpfyjDg,9923
63
- kailash/nodes/data/event_generation.py,sha256=Bc1se0tPg1IAGCQDrWqlFmgoOpUyfMN9ku4Lm3akhXU,11579
64
- kailash/nodes/data/file_discovery.py,sha256=njLLusndwBFwbaWP8rcaiE0UQ49RpDlNQ-3SXH7Jhi4,21733
65
- kailash/nodes/data/readers.py,sha256=jktXMtUHRH02ZQkYYzkaW-FFeTm__ZXGk4uKd0wspX8,19383
66
- kailash/nodes/data/retrieval.py,sha256=6_r4Y8gOFzRK4AWhf1P0OCAFNKp-LKnQIT7PZwLCDPM,7518
67
- kailash/nodes/data/sharepoint_graph.py,sha256=75qY4HSN8IfddHdlLdsZe-DFMs3CSLV20sH9eLPRAG8,22412
68
- kailash/nodes/data/sources.py,sha256=tvgDDDerWELD6QkAm73ciKmNakD_SYMd50idlOjpbF0,3632
69
- kailash/nodes/data/sql.py,sha256=kJRBTha2ogttYw7G8ukvWSCSkDfHt4g-h0DY0XQr_OQ,30431
70
- kailash/nodes/data/streaming.py,sha256=ETBVbV9d-kmGHKmTdyyxM4FRb4xuDnZFY43dVkx5aDw,35211
71
- kailash/nodes/data/vector_db.py,sha256=xTwifnXv8YGOzNXIN0asxyN-eC6MSHlfisqCp1KwioI,30544
72
- kailash/nodes/data/writers.py,sha256=-RPLetKhKAPXOU6YPwMkVRXF8by6ROhgICm3aUnGcFs,17537
73
- kailash/nodes/logic/__init__.py,sha256=JKGFXwBDfY3s1MWQkx3ivdvCMm3b3HIXCn-wH9uMoG4,603
74
- kailash/nodes/logic/async_operations.py,sha256=HJ1YULrh5U8WNYbuwTthmMfqBh1xomVQcSEe3gt8rYA,27501
75
- kailash/nodes/logic/convergence.py,sha256=gWFcKCCwENPlSzyFgLN3i3WF0lhu4RhQejVepGiozBE,24182
76
- kailash/nodes/logic/loop.py,sha256=34hnrcfeigcpsVcomsd-ZLE2x7f3irAd_-Q89vZzW9w,5756
77
- kailash/nodes/logic/operations.py,sha256=RY1CuR6qzjZU6Hk_GSjMYDKBfluonfyLIWnLujDEyCg,28181
78
- kailash/nodes/logic/workflow.py,sha256=p2ED6tOWGVC50iNyUInSpJI41eBXmSF8Tb_w0h7NeD0,17136
79
- kailash/nodes/mixins/__init__.py,sha256=AUYcxnBTLZCc_RHFsfcwLYa88yW3pyQHJqfMdcZV-pE,263
80
- kailash/nodes/mixins/mcp.py,sha256=tcsB80teGZgryMEcyrNQhVZkjB4Bzyiinbn8sQuvqTg,6825
81
- kailash/nodes/transform/__init__.py,sha256=sIUk7XMEl3x_XKNiRIyVtHmbLRUa0jHj1fEuUyELT_s,584
82
- kailash/nodes/transform/chunkers.py,sha256=c6pf8yZOGtpHFayYWbhCijrVyMLIjT5rSmtOfcnoH9c,2574
83
- kailash/nodes/transform/formatters.py,sha256=BWb5depTZ23Bbg41A_nZojIeET7in6WxYvi3Bhjg-bk,3072
84
- kailash/nodes/transform/processors.py,sha256=ShX2PYT1UIjeMlkHCi6hmcYRo0qHp5R9H1PIG5M3g9w,19900
85
- kailash/runtime/__init__.py,sha256=CvU-qBMESYYISqFOlYlLsYJrXJu0Gqr4x6yr4Ob_Rng,278
86
- kailash/runtime/access_controlled.py,sha256=uMf2QrzsepxnVrt22QLH7Rgkrukh4XR2eNtlisSODmI,17215
87
- kailash/runtime/async_local.py,sha256=l7QU2bpcsfc63OqtPAqPduN59AREVcMQbh7M0wracxk,12134
88
- kailash/runtime/docker.py,sha256=FaLjlMTuYkLIvR8Fs8MjdkhpqFifPG0qzAQ3-VLFJZk,23496
89
- kailash/runtime/local.py,sha256=1-_kTVy5ZcO8S8kHxPq0hhIPXP9MhcFp50Zp7TtZGGo,20891
90
- kailash/runtime/parallel.py,sha256=hmnApopWoqRAaXnucFgvuzRUw6FSW297sShKrSPsNBI,21066
91
- kailash/runtime/parallel_cyclic.py,sha256=t_ArS1tdlc6gzEnsVwOf8KT6Z3tk9CfqOPuhr9HkKkI,19859
92
- kailash/runtime/runner.py,sha256=Lt9ugsk56ICD9XLKJjnhejtqdiz0mJNdlqH7sSxIlWU,3214
93
- kailash/runtime/testing.py,sha256=CTEGwEqhZ5muhzoLnik7Wlue_EHwe5EQdJgIaxsLk4s,11513
94
- kailash/tracking/__init__.py,sha256=nhyecV24JuB_D-veJ3qw7h4oO8Sbdmyb6RvPS6VQktU,305
95
- kailash/tracking/manager.py,sha256=OxDgvuObiLLcje7-DF5DRIqi8f5clzvrlean1RrL9KE,28006
96
- kailash/tracking/metrics_collector.py,sha256=rvKvm2BzhAwdFazJpEQ87j78AMVDSehoScZK4Tfm3O8,11798
97
- kailash/tracking/models.py,sha256=9Fwcd1hqRwlAsU88FFMJsqNn2GlkJaUxmynnS2aFhdY,17912
98
- kailash/tracking/storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
99
- kailash/tracking/storage/base.py,sha256=wWkK1XdrMV0EGxlbFDyfuVnDoIG0tdSPPwz_8iwzdNI,2299
100
- kailash/tracking/storage/database.py,sha256=O3-qYmgwTccq9jYl25C0L6R398pXPsWkIAoWLL1aZvQ,20048
101
- kailash/tracking/storage/filesystem.py,sha256=VhWxNvqf_Ta3mIaGqKuOrcCqQiEvJj7S8NK5yRd1V68,19627
102
- kailash/utils/__init__.py,sha256=pFKhHJxU_kyFE9aGT5recw5E-3nbfVF5pMHepBJWB2E,253
103
- kailash/utils/export.py,sha256=HViwFBtg20VnGBC9gQjHcnu44wQ1u2vOZMXR8EtfGvw,31913
104
- kailash/utils/templates.py,sha256=1O9mniUTJmZZFkC1gFaWy73pDIZxcawljDIQpPj6G9Q,21977
105
- kailash/visualization/__init__.py,sha256=6bvgE_Rt8z3Rf4kSvdWvZNaTYvbofRHc_QbGlC0xDYE,1880
106
- kailash/visualization/api.py,sha256=AavUemsir_tCQgU-YZxo9RyrZJP5g__RCaE7B8_eJIc,28755
107
- kailash/visualization/dashboard.py,sha256=26uL82scgQEhOhqDTyZ-UJr9rNkW9pLw_iJ9bIu3GSs,32806
108
- kailash/visualization/performance.py,sha256=KvB7IG8Un2sM1ZnT1TWOabwj4kK40DlCWUN33Mb89nk,28514
109
- kailash/visualization/reports.py,sha256=D7kJ0flHr16d-qSEq8vnw20N8u_dgTrXtKVSXVm886w,52778
110
- kailash/workflow/__init__.py,sha256=x-yL8h6tsXq5gZj_fVYKJhyYJOEMFbaVXTNIomE-CDo,1011
111
- kailash/workflow/builder.py,sha256=KZkg0gxreBB4axgHWlYxn11u6u5QdQpeCuyR6yhoeBw,7652
112
- kailash/workflow/convergence.py,sha256=vfIDR-uNaQE-LVUEzrRtfgKPgX9gL0nLNH-nTg5ra-c,10031
113
- kailash/workflow/cycle_analyzer.py,sha256=BGBpgdB-g0-KRI65sVAvHV4lxfoCzMt4uKOHbw8GXT4,32596
114
- kailash/workflow/cycle_builder.py,sha256=uWAx8K4ZKMtFC3mWylK4gHT03xeu0xChJlhw50hVqEE,20883
115
- kailash/workflow/cycle_config.py,sha256=DSoQMFH_dqjYbJU5PegCsmswjdlb0f-4XhNKUtFp6PM,28388
116
- kailash/workflow/cycle_debugger.py,sha256=eG-Q_kakqyhr1Ts-q4pRnO0EI7mVO9ao1s9WOxeXo8E,31535
117
- kailash/workflow/cycle_exceptions.py,sha256=4_OLnbEXqIiXKzOc3uh8DzFik4wEHwl8bRZhY9Xhf2A,21838
118
- kailash/workflow/cycle_profiler.py,sha256=aEWSCm0Xy15SjgLTpPooVJMzpFhtJWt4livR-3Me4N8,28547
119
- kailash/workflow/cycle_state.py,sha256=hzRUvciRreWfS56Cf7ZLQPit_mlPTQDoNTawh8yi-2s,10747
120
- kailash/workflow/cyclic_runner.py,sha256=r17cyXVXIL4A1gCMRCODz0Hxz7WWGhk13zNxOCr3cUY,37117
121
- kailash/workflow/graph.py,sha256=5OUwx9AP9UwqJqbxzKPm5OZU3CmKC1lKZAj4PilBbOQ,52994
122
- kailash/workflow/mermaid_visualizer.py,sha256=UsQDvxgIAhy-Th7ZzFnbuziaTx1Cd5yUh6S_25DffoQ,22294
123
- kailash/workflow/migration.py,sha256=zsmXgbUtOZdjoOx9YoEY0-x7uOY1T-_yQo4MnZjokCQ,31487
124
- kailash/workflow/mock_registry.py,sha256=J4gyH8YdhRyhvORDVxGTya0FgDK8iAA8Nonur6p9s-o,1692
125
- kailash/workflow/runner.py,sha256=l6jb-H7DwbRlvQ3H3SuTs70rut-u7H3Gi8nybKCEjZU,10795
126
- kailash/workflow/safety.py,sha256=pS5GKu7UdkzFZcb16Dn-0jBxjULDU-59_M0CbUVMVyw,11298
127
- kailash/workflow/state.py,sha256=UTZxs5-Ona6uvBhx1__i6-RX8gB4qazkBIWE7uyRmWQ,7600
128
- kailash/workflow/templates.py,sha256=lOFd3zKrHvcjOQ7ZGlp09XzMrIJPQ7XfwyX9ndF7CAk,24337
129
- kailash/workflow/validation.py,sha256=JIbIajWVIaWHSvWtgZ4WUVJaBaUOCz5B9cyTwM--dL4,33060
130
- kailash/workflow/visualization.py,sha256=ICMWCWqh5fOQ7eJygbvu2PMWHxe-H5_0epwdZuz8cMw,19737
131
- kailash-0.3.2.dist-info/licenses/LICENSE,sha256=Axe6g7bTrJkToK9h9j2SpRUKKNaDZDCo2lQ2zPxCE6s,1065
132
- kailash-0.3.2.dist-info/METADATA,sha256=SZ5Zk7CfTGXO7QuJudo-Nf9D12tnW984niCgnqvyTzk,16312
133
- kailash-0.3.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
134
- kailash-0.3.2.dist-info/entry_points.txt,sha256=M_q3b8PG5W4XbhSgESzIJjh3_4OBKtZFYFsOdkr2vO4,45
135
- kailash-0.3.2.dist-info/top_level.txt,sha256=z7GzH2mxl66498pVf5HKwo5wwfPtt9Aq95uZUpH6JV0,8
136
- kailash-0.3.2.dist-info/RECORD,,