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.
Files changed (79) hide show
  1. kailash/__init__.py +1 -7
  2. kailash/cli/__init__.py +11 -1
  3. kailash/cli/validation_audit.py +570 -0
  4. kailash/core/actors/supervisor.py +1 -1
  5. kailash/core/resilience/circuit_breaker.py +71 -1
  6. kailash/core/resilience/health_monitor.py +172 -0
  7. kailash/edge/compliance.py +33 -0
  8. kailash/edge/consistency.py +609 -0
  9. kailash/edge/coordination/__init__.py +30 -0
  10. kailash/edge/coordination/global_ordering.py +355 -0
  11. kailash/edge/coordination/leader_election.py +217 -0
  12. kailash/edge/coordination/partition_detector.py +296 -0
  13. kailash/edge/coordination/raft.py +485 -0
  14. kailash/edge/discovery.py +63 -1
  15. kailash/edge/migration/__init__.py +19 -0
  16. kailash/edge/migration/edge_migrator.py +832 -0
  17. kailash/edge/monitoring/__init__.py +21 -0
  18. kailash/edge/monitoring/edge_monitor.py +736 -0
  19. kailash/edge/prediction/__init__.py +10 -0
  20. kailash/edge/prediction/predictive_warmer.py +591 -0
  21. kailash/edge/resource/__init__.py +102 -0
  22. kailash/edge/resource/cloud_integration.py +796 -0
  23. kailash/edge/resource/cost_optimizer.py +949 -0
  24. kailash/edge/resource/docker_integration.py +919 -0
  25. kailash/edge/resource/kubernetes_integration.py +893 -0
  26. kailash/edge/resource/platform_integration.py +913 -0
  27. kailash/edge/resource/predictive_scaler.py +959 -0
  28. kailash/edge/resource/resource_analyzer.py +824 -0
  29. kailash/edge/resource/resource_pools.py +610 -0
  30. kailash/integrations/dataflow_edge.py +261 -0
  31. kailash/mcp_server/registry_integration.py +1 -1
  32. kailash/monitoring/__init__.py +18 -0
  33. kailash/monitoring/alerts.py +646 -0
  34. kailash/monitoring/metrics.py +677 -0
  35. kailash/nodes/__init__.py +2 -0
  36. kailash/nodes/ai/semantic_memory.py +2 -2
  37. kailash/nodes/base.py +545 -0
  38. kailash/nodes/edge/__init__.py +36 -0
  39. kailash/nodes/edge/base.py +240 -0
  40. kailash/nodes/edge/cloud_node.py +710 -0
  41. kailash/nodes/edge/coordination.py +239 -0
  42. kailash/nodes/edge/docker_node.py +825 -0
  43. kailash/nodes/edge/edge_data.py +582 -0
  44. kailash/nodes/edge/edge_migration_node.py +392 -0
  45. kailash/nodes/edge/edge_monitoring_node.py +421 -0
  46. kailash/nodes/edge/edge_state.py +673 -0
  47. kailash/nodes/edge/edge_warming_node.py +393 -0
  48. kailash/nodes/edge/kubernetes_node.py +652 -0
  49. kailash/nodes/edge/platform_node.py +766 -0
  50. kailash/nodes/edge/resource_analyzer_node.py +378 -0
  51. kailash/nodes/edge/resource_optimizer_node.py +501 -0
  52. kailash/nodes/edge/resource_scaler_node.py +397 -0
  53. kailash/nodes/ports.py +676 -0
  54. kailash/runtime/local.py +344 -1
  55. kailash/runtime/validation/__init__.py +20 -0
  56. kailash/runtime/validation/connection_context.py +119 -0
  57. kailash/runtime/validation/enhanced_error_formatter.py +202 -0
  58. kailash/runtime/validation/error_categorizer.py +164 -0
  59. kailash/runtime/validation/metrics.py +380 -0
  60. kailash/runtime/validation/performance.py +615 -0
  61. kailash/runtime/validation/suggestion_engine.py +212 -0
  62. kailash/testing/fixtures.py +2 -2
  63. kailash/workflow/builder.py +230 -4
  64. kailash/workflow/contracts.py +418 -0
  65. kailash/workflow/edge_infrastructure.py +369 -0
  66. kailash/workflow/migration.py +3 -3
  67. kailash/workflow/type_inference.py +669 -0
  68. {kailash-0.8.4.dist-info → kailash-0.8.5.dist-info}/METADATA +43 -27
  69. {kailash-0.8.4.dist-info → kailash-0.8.5.dist-info}/RECORD +73 -27
  70. kailash/nexus/__init__.py +0 -21
  71. kailash/nexus/cli/__init__.py +0 -5
  72. kailash/nexus/cli/__main__.py +0 -6
  73. kailash/nexus/cli/main.py +0 -176
  74. kailash/nexus/factory.py +0 -413
  75. kailash/nexus/gateway.py +0 -545
  76. {kailash-0.8.4.dist-info → kailash-0.8.5.dist-info}/WHEEL +0 -0
  77. {kailash-0.8.4.dist-info → kailash-0.8.5.dist-info}/entry_points.txt +0 -0
  78. {kailash-0.8.4.dist-info → kailash-0.8.5.dist-info}/licenses/LICENSE +0 -0
  79. {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.4
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.1 (January 17, 2025)
119
+ ## 🔥 Latest Release: v0.8.4 (January 19, 2025)
120
120
 
121
- **Complete App Framework & PyPI Integration**
121
+ **A2A Google Protocol Enhancement**
122
122
 
123
- - 🚀 **Complete App Framework**: DataFlow, Nexus, AI Registry, and User Management platforms
124
- - 📦 **PyPI Integration**: All packages available with proper extras support
125
- - 🏢 **Enterprise Ready**: Zero-config database operations and multi-channel deployment
126
- - **Performance Breakthrough**: 11x faster test execution with 100% pass rate
127
- - 🧪 **Testing Excellence**: 2,400+ tests with comprehensive Docker integration
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](changelogs/releases/v0.8.1-2025-01-17.md) | [PyPI Packages](https://pypi.org/project/kailash/)
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
- - **Self-organizing agent pools** with intelligent coordination
151
- - **Complete LLM integration** across all platforms
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
- ### Core SDK: Advanced Workflows
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 enterprise workflow
258
+ # Build A2A coordination workflow
256
259
  workflow = WorkflowBuilder()
257
- workflow.add_node("LLMAgentNode", "ai_agent", {
258
- "model": "gpt-4",
259
- "use_real_mcp": True # Real MCP execution by default
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("AsyncSQLDatabaseNode", "database", {
262
- "connection_string": "postgresql://...",
263
- "query": "SELECT * FROM customers WHERE risk_score > $1",
264
- "parameter_types": ["DECIMAL"] # PostgreSQL type inference
269
+ workflow.add_node("SemanticMemoryNode", "memory", {
270
+ "embedding_provider": "openai",
271
+ "memory_type": "long_term",
272
+ "context_window": 8192
265
273
  })
266
274
 
267
- # Add cyclic optimization
268
- cycle = workflow.create_cycle("optimization")
269
- cycle.connect("processor", "evaluator") \
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=4SpRoVVF_snoxLtYbtDvOabxuCycFwfC1mPB_9ies1I,2878
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=kJaqsBp3fRmagJhqA6LMwMbEa_Vkz93hIPH3W5Mn5r0,97
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=7_YXm9o4O_xBs5YxsDFt7RjzaMvTbKcK-jd4KPmSt1M,11968
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=uL_jaY4xAhHAi1kYHe6qyVZCG0FBS08EmWYBM-5Jrew,18294
45
- kailash/core/resilience/health_monitor.py,sha256=w-Pb-hmQO3HA5-UxRA8qHv3PQR97ipwUh7eMcjnVd5E,20164
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=tUiKiib7FjNtZ62ThQIRhxkehOddndTGLu-Y4He7iRQ,31951
50
- kailash/edge/discovery.py,sha256=EJqZ4t3quXxaueVHzqXwYd5_RrlCPRlSREqFxh30kP4,27549
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=Iv_vg-0gFjOFBj-kqqnCD-AnnDcA35Zu67mnCoylVJQ,19787
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/nexus/__init__.py,sha256=zaOXOHmmxsDDuyVDA7P-EWkXHLsLHcnrZPSlNQ74M1k,463
112
- kailash/nexus/factory.py,sha256=oqtPJoVvwQUdafs_h92MDpjt6xSO1vNLZHizZ1-XLks,12296
113
- kailash/nexus/gateway.py,sha256=QzvJVFVmgNI_Z4VHIRpUQ9F8_HNrhINjAiJQ1kTpqJU,19105
114
- kailash/nexus/cli/__init__.py,sha256=XbGcZSytNg5lJCOZ981prJpzwTXYJcR6_d6Fw9cXUTo,106
115
- kailash/nexus/cli/__main__.py,sha256=GCIzeLFbdtBoRwfB1r0gxME078qd1e3IIFrGHHZQfAc,117
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=BUNQ_ONa7_92iMnHsok4qgmCOma8UYgkHZd0iwAFssI,18639
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=t1FUrvdeISFZVvhgmRW916YsMGcroxSr_MVR6szS_Iw,49613
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=AxWk-U8o6Fp6jbagR3Mbnb8T2ApDTci4lGzuNVlD1hE,14072
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=lAy_k7Icxwcr_231Y1FHV1UuZYIvyeDuYXKqMAi2_YI,34855
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=zsmXgbUtOZdjoOx9YoEY0-x7uOY1T-_yQo4MnZjokCQ,31487
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.4.dist-info/licenses/LICENSE,sha256=Axe6g7bTrJkToK9h9j2SpRUKKNaDZDCo2lQ2zPxCE6s,1065
347
- kailash-0.8.4.dist-info/METADATA,sha256=OaxiRteaH3HjtT7CkflzEiGfzIxG5uQOMmOL00awr2Y,20297
348
- kailash-0.8.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
349
- kailash-0.8.4.dist-info/entry_points.txt,sha256=M_q3b8PG5W4XbhSgESzIJjh3_4OBKtZFYFsOdkr2vO4,45
350
- kailash-0.8.4.dist-info/top_level.txt,sha256=z7GzH2mxl66498pVf5HKwo5wwfPtt9Aq95uZUpH6JV0,8
351
- kailash-0.8.4.dist-info/RECORD,,
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
- ]
@@ -1,5 +0,0 @@
1
- """Nexus CLI module for command-line workflow interaction."""
2
-
3
- from .main import main
4
-
5
- __all__ = ["main"]
@@ -1,6 +0,0 @@
1
- """Entry point for Nexus CLI when run as a module."""
2
-
3
- from .main import main
4
-
5
- if __name__ == "__main__":
6
- main()
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()