kailash 0.8.4__py3-none-any.whl → 0.8.5__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 +1 -7
- kailash/cli/__init__.py +11 -1
- kailash/cli/validation_audit.py +570 -0
- kailash/core/actors/supervisor.py +1 -1
- kailash/core/resilience/circuit_breaker.py +71 -1
- kailash/core/resilience/health_monitor.py +172 -0
- kailash/edge/compliance.py +33 -0
- kailash/edge/consistency.py +609 -0
- kailash/edge/coordination/__init__.py +30 -0
- kailash/edge/coordination/global_ordering.py +355 -0
- kailash/edge/coordination/leader_election.py +217 -0
- kailash/edge/coordination/partition_detector.py +296 -0
- kailash/edge/coordination/raft.py +485 -0
- kailash/edge/discovery.py +63 -1
- kailash/edge/migration/__init__.py +19 -0
- kailash/edge/migration/edge_migrator.py +832 -0
- kailash/edge/monitoring/__init__.py +21 -0
- kailash/edge/monitoring/edge_monitor.py +736 -0
- kailash/edge/prediction/__init__.py +10 -0
- kailash/edge/prediction/predictive_warmer.py +591 -0
- kailash/edge/resource/__init__.py +102 -0
- kailash/edge/resource/cloud_integration.py +796 -0
- kailash/edge/resource/cost_optimizer.py +949 -0
- kailash/edge/resource/docker_integration.py +919 -0
- kailash/edge/resource/kubernetes_integration.py +893 -0
- kailash/edge/resource/platform_integration.py +913 -0
- kailash/edge/resource/predictive_scaler.py +959 -0
- kailash/edge/resource/resource_analyzer.py +824 -0
- kailash/edge/resource/resource_pools.py +610 -0
- kailash/integrations/dataflow_edge.py +261 -0
- kailash/mcp_server/registry_integration.py +1 -1
- kailash/monitoring/__init__.py +18 -0
- kailash/monitoring/alerts.py +646 -0
- kailash/monitoring/metrics.py +677 -0
- kailash/nodes/__init__.py +2 -0
- kailash/nodes/ai/semantic_memory.py +2 -2
- kailash/nodes/base.py +545 -0
- kailash/nodes/edge/__init__.py +36 -0
- kailash/nodes/edge/base.py +240 -0
- kailash/nodes/edge/cloud_node.py +710 -0
- kailash/nodes/edge/coordination.py +239 -0
- kailash/nodes/edge/docker_node.py +825 -0
- kailash/nodes/edge/edge_data.py +582 -0
- kailash/nodes/edge/edge_migration_node.py +392 -0
- kailash/nodes/edge/edge_monitoring_node.py +421 -0
- kailash/nodes/edge/edge_state.py +673 -0
- kailash/nodes/edge/edge_warming_node.py +393 -0
- kailash/nodes/edge/kubernetes_node.py +652 -0
- kailash/nodes/edge/platform_node.py +766 -0
- kailash/nodes/edge/resource_analyzer_node.py +378 -0
- kailash/nodes/edge/resource_optimizer_node.py +501 -0
- kailash/nodes/edge/resource_scaler_node.py +397 -0
- kailash/nodes/ports.py +676 -0
- kailash/runtime/local.py +344 -1
- kailash/runtime/validation/__init__.py +20 -0
- kailash/runtime/validation/connection_context.py +119 -0
- kailash/runtime/validation/enhanced_error_formatter.py +202 -0
- kailash/runtime/validation/error_categorizer.py +164 -0
- kailash/runtime/validation/metrics.py +380 -0
- kailash/runtime/validation/performance.py +615 -0
- kailash/runtime/validation/suggestion_engine.py +212 -0
- kailash/testing/fixtures.py +2 -2
- kailash/workflow/builder.py +230 -4
- kailash/workflow/contracts.py +418 -0
- kailash/workflow/edge_infrastructure.py +369 -0
- kailash/workflow/migration.py +3 -3
- kailash/workflow/type_inference.py +669 -0
- {kailash-0.8.4.dist-info → kailash-0.8.5.dist-info}/METADATA +43 -27
- {kailash-0.8.4.dist-info → kailash-0.8.5.dist-info}/RECORD +73 -27
- kailash/nexus/__init__.py +0 -21
- kailash/nexus/cli/__init__.py +0 -5
- kailash/nexus/cli/__main__.py +0 -6
- kailash/nexus/cli/main.py +0 -176
- kailash/nexus/factory.py +0 -413
- kailash/nexus/gateway.py +0 -545
- {kailash-0.8.4.dist-info → kailash-0.8.5.dist-info}/WHEEL +0 -0
- {kailash-0.8.4.dist-info → kailash-0.8.5.dist-info}/entry_points.txt +0 -0
- {kailash-0.8.4.dist-info → kailash-0.8.5.dist-info}/licenses/LICENSE +0 -0
- {kailash-0.8.4.dist-info → kailash-0.8.5.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: kailash
|
3
|
-
Version: 0.8.
|
3
|
+
Version: 0.8.5
|
4
4
|
Summary: Python SDK for the Kailash container-node architecture
|
5
5
|
Home-page: https://github.com/integrum/kailash-python-sdk
|
6
6
|
Author: Integrum
|
@@ -116,17 +116,18 @@ Dynamic: requires-python
|
|
116
116
|
|
117
117
|
---
|
118
118
|
|
119
|
-
## 🔥 Latest Release: v0.8.
|
119
|
+
## 🔥 Latest Release: v0.8.4 (January 19, 2025)
|
120
120
|
|
121
|
-
**
|
121
|
+
**A2A Google Protocol Enhancement**
|
122
122
|
|
123
|
-
-
|
124
|
-
-
|
125
|
-
-
|
126
|
-
-
|
127
|
-
-
|
123
|
+
- 🤖 **Advanced Agent Coordination**: A2ACoordinatorNode with Google Protocol best practices
|
124
|
+
- 🎯 **Intelligent Task Delegation**: Context-aware task distribution with skill-based matching
|
125
|
+
- 🔍 **Hybrid Search Capabilities**: Multi-strategy agent discovery and matching algorithms
|
126
|
+
- 🧠 **Semantic Memory System**: Long-term memory management for agent interactions
|
127
|
+
- 📊 **Real-time Analytics**: Streaming performance monitoring for A2A workflows
|
128
|
+
- ✅ **Backward Compatible**: Seamless integration with existing A2A implementations
|
128
129
|
|
129
|
-
[Full Changelog](
|
130
|
+
[Full Changelog](CHANGELOG.md) | [PyPI Packages](https://pypi.org/project/kailash/0.8.4/)
|
130
131
|
|
131
132
|
## 🎯 What Makes Kailash Different
|
132
133
|
|
@@ -145,10 +146,12 @@ Not just a toolkit - complete production-ready applications built on enterprise-
|
|
145
146
|
- **100% test pass rate** across 2,400+ tests
|
146
147
|
|
147
148
|
### 🤖 **AI-First Architecture**
|
149
|
+
- **A2A Google Protocol** for enterprise multi-agent coordination
|
148
150
|
- **Real MCP execution** by default for all AI agents
|
149
151
|
- **47+ specialized RAG nodes** for document processing
|
150
|
-
- **
|
151
|
-
- **
|
152
|
+
- **Semantic memory systems** with context-aware retrieval
|
153
|
+
- **Hybrid search algorithms** for intelligent agent discovery
|
154
|
+
- **Self-organizing agent pools** with advanced coordination patterns
|
152
155
|
|
153
156
|
## 🏗️ Project Architecture
|
154
157
|
|
@@ -246,31 +249,32 @@ app.start()
|
|
246
249
|
# - MCP: AI agents can call process_data tool
|
247
250
|
```
|
248
251
|
|
249
|
-
###
|
252
|
+
### A2A Multi-Agent Coordination
|
250
253
|
|
251
254
|
```python
|
252
255
|
from kailash.workflow.builder import WorkflowBuilder
|
253
256
|
from kailash.runtime.local import LocalRuntime
|
254
257
|
|
255
|
-
# Build
|
258
|
+
# Build A2A coordination workflow
|
256
259
|
workflow = WorkflowBuilder()
|
257
|
-
workflow.add_node("
|
258
|
-
"
|
259
|
-
"
|
260
|
+
workflow.add_node("A2ACoordinatorNode", "coordinator", {
|
261
|
+
"use_google_protocol": True,
|
262
|
+
"enable_semantic_memory": True,
|
263
|
+
"delegation_strategy": "skill_based"
|
264
|
+
})
|
265
|
+
workflow.add_node("HybridSearchNode", "discovery", {
|
266
|
+
"strategies": ["semantic", "keyword", "skill_based"],
|
267
|
+
"adaptive_optimization": True
|
260
268
|
})
|
261
|
-
workflow.add_node("
|
262
|
-
"
|
263
|
-
"
|
264
|
-
"
|
269
|
+
workflow.add_node("SemanticMemoryNode", "memory", {
|
270
|
+
"embedding_provider": "openai",
|
271
|
+
"memory_type": "long_term",
|
272
|
+
"context_window": 8192
|
265
273
|
})
|
266
274
|
|
267
|
-
#
|
268
|
-
|
269
|
-
|
270
|
-
.connect("evaluator", "processor") \
|
271
|
-
.max_iterations(50) \
|
272
|
-
.converge_when("quality > 0.95") \
|
273
|
-
.build()
|
275
|
+
# Connect for intelligent agent coordination
|
276
|
+
workflow.add_connection("coordinator", "discovery", "agent_request", "search_query")
|
277
|
+
workflow.add_connection("discovery", "memory", "agent_matches", "context")
|
274
278
|
|
275
279
|
# Execute with enterprise monitoring
|
276
280
|
runtime = LocalRuntime()
|
@@ -309,12 +313,16 @@ results, run_id = runtime.execute(workflow.build())
|
|
309
313
|
### Core Categories
|
310
314
|
- **Data Nodes**: CSVReaderNode, AsyncSQLDatabaseNode, QueryBuilderNode, QueryCacheNode
|
311
315
|
- **AI Nodes**: LLMAgentNode, IterativeLLMAgentNode, EmbeddingGeneratorNode, SelfOrganizingAgentNode
|
316
|
+
- **A2A Nodes**: A2ACoordinatorNode, HybridSearchNode, AdaptiveSearchNode, SemanticMemoryNode, StreamingAnalyticsNode
|
312
317
|
- **RAG Nodes**: 47+ specialized nodes for document processing and retrieval
|
313
318
|
- **Security Nodes**: ThreatDetectionNode, AuditLogNode, AccessControlManager
|
314
319
|
- **Monitoring Nodes**: TransactionMetricsNode, DeadlockDetectorNode, PerformanceAnomalyNode
|
315
320
|
- **Transaction Nodes**: DistributedTransactionManagerNode, SagaCoordinatorNode
|
316
321
|
|
317
322
|
### Advanced Features
|
323
|
+
- **A2A Communication**: Google Protocol-based multi-agent coordination
|
324
|
+
- **Semantic Memory**: Long-term memory management for agent interactions
|
325
|
+
- **Hybrid Search**: Multi-strategy agent discovery and matching
|
318
326
|
- **Cyclic Workflows**: CycleBuilder API with convergence detection
|
319
327
|
- **Distributed Transactions**: Automatic Saga/2PC pattern selection
|
320
328
|
- **Real-time Monitoring**: WebSocket streaming with performance metrics
|
@@ -492,6 +500,14 @@ See [Contributing Guide](CONTRIBUTING.md) and [sdk-contributors/CLAUDE.md](sdk-c
|
|
492
500
|
|
493
501
|
## 📈 Project Status
|
494
502
|
|
503
|
+
### ✅ v0.8.4 - A2A Google Protocol Enhancement
|
504
|
+
- **Advanced Agent Coordination**: A2ACoordinatorNode with Google Protocol patterns
|
505
|
+
- **Hybrid Search System**: Multi-strategy agent discovery and matching
|
506
|
+
- **Semantic Memory**: Long-term memory management for agent interactions
|
507
|
+
- **Real-time Analytics**: Streaming performance monitoring for A2A workflows
|
508
|
+
- **Backward Compatible**: Seamless integration with existing implementations
|
509
|
+
- **Production Ready**: Enterprise-grade multi-agent coordination patterns
|
510
|
+
|
495
511
|
### ✅ v0.8.1 - Complete App Framework
|
496
512
|
- **Complete Application Framework**: DataFlow, Nexus, AI Registry, User Management
|
497
513
|
- **PyPI Integration**: All packages available with proper extras support
|
@@ -1,4 +1,4 @@
|
|
1
|
-
kailash/__init__.py,sha256=
|
1
|
+
kailash/__init__.py,sha256=It3r8alSoZ6svH02Pn9auJ9nExU-yUUua06DCy3Ctdk,2667
|
2
2
|
kailash/__main__.py,sha256=vr7TVE5o16V6LsTmRFKG6RDKUXHpIWYdZ6Dok2HkHnI,198
|
3
3
|
kailash/access_control.py,sha256=MjKtkoQ2sg1Mgfe7ovGxVwhAbpJKvaepPWr8dxOueMA,26058
|
4
4
|
kailash/access_control_abac.py,sha256=FPfa_8PuDP3AxTjdWfiH3ntwWO8NodA0py9W8SE5dno,30263
|
@@ -24,8 +24,9 @@ kailash/channels/cli_channel.py,sha256=C7ctIb5V4e6T1Ksu5MPfP0rKOCEciMzOFhjrM9BvR
|
|
24
24
|
kailash/channels/event_router.py,sha256=matl4yttgQa3Vl1HtrAUfNvJ-kfnr4pgP8tMHSDYkSM,16632
|
25
25
|
kailash/channels/mcp_channel.py,sha256=KZ8JtxMRUiwy0ecYWYdM6YSj7YuI50obXCRg0NdsGj8,22767
|
26
26
|
kailash/channels/session.py,sha256=4ZEutfyQ3fhBlBjXa5e32ZL2ZqEuQKwbAk0DGu00X1A,13068
|
27
|
-
kailash/cli/__init__.py,sha256=
|
27
|
+
kailash/cli/__init__.py,sha256=TvNjX0Q-2IxdWeh6w8rkqyONuFbSleStlRF8b-Aa8Iw,302
|
28
28
|
kailash/cli/commands.py,sha256=lv1S1uB0JQE4tiQCJIa1HCbjYDbFE9KwcK3M1jRtRU4,18168
|
29
|
+
kailash/cli/validation_audit.py,sha256=0WBzOdh1pkaqYm011bpnumyMf30blvPzq9_nsUQoGno,20308
|
29
30
|
kailash/client/__init__.py,sha256=WNR39t4O6TDQLI14uR_MjQpLza2c6rU3YkQCXcGCiSU,293
|
30
31
|
kailash/client/enhanced_client.py,sha256=trcDWQsON0Hphj14WozVMbfU7HKuxauknzDfoy1fTlo,9431
|
31
32
|
kailash/config/__init__.py,sha256=9qNwtvXAVV-KkHbuL1ZbtC6yXDtowH4YoFiOP-Qbe-w,638
|
@@ -33,7 +34,7 @@ kailash/config/database_config.py,sha256=rdlqIP9WUzC0kvAdSjno1LMpu_bEy2v5FgFdgJy
|
|
33
34
|
kailash/core/actors/__init__.py,sha256=o8CrwZRTPW5uB3UZiiFtz34n1Q-XBoKNwTz5NMTDQgA,433
|
34
35
|
kailash/core/actors/adaptive_pool_controller.py,sha256=tque9heLsLwjrNlM1wZSAYi1RInv19Z3HTjbozc9XtY,22484
|
35
36
|
kailash/core/actors/connection_actor.py,sha256=M8fOX1a3jvH5PUkfQyk0eBJqCk0SD9KGZCw0TXLON_o,18979
|
36
|
-
kailash/core/actors/supervisor.py,sha256=
|
37
|
+
kailash/core/actors/supervisor.py,sha256=GaTbRRA0REHNnsn0a8NXao-aj9Eh8KkZt6H2YJm7I4w,11975
|
37
38
|
kailash/core/ml/__init__.py,sha256=eaD-bmoxMXtwwtKWePsoX1IkcpysX0bMAGyMR7jaAqI,64
|
38
39
|
kailash/core/ml/query_patterns.py,sha256=4wV1pBOwUiK80UTKuMXSoRgR0pojtjg2BMNoa5qWpc0,20290
|
39
40
|
kailash/core/monitoring/__init__.py,sha256=Qua4i50JYUQcRkWHy1wGyuXGqzqsDVMmdPtud746xts,371
|
@@ -41,19 +42,41 @@ kailash/core/monitoring/connection_metrics.py,sha256=fvFyHOgMU5lgRB2EB7d-D_F5XER
|
|
41
42
|
kailash/core/optimization/__init__.py,sha256=FY5SLLNedH0_aawLYdXHj2rsGdBaaB49QuJ_R9ctHOE,65
|
42
43
|
kailash/core/resilience/__init__.py,sha256=nYfMU_hK0CHeK_ZZGZWM3oeI2YjcNg5Wop7bnjPt28c,364
|
43
44
|
kailash/core/resilience/bulkhead.py,sha256=Op02MjnucieSsJ5CIPHlONEJfP36DRGKn6L9nxYOpR8,17202
|
44
|
-
kailash/core/resilience/circuit_breaker.py,sha256=
|
45
|
-
kailash/core/resilience/health_monitor.py,sha256=
|
45
|
+
kailash/core/resilience/circuit_breaker.py,sha256=KkZ_XoS8GZpGpcw6M9qmhDEJ9xxohGrc5vRoHTzVarA,21070
|
46
|
+
kailash/core/resilience/health_monitor.py,sha256=WAVTP8rQWIaKGT_b9c9FYnWfSZxc5_nRc5dEMqyVCCU,26920
|
46
47
|
kailash/database/__init__.py,sha256=keUIl-BhRMSR7ohW4kojaEYCzKmeb_pb4IpWqDqfnOk,686
|
47
48
|
kailash/database/execution_pipeline.py,sha256=1Y-iVXKPoCED3dRoQvOZe1lQyff92NJ__q77NPI0CRQ,16453
|
48
49
|
kailash/edge/__init__.py,sha256=-jhM4xaDAUCbwrq6jJjRCdlf49XDULVTcvfsUiqz_qg,447
|
49
|
-
kailash/edge/compliance.py,sha256=
|
50
|
-
kailash/edge/
|
50
|
+
kailash/edge/compliance.py,sha256=bm3HhtWN-5iIdKoly8jKKp7Xq0Do1VKu0yzGmyxlTOk,33138
|
51
|
+
kailash/edge/consistency.py,sha256=geAbufedRa2k6cfBV9ARGl0JeynQw0J_xz4yefxukWw,19947
|
52
|
+
kailash/edge/discovery.py,sha256=7Z3a4QA_9DA6ziaH_NeQUtQxYVZ3lZbnfegi9JUdC5w,29991
|
51
53
|
kailash/edge/location.py,sha256=ZrG4CqN-taZFo9VDLvZ2z1lNiTHgXcZvzBJS9meXY8k,19717
|
54
|
+
kailash/edge/coordination/__init__.py,sha256=XkVuFMfH3HpDkTLuUcH4UHkWvp60DNYiMajkWv_eKio,736
|
55
|
+
kailash/edge/coordination/global_ordering.py,sha256=Je1bb3blodurs6cqX4WQJdH6JkgnoZfxdJc9ZCHtwq0,11375
|
56
|
+
kailash/edge/coordination/leader_election.py,sha256=hOEcuyf9Gk5sVf9RtseiqIjdylyEU4f4JL72b0Z6wxU,7473
|
57
|
+
kailash/edge/coordination/partition_detector.py,sha256=obS0_fgfiz8bW9v_jevjf7FcOOE6IxvfTF5s7_ecGBk,10116
|
58
|
+
kailash/edge/coordination/raft.py,sha256=m6CMUs3zn3_UmveNqrBM2mjsIy6vJw0TOQGr04FLghY,15365
|
59
|
+
kailash/edge/migration/__init__.py,sha256=FwRZ7RFygjZiU5S_c9AnOaDeSE54vTSIqycgTTP5uBU,344
|
60
|
+
kailash/edge/migration/edge_migrator.py,sha256=uw0hFD0ye1QskC4HRlpmdtywhsHpxRo_N3Mk9wD1kEc,28958
|
61
|
+
kailash/edge/monitoring/__init__.py,sha256=ySeVSysyF1v8Kn7nkoqSHdwp2_3CiAyTBZUbScpE-pg,324
|
62
|
+
kailash/edge/monitoring/edge_monitor.py,sha256=EKv9bf48Zd7o8tm5F9rB96VXlo5HDZm0vW7LxKc1yN4,25779
|
63
|
+
kailash/edge/prediction/__init__.py,sha256=Rpwznv-2RMLOoWiXbPfqdsO1tk_xU_Zvviiz46XHqYw,252
|
64
|
+
kailash/edge/prediction/predictive_warmer.py,sha256=gXq3Lr3wz-yvynLtth_unVEa_hSXDLhQbtmRFBK3QiM,21255
|
65
|
+
kailash/edge/resource/__init__.py,sha256=x-9VYfGmIIqWrFOnhdpTp-ZtbM9PL19ktpVX90kINEw,2355
|
66
|
+
kailash/edge/resource/cloud_integration.py,sha256=0zBBuWKaN5yqoBGLj5c5YcfmLwxCkjc0R3uz3BbPBNs,28348
|
67
|
+
kailash/edge/resource/cost_optimizer.py,sha256=pPp985nMp6r4MzlR0k8D5PyNEKtkV7EIKkxwfIcZXiA,32916
|
68
|
+
kailash/edge/resource/docker_integration.py,sha256=2CnhKF5P4cgwgk-r01Nr3IObJPTLvmk_Yu757Uu8vNg,30375
|
69
|
+
kailash/edge/resource/kubernetes_integration.py,sha256=g703nAN3rVQK65lcphnth_6VOZHLo6FGprUYVgc5poQ,33123
|
70
|
+
kailash/edge/resource/platform_integration.py,sha256=Rdc3bqz1MYFzPNSKKTkKwNGkl5-HzjvG0xtzwblDy1o,33522
|
71
|
+
kailash/edge/resource/predictive_scaler.py,sha256=FxoYIq1Xd6HOilWydOlxWn0jCIzKcaJqrxePw_YQH2Y,32728
|
72
|
+
kailash/edge/resource/resource_analyzer.py,sha256=tcQM2uS_b985fY_-YOOhN_DiDjjVGo1k5c1GFHHE9P8,30043
|
73
|
+
kailash/edge/resource/resource_pools.py,sha256=YlKa3d1MMCw2lOv7gz-KIkOg-uLfFbW_uy6nwo3mefU,20107
|
52
74
|
kailash/gateway/__init__.py,sha256=zh2uCsDHi82pZ_tGJklsH_FS-Mx9V31r0hkxk48CM-g,927
|
53
75
|
kailash/gateway/api.py,sha256=xpK8PIamsqQPpKAJwacyV7RA_Snjv2pc_0ljnnU9Oy4,9534
|
54
76
|
kailash/gateway/enhanced_gateway.py,sha256=IlN1XV01FQrF4rGcq_z9LE4uUHAAAQoVsRNToXENen0,13399
|
55
77
|
kailash/gateway/resource_resolver.py,sha256=IC1dceiKfjfUWToYCIBcrUapuR3LlDG6RJ4o7haLY10,7746
|
56
78
|
kailash/gateway/security.py,sha256=kf4Quf6u7dqhs80fQQ982eHbRb4weDKG0DaYNeKntT4,7557
|
79
|
+
kailash/integrations/dataflow_edge.py,sha256=R3Is8JJZcqLNn4op7gidp1dtbT82oY5vn9tXVAWLOrg,8994
|
57
80
|
kailash/mcp_server/__init__.py,sha256=AzrCEat5gdl9Nes8xOs7D4Wj3HpGlms3xLbOrx2diPA,8791
|
58
81
|
kailash/mcp_server/advanced_features.py,sha256=76dmttUa0M61ReBbgexf7Igu4CXaXS-CUmFhvTDjKyI,30673
|
59
82
|
kailash/mcp_server/ai_registry_server.py,sha256=vMNMvWLegKBVp7YAHVKgltWa2vTXKNvV-_Ni_z1argM,28973
|
@@ -64,7 +87,7 @@ kailash/mcp_server/discovery.py,sha256=D8vcwVkbgQCNp0_BlkGeU_dnqgIXN2g0s3_GpndlQ
|
|
64
87
|
kailash/mcp_server/errors.py,sha256=_lycwudWP_AJ_KwLO5N3VCKbG1ikfaTyzA2PBF8UAYU,21181
|
65
88
|
kailash/mcp_server/oauth.py,sha256=GFC2O2ueiTTI6V-91Huevhc3K8CxrHe22knuHfuCTqY,56493
|
66
89
|
kailash/mcp_server/protocol.py,sha256=gXeJ-GvSf39WymfS6433SqLKBA40PdeDoBQqu7DUbJE,35129
|
67
|
-
kailash/mcp_server/registry_integration.py,sha256=
|
90
|
+
kailash/mcp_server/registry_integration.py,sha256=B8CSLq_O1ea3cXrbVjC3bB_OFgHIP-KS9dk77mNM02I,19791
|
68
91
|
kailash/mcp_server/server.py,sha256=5pb5eIiB-qGi8UF-nL81D3mF8t066-O1_Q94GhLVplY,67441
|
69
92
|
kailash/mcp_server/transports.py,sha256=wl7EbImvmBxjPvvPhRW4VJc6Xp9H3_upqFKL4UCFK7o,39289
|
70
93
|
kailash/mcp_server/servers/ai_registry.py,sha256=IdF_keUuJlMsvjLjSAykxxbm46K4qA7eCj7T-lYSrzk,10007
|
@@ -108,18 +131,16 @@ kailash/middleware/gateway/storage_backends.py,sha256=HJTi6zU6oBI3R3ffcm_U-Xp9qq
|
|
108
131
|
kailash/middleware/mcp/__init__.py,sha256=EdZB8zOMSBEEmudRzs8ksz9QZJYWQMEx7Tm1MOwIWnI,922
|
109
132
|
kailash/middleware/mcp/client_integration.py,sha256=dY1RmX-g5E6JzUFuWxk7viuOYIh8bMwoUSvHQMVEsYk,18265
|
110
133
|
kailash/middleware/mcp/enhanced_server.py,sha256=RUVS7jWHn0ma4F3F23UvuFwUdu7OkSsIRNQmGtkG9I8,18547
|
111
|
-
kailash/
|
112
|
-
kailash/
|
113
|
-
kailash/
|
114
|
-
kailash/
|
115
|
-
kailash/
|
116
|
-
kailash/nexus/cli/main.py,sha256=2GqJP5fvP8DgPaeWzOjAG9yS0CbDWhzEl_tI38jO3VQ,5550
|
117
|
-
kailash/nodes/__init__.py,sha256=0uT1nGAIZNzk_tkQo1gmEEkroE8qiVWSjDv1hpoKqQA,1009
|
118
|
-
kailash/nodes/base.py,sha256=LqxnXG1hl33GY4caZiOCshagq-FfHe_nDHVAww1Dkmg,57125
|
134
|
+
kailash/monitoring/__init__.py,sha256=C5WmkNpk_mmAScqMWiCfkUbjhM5W16dsnRnc3Ial-Uc,475
|
135
|
+
kailash/monitoring/alerts.py,sha256=eKX4ooPw1EicumPuswlR_nU18UgRETWvFg8FzCW5pVU,21416
|
136
|
+
kailash/monitoring/metrics.py,sha256=SiAnL3o6K0QaJHgfAuWBa-0pTkW5zymhuPEsj4bgOgM,22022
|
137
|
+
kailash/nodes/__init__.py,sha256=p2KSo0dyUBCLClU123qpQ0tyv5S_36PTxosNyW58nyY,1031
|
138
|
+
kailash/nodes/base.py,sha256=P_u7P4ZKWBG6hSFUYCUFLAhoh_gEri3HInYAbBMZgzA,78703
|
119
139
|
kailash/nodes/base_async.py,sha256=whxepCiVplrltfzEQuabmnGCpEV5WgfqwgxbLdCyiDk,8864
|
120
140
|
kailash/nodes/base_cycle_aware.py,sha256=Xpze9xZzLepWeLpi9Y3tMn1dm2LVv-omr5TSQuGTtWo,13377
|
121
141
|
kailash/nodes/base_with_acl.py,sha256=ZfrkLPgrEBcNbG0LKvtq6glDxyOYOMRw3VXX4vWX6bI,11852
|
122
142
|
kailash/nodes/mixins.py,sha256=ncAdNQPe1sphLByeerP6G_s8mjFLt7dM4baiozzIBPA,12083
|
143
|
+
kailash/nodes/ports.py,sha256=77z9YM5SdpeR2p6W8RVuqhswIl0iaWTlN1UijUlSSps,22241
|
123
144
|
kailash/nodes/validation.py,sha256=tuBZRZkDiEdvfeU7JaRB7v2-j1vxPYMJ1gVaJ-PKHRk,12117
|
124
145
|
kailash/nodes/admin/__init__.py,sha256=C9_pK2w0rH6JEV_-roypeasAIyIhEFKKnH-npGBeew0,1508
|
125
146
|
kailash/nodes/admin/audit_log.py,sha256=hM9z4oc4FfW-WyQHEIfY-Fw27iz375SamQtQHOw6zNE,41090
|
@@ -143,7 +164,7 @@ kailash/nodes/ai/iterative_llm_agent.py,sha256=T_Rtmz6E5gB0HugT2Q8FHZE9Giqy5WiBB
|
|
143
164
|
kailash/nodes/ai/llm_agent.py,sha256=NeNJZbV_VOUbULug2LASwyzLyoUO5wi58Bc9sXTubuc,90181
|
144
165
|
kailash/nodes/ai/models.py,sha256=wsEeUTuegy87mnLtKgSTg7ggCXvC1n3MsL-iZ4qujHs,16393
|
145
166
|
kailash/nodes/ai/self_organizing.py,sha256=B7NwKaBW8OHQBf5b0F9bSs8Wm-5BDJ9IjIkxS9h00mg,62885
|
146
|
-
kailash/nodes/ai/semantic_memory.py,sha256=
|
167
|
+
kailash/nodes/ai/semantic_memory.py,sha256=ZTXIgxwMheux712cN__cNrQ3VgHaKcDyfQv_Gto7MRM,18644
|
147
168
|
kailash/nodes/ai/streaming_analytics.py,sha256=1D9wBxsp0DEw9X184TSXSCR6zvsgX7WD5jajD_MKLXY,33159
|
148
169
|
kailash/nodes/ai/vision_utils.py,sha256=OHD9cVH_mq0WpJyQkNTj_mpipIVWfSV_bF9eA6CdyeA,4166
|
149
170
|
kailash/nodes/alerts/__init__.py,sha256=CY3agJ7VQ4yU68BhxMCaj18EGEaDecYfLxceHHP4o9c,782
|
@@ -197,6 +218,21 @@ kailash/nodes/data/streaming.py,sha256=XnU7VHSamdDq-lPiG6cxS2fZO-pU5KLpmaO-zPkPD
|
|
197
218
|
kailash/nodes/data/vector_db.py,sha256=pwCl-3tyk_Cv_VQ8GafgodJ1yM88W1BXCIcYC56XoqU,32056
|
198
219
|
kailash/nodes/data/workflow_connection_pool.py,sha256=o-c-gu4HRtD0i7G6eCLZuOVB4CDJMOXFuL5CbXipZtk,40284
|
199
220
|
kailash/nodes/data/writers.py,sha256=-RPLetKhKAPXOU6YPwMkVRXF8by6ROhgICm3aUnGcFs,17537
|
221
|
+
kailash/nodes/edge/__init__.py,sha256=YDlthSttnSVuo7-PONKevCts9nVxJad92SpR0gd8Zpg,1101
|
222
|
+
kailash/nodes/edge/base.py,sha256=qee2esfLqvlDbWQoRCcDdTJ0mVCxUYS-k8Brb1SoZeQ,8458
|
223
|
+
kailash/nodes/edge/cloud_node.py,sha256=SNphcE52EadWRRcwL7ITPv_WB8WGC6ImD2zA7lKhB64,25068
|
224
|
+
kailash/nodes/edge/coordination.py,sha256=UOA6lLO7XvIHv9g63i1p9aiBeofFbnyqfw14_I0LnPo,8499
|
225
|
+
kailash/nodes/edge/docker_node.py,sha256=_JfMLCts5E-xS7bNvmA4qrAagmGRf0X3k6NMst1PRxA,29202
|
226
|
+
kailash/nodes/edge/edge_data.py,sha256=u2MFAZBqmKUhl5zoaRDKMYMq5MDY3CnPz7xAUV_yhtQ,20907
|
227
|
+
kailash/nodes/edge/edge_migration_node.py,sha256=9hchsKIDN2elk2INogS_yiQUnxGnfqcjTFR2sd3t_S8,14240
|
228
|
+
kailash/nodes/edge/edge_monitoring_node.py,sha256=eXXI37ZHI2QPZamOXqni1n8GEc7JIA7cSEm107hGH0s,14464
|
229
|
+
kailash/nodes/edge/edge_state.py,sha256=pr8_CrWoEjlpS6TRqcCeWrFPmOR-SorBPyFbmlRO1l4,23137
|
230
|
+
kailash/nodes/edge/edge_warming_node.py,sha256=JtoMTquxn43Dz9d8Wc8vVX4skQ0RlHAMKkkSzsL94VA,13975
|
231
|
+
kailash/nodes/edge/kubernetes_node.py,sha256=lH90eKqmljK7j8_Z9Q9XINUTsA6Ea9emv9VgIFSShNM,23306
|
232
|
+
kailash/nodes/edge/platform_node.py,sha256=oaZOQ5VkO-f5FRECOO9yNYzFvf0-0F4f6B4hpCNHp-U,27692
|
233
|
+
kailash/nodes/edge/resource_analyzer_node.py,sha256=ML6shjgYv-WNRZSndKs771SapPTygCPti6h9p2qEPno,13113
|
234
|
+
kailash/nodes/edge/resource_optimizer_node.py,sha256=-r6SowQQ61SMYAK34Kv0rYtYf_etcGMEkKjAgtmwdks,18210
|
235
|
+
kailash/nodes/edge/resource_scaler_node.py,sha256=hK03H-N6PUWmDZNAzTJCAbaoKfM1NgnKLV88YOjA2oU,14168
|
200
236
|
kailash/nodes/enterprise/__init__.py,sha256=uZzOfmGbD86cbCffWQl8MzofQNP9yfI3ctOIR9p5UOE,841
|
201
237
|
kailash/nodes/enterprise/audit_logger.py,sha256=QpJMhK8KEm_u9Gnu0a58xxaqlhACQAauSGXE4ebvhMo,11043
|
202
238
|
kailash/nodes/enterprise/batch_processor.py,sha256=1Dy09Ix3gSsVp2I6LKlk1URekxhBQYmeBOplnlCHmgU,28220
|
@@ -277,7 +313,7 @@ kailash/runtime/__init__.py,sha256=CvU-qBMESYYISqFOlYlLsYJrXJu0Gqr4x6yr4Ob_Rng,2
|
|
277
313
|
kailash/runtime/access_controlled.py,sha256=HtNJZylaB-2FuPsfEOfQ-4ny4HzwJfHaHNMu2xS1Nzs,17324
|
278
314
|
kailash/runtime/async_local.py,sha256=sYNggSU0R-oo8cCvU5ayodDBqASzUhxu994ZvZxDSC0,34010
|
279
315
|
kailash/runtime/docker.py,sha256=sZknVl1PCGfAZeyc0-exTuKlllSyjYlFIgJoiB3CRNs,23500
|
280
|
-
kailash/runtime/local.py,sha256=
|
316
|
+
kailash/runtime/local.py,sha256=u5b7aeSlGhCZRn1wEYvZ2zWHCxZp8UEGoQWeiHbHy1w,64630
|
281
317
|
kailash/runtime/parallel.py,sha256=mz_wPD13-YVc3Q_8HkOs4nPQPdTjnjCcnRL7ZRM70lo,21070
|
282
318
|
kailash/runtime/parallel_cyclic.py,sha256=yANZHnePjhCPuCFbq3lFQA1K6jbCv5Of5-vIKbCsmZk,19863
|
283
319
|
kailash/runtime/parameter_injection.py,sha256=kG4GhmarsRr5t3VDFbc2G1HSbsZJg6UmienHCE2Ru7o,14852
|
@@ -285,6 +321,13 @@ kailash/runtime/parameter_injector.py,sha256=4l-OOKEBzM_cQ17Zz5o24QSV9a1Zqfu3D2q
|
|
285
321
|
kailash/runtime/runner.py,sha256=t_SEumtVn9uXlSzJicb50MpUu6xdqjW0uZ5b2phjVPY,3318
|
286
322
|
kailash/runtime/secret_provider.py,sha256=wKhasHnm_Ialo7Q4KGMcmI2qVyrKLuS22ypEnVv4NcU,8757
|
287
323
|
kailash/runtime/testing.py,sha256=hTrgGnqxwSBYoztVqnZpxzFwm0DwUnaJdChRHikgoio,19089
|
324
|
+
kailash/runtime/validation/__init__.py,sha256=SN8cQud2KC7dd3Fp8pdwir7EqHuqUIrGAVtHMj3-Azg,657
|
325
|
+
kailash/runtime/validation/connection_context.py,sha256=NAvcyew8e6F0x_sORwszZ-SR3nn7y0Yzskv3X_3AjbU,3286
|
326
|
+
kailash/runtime/validation/enhanced_error_formatter.py,sha256=tFmKbJ9pTXQd28oM9bu01sfVVmT3QIDQK1nkQjMqHfk,7642
|
327
|
+
kailash/runtime/validation/error_categorizer.py,sha256=vcfs2K8ahT1uTPK2K23I7VbEEfKcjnpV64MfEwacwgc,5280
|
328
|
+
kailash/runtime/validation/metrics.py,sha256=PENlPlVhyOgouhJKtjrgDIB5Fruw0GLGZo1bat5pup4,13178
|
329
|
+
kailash/runtime/validation/performance.py,sha256=vMa2CkA2RLaJHy-jMIPZBileTehJoRJC_6rHFZv9WDc,21130
|
330
|
+
kailash/runtime/validation/suggestion_engine.py,sha256=UlluVqGns5ibwOvMWeXxhty0jLMSvxuAFJkyv4PcXRc,10724
|
288
331
|
kailash/servers/__init__.py,sha256=-2nkB5pIkBjc-klGJcKCuzWRAl_G7hlepvyV_Es64DI,976
|
289
332
|
kailash/servers/durable_workflow_server.py,sha256=lMnf-rTUKrjiS9NhNo3qx2lWYC0NR7EEF-4WBUPZ9zI,16588
|
290
333
|
kailash/servers/enterprise_workflow_server.py,sha256=HxArcgu5fQwV2KxKkf1n0Yu75zXy_tS8oxd4-1DM5UY,19785
|
@@ -293,7 +336,7 @@ kailash/servers/workflow_server.py,sha256=nkx8qpZ4xJD767L3M2dTj68SXv8uLUNht6tZ0v
|
|
293
336
|
kailash/testing/__init__.py,sha256=4cqLSbcFz9bDY09vuK5Vpg3UtoAAa93R5tc9zIUvGAE,796
|
294
337
|
kailash/testing/async_test_case.py,sha256=3Pdi13zT-_LduJ5Tfe7yuhz8Qz7KQpcER6G2nMe-t5A,12815
|
295
338
|
kailash/testing/async_utils.py,sha256=gSHcArDJf98mDi--NPFpCoGmAgKHDZ0__tyKAjDjpm0,10745
|
296
|
-
kailash/testing/fixtures.py,sha256=
|
339
|
+
kailash/testing/fixtures.py,sha256=DWB5x402ZLoRB6Jwj2t6ysRSzvdNBNC2ZYNIPmxfOXE,14067
|
297
340
|
kailash/testing/mock_registry.py,sha256=1KsIjZh7ig4dC9Xi_FcpyAruPrQP79a3_hCxWrcZ6Zk,18389
|
298
341
|
kailash/tracking/__init__.py,sha256=nhyecV24JuB_D-veJ3qw7h4oO8Sbdmyb6RvPS6VQktU,305
|
299
342
|
kailash/tracking/manager.py,sha256=OxDgvuObiLLcje7-DF5DRIqi8f5clzvrlean1RrL9KE,28006
|
@@ -321,7 +364,8 @@ kailash/visualization/reports.py,sha256=D7kJ0flHr16d-qSEq8vnw20N8u_dgTrXtKVSXVm8
|
|
321
364
|
kailash/workflow/__init__.py,sha256=DDQDE9K6RmbX6479guNLLgjiVVV-gQERRvCEJWSVlsM,1836
|
322
365
|
kailash/workflow/async_builder.py,sha256=iv8bDJHdWAUZ77SyMo6sucd92dTdtXesdxycrSE7mM4,20613
|
323
366
|
kailash/workflow/async_patterns.py,sha256=X0ZDXwr6UAu0WC1xnCB7-0V1-tRbKs9UI4JqaBCB6tE,22824
|
324
|
-
kailash/workflow/builder.py,sha256=
|
367
|
+
kailash/workflow/builder.py,sha256=HcYNe_ACNnlVkEY_DHLs1Ce0XNsRI3Oag6cVhvI5Cb8,43113
|
368
|
+
kailash/workflow/contracts.py,sha256=Uch-s2SC-NYrg0n2zgljgkyFHf4bufY4OydFuIfAk7E,13442
|
325
369
|
kailash/workflow/convergence.py,sha256=vfIDR-uNaQE-LVUEzrRtfgKPgX9gL0nLNH-nTg5ra-c,10031
|
326
370
|
kailash/workflow/cycle_analyzer.py,sha256=BGBpgdB-g0-KRI65sVAvHV4lxfoCzMt4uKOHbw8GXT4,32596
|
327
371
|
kailash/workflow/cycle_builder.py,sha256=uWAx8K4ZKMtFC3mWylK4gHT03xeu0xChJlhw50hVqEE,20883
|
@@ -331,21 +375,23 @@ kailash/workflow/cycle_exceptions.py,sha256=4_OLnbEXqIiXKzOc3uh8DzFik4wEHwl8bRZh
|
|
331
375
|
kailash/workflow/cycle_profiler.py,sha256=aEWSCm0Xy15SjgLTpPooVJMzpFhtJWt4livR-3Me4N8,28547
|
332
376
|
kailash/workflow/cycle_state.py,sha256=hzRUvciRreWfS56Cf7ZLQPit_mlPTQDoNTawh8yi-2s,10747
|
333
377
|
kailash/workflow/cyclic_runner.py,sha256=0IlmghTrwYb3ivqP975DprP3aj45-8_Sn5Wq9tEutG0,43888
|
378
|
+
kailash/workflow/edge_infrastructure.py,sha256=lQDzs0-KdoCMqI4KAXAGbhHbwadM6t-ffJEWLlRuSNo,12448
|
334
379
|
kailash/workflow/graph.py,sha256=zRpGLXeuwtuxFBvE7_16c_bB9yqZirM_uwtfD1_MY4g,59272
|
335
380
|
kailash/workflow/input_handling.py,sha256=HrW--AmelYC8F18nkfmYlF_wXycA24RuNbDRjvM8rqk,6561
|
336
381
|
kailash/workflow/mermaid_visualizer.py,sha256=UsQDvxgIAhy-Th7ZzFnbuziaTx1Cd5yUh6S_25DffoQ,22294
|
337
|
-
kailash/workflow/migration.py,sha256=
|
382
|
+
kailash/workflow/migration.py,sha256=6WIGP5Y9kGgb0_3nLXVo8TPtuzsk66eoTSalWt7st_0,31463
|
338
383
|
kailash/workflow/mock_registry.py,sha256=J4gyH8YdhRyhvORDVxGTya0FgDK8iAA8Nonur6p9s-o,1692
|
339
384
|
kailash/workflow/resilience.py,sha256=Ecef4gBg-QWP369a_xfzQnVWhHryvEcO2RSFVSriLJI,8569
|
340
385
|
kailash/workflow/runner.py,sha256=l6jb-H7DwbRlvQ3H3SuTs70rut-u7H3Gi8nybKCEjZU,10795
|
341
386
|
kailash/workflow/safety.py,sha256=pS5GKu7UdkzFZcb16Dn-0jBxjULDU-59_M0CbUVMVyw,11298
|
342
387
|
kailash/workflow/state.py,sha256=UTZxs5-Ona6uvBhx1__i6-RX8gB4qazkBIWE7uyRmWQ,7600
|
343
388
|
kailash/workflow/templates.py,sha256=98EN5H4fO9b4xeczk20Hu5L8hNcAuRQNGayT6vnZYCw,48540
|
389
|
+
kailash/workflow/type_inference.py,sha256=i1F7Yd_Z3elTXrthsLpqGbOnQBIVVVEjhRpI0HrIjd0,24492
|
344
390
|
kailash/workflow/validation.py,sha256=rWZNJYA_XAfk_og6Cxz8p1gZ3j5CylPvMTDXg2SfjgM,38574
|
345
391
|
kailash/workflow/visualization.py,sha256=nHBW-Ai8QBMZtn2Nf3EE1_aiMGi9S6Ui_BfpA5KbJPU,23187
|
346
|
-
kailash-0.8.
|
347
|
-
kailash-0.8.
|
348
|
-
kailash-0.8.
|
349
|
-
kailash-0.8.
|
350
|
-
kailash-0.8.
|
351
|
-
kailash-0.8.
|
392
|
+
kailash-0.8.5.dist-info/licenses/LICENSE,sha256=Axe6g7bTrJkToK9h9j2SpRUKKNaDZDCo2lQ2zPxCE6s,1065
|
393
|
+
kailash-0.8.5.dist-info/METADATA,sha256=4bM4o5TuOPX2_y6_r0t_NkVo_eGf_V8gy6ANBejZ6Zk,21442
|
394
|
+
kailash-0.8.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
395
|
+
kailash-0.8.5.dist-info/entry_points.txt,sha256=M_q3b8PG5W4XbhSgESzIJjh3_4OBKtZFYFsOdkr2vO4,45
|
396
|
+
kailash-0.8.5.dist-info/top_level.txt,sha256=z7GzH2mxl66498pVf5HKwo5wwfPtt9Aq95uZUpH6JV0,8
|
397
|
+
kailash-0.8.5.dist-info/RECORD,,
|
kailash/nexus/__init__.py
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
"""Kailash Nexus - Multi-channel workflow orchestration framework."""
|
2
|
-
|
3
|
-
from .factory import (
|
4
|
-
create_api_nexus,
|
5
|
-
create_cli_nexus,
|
6
|
-
create_development_nexus,
|
7
|
-
create_mcp_nexus,
|
8
|
-
create_nexus,
|
9
|
-
create_production_nexus,
|
10
|
-
)
|
11
|
-
from .gateway import NexusGateway
|
12
|
-
|
13
|
-
__all__ = [
|
14
|
-
"NexusGateway",
|
15
|
-
"create_nexus",
|
16
|
-
"create_api_nexus",
|
17
|
-
"create_cli_nexus",
|
18
|
-
"create_mcp_nexus",
|
19
|
-
"create_development_nexus",
|
20
|
-
"create_production_nexus",
|
21
|
-
]
|
kailash/nexus/cli/__init__.py
DELETED
kailash/nexus/cli/__main__.py
DELETED
kailash/nexus/cli/main.py
DELETED
@@ -1,176 +0,0 @@
|
|
1
|
-
"""Main CLI interface for Nexus workflow orchestration.
|
2
|
-
|
3
|
-
This module provides command-line access to Nexus workflows running on a server.
|
4
|
-
It connects to a running Nexus instance and allows listing and executing workflows.
|
5
|
-
"""
|
6
|
-
|
7
|
-
import argparse
|
8
|
-
import json
|
9
|
-
import sys
|
10
|
-
from typing import Any, Dict, Optional
|
11
|
-
|
12
|
-
import requests
|
13
|
-
|
14
|
-
|
15
|
-
class NexusCLI:
|
16
|
-
"""Command-line interface for Nexus workflows."""
|
17
|
-
|
18
|
-
def __init__(self, base_url: str = "http://localhost:8000"):
|
19
|
-
"""Initialize CLI with Nexus server URL.
|
20
|
-
|
21
|
-
Args:
|
22
|
-
base_url: Base URL of the Nexus server
|
23
|
-
"""
|
24
|
-
self.base_url = base_url.rstrip("/")
|
25
|
-
|
26
|
-
def list_workflows(self) -> None:
|
27
|
-
"""List all available workflows."""
|
28
|
-
try:
|
29
|
-
response = requests.get(f"{self.base_url}/workflows", timeout=5)
|
30
|
-
response.raise_for_status()
|
31
|
-
|
32
|
-
workflows = response.json()
|
33
|
-
|
34
|
-
if not workflows:
|
35
|
-
print("No workflows available.")
|
36
|
-
return
|
37
|
-
|
38
|
-
print("Available workflows:")
|
39
|
-
for workflow_name in sorted(workflows.keys()):
|
40
|
-
print(f" - {workflow_name}")
|
41
|
-
|
42
|
-
except requests.RequestException as e:
|
43
|
-
print(f"Error connecting to Nexus server: {e}", file=sys.stderr)
|
44
|
-
sys.exit(1)
|
45
|
-
except json.JSONDecodeError as e:
|
46
|
-
print(f"Error parsing server response: {e}", file=sys.stderr)
|
47
|
-
sys.exit(1)
|
48
|
-
|
49
|
-
def run_workflow(
|
50
|
-
self, workflow_name: str, parameters: Optional[Dict[str, Any]] = None
|
51
|
-
) -> None:
|
52
|
-
"""Execute a workflow with optional parameters.
|
53
|
-
|
54
|
-
Args:
|
55
|
-
workflow_name: Name of the workflow to execute
|
56
|
-
parameters: Optional parameters for the workflow
|
57
|
-
"""
|
58
|
-
try:
|
59
|
-
payload = {"parameters": parameters or {}}
|
60
|
-
|
61
|
-
response = requests.post(
|
62
|
-
f"{self.base_url}/workflows/{workflow_name}", json=payload, timeout=30
|
63
|
-
)
|
64
|
-
response.raise_for_status()
|
65
|
-
|
66
|
-
result = response.json()
|
67
|
-
|
68
|
-
# Handle enterprise workflow execution format
|
69
|
-
if "outputs" in result:
|
70
|
-
# Extract results from each node
|
71
|
-
for node_name, node_result in result["outputs"].items():
|
72
|
-
if "result" in node_result:
|
73
|
-
node_output = node_result["result"]
|
74
|
-
# Print meaningful output
|
75
|
-
for key, value in node_output.items():
|
76
|
-
print(f"{key}: {value}")
|
77
|
-
else:
|
78
|
-
# Handle direct result format
|
79
|
-
print(json.dumps(result, indent=2))
|
80
|
-
|
81
|
-
except requests.RequestException as e:
|
82
|
-
print(f"Error executing workflow: {e}", file=sys.stderr)
|
83
|
-
sys.exit(1)
|
84
|
-
except json.JSONDecodeError as e:
|
85
|
-
print(f"Error parsing execution result: {e}", file=sys.stderr)
|
86
|
-
sys.exit(1)
|
87
|
-
|
88
|
-
def parse_parameters(self, param_strings: list) -> Dict[str, Any]:
|
89
|
-
"""Parse parameter strings in key=value format.
|
90
|
-
|
91
|
-
Args:
|
92
|
-
param_strings: List of parameter strings in "key=value" format
|
93
|
-
|
94
|
-
Returns:
|
95
|
-
Dictionary of parsed parameters
|
96
|
-
"""
|
97
|
-
parameters = {}
|
98
|
-
|
99
|
-
for param_str in param_strings:
|
100
|
-
if "=" not in param_str:
|
101
|
-
print(
|
102
|
-
f"Invalid parameter format: {param_str}. Use key=value format.",
|
103
|
-
file=sys.stderr,
|
104
|
-
)
|
105
|
-
sys.exit(1)
|
106
|
-
|
107
|
-
key, value = param_str.split("=", 1)
|
108
|
-
|
109
|
-
# Try to parse as JSON for complex values, otherwise use as string
|
110
|
-
try:
|
111
|
-
parameters[key] = json.loads(value)
|
112
|
-
except json.JSONDecodeError:
|
113
|
-
parameters[key] = value
|
114
|
-
|
115
|
-
return parameters
|
116
|
-
|
117
|
-
|
118
|
-
def main():
|
119
|
-
"""Main CLI entry point."""
|
120
|
-
parser = argparse.ArgumentParser(
|
121
|
-
description="Nexus CLI - Command-line interface for workflow orchestration",
|
122
|
-
formatter_class=argparse.RawDescriptionHelpFormatter,
|
123
|
-
epilog="""
|
124
|
-
Examples:
|
125
|
-
python -m kailash.nexus.cli list
|
126
|
-
python -m kailash.nexus.cli run my-workflow
|
127
|
-
python -m kailash.nexus.cli run my-workflow --param name=value --param count=5
|
128
|
-
|
129
|
-
# Connect to different server:
|
130
|
-
python -m kailash.nexus.cli --url http://localhost:8001 list
|
131
|
-
""",
|
132
|
-
)
|
133
|
-
|
134
|
-
parser.add_argument(
|
135
|
-
"--url",
|
136
|
-
default="http://localhost:8000",
|
137
|
-
help="Base URL of the Nexus server (default: http://localhost:8000)",
|
138
|
-
)
|
139
|
-
|
140
|
-
subparsers = parser.add_subparsers(dest="command", help="Available commands")
|
141
|
-
|
142
|
-
# List command
|
143
|
-
list_parser = subparsers.add_parser("list", help="List available workflows")
|
144
|
-
|
145
|
-
# Run command
|
146
|
-
run_parser = subparsers.add_parser("run", help="Execute a workflow")
|
147
|
-
run_parser.add_argument("workflow", help="Name of the workflow to execute")
|
148
|
-
run_parser.add_argument(
|
149
|
-
"--param",
|
150
|
-
action="append",
|
151
|
-
default=[],
|
152
|
-
help="Workflow parameters in key=value format (can be used multiple times)",
|
153
|
-
)
|
154
|
-
|
155
|
-
args = parser.parse_args()
|
156
|
-
|
157
|
-
if not args.command:
|
158
|
-
parser.print_help()
|
159
|
-
sys.exit(1)
|
160
|
-
|
161
|
-
# Initialize CLI client
|
162
|
-
cli = NexusCLI(base_url=args.url)
|
163
|
-
|
164
|
-
# Execute command
|
165
|
-
if args.command == "list":
|
166
|
-
cli.list_workflows()
|
167
|
-
elif args.command == "run":
|
168
|
-
parameters = cli.parse_parameters(args.param)
|
169
|
-
cli.run_workflow(args.workflow, parameters)
|
170
|
-
else:
|
171
|
-
parser.print_help()
|
172
|
-
sys.exit(1)
|
173
|
-
|
174
|
-
|
175
|
-
if __name__ == "__main__":
|
176
|
-
main()
|