kailash 0.3.1__py3-none-any.whl → 0.4.0__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.
- kailash/__init__.py +33 -1
- kailash/access_control/__init__.py +129 -0
- kailash/access_control/managers.py +461 -0
- kailash/access_control/rule_evaluators.py +467 -0
- kailash/access_control_abac.py +825 -0
- kailash/config/__init__.py +27 -0
- kailash/config/database_config.py +359 -0
- kailash/database/__init__.py +28 -0
- kailash/database/execution_pipeline.py +499 -0
- kailash/middleware/__init__.py +306 -0
- kailash/middleware/auth/__init__.py +33 -0
- kailash/middleware/auth/access_control.py +436 -0
- kailash/middleware/auth/auth_manager.py +422 -0
- kailash/middleware/auth/jwt_auth.py +477 -0
- kailash/middleware/auth/kailash_jwt_auth.py +616 -0
- kailash/middleware/communication/__init__.py +37 -0
- kailash/middleware/communication/ai_chat.py +989 -0
- kailash/middleware/communication/api_gateway.py +802 -0
- kailash/middleware/communication/events.py +470 -0
- kailash/middleware/communication/realtime.py +710 -0
- kailash/middleware/core/__init__.py +21 -0
- kailash/middleware/core/agent_ui.py +890 -0
- kailash/middleware/core/schema.py +643 -0
- kailash/middleware/core/workflows.py +396 -0
- kailash/middleware/database/__init__.py +63 -0
- kailash/middleware/database/base.py +113 -0
- kailash/middleware/database/base_models.py +525 -0
- kailash/middleware/database/enums.py +106 -0
- kailash/middleware/database/migrations.py +12 -0
- kailash/{api/database.py → middleware/database/models.py} +183 -291
- kailash/middleware/database/repositories.py +685 -0
- kailash/middleware/database/session_manager.py +19 -0
- kailash/middleware/mcp/__init__.py +38 -0
- kailash/middleware/mcp/client_integration.py +585 -0
- kailash/middleware/mcp/enhanced_server.py +576 -0
- kailash/nodes/__init__.py +25 -3
- kailash/nodes/admin/__init__.py +35 -0
- kailash/nodes/admin/audit_log.py +794 -0
- kailash/nodes/admin/permission_check.py +864 -0
- kailash/nodes/admin/role_management.py +823 -0
- kailash/nodes/admin/security_event.py +1519 -0
- kailash/nodes/admin/user_management.py +944 -0
- kailash/nodes/ai/a2a.py +24 -7
- kailash/nodes/ai/ai_providers.py +1 -0
- kailash/nodes/ai/embedding_generator.py +11 -11
- kailash/nodes/ai/intelligent_agent_orchestrator.py +99 -11
- kailash/nodes/ai/llm_agent.py +407 -2
- kailash/nodes/ai/self_organizing.py +85 -10
- kailash/nodes/api/auth.py +287 -6
- kailash/nodes/api/rest.py +151 -0
- kailash/nodes/auth/__init__.py +17 -0
- kailash/nodes/auth/directory_integration.py +1228 -0
- kailash/nodes/auth/enterprise_auth_provider.py +1328 -0
- kailash/nodes/auth/mfa.py +2338 -0
- kailash/nodes/auth/risk_assessment.py +872 -0
- kailash/nodes/auth/session_management.py +1093 -0
- kailash/nodes/auth/sso.py +1040 -0
- kailash/nodes/base.py +344 -13
- kailash/nodes/base_cycle_aware.py +4 -2
- kailash/nodes/base_with_acl.py +1 -1
- kailash/nodes/code/python.py +293 -12
- kailash/nodes/compliance/__init__.py +9 -0
- kailash/nodes/compliance/data_retention.py +1888 -0
- kailash/nodes/compliance/gdpr.py +2004 -0
- kailash/nodes/data/__init__.py +22 -2
- kailash/nodes/data/async_connection.py +469 -0
- kailash/nodes/data/async_sql.py +757 -0
- kailash/nodes/data/async_vector.py +598 -0
- kailash/nodes/data/readers.py +767 -0
- kailash/nodes/data/retrieval.py +360 -1
- kailash/nodes/data/sharepoint_graph.py +397 -21
- kailash/nodes/data/sql.py +94 -5
- kailash/nodes/data/streaming.py +68 -8
- kailash/nodes/data/vector_db.py +54 -4
- kailash/nodes/enterprise/__init__.py +13 -0
- kailash/nodes/enterprise/batch_processor.py +741 -0
- kailash/nodes/enterprise/data_lineage.py +497 -0
- kailash/nodes/logic/convergence.py +31 -9
- kailash/nodes/logic/operations.py +14 -3
- kailash/nodes/mixins/__init__.py +8 -0
- kailash/nodes/mixins/event_emitter.py +201 -0
- kailash/nodes/mixins/mcp.py +9 -4
- kailash/nodes/mixins/security.py +165 -0
- kailash/nodes/monitoring/__init__.py +7 -0
- kailash/nodes/monitoring/performance_benchmark.py +2497 -0
- kailash/nodes/rag/__init__.py +284 -0
- kailash/nodes/rag/advanced.py +1615 -0
- kailash/nodes/rag/agentic.py +773 -0
- kailash/nodes/rag/conversational.py +999 -0
- kailash/nodes/rag/evaluation.py +875 -0
- kailash/nodes/rag/federated.py +1188 -0
- kailash/nodes/rag/graph.py +721 -0
- kailash/nodes/rag/multimodal.py +671 -0
- kailash/nodes/rag/optimized.py +933 -0
- kailash/nodes/rag/privacy.py +1059 -0
- kailash/nodes/rag/query_processing.py +1335 -0
- kailash/nodes/rag/realtime.py +764 -0
- kailash/nodes/rag/registry.py +547 -0
- kailash/nodes/rag/router.py +837 -0
- kailash/nodes/rag/similarity.py +1854 -0
- kailash/nodes/rag/strategies.py +566 -0
- kailash/nodes/rag/workflows.py +575 -0
- kailash/nodes/security/__init__.py +19 -0
- kailash/nodes/security/abac_evaluator.py +1411 -0
- kailash/nodes/security/audit_log.py +91 -0
- kailash/nodes/security/behavior_analysis.py +1893 -0
- kailash/nodes/security/credential_manager.py +401 -0
- kailash/nodes/security/rotating_credentials.py +760 -0
- kailash/nodes/security/security_event.py +132 -0
- kailash/nodes/security/threat_detection.py +1103 -0
- kailash/nodes/testing/__init__.py +9 -0
- kailash/nodes/testing/credential_testing.py +499 -0
- kailash/nodes/transform/__init__.py +10 -2
- kailash/nodes/transform/chunkers.py +592 -1
- kailash/nodes/transform/processors.py +484 -14
- kailash/nodes/validation.py +321 -0
- kailash/runtime/access_controlled.py +1 -1
- kailash/runtime/async_local.py +41 -7
- kailash/runtime/docker.py +1 -1
- kailash/runtime/local.py +474 -55
- kailash/runtime/parallel.py +1 -1
- kailash/runtime/parallel_cyclic.py +1 -1
- kailash/runtime/testing.py +210 -2
- kailash/utils/migrations/__init__.py +25 -0
- kailash/utils/migrations/generator.py +433 -0
- kailash/utils/migrations/models.py +231 -0
- kailash/utils/migrations/runner.py +489 -0
- kailash/utils/secure_logging.py +342 -0
- kailash/workflow/__init__.py +16 -0
- kailash/workflow/cyclic_runner.py +3 -4
- kailash/workflow/graph.py +70 -2
- kailash/workflow/resilience.py +249 -0
- kailash/workflow/templates.py +726 -0
- {kailash-0.3.1.dist-info → kailash-0.4.0.dist-info}/METADATA +253 -20
- kailash-0.4.0.dist-info/RECORD +223 -0
- kailash/api/__init__.py +0 -17
- kailash/api/__main__.py +0 -6
- kailash/api/studio_secure.py +0 -893
- kailash/mcp/__main__.py +0 -13
- kailash/mcp/server_new.py +0 -336
- kailash/mcp/servers/__init__.py +0 -12
- kailash-0.3.1.dist-info/RECORD +0 -136
- {kailash-0.3.1.dist-info → kailash-0.4.0.dist-info}/WHEEL +0 -0
- {kailash-0.3.1.dist-info → kailash-0.4.0.dist-info}/entry_points.txt +0 -0
- {kailash-0.3.1.dist-info → kailash-0.4.0.dist-info}/licenses/LICENSE +0 -0
- {kailash-0.3.1.dist-info → kailash-0.4.0.dist-info}/top_level.txt +0 -0
kailash/mcp/__main__.py
DELETED
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)
|
kailash/mcp/servers/__init__.py
DELETED
@@ -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"]
|
kailash-0.3.1.dist-info/RECORD
DELETED
@@ -1,136 +0,0 @@
|
|
1
|
-
kailash/__init__.py,sha256=feTQzaHIVSbkvS6YBiOB4b0AviNhgZpkyeoiDNGRvDg,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=FE4J4pTLTIeSgsKatXCJVOqHaZHBv84dVVE-BYFF-jU,38881
|
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.1.dist-info/licenses/LICENSE,sha256=Axe6g7bTrJkToK9h9j2SpRUKKNaDZDCo2lQ2zPxCE6s,1065
|
132
|
-
kailash-0.3.1.dist-info/METADATA,sha256=6BxwT19uLMdTZ1x57ce2RMLa_IMGqkLrPkzu51Yj5Mw,16312
|
133
|
-
kailash-0.3.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
134
|
-
kailash-0.3.1.dist-info/entry_points.txt,sha256=M_q3b8PG5W4XbhSgESzIJjh3_4OBKtZFYFsOdkr2vO4,45
|
135
|
-
kailash-0.3.1.dist-info/top_level.txt,sha256=z7GzH2mxl66498pVf5HKwo5wwfPtt9Aq95uZUpH6JV0,8
|
136
|
-
kailash-0.3.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|