memra 0.2.13__tar.gz → 0.2.14__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {memra-0.2.13 → memra-0.2.14}/PKG-INFO +1 -1
- {memra-0.2.13 → memra-0.2.14}/memra/cli.py +29 -1
- {memra-0.2.13 → memra-0.2.14}/memra.egg-info/SOURCES.txt +0 -54
- {memra-0.2.13 → memra-0.2.14}/pyproject.toml +2 -3
- {memra-0.2.13 → memra-0.2.14}/setup.py +1 -1
- memra-0.2.13/memra/discovery.py +0 -15
- memra-0.2.13/memra/discovery_client.py +0 -49
- memra-0.2.13/memra-ops/app.py +0 -808
- memra-0.2.13/memra-ops/config/config.py +0 -25
- memra-0.2.13/memra-ops/config.py +0 -34
- memra-0.2.13/memra-ops/logic/__init__.py +0 -1
- memra-0.2.13/memra-ops/logic/file_tools.py +0 -43
- memra-0.2.13/memra-ops/logic/invoice_tools.py +0 -668
- memra-0.2.13/memra-ops/logic/invoice_tools_fix.py +0 -66
- memra-0.2.13/memra-ops/mcp_bridge_server.py +0 -1178
- memra-0.2.13/memra-ops/scripts/check_database.py +0 -37
- memra-0.2.13/memra-ops/scripts/clear_database.py +0 -48
- memra-0.2.13/memra-ops/scripts/monitor_database.py +0 -67
- memra-0.2.13/memra-ops/scripts/release.py +0 -133
- memra-0.2.13/memra-ops/scripts/reset_database.py +0 -65
- memra-0.2.13/memra-ops/scripts/start_memra.py +0 -334
- memra-0.2.13/memra-ops/scripts/stop_memra.py +0 -132
- memra-0.2.13/memra-ops/server_tool_registry.py +0 -190
- memra-0.2.13/memra-ops/tests/test_llm_text_to_sql.py +0 -115
- memra-0.2.13/memra-ops/tests/test_llm_vs_pattern.py +0 -130
- memra-0.2.13/memra-ops/tests/test_mcp_schema_aware.py +0 -124
- memra-0.2.13/memra-ops/tests/test_schema_aware_sql.py +0 -139
- memra-0.2.13/memra-ops/tests/test_schema_aware_sql_simple.py +0 -66
- memra-0.2.13/memra-ops/tests/test_text_to_sql_demo.py +0 -140
- memra-0.2.13/memra-ops/tools/mcp_bridge_server.py +0 -851
- memra-0.2.13/memra-sdk/examples/accounts_payable.py +0 -215
- memra-0.2.13/memra-sdk/examples/accounts_payable_client.py +0 -217
- memra-0.2.13/memra-sdk/examples/accounts_payable_mcp.py +0 -200
- memra-0.2.13/memra-sdk/examples/ask_questions.py +0 -123
- memra-0.2.13/memra-sdk/examples/invoice_processing.py +0 -116
- memra-0.2.13/memra-sdk/examples/propane_delivery.py +0 -87
- memra-0.2.13/memra-sdk/examples/simple_text_to_sql.py +0 -158
- memra-0.2.13/memra-sdk/memra/__init__.py +0 -31
- memra-0.2.13/memra-sdk/memra/execution.py +0 -481
- memra-0.2.13/memra-sdk/memra/models.py +0 -99
- memra-0.2.13/memra-sdk/memra/tool_registry.py +0 -343
- memra-0.2.13/memra-sdk/memra/tool_registry_client.py +0 -106
- memra-0.2.13/memra-sdk/scripts/release.py +0 -133
- memra-0.2.13/memra-sdk/setup.py +0 -52
- memra-0.2.13/memra-workflows/accounts_payable/accounts_payable.py +0 -215
- memra-0.2.13/memra-workflows/accounts_payable/accounts_payable_client.py +0 -216
- memra-0.2.13/memra-workflows/accounts_payable/accounts_payable_mcp.py +0 -200
- memra-0.2.13/memra-workflows/accounts_payable/accounts_payable_smart.py +0 -221
- memra-0.2.13/memra-workflows/invoice_processing/invoice_processing.py +0 -116
- memra-0.2.13/memra-workflows/invoice_processing/smart_invoice_processor.py +0 -220
- memra-0.2.13/memra-workflows/logic/__init__.py +0 -1
- memra-0.2.13/memra-workflows/logic/file_tools.py +0 -50
- memra-0.2.13/memra-workflows/logic/invoice_tools.py +0 -501
- memra-0.2.13/memra-workflows/logic/propane_agents.py +0 -52
- memra-0.2.13/memra-workflows/mcp_bridge_server.py +0 -230
- memra-0.2.13/memra-workflows/propane_delivery/propane_delivery.py +0 -87
- memra-0.2.13/memra-workflows/text_to_sql/complete_invoice_workflow_with_queries.py +0 -208
- memra-0.2.13/memra-workflows/text_to_sql/complete_text_to_sql_system.py +0 -266
- memra-0.2.13/memra-workflows/text_to_sql/file_discovery_demo.py +0 -156
- {memra-0.2.13 → memra-0.2.14}/CHANGELOG.md +0 -0
- {memra-0.2.13 → memra-0.2.14}/LICENSE +0 -0
- {memra-0.2.13 → memra-0.2.14}/MANIFEST.in +0 -0
- {memra-0.2.13 → memra-0.2.14}/README.md +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/data/.DS_Store +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/data/README.md +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/data/invoices/.DS_Store +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/data/invoices/10352259401.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/data/invoices/10352259823.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/data/invoices/10352260169.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/data/invoices/10352260417.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/data/invoices/10352260599.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/data/invoices/10352260912.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/data/invoices/10352261134.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/data/invoices/10352261563.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/data/invoices/10352261647.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/data/invoices/10352261720.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/data/invoices/10352261811.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/data/invoices/10352262025.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/data/invoices/10352262454.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/data/invoices/10352262702.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/data/invoices/10352262884.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/data/invoices/10352263346.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/data/invoices/10352263429.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/data/invoices/invoice_005.pdf +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/database_monitor_agent.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/etl_invoice_demo.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/setup_demo_data.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/demos/etl_invoice_processing/simple_pdf_processor.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/mcp_bridge_server.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/__init__.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/check_after_workflow.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/check_database.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/check_recent_db.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/data/README.md +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/data/invoices/10352259401.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/data/invoices/10352259823.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/data/invoices/10352260169.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/data/invoices/10352260417.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/data/invoices/10352260599.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/data/invoices/10352260912.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/data/invoices/10352261134.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/data/invoices/10352261563.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/data/invoices/10352261647.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/data/invoices/10352261720.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/data/invoices/10352261811.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/data/invoices/10352262025.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/data/invoices/10352262454.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/data/invoices/10352262702.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/data/invoices/10352262884.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/data/invoices/10352263346.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/data/invoices/10352263429.PDF +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/database_monitor_agent.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/debug_mcp.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/debug_schema.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/etl_invoice_demo.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/modify_database.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/run_etl_batch.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/setup_demo_data.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/simple_pdf_processor.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/test_agent3.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/test_agent3_v2.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/test_api.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/test_api_client_direct.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/test_conversion.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/test_debug.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/test_direct_vision.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/test_full_response.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/test_memra_response.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/test_pdf_processor_response.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/test_pdfprocessor_direct.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/test_postgres_insert.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/test_remote_upload.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/test_schema_format.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/test_sql_executor.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/test_sql_executor_extra_fields.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/test_sql_executor_fix.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/test_updated_server.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/test_upload_functionality.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/test_upload_server.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/test_vision_output.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/test_vision_prompt.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/demos/etl_invoice_processing/test_vision_simple.py +0 -0
- {memra-0.2.13/memra-sdk → memra-0.2.14}/memra/discovery.py +0 -0
- {memra-0.2.13/memra-sdk → memra-0.2.14}/memra/discovery_client.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/execution.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/models.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/tool_registry.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/memra/tool_registry_client.py +0 -0
- {memra-0.2.13 → memra-0.2.14}/requirements.txt +0 -0
- {memra-0.2.13 → memra-0.2.14}/setup.cfg +0 -0
@@ -498,8 +498,32 @@ def run_etl_workflow(demo_dir):
|
|
498
498
|
real_demo_script = demo_dir / "etl_invoice_demo.py"
|
499
499
|
if real_demo_script.exists():
|
500
500
|
print("🎯 Running real ETL workflow...")
|
501
|
+
print(f"📁 Working directory: {demo_dir}")
|
502
|
+
print(f"📄 Demo script: {real_demo_script}")
|
503
|
+
|
504
|
+
# Check if data directory exists
|
505
|
+
data_dir = demo_dir / "data"
|
506
|
+
invoices_dir = data_dir / "invoices"
|
507
|
+
if invoices_dir.exists():
|
508
|
+
pdf_files = list(invoices_dir.glob("*.PDF"))
|
509
|
+
print(f"📊 Found {len(pdf_files)} PDF files in {invoices_dir}")
|
510
|
+
if pdf_files:
|
511
|
+
print(f" First few files: {[f.name for f in pdf_files[:3]]}")
|
512
|
+
else:
|
513
|
+
print(f"⚠️ Warning: {invoices_dir} does not exist")
|
514
|
+
print(f" Available directories in {demo_dir}:")
|
515
|
+
for item in demo_dir.iterdir():
|
516
|
+
if item.is_dir():
|
517
|
+
print(f" - {item.name}/")
|
518
|
+
|
501
519
|
print("⏱️ Processing 15 files with delays - this may take 10-15 minutes")
|
502
|
-
|
520
|
+
|
521
|
+
# Set the working directory to the demo directory so the script can find data/invoices/
|
522
|
+
result = subprocess.run(
|
523
|
+
[sys.executable, str(real_demo_script)],
|
524
|
+
cwd=demo_dir, # This is crucial - sets working directory
|
525
|
+
timeout=1800 # 30 minute timeout
|
526
|
+
)
|
503
527
|
return result.returncode == 0
|
504
528
|
else:
|
505
529
|
# Fallback to simplified demo
|
@@ -510,6 +534,10 @@ def run_etl_workflow(demo_dir):
|
|
510
534
|
return result.returncode == 0
|
511
535
|
else:
|
512
536
|
print("❌ No demo script found")
|
537
|
+
print(f" Looking for: {real_demo_script}")
|
538
|
+
print(f" Available files in {demo_dir}:")
|
539
|
+
for item in demo_dir.iterdir():
|
540
|
+
print(f" - {item.name}")
|
513
541
|
return False
|
514
542
|
|
515
543
|
except subprocess.TimeoutExpired:
|
@@ -39,60 +39,6 @@ memra/execution.py
|
|
39
39
|
memra/models.py
|
40
40
|
memra/tool_registry.py
|
41
41
|
memra/tool_registry_client.py
|
42
|
-
memra-ops/app.py
|
43
|
-
memra-ops/config.py
|
44
|
-
memra-ops/mcp_bridge_server.py
|
45
|
-
memra-ops/server_tool_registry.py
|
46
|
-
memra-ops/config/config.py
|
47
|
-
memra-ops/logic/__init__.py
|
48
|
-
memra-ops/logic/file_tools.py
|
49
|
-
memra-ops/logic/invoice_tools.py
|
50
|
-
memra-ops/logic/invoice_tools_fix.py
|
51
|
-
memra-ops/scripts/check_database.py
|
52
|
-
memra-ops/scripts/clear_database.py
|
53
|
-
memra-ops/scripts/monitor_database.py
|
54
|
-
memra-ops/scripts/release.py
|
55
|
-
memra-ops/scripts/reset_database.py
|
56
|
-
memra-ops/scripts/start_memra.py
|
57
|
-
memra-ops/scripts/stop_memra.py
|
58
|
-
memra-ops/tests/test_llm_text_to_sql.py
|
59
|
-
memra-ops/tests/test_llm_vs_pattern.py
|
60
|
-
memra-ops/tests/test_mcp_schema_aware.py
|
61
|
-
memra-ops/tests/test_schema_aware_sql.py
|
62
|
-
memra-ops/tests/test_schema_aware_sql_simple.py
|
63
|
-
memra-ops/tests/test_text_to_sql_demo.py
|
64
|
-
memra-ops/tools/mcp_bridge_server.py
|
65
|
-
memra-sdk/setup.py
|
66
|
-
memra-sdk/examples/accounts_payable.py
|
67
|
-
memra-sdk/examples/accounts_payable_client.py
|
68
|
-
memra-sdk/examples/accounts_payable_mcp.py
|
69
|
-
memra-sdk/examples/ask_questions.py
|
70
|
-
memra-sdk/examples/invoice_processing.py
|
71
|
-
memra-sdk/examples/propane_delivery.py
|
72
|
-
memra-sdk/examples/simple_text_to_sql.py
|
73
|
-
memra-sdk/memra/__init__.py
|
74
|
-
memra-sdk/memra/discovery.py
|
75
|
-
memra-sdk/memra/discovery_client.py
|
76
|
-
memra-sdk/memra/execution.py
|
77
|
-
memra-sdk/memra/models.py
|
78
|
-
memra-sdk/memra/tool_registry.py
|
79
|
-
memra-sdk/memra/tool_registry_client.py
|
80
|
-
memra-sdk/scripts/release.py
|
81
|
-
memra-workflows/mcp_bridge_server.py
|
82
|
-
memra-workflows/accounts_payable/accounts_payable.py
|
83
|
-
memra-workflows/accounts_payable/accounts_payable_client.py
|
84
|
-
memra-workflows/accounts_payable/accounts_payable_mcp.py
|
85
|
-
memra-workflows/accounts_payable/accounts_payable_smart.py
|
86
|
-
memra-workflows/invoice_processing/invoice_processing.py
|
87
|
-
memra-workflows/invoice_processing/smart_invoice_processor.py
|
88
|
-
memra-workflows/logic/__init__.py
|
89
|
-
memra-workflows/logic/file_tools.py
|
90
|
-
memra-workflows/logic/invoice_tools.py
|
91
|
-
memra-workflows/logic/propane_agents.py
|
92
|
-
memra-workflows/propane_delivery/propane_delivery.py
|
93
|
-
memra-workflows/text_to_sql/complete_invoice_workflow_with_queries.py
|
94
|
-
memra-workflows/text_to_sql/complete_text_to_sql_system.py
|
95
|
-
memra-workflows/text_to_sql/file_discovery_demo.py
|
96
42
|
memra/demos/etl_invoice_processing/check_after_workflow.py
|
97
43
|
memra/demos/etl_invoice_processing/check_database.py
|
98
44
|
memra/demos/etl_invoice_processing/check_recent_db.py
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "memra"
|
7
|
-
version = "0.2.
|
7
|
+
version = "0.2.14"
|
8
8
|
description = "Declarative framework for enterprise workflows with MCP integration - Client SDK"
|
9
9
|
readme = "README.md"
|
10
10
|
license = {text = "MIT"}
|
@@ -50,8 +50,7 @@ Repository = "https://github.com/memra-platform/memra-sdk"
|
|
50
50
|
memra = "memra.cli:main"
|
51
51
|
|
52
52
|
[tool.setuptools.packages.find]
|
53
|
-
include = ["memra
|
54
|
-
exclude = ["logic*", "server*", "app*", "mcp_bridge*"]
|
53
|
+
include = ["memra", "memra.*"]
|
55
54
|
|
56
55
|
[tool.setuptools.package-data]
|
57
56
|
memra = [
|
@@ -5,7 +5,7 @@ with open("README.md", "r", encoding="utf-8") as fh:
|
|
5
5
|
|
6
6
|
setup(
|
7
7
|
name="memra",
|
8
|
-
version="0.2.
|
8
|
+
version="0.2.14",
|
9
9
|
author="Memra",
|
10
10
|
author_email="support@memra.com",
|
11
11
|
description="Declarative framework for enterprise workflows with MCP integration - Client SDK",
|
memra-0.2.13/memra/discovery.py
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
from typing import List, Dict, Any, Optional
|
2
|
-
from .tool_registry import ToolRegistry
|
3
|
-
|
4
|
-
def discover_tools(hosted_by: Optional[str] = None) -> List[Dict[str, Any]]:
|
5
|
-
"""
|
6
|
-
Discover available tools in the Memra platform.
|
7
|
-
|
8
|
-
Args:
|
9
|
-
hosted_by: Filter tools by host ("memra" or "mcp"). If None, returns all tools.
|
10
|
-
|
11
|
-
Returns:
|
12
|
-
List of available tools with their metadata
|
13
|
-
"""
|
14
|
-
registry = ToolRegistry()
|
15
|
-
return registry.discover_tools(hosted_by)
|
@@ -1,49 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
Client-side tool discovery for Memra SDK
|
3
|
-
Queries the Memra API to discover available tools
|
4
|
-
"""
|
5
|
-
|
6
|
-
from typing import List, Dict, Any, Optional
|
7
|
-
from .tool_registry_client import ToolRegistryClient
|
8
|
-
|
9
|
-
def discover_tools(hosted_by: Optional[str] = None) -> List[Dict[str, Any]]:
|
10
|
-
"""
|
11
|
-
Discover available tools from the Memra API
|
12
|
-
|
13
|
-
Args:
|
14
|
-
hosted_by: Filter tools by hosting provider ("memra" or "mcp")
|
15
|
-
|
16
|
-
Returns:
|
17
|
-
List of available tools with their descriptions
|
18
|
-
"""
|
19
|
-
registry = ToolRegistryClient()
|
20
|
-
return registry.discover_tools(hosted_by)
|
21
|
-
|
22
|
-
def check_api_health() -> bool:
|
23
|
-
"""
|
24
|
-
Check if the Memra API is available
|
25
|
-
|
26
|
-
Returns:
|
27
|
-
True if API is healthy, False otherwise
|
28
|
-
"""
|
29
|
-
registry = ToolRegistryClient()
|
30
|
-
return registry.health_check()
|
31
|
-
|
32
|
-
def get_api_status() -> Dict[str, Any]:
|
33
|
-
"""
|
34
|
-
Get detailed API status information
|
35
|
-
|
36
|
-
Returns:
|
37
|
-
Dictionary with API status details
|
38
|
-
"""
|
39
|
-
registry = ToolRegistryClient()
|
40
|
-
|
41
|
-
is_healthy = registry.health_check()
|
42
|
-
tools = registry.discover_tools() if is_healthy else []
|
43
|
-
|
44
|
-
return {
|
45
|
-
"api_healthy": is_healthy,
|
46
|
-
"api_url": registry.api_base,
|
47
|
-
"tools_available": len(tools),
|
48
|
-
"tools": tools
|
49
|
-
}
|