memra 0.2.3__py3-none-any.whl → 0.2.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 (70) hide show
  1. memra/__init__.py +16 -2
  2. memra/cli.py +286 -0
  3. memra/execution.py +222 -41
  4. memra/models.py +1 -0
  5. memra/tool_registry.py +8 -0
  6. memra/tool_registry_client.py +2 -2
  7. memra-0.2.5.dist-info/METADATA +319 -0
  8. memra-0.2.5.dist-info/RECORD +68 -0
  9. memra-0.2.5.dist-info/entry_points.txt +2 -0
  10. memra-0.2.5.dist-info/licenses/LICENSE +21 -0
  11. memra-0.2.5.dist-info/top_level.txt +4 -0
  12. memra-ops/app.py +808 -0
  13. memra-ops/config/config.py +25 -0
  14. memra-ops/config.py +34 -0
  15. memra-ops/logic/__init__.py +1 -0
  16. memra-ops/logic/file_tools.py +43 -0
  17. memra-ops/logic/invoice_tools.py +668 -0
  18. memra-ops/logic/invoice_tools_fix.py +66 -0
  19. memra-ops/mcp_bridge_server.py +1178 -0
  20. memra-ops/scripts/check_database.py +37 -0
  21. memra-ops/scripts/clear_database.py +48 -0
  22. memra-ops/scripts/monitor_database.py +67 -0
  23. memra-ops/scripts/release.py +133 -0
  24. memra-ops/scripts/reset_database.py +65 -0
  25. memra-ops/scripts/start_memra.py +334 -0
  26. memra-ops/scripts/stop_memra.py +132 -0
  27. memra-ops/server_tool_registry.py +190 -0
  28. memra-ops/tests/test_llm_text_to_sql.py +115 -0
  29. memra-ops/tests/test_llm_vs_pattern.py +130 -0
  30. memra-ops/tests/test_mcp_schema_aware.py +124 -0
  31. memra-ops/tests/test_schema_aware_sql.py +139 -0
  32. memra-ops/tests/test_schema_aware_sql_simple.py +66 -0
  33. memra-ops/tests/test_text_to_sql_demo.py +140 -0
  34. memra-ops/tools/mcp_bridge_server.py +851 -0
  35. memra-sdk/examples/accounts_payable.py +215 -0
  36. memra-sdk/examples/accounts_payable_client.py +217 -0
  37. memra-sdk/examples/accounts_payable_mcp.py +200 -0
  38. memra-sdk/examples/ask_questions.py +123 -0
  39. memra-sdk/examples/invoice_processing.py +116 -0
  40. memra-sdk/examples/propane_delivery.py +87 -0
  41. memra-sdk/examples/simple_text_to_sql.py +158 -0
  42. memra-sdk/memra/__init__.py +31 -0
  43. memra-sdk/memra/discovery.py +15 -0
  44. memra-sdk/memra/discovery_client.py +49 -0
  45. memra-sdk/memra/execution.py +481 -0
  46. memra-sdk/memra/models.py +99 -0
  47. memra-sdk/memra/tool_registry.py +343 -0
  48. memra-sdk/memra/tool_registry_client.py +106 -0
  49. memra-sdk/scripts/release.py +133 -0
  50. memra-sdk/setup.py +52 -0
  51. memra-workflows/accounts_payable/accounts_payable.py +215 -0
  52. memra-workflows/accounts_payable/accounts_payable_client.py +216 -0
  53. memra-workflows/accounts_payable/accounts_payable_mcp.py +200 -0
  54. memra-workflows/accounts_payable/accounts_payable_smart.py +221 -0
  55. memra-workflows/invoice_processing/invoice_processing.py +116 -0
  56. memra-workflows/invoice_processing/smart_invoice_processor.py +220 -0
  57. memra-workflows/logic/__init__.py +1 -0
  58. memra-workflows/logic/file_tools.py +50 -0
  59. memra-workflows/logic/invoice_tools.py +501 -0
  60. memra-workflows/logic/propane_agents.py +52 -0
  61. memra-workflows/mcp_bridge_server.py +230 -0
  62. memra-workflows/propane_delivery/propane_delivery.py +87 -0
  63. memra-workflows/text_to_sql/complete_invoice_workflow_with_queries.py +208 -0
  64. memra-workflows/text_to_sql/complete_text_to_sql_system.py +266 -0
  65. memra-workflows/text_to_sql/file_discovery_demo.py +156 -0
  66. memra-0.2.3.dist-info/METADATA +0 -101
  67. memra-0.2.3.dist-info/RECORD +0 -12
  68. memra-0.2.3.dist-info/entry_points.txt +0 -2
  69. memra-0.2.3.dist-info/top_level.txt +0 -1
  70. {memra-0.2.3.dist-info → memra-0.2.5.dist-info}/WHEEL +0 -0
memra/tool_registry.py CHANGED
@@ -128,24 +128,32 @@ class ToolRegistry:
128
128
  last_error = None
129
129
  for endpoint in endpoints_to_try:
130
130
  try:
131
+ logger.info(f"Trying endpoint: {endpoint}")
131
132
  with httpx.Client(timeout=60.0) as client:
132
133
  response = client.post(endpoint, json=payload, headers=headers)
133
134
 
135
+ logger.info(f"Response status for {endpoint}: {response.status_code}")
136
+
134
137
  if response.status_code == 200:
135
138
  result = response.json()
136
139
  logger.info(f"MCP tool {tool_name} executed successfully via {endpoint}")
137
140
  return result
138
141
  elif response.status_code == 404:
142
+ logger.info(f"Endpoint {endpoint} returned 404, trying next...")
139
143
  continue # Try next endpoint
140
144
  else:
145
+ logger.error(f"Endpoint {endpoint} returned {response.status_code}: {response.text}")
141
146
  response.raise_for_status()
142
147
 
143
148
  except httpx.HTTPStatusError as e:
144
149
  if e.response.status_code == 404:
150
+ logger.info(f"Endpoint {endpoint} returned 404, trying next...")
145
151
  continue # Try next endpoint
152
+ logger.error(f"HTTP error for {endpoint}: {e.response.status_code} - {e.response.text}")
146
153
  last_error = e
147
154
  continue
148
155
  except Exception as e:
156
+ logger.error(f"Exception for {endpoint}: {str(e)}")
149
157
  last_error = e
150
158
  continue
151
159
 
@@ -62,7 +62,7 @@ class ToolRegistryClient:
62
62
  }
63
63
 
64
64
  # Make API call
65
- with httpx.Client(timeout=120.0) as client: # Longer timeout for tool execution
65
+ with httpx.Client(timeout=60.0) as client: # Reduced timeout for faster response
66
66
  response = client.post(
67
67
  f"{self.api_base}/tools/execute",
68
68
  headers={
@@ -81,7 +81,7 @@ class ToolRegistryClient:
81
81
  logger.error(f"Tool {tool_name} execution timed out")
82
82
  return {
83
83
  "success": False,
84
- "error": f"Tool execution timed out after 120 seconds"
84
+ "error": f"Tool execution timed out after 60 seconds"
85
85
  }
86
86
  except httpx.HTTPStatusError as e:
87
87
  logger.error(f"API error for tool {tool_name}: {e.response.status_code}")
@@ -0,0 +1,319 @@
1
+ Metadata-Version: 2.4
2
+ Name: memra
3
+ Version: 0.2.5
4
+ Summary: Declarative framework for enterprise workflows with MCP integration - Client SDK
5
+ Home-page: https://github.com/memra/memra-sdk
6
+ Author: Memra
7
+ Author-email: Memra <support@memra.com>
8
+ License: MIT
9
+ Project-URL: Homepage, https://memra.co
10
+ Project-URL: Repository, https://github.com/memra-platform/memra-sdk
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.8
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Requires-Python: >=3.8
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: pydantic>=1.8.0
24
+ Requires-Dist: httpx>=0.24.0
25
+ Requires-Dist: typing-extensions>=4.0.0
26
+ Requires-Dist: aiohttp>=3.8.0
27
+ Requires-Dist: aiohttp-cors>=0.7.0
28
+ Provides-Extra: dev
29
+ Requires-Dist: pytest>=6.0; extra == "dev"
30
+ Requires-Dist: pytest-asyncio; extra == "dev"
31
+ Requires-Dist: black; extra == "dev"
32
+ Requires-Dist: flake8; extra == "dev"
33
+ Provides-Extra: mcp
34
+ Requires-Dist: psycopg2-binary>=2.9.0; extra == "mcp"
35
+ Dynamic: author
36
+ Dynamic: home-page
37
+ Dynamic: license-file
38
+ Dynamic: requires-python
39
+
40
+ # Memra SDK
41
+
42
+ **The declarative framework for building enterprise-grade AI workflows with MCP integration.**
43
+
44
+ [![PyPI version](https://badge.fury.io/py/memra.svg)](https://badge.fury.io/py/memra)
45
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
46
+ [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
47
+
48
+ ## 🎯 Why Memra?
49
+
50
+ Building AI-powered business workflows is hard. You need to:
51
+ - **Orchestrate multiple AI agents** with different roles and responsibilities
52
+ - **Integrate with external tools** (databases, APIs, file systems)
53
+ - **Handle complex business logic** with validation and error recovery
54
+ - **Scale from prototypes to production** without rewriting everything
55
+ - **Maintain consistency** across different workflows and teams
56
+
57
+ **Memra solves these challenges** by providing a declarative framework that lets you focus on *what* you want to accomplish, not *how* to wire everything together.
58
+
59
+ ## 🚀 Quick Start (5 minutes!)
60
+
61
+ **Want to see Memra in action immediately?** Check out our [Quick Start Guide](QUICK_START.md) to run the ETL demo in minutes!
62
+
63
+ ### Installation
64
+
65
+ ```bash
66
+ pip install memra
67
+ ```
68
+
69
+ **📖 New to Memra?** For a complete beginner-friendly setup with step-by-step instructions, see our [Detailed Installation Guide](INSTALLATION_GUIDE.md) or run our automated setup script:
70
+
71
+ ```bash
72
+ # Automated setup for new users
73
+ bash scripts/setup_newbie.sh
74
+ ```
75
+
76
+ **🔧 Repository Structure:** This repo uses git submodules with sparse checkout to provide minimal access to infrastructure and workflow templates while keeping private content secure.
77
+
78
+ ### Basic Example
79
+
80
+ ```python
81
+ from memra import Agent, Department, LLM, ExecutionEngine
82
+
83
+ # Define an agent
84
+ agent = Agent(
85
+ role="Data Analyst",
86
+ job="Analyze customer data",
87
+ llm=LLM(model="llama-3.2-11b-vision-preview"),
88
+ sops=["Load data", "Perform analysis", "Generate report"],
89
+ output_key="analysis_result"
90
+ )
91
+
92
+ # Create a department
93
+ department = Department(
94
+ name="Analytics",
95
+ mission="Provide data insights",
96
+ agents=[agent],
97
+ workflow_order=["Data Analyst"]
98
+ )
99
+
100
+ # Execute the workflow
101
+ engine = ExecutionEngine()
102
+ result = engine.execute_department(department, {"data": "customer_data.csv"})
103
+ ```
104
+
105
+ ## 🏗️ Core Architecture
106
+
107
+ ### Agent
108
+ An AI worker that performs specific tasks using LLMs and tools. Agents have:
109
+ - **Role**: What they do (e.g., "Data Analyst", "Invoice Processor")
110
+ - **Job**: Specific task description
111
+ - **LLM**: Language model configuration
112
+ - **Tools**: External tools they can use
113
+ - **SOPs**: Standard operating procedures
114
+
115
+ ### Department
116
+ A team of agents working together to accomplish a mission. Departments:
117
+ - **Coordinate multiple agents** in a workflow
118
+ - **Handle dependencies** between agents
119
+ - **Provide execution policies** (retries, timeouts, error handling)
120
+ - **Manage context** and data flow
121
+
122
+ ### ExecutionEngine
123
+ Orchestrates the execution of departments and their workflows with:
124
+ - **Automatic agent coordination**
125
+ - **Tool integration** via MCP (Model Context Protocol)
126
+ - **Error handling and retries**
127
+ - **Execution tracing and monitoring**
128
+
129
+ ### LLM
130
+ Configuration for language models used by agents, supporting:
131
+ - **Multiple model providers** (OpenAI, Anthropic, local models)
132
+ - **Custom parameters** (temperature, max tokens, etc.)
133
+ - **Model-specific configurations**
134
+
135
+ ## 🔥 Real-World Examples
136
+
137
+ ### ETL Invoice Processing Demo
138
+ **Complete end-to-end workflow** that processes PDF invoices using vision models and stores data in PostgreSQL:
139
+
140
+ ```bash
141
+ # Run the ETL demo
142
+ python demos/etl_invoice_processing/etl_invoice_demo.py
143
+ ```
144
+
145
+ This demo showcases:
146
+ - **Vision model integration** for PDF processing
147
+ - **Multi-agent workflow** (Extractor, Validator, Database Engineer)
148
+ - **MCP tool integration** (PostgreSQL, SQL execution)
149
+ - **Data validation and error handling**
150
+ - **Production-ready patterns**
151
+
152
+ ### Smart File Discovery
153
+ Automatically discover and process files with intelligent routing:
154
+
155
+ ```python
156
+ from memra import Agent
157
+
158
+ # Smart agent that discovers and processes files automatically
159
+ smart_parser = Agent(
160
+ role="Smart Invoice Parser",
161
+ job="Discover and process invoice files intelligently",
162
+ tools=[
163
+ {"name": "FileDiscovery", "hosted_by": "memra"},
164
+ {"name": "FileCopy", "hosted_by": "memra"},
165
+ {"name": "InvoiceExtractionWorkflow", "hosted_by": "memra"}
166
+ ]
167
+ )
168
+
169
+ # Three modes of operation:
170
+ # 1. Auto-discovery: Scan invoices/ directory
171
+ # 2. External file: Copy from Downloads to invoices/
172
+ # 3. Specific file: Process exact file path
173
+ ```
174
+
175
+ ### Accounts Payable Workflow
176
+ Complete accounts payable processing with validation and database integration:
177
+
178
+ ```python
179
+ # See examples/accounts_payable_smart.py for full implementation
180
+ from memra import Department, Agent
181
+
182
+ ap_department = Department(
183
+ name="Accounts Payable",
184
+ mission="Process and validate vendor invoices",
185
+ agents=[
186
+ Agent(role="Invoice Extractor", ...),
187
+ Agent(role="Data Validator", ...),
188
+ Agent(role="Database Engineer", ...)
189
+ ],
190
+ workflow_order=["Invoice Extractor", "Data Validator", "Database Engineer"]
191
+ )
192
+ ```
193
+
194
+ ## 🛠️ Key Features
195
+
196
+ ### 🔌 MCP Integration
197
+ Built-in support for Model Context Protocol (MCP) tools:
198
+ - **Database operations** (PostgreSQL, MySQL, etc.)
199
+ - **File system operations** (discovery, copying, processing)
200
+ - **API integrations** (REST, GraphQL, custom APIs)
201
+ - **Custom tool development** with simple Python functions
202
+
203
+ ### 🎯 Declarative Workflows
204
+ Define workflows in terms of **what** you want to accomplish:
205
+
206
+ ```python
207
+ # Instead of writing procedural code, declare your workflow
208
+ department = Department(
209
+ name="Invoice Processing",
210
+ mission="Extract, validate, and store invoice data",
211
+ agents=[
212
+ Agent(role="Extractor", job="Extract data from PDFs"),
213
+ Agent(role="Validator", job="Validate extracted data"),
214
+ Agent(role="Database Engineer", job="Store data in database")
215
+ ],
216
+ workflow_order=["Extractor", "Validator", "Database Engineer"]
217
+ )
218
+ ```
219
+
220
+ ### 🔄 Error Handling & Recovery
221
+ Built-in resilience with:
222
+ - **Automatic retries** with configurable policies
223
+ - **Fallback agents** for critical workflows
224
+ - **Validation at each step**
225
+ - **Comprehensive error reporting**
226
+
227
+ ### 📊 Monitoring & Observability
228
+ Track workflow execution with:
229
+ - **Execution traces** showing agent and tool usage
230
+ - **Performance metrics** (timing, costs)
231
+ - **Error logs** with context
232
+ - **Audit trails** for compliance
233
+
234
+ ### 🚀 Production Ready
235
+ Scale from prototype to production:
236
+ - **Async execution** for high throughput
237
+ - **Resource management** and connection pooling
238
+ - **Configuration management** for different environments
239
+ - **Security best practices** for API keys and credentials
240
+
241
+ ## 📚 Documentation
242
+
243
+ - **[Quick Start Guide](QUICK_START.md)** - Get up and running in 5 minutes
244
+ - **[Detailed Installation Guide](INSTALLATION_GUIDE.md)** - Complete beginner-friendly setup instructions
245
+ - **[System Architecture](memra_system_architecture.md)** - Deep dive into Memra's design
246
+ - **[Text-to-SQL Guide](TEXT_TO_SQL_USAGE_GUIDE.md)** - Building database query workflows
247
+ - **[Examples Directory](examples/)** - Complete working examples
248
+ - **[Demos Directory](demos/)** - Advanced workflow demonstrations
249
+
250
+ ## 🏢 Use Cases
251
+
252
+ ### Financial Services
253
+ - **Invoice processing** and accounts payable automation
254
+ - **Document classification** and routing
255
+ - **Compliance monitoring** and reporting
256
+ - **Risk assessment** and fraud detection
257
+
258
+ ### Healthcare
259
+ - **Medical record processing** and data extraction
260
+ - **Claims processing** and validation
261
+ - **Patient data analysis** and insights
262
+ - **Regulatory compliance** workflows
263
+
264
+ ### Manufacturing
265
+ - **Quality control** and inspection workflows
266
+ - **Supply chain** optimization and monitoring
267
+ - **Equipment maintenance** scheduling
268
+ - **Production planning** and optimization
269
+
270
+ ### Retail & E-commerce
271
+ - **Order processing** and fulfillment
272
+ - **Customer service** automation
273
+ - **Inventory management** and forecasting
274
+ - **Market analysis** and trend detection
275
+
276
+ ## 🤝 Contributing
277
+
278
+ We welcome contributions! Please see our [contributing guide](CONTRIBUTING.md) for details.
279
+
280
+ ### Development Setup
281
+
282
+ ```bash
283
+ # Clone the repository
284
+ git clone https://github.com/memra-platform/memra-sdk.git
285
+ cd memra-sdk
286
+
287
+ # Install in development mode
288
+ pip install -e .
289
+
290
+ # Run tests
291
+ pytest tests/
292
+ ```
293
+
294
+ ## 📄 License
295
+
296
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
297
+
298
+ ### MIT License Summary
299
+ - ✅ **Commercial use** - Use in proprietary software
300
+ - ✅ **Modification** - Modify and distribute
301
+ - ✅ **Distribution** - Distribute copies
302
+ - ✅ **Private use** - Use privately
303
+ - ❌ **Liability** - No warranty provided
304
+ - ❌ **Warranty** - No warranty provided
305
+
306
+ ## 🆘 Support
307
+
308
+ - **Issues**: [GitHub Issues](https://github.com/memra-platform/memra-sdk/issues)
309
+ - **Discussions**: [GitHub Discussions](https://github.com/memra-platform/memra-sdk/discussions)
310
+ - **Email**: hello@memra.com
311
+
312
+ ## 🔗 Related Projects
313
+
314
+ - **[memra-workflows](https://github.com/memra-platform/memra-workflows)** - Production workflow templates
315
+ - **[memra-ops](https://github.com/memra-platform/memra-ops)** - Operations and deployment tools
316
+
317
+ ---
318
+
319
+ **Built with ❤️ by the memra team**
@@ -0,0 +1,68 @@
1
+ memra/__init__.py,sha256=InrJf0J3lQruKLuQ4R_JtTll553Die_vDNMCUnTCY2I,1108
2
+ memra/cli.py,sha256=nx_pzbB0ecKzOzg4TDMePV-QFbjlJCyOCoj96zACld4,9289
3
+ memra/discovery.py,sha256=yJIQnrDQu1nyzKykCIuzG_5SW5dIXHCEBLLKRWacIoY,480
4
+ memra/discovery_client.py,sha256=AbnKn6qhyrf7vmOvknEeDzH4tiGHsqPHtDaein_qaW0,1271
5
+ memra/execution.py,sha256=OXpBKxwBIjhACWL_qh8KHNndO8HUgB6gBF81AiQBBm0,34751
6
+ memra/models.py,sha256=3KvjPCaMFGIvI017AIHS23jGnEBZdKHspe1Fp8w0xa0,3418
7
+ memra/tool_registry.py,sha256=PDuWtiX_LX-vhKnx4JeL_ndUwG-oJ6bdhGe6iQeCDBw,15361
8
+ memra/tool_registry_client.py,sha256=dPIj6DMS5wdu99XmVm-NQYHKH_m6nsknCh4C_imTFig,4009
9
+ memra-0.2.5.dist-info/licenses/LICENSE,sha256=8OrnTd8DWwLWmUEj5srSLvT4PREfW1Qo1T5gEUIHPws,1062
10
+ memra-ops/app.py,sha256=S8B82gOAuT9x-NhmVLL9HM03Pde3Fa7QXm6TG1PEbbU,29439
11
+ memra-ops/config.py,sha256=6mBbS_stoEIhJDBqdJOalryAnyWeHbDy81mU1j08ids,969
12
+ memra-ops/mcp_bridge_server.py,sha256=tDEigRstIEAEu16F1ctCor2ny9CBbEOMY046bHdzFpE,47607
13
+ memra-ops/server_tool_registry.py,sha256=rg5wz8dTfJNqo2QRe69iBKJKeoJemltt_XzZsdxyJa8,8367
14
+ memra-ops/config/config.py,sha256=7dcT9W5b_nWrVAylbdeOaA60_NJlhv2YLyEILTcNKtI,600
15
+ memra-ops/logic/__init__.py,sha256=UFKwzAUU-5pWt-7gcajY1M9PLoJ1wiQ8L0HDTlkRv7E,43
16
+ memra-ops/logic/file_tools.py,sha256=iVe4xE7lNBhhoiL0Hi2zx4oF7koDeVvsOh1uMbn6HEo,1126
17
+ memra-ops/logic/invoice_tools.py,sha256=Jp3PEFfUXRTAAP1ZM4Juei_zzPKy8EFi8H2uP6T9c2A,27787
18
+ memra-ops/logic/invoice_tools_fix.py,sha256=sF4qADqbfWEgOyavslrNlCDEyIkaZo35TtnyHd7PClY,3020
19
+ memra-ops/scripts/check_database.py,sha256=sBPmIJ10WW3jHQfOjeDRJnQahRBwVAi60-98r4HG9rw,987
20
+ memra-ops/scripts/clear_database.py,sha256=yO4JUbMOcSQ1-S57n1oua-SheM360yg-oNiPyj8LW5o,1441
21
+ memra-ops/scripts/monitor_database.py,sha256=OmIgUmtVjtUfSziSEiTy5CheueMMZ5R5HciPpMishE0,2287
22
+ memra-ops/scripts/release.py,sha256=riQ-jz7-vnd1cSfQdU1eUZmVDyuWym1nmZW65lGetiI,4218
23
+ memra-ops/scripts/reset_database.py,sha256=QJagPQIkMOr3s-o-g_Urz0CvSYNm0D2xbwo3JSrKIWY,2255
24
+ memra-ops/scripts/start_memra.py,sha256=VR7WESQXgvPuzZEFMhtmABSR7IzYixsnpgtoPcECLK0,11987
25
+ memra-ops/scripts/stop_memra.py,sha256=yyTu4jxjUbxTrvobQ-UhpNk-eWB8bCFjcBPGW1scIJg,4591
26
+ memra-ops/tests/test_llm_text_to_sql.py,sha256=IDL7FEzlm2Dr9pRCcJQ6SGddF9VBDfHonwztrDpxBGU,4099
27
+ memra-ops/tests/test_llm_vs_pattern.py,sha256=ZATV1fS7C6Jn-N4-UB5LzuRjbiO1ctZq3gNoIud2RWc,4880
28
+ memra-ops/tests/test_mcp_schema_aware.py,sha256=H5NmGxS3LWo9xoodqVeliJyHco7ZjGOtHg80ep1SHzw,4537
29
+ memra-ops/tests/test_schema_aware_sql.py,sha256=b_XPtv7eldR2ARBVlriTHMA1nwqYUcMgthL8mHpewuM,4645
30
+ memra-ops/tests/test_schema_aware_sql_simple.py,sha256=8f8zijkTwvIqVHM3B5oVviRfFS-U6bfC43fk9hcWsoE,2309
31
+ memra-ops/tests/test_text_to_sql_demo.py,sha256=5mmpSwXZ8r8sj3J9iCYkFx0SgwyXPe-7Prie1hL6cis,5092
32
+ memra-ops/tools/mcp_bridge_server.py,sha256=IKUNusZovPdR0_6Bv_XejmAk27lnHrM1uOE8xPVnM8s,35051
33
+ memra-sdk/setup.py,sha256=j95Pq2ha28B3owPv0J1isq5pgUwa9p02nbBXqxa4Lwo,1513
34
+ memra-sdk/examples/accounts_payable.py,sha256=PfpXKrGOUu6NpkNcHy6cN6TtsXfnsJZhUv-KGlOvDqY,7990
35
+ memra-sdk/examples/accounts_payable_client.py,sha256=tLHHCydEpasLHTHd4YULhSxFy6zs81X5PZHav0dlQ2I,7816
36
+ memra-sdk/examples/accounts_payable_mcp.py,sha256=lOgwDfMVKxifQi70GmeXQnpZiIFrZnNj5_JSZ9qsdBw,7344
37
+ memra-sdk/examples/ask_questions.py,sha256=jek7EVXXZ_vODlMy_hQGQCkN9vYBfaW7SOWsIQRV2GY,3830
38
+ memra-sdk/examples/invoice_processing.py,sha256=STe3ri65WH_Ss84qiRWuGZTpDZke5GoJf8LEqOAc5ys,3980
39
+ memra-sdk/examples/propane_delivery.py,sha256=ryvIxDjM9GJY9T6fFIqJgHOcX2PEMkfF_t_3E5CyZW4,2539
40
+ memra-sdk/examples/simple_text_to_sql.py,sha256=NnpKo9nFpmPQ089zcSx4wwG6_tSHTmGJSS7LPs55NA0,5314
41
+ memra-sdk/memra/__init__.py,sha256=CTiSeBBZ40-pNd2-wBIdZduqNLrA5OnWmmwk1y1f894,787
42
+ memra-sdk/memra/discovery.py,sha256=yJIQnrDQu1nyzKykCIuzG_5SW5dIXHCEBLLKRWacIoY,480
43
+ memra-sdk/memra/discovery_client.py,sha256=AbnKn6qhyrf7vmOvknEeDzH4tiGHsqPHtDaein_qaW0,1271
44
+ memra-sdk/memra/execution.py,sha256=P7tAur0SEMtX6uLlfxTfCZBgMLIRj6Wl3dsv2EA9fHc,23443
45
+ memra-sdk/memra/models.py,sha256=sXMPRnMB_mUVtJdBFyd0ElCf_uh1yqx7iLssIYNm0vI,3333
46
+ memra-sdk/memra/tool_registry.py,sha256=P2TafpiqV19yzi0jVrQQrXFGBpQkbmePbRfEW_ai24M,14700
47
+ memra-sdk/memra/tool_registry_client.py,sha256=uzMQ4COvRams9vuPLcqcdljUpDlAYU_tyFxrRhrA0Lc,4009
48
+ memra-sdk/scripts/release.py,sha256=riQ-jz7-vnd1cSfQdU1eUZmVDyuWym1nmZW65lGetiI,4218
49
+ memra-workflows/mcp_bridge_server.py,sha256=6K9fedZiwNpkT7wGAS6IW-HgMYBUC94zu8ppUgftqDg,8528
50
+ memra-workflows/accounts_payable/accounts_payable.py,sha256=rRpviqKZ-g0KPEnI98GbXy-KnyTrN1dLkj0HP9PKlYs,8012
51
+ memra-workflows/accounts_payable/accounts_payable_client.py,sha256=kNu2EQ8d6T6qcKn68FznnMGBeoqtXFbN4PHDVDImapk,7813
52
+ memra-workflows/accounts_payable/accounts_payable_mcp.py,sha256=kySt7PKyIgLbG1Q3jPY1kFPQK8o_3aAmL9vJG2Qcnxc,7366
53
+ memra-workflows/accounts_payable/accounts_payable_smart.py,sha256=g_V6-1qPsLiIOFw-eLT4w-RoljjErF65SuKRzkEeSck,8004
54
+ memra-workflows/invoice_processing/invoice_processing.py,sha256=STe3ri65WH_Ss84qiRWuGZTpDZke5GoJf8LEqOAc5ys,3980
55
+ memra-workflows/invoice_processing/smart_invoice_processor.py,sha256=Ct3ZjNujK4VTlCDgwMWXn6Y7b1dg0a_eIbRP-xm-p3g,7203
56
+ memra-workflows/logic/__init__.py,sha256=kLTdniFpBqOusmRng8W2LSIAmgj-jfM3Agjl_vXYTl8,76
57
+ memra-workflows/logic/file_tools.py,sha256=n6uDwInPZcr74zAJJbA9iZajWgRcKoHYtEKX_lbzsik,1586
58
+ memra-workflows/logic/invoice_tools.py,sha256=wLTI0JqkMYMlFv1z_DPwliIvKbpFBcYh5SnEnhU13Co,20366
59
+ memra-workflows/logic/propane_agents.py,sha256=ZF1RSccn73a5XZVa-1nxgjvubcYzf62g9lr9PoTbGl4,1804
60
+ memra-workflows/propane_delivery/propane_delivery.py,sha256=ryvIxDjM9GJY9T6fFIqJgHOcX2PEMkfF_t_3E5CyZW4,2539
61
+ memra-workflows/text_to_sql/complete_invoice_workflow_with_queries.py,sha256=x4wq3o_ogFnnrI6MQwEhqIiNH-NNwS5SXQUoKd_br7U,7428
62
+ memra-workflows/text_to_sql/complete_text_to_sql_system.py,sha256=Izj4ucXDXTWFY29SWr2YrEf3ZyXH4QCDEljNk4jlpI0,8991
63
+ memra-workflows/text_to_sql/file_discovery_demo.py,sha256=4R_QN0Y6OtHmnX6CvtwDXen122XCDrk-MRBOzxb_x_k,5306
64
+ memra-0.2.5.dist-info/METADATA,sha256=JASskcVQrw_ntJSY3XI5_Ac0Sqi9xC9FpGhsRo3jP08,10736
65
+ memra-0.2.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
66
+ memra-0.2.5.dist-info/entry_points.txt,sha256=8OKRAUYIh1Eg3s6A8dJCIhoPTcyhe0N5_c_GcLXYs48,45
67
+ memra-0.2.5.dist-info/top_level.txt,sha256=IviXF9qSQY_BidRYund9zFaV-q1VMl6CuizwTAggQks,42
68
+ memra-0.2.5.dist-info/RECORD,,
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ memra = scripts.memra:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Memra
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,4 @@
1
+ memra
2
+ memra-ops
3
+ memra-sdk
4
+ memra-workflows