erdo 0.1.31__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 (48) hide show
  1. erdo/__init__.py +35 -0
  2. erdo/_generated/__init__.py +18 -0
  3. erdo/_generated/actions/__init__.py +34 -0
  4. erdo/_generated/actions/analysis.py +179 -0
  5. erdo/_generated/actions/bot.py +186 -0
  6. erdo/_generated/actions/codeexec.py +199 -0
  7. erdo/_generated/actions/llm.py +148 -0
  8. erdo/_generated/actions/memory.py +463 -0
  9. erdo/_generated/actions/pdfextractor.py +97 -0
  10. erdo/_generated/actions/resource_definitions.py +296 -0
  11. erdo/_generated/actions/sqlexec.py +90 -0
  12. erdo/_generated/actions/utils.py +475 -0
  13. erdo/_generated/actions/webparser.py +119 -0
  14. erdo/_generated/actions/websearch.py +85 -0
  15. erdo/_generated/condition/__init__.py +556 -0
  16. erdo/_generated/internal.py +51 -0
  17. erdo/_generated/internal_actions.py +91 -0
  18. erdo/_generated/parameters.py +17 -0
  19. erdo/_generated/secrets.py +17 -0
  20. erdo/_generated/template_functions.py +55 -0
  21. erdo/_generated/types.py +3907 -0
  22. erdo/actions/__init__.py +40 -0
  23. erdo/bot_permissions.py +266 -0
  24. erdo/cli_entry.py +73 -0
  25. erdo/conditions/__init__.py +11 -0
  26. erdo/config/__init__.py +5 -0
  27. erdo/config/config.py +140 -0
  28. erdo/formatting.py +279 -0
  29. erdo/install_cli.py +140 -0
  30. erdo/integrations.py +131 -0
  31. erdo/invoke/__init__.py +11 -0
  32. erdo/invoke/client.py +234 -0
  33. erdo/invoke/invoke.py +555 -0
  34. erdo/state.py +376 -0
  35. erdo/sync/__init__.py +17 -0
  36. erdo/sync/client.py +95 -0
  37. erdo/sync/extractor.py +492 -0
  38. erdo/sync/sync.py +327 -0
  39. erdo/template.py +136 -0
  40. erdo/test/__init__.py +41 -0
  41. erdo/test/evaluate.py +272 -0
  42. erdo/test/runner.py +263 -0
  43. erdo/types.py +1431 -0
  44. erdo-0.1.31.dist-info/METADATA +471 -0
  45. erdo-0.1.31.dist-info/RECORD +48 -0
  46. erdo-0.1.31.dist-info/WHEEL +4 -0
  47. erdo-0.1.31.dist-info/entry_points.txt +2 -0
  48. erdo-0.1.31.dist-info/licenses/LICENSE +22 -0
@@ -0,0 +1,471 @@
1
+ Metadata-Version: 2.4
2
+ Name: erdo
3
+ Version: 0.1.31
4
+ Summary: Python SDK for building workflow automation agents with Erdo
5
+ Project-URL: Homepage, https://erdo.ai
6
+ Project-URL: Documentation, https://docs.erdo.ai
7
+ Project-URL: Repository, https://github.com/erdoai/erdo-python-sdk
8
+ Project-URL: Issues, https://github.com/erdoai/erdo-python-sdk/issues
9
+ Author-email: Erdo AI <hello@erdo.ai>
10
+ License: Proprietary
11
+ License-File: LICENSE
12
+ Keywords: agents,ai,automation,data,workflow
13
+ Classifier: Development Status :: 3 - Alpha
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: Other/Proprietary License
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Programming Language :: Python :: 3.14
23
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
24
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
25
+ Requires-Python: >=3.9
26
+ Requires-Dist: pydantic>=2.0.0
27
+ Requires-Dist: requests>=2.31.0
28
+ Requires-Dist: typing-extensions>=4.0.0
29
+ Provides-Extra: dev
30
+ Requires-Dist: black>=23.0.0; extra == 'dev'
31
+ Requires-Dist: flake8>=6.0.0; extra == 'dev'
32
+ Requires-Dist: isort>=5.0.0; extra == 'dev'
33
+ Requires-Dist: mypy>=1.0.0; extra == 'dev'
34
+ Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
35
+ Requires-Dist: pytest>=7.0.0; extra == 'dev'
36
+ Requires-Dist: types-pyyaml>=6.0.0; extra == 'dev'
37
+ Requires-Dist: types-requests>=2.31.0; extra == 'dev'
38
+ Description-Content-Type: text/markdown
39
+
40
+ # Erdo Agent SDK
41
+
42
+ Build AI agents and workflows with Python. The Erdo Agent SDK provides a declarative way to create agents that can be executed by the [Erdo platform](https://erdo.ai).
43
+
44
+ ## Installation
45
+
46
+ ```bash
47
+ pip install erdo
48
+ ```
49
+
50
+ ## Quick Start
51
+
52
+ ### Creating Agents
53
+
54
+ Create agents using the `Agent` class and define steps with actions:
55
+
56
+ ```python
57
+ from erdo import Agent, state
58
+ from erdo.actions import memory, llm
59
+ from erdo.conditions import IsSuccess, GreaterThan
60
+
61
+ # Create an agent
62
+ data_analyzer = Agent(
63
+ name="data analyzer",
64
+ description="Analyzes data files and provides insights",
65
+ running_status="Analyzing data...",
66
+ finished_status="Analysis complete",
67
+ )
68
+
69
+ # Step 1: Search for relevant context
70
+ search_step = data_analyzer.step(
71
+ memory.search(
72
+ query=state.query,
73
+ organization_scope="specific",
74
+ limit=5,
75
+ max_distance=0.8
76
+ )
77
+ )
78
+
79
+ # Step 2: Analyze the data with AI
80
+ analyze_step = data_analyzer.step(
81
+ llm.message(
82
+ model="claude-sonnet-4-20250514",
83
+ system_prompt="You are a data analyst. Analyze the data and provide insights.",
84
+ query=state.query,
85
+ context=search_step.output.memories,
86
+ response_format={
87
+ "Type": "json_schema",
88
+ "Schema": {
89
+ "type": "object",
90
+ "required": ["insights", "confidence", "recommendations"],
91
+ "properties": {
92
+ "insights": {"type": "string", "description": "Key insights found"},
93
+ "confidence": {"type": "number", "description": "Confidence 0-1"},
94
+ "recommendations": {"type": "array", "items": {"type": "string"}},
95
+ },
96
+ },
97
+ },
98
+ ),
99
+ depends_on=search_step,
100
+ )
101
+ ```
102
+
103
+ ### Code Execution with External Files
104
+
105
+ Use the `@agent.exec` decorator to execute code with external Python files:
106
+
107
+ ```python
108
+ from erdo.types import PythonFile
109
+
110
+ @data_analyzer.exec(
111
+ code_files=[
112
+ PythonFile(filename="analysis_files/analyze.py"),
113
+ PythonFile(filename="analysis_files/utils.py"),
114
+ ]
115
+ )
116
+ def execute_analysis():
117
+ """Execute detailed analysis using external code files."""
118
+ from analysis_files.analyze import analyze_data
119
+ from analysis_files.utils import prepare_data
120
+
121
+ # Prepare and analyze data
122
+ prepared_data = prepare_data(context.parameters.get("dataset", {}))
123
+ results = analyze_data(context)
124
+
125
+ return results
126
+ ```
127
+
128
+ ### Conditional Step Execution
129
+
130
+ Handle step results with conditions:
131
+
132
+ ```python
133
+ from erdo.conditions import IsSuccess, GreaterThan
134
+
135
+ # Store high-confidence results
136
+ analyze_step.on(
137
+ IsSuccess() & GreaterThan("confidence", "0.8"),
138
+ memory.store(
139
+ memory={
140
+ "content": analyze_step.output.insights,
141
+ "description": "High-confidence data analysis results",
142
+ "type": "analysis",
143
+ "tags": ["analysis", "high-confidence"],
144
+ }
145
+ ),
146
+ )
147
+
148
+ # Execute detailed analysis for high-confidence results
149
+ analyze_step.on(
150
+ IsSuccess() & GreaterThan("confidence", "0.8"),
151
+ execute_analysis
152
+ )
153
+ ```
154
+
155
+ ### Complex Execution Modes
156
+
157
+ Use execution modes for advanced workflows:
158
+
159
+ ```python
160
+ from erdo import ExecutionMode, ExecutionModeType
161
+ from erdo.actions import bot
162
+ from erdo.conditions import And, IsAny
163
+ from erdo.template import TemplateString
164
+
165
+ # Iterate over resources
166
+ analyze_files = agent.step(
167
+ action=bot.invoke(
168
+ bot_name="file analyzer",
169
+ parameters={"resource": TemplateString("{{resources}}")},
170
+ ),
171
+ key="analyze_files",
172
+ execution_mode=ExecutionMode(
173
+ mode=ExecutionModeType.ITERATE_OVER,
174
+ data="parameters.resource",
175
+ if_condition=And(
176
+ IsAny(key="dataset.analysis_summary", value=["", None]),
177
+ IsAny(key="dataset.type", value=["FILE"]),
178
+ ),
179
+ )
180
+ )
181
+ ```
182
+
183
+ ### Loading Prompts
184
+
185
+ Use the `Prompt` class to load prompts from files:
186
+
187
+ ```python
188
+ from erdo import Prompt
189
+
190
+ # Load prompts from a directory
191
+ prompts = Prompt.load_from_directory("prompts")
192
+
193
+ # Use in your agent steps
194
+ step = agent.step(
195
+ llm.message(
196
+ system_prompt=prompts.system_prompt,
197
+ query=state.query,
198
+ )
199
+ )
200
+ ```
201
+
202
+ ### State and Templating
203
+
204
+ Access dynamic data using the `state` object and template strings:
205
+
206
+ ```python
207
+ from erdo import state
208
+ from erdo.template import TemplateString
209
+
210
+ # Access input parameters
211
+ query = state.query
212
+ dataset = state.dataset
213
+
214
+ # Use in template strings
215
+ template = TemplateString("Analyzing: {{query}} for dataset {{dataset.id}}")
216
+ ```
217
+
218
+ ## Core Concepts
219
+
220
+ ### Actions
221
+
222
+ Actions are the building blocks of your agents. Available action modules:
223
+
224
+ - `erdo.actions.memory` - Memory storage and search
225
+ - `erdo.actions.llm` - Large language model interactions
226
+ - `erdo.actions.bot` - Bot invocation and orchestration
227
+ - `erdo.actions.codeexec` - Code execution
228
+ - `erdo.actions.utils` - Utility functions
229
+ - `erdo.actions.resource_definitions` - Resource management
230
+
231
+ ### Conditions
232
+
233
+ Conditions control when steps execute:
234
+
235
+ - `IsSuccess()`, `IsError()` - Check step status
236
+ - `GreaterThan()`, `LessThan()` - Numeric comparisons
237
+ - `TextEquals()`, `TextContains()` - Text matching
238
+ - `And()`, `Or()`, `Not()` - Logical operators
239
+
240
+ ### Types
241
+
242
+ Key types for agent development:
243
+
244
+ - `Agent` - Main agent class
245
+ - `ExecutionMode` - Control step execution behavior
246
+ - `PythonFile` - Reference external Python files
247
+ - `TemplateString` - Dynamic string templates
248
+ - `Prompt` - Prompt management
249
+
250
+ ## Advanced Features
251
+
252
+ ### Multi-Step Dependencies
253
+
254
+ Create complex workflows with step dependencies:
255
+
256
+ ```python
257
+ step1 = agent.step(memory.search(...))
258
+ step2 = agent.step(llm.message(...), depends_on=step1)
259
+ step3 = agent.step(utils.send_status(...), depends_on=[step1, step2])
260
+ ```
261
+
262
+ ### Dynamic Data Access
263
+
264
+ Use the state object to access runtime data:
265
+
266
+ ```python
267
+ # Access nested data
268
+ user_id = state.user.id
269
+ dataset_config = state.dataset.config.type
270
+
271
+ # Use in actions
272
+ step = agent.step(
273
+ memory.search(query=f"data for user {state.user.id}")
274
+ )
275
+ ```
276
+
277
+ ### Error Handling
278
+
279
+ Handle errors with conditions and fallback steps:
280
+
281
+ ```python
282
+ from erdo.conditions import IsError
283
+
284
+ main_step = agent.step(llm.message(...))
285
+
286
+ # Handle errors
287
+ main_step.on(
288
+ IsError(),
289
+ utils.send_status(
290
+ message="Analysis failed, please try again",
291
+ status="error"
292
+ )
293
+ )
294
+ ```
295
+
296
+ ## Invoking Agents
297
+
298
+ Use the `invoke()` function to execute agents programmatically:
299
+
300
+ ```python
301
+ from erdo import invoke
302
+
303
+ # Invoke an agent
304
+ response = invoke(
305
+ "data-question-answerer",
306
+ messages=[{"role": "user", "content": "What were Q4 sales?"}],
307
+ datasets=["sales-2024"],
308
+ parameters={"time_period": "Q4"},
309
+ )
310
+
311
+ if response.success:
312
+ print(response.result)
313
+ else:
314
+ print(f"Error: {response.error}")
315
+ ```
316
+
317
+ ### Invocation Modes
318
+
319
+ Control how bot actions are executed for testing and development:
320
+
321
+ | Mode | Description | Cost |
322
+ |------|-------------|------|
323
+ | **live** | Execute with real API calls | $$$ per run |
324
+ | **replay** | Cache responses, replay on subsequent runs | $$$ first run, FREE after |
325
+ | **manual** | Use developer-provided mock responses | FREE always |
326
+
327
+ ```python
328
+ # Live mode (default) - real API calls
329
+ response = invoke("my-agent", messages=[...], mode="live")
330
+
331
+ # Replay mode - cache after first run (recommended for testing!)
332
+ response = invoke("my-agent", messages=[...], mode="replay")
333
+
334
+ # Replay with refresh - bypass cache, get fresh response
335
+ response = invoke("my-agent", messages=[...], mode={"mode": "replay", "refresh": True})
336
+
337
+ # Manual mode - use mock responses
338
+ response = invoke(
339
+ "my-agent",
340
+ messages=[...],
341
+ mode="manual",
342
+ manual_mocks={
343
+ "llm.message": {
344
+ "status": "success",
345
+ "output": {"content": "Mocked response"}
346
+ }
347
+ }
348
+ )
349
+ ```
350
+
351
+ **Replay Mode Refresh:**
352
+ The `refresh` parameter forces a fresh API call while staying in replay mode:
353
+ - First run: Executes and caches the response
354
+ - Subsequent runs: Uses cached response (free!)
355
+ - With refresh: Bypasses cache, gets fresh response, updates cache
356
+
357
+ Perfect for updating cached responses after bot changes without switching modes.
358
+
359
+ ## Testing Agents
360
+
361
+ Write fast, parallel agent tests using `agent_test_*` functions:
362
+
363
+ ```python
364
+ from erdo import invoke
365
+ from erdo.test import text_contains
366
+
367
+ def agent_test_csv_sales():
368
+ """Test CSV sales analysis."""
369
+ response = invoke(
370
+ "data-question-answerer",
371
+ messages=[{"role": "user", "content": "What were Q4 sales?"}],
372
+ datasets=["sales-q4-2024"],
373
+ mode="replay", # Free after first run!
374
+ )
375
+
376
+ assert response.success
377
+ result_text = str(response.result)
378
+ assert text_contains(result_text, "sales", case_sensitive=False)
379
+ ```
380
+
381
+ Run tests in parallel with the CLI:
382
+
383
+ ```bash
384
+ # Run all tests
385
+ erdo agent-test tests/test_my_agent.py
386
+
387
+ # Verbose output
388
+ erdo agent-test tests/test_my_agent.py --verbose
389
+
390
+ # Refresh cached responses (bypass cache for all replay mode tests)
391
+ erdo agent-test tests/test_my_agent.py --refresh
392
+ ```
393
+
394
+ **Refresh Flag:**
395
+ The `--refresh` flag forces all tests using `mode="replay"` to bypass cache and get fresh responses. Perfect for:
396
+ - Updating cached responses after bot changes
397
+ - Verifying tests with current LLM behavior
398
+ - No code changes needed - just add the flag!
399
+
400
+ ### Test Helpers
401
+
402
+ The `erdo.test` module provides assertion helpers:
403
+
404
+ ```python
405
+ from erdo.test import (
406
+ text_contains, # Check if text contains substring
407
+ text_equals, # Check exact match
408
+ text_matches, # Check regex pattern
409
+ json_path_equals, # Check JSON path value
410
+ json_path_exists, # Check if JSON path exists
411
+ has_dataset, # Check if dataset is present
412
+ )
413
+ ```
414
+
415
+ ## CLI Integration
416
+
417
+ Deploy and manage your agents using the Erdo CLI:
418
+
419
+ ```bash
420
+ # Login to your account
421
+ erdo login
422
+
423
+ # Sync your agents to the platform
424
+ erdo sync-agent my_agent.py
425
+
426
+ # Invoke an agent
427
+ erdo invoke my-agent --message "Hello!"
428
+
429
+ # Run agent tests
430
+ erdo agent-test tests/test_my_agent.py
431
+ ```
432
+
433
+ ## Examples
434
+
435
+ See the `examples/` directory for complete examples:
436
+
437
+ - `agent_centric_example.py` - Comprehensive agent with multiple steps
438
+ - `state_example.py` - State management and templating
439
+ - `invoke_example.py` - Agent invocation patterns
440
+ - `agent_test_example.py` - Agent testing examples
441
+
442
+ ## API Reference
443
+
444
+ ### Core Classes
445
+
446
+ - **Agent**: Main agent class for creating workflows
447
+ - **ExecutionMode**: Control step execution (iterate, conditional, etc.)
448
+ - **Prompt**: Load and manage prompt templates
449
+
450
+ ### Actions
451
+
452
+ - **memory**: Store and search memories
453
+ - **llm**: Interact with language models
454
+ - **bot**: Invoke other bots and agents
455
+ - **codeexec**: Execute Python code
456
+ - **utils**: Utility functions (status, notifications, etc.)
457
+
458
+ ### Conditions
459
+
460
+ - **Comparison**: `GreaterThan`, `LessThan`, `TextEquals`, etc.
461
+ - **Status**: `IsSuccess`, `IsError`, `IsNull`, etc.
462
+ - **Logical**: `And`, `Or`, `Not`
463
+
464
+ ### State & Templating
465
+
466
+ - **state**: Access runtime parameters and data
467
+ - **TemplateString**: Dynamic string templates with `{{variable}}` syntax
468
+
469
+ ## License
470
+
471
+ Commercial License - see LICENSE file for details.
@@ -0,0 +1,48 @@
1
+ erdo/__init__.py,sha256=qHL0RC-93sT0NGIPy_jbl_Or0xUb3KfaA0dZ7nGvf8A,1151
2
+ erdo/bot_permissions.py,sha256=NZSjjGURORpq3hRqv0tA0YvkxcTZ9MQqtmzrlmof29c,8261
3
+ erdo/cli_entry.py,sha256=jz18bWz-D09rmkEvwLTAbcK1shHUqFCpiU7U7czEltY,2057
4
+ erdo/formatting.py,sha256=jIfQlqk1oKratM8Fkrlq1rRsnergthbSQFCfeEd6rqY,8346
5
+ erdo/install_cli.py,sha256=jgRoSm-MIbLHW0Sr5m78q3htRwIh7JXo_wNmpVsiAcM,4454
6
+ erdo/integrations.py,sha256=-xYBpjYmjhJtv_UnaIfBb46cJC4icLOx9P1kOf5lM-g,4219
7
+ erdo/state.py,sha256=o89-SThDWYNjfwMZuDfier1Lx96_tLi5wYSth7dPI6I,14270
8
+ erdo/template.py,sha256=gvlSpEN3whD4LEqY6ppeYYZuFeM9ndU68qzKP-ETRJ8,4641
9
+ erdo/types.py,sha256=_JX8E75eVNu2NYwQu_SDRzkQ8_ZcQo-eoGVjwnuWUOE,57030
10
+ erdo/_generated/__init__.py,sha256=jFLoVFeswecK5mGp4-MPWwnygol2dYIsEpnmm9gubHY,506
11
+ erdo/_generated/internal.py,sha256=ghd1g_9WF0kXO2MkFIBxcuHuRF00SlOeT-mjJcfQNyM,1569
12
+ erdo/_generated/internal_actions.py,sha256=dbZgHNF5RQhjyB8VAJ-4eaV2XUlqHKv99m-DtNNx7rI,2661
13
+ erdo/_generated/parameters.py,sha256=QC-_75fQg_iFu-dvI9ce4yHP9UnFItDWe6sBfzfXaig,472
14
+ erdo/_generated/secrets.py,sha256=F2xBkFsiYXOJnZ5Tcrc9uiaakyirHlKFkYCFxZKANtw,454
15
+ erdo/_generated/template_functions.py,sha256=mgFqsXxL36dMNptzDaGvNEjoA76nFf4k9ZRz-J4Ozdc,1174
16
+ erdo/_generated/types.py,sha256=OuDYBt5SkAs2fKlqrZ8-X5KIEKQBeVChK5sph5RaDZ0,131696
17
+ erdo/_generated/actions/__init__.py,sha256=L5YKDEe1RikpvtkWxmTAThVLa-HxGfur3kcO-S7RB_w,1223
18
+ erdo/_generated/actions/analysis.py,sha256=-LMXVQmhQ5G5fadMsLJxIa2YlhlYzDGoF6G4fpgpv2A,5497
19
+ erdo/_generated/actions/bot.py,sha256=VhDIgtHCcUDovDyXT14ow8qntKxe73KhOvN6FO3c454,6456
20
+ erdo/_generated/actions/codeexec.py,sha256=31cZWnFHSAsYeu_y_gLlhcoKVpSl-C701OvilKb_qo4,6698
21
+ erdo/_generated/actions/llm.py,sha256=CnAdNU-Ei3P_N6LSuvyuPzFvN8Zl-C6B6L7rgefPiAo,5282
22
+ erdo/_generated/actions/memory.py,sha256=3SF84ecUGq12amOL3ly20O3CnoEj7T63NQvJSv4gUuc,17014
23
+ erdo/_generated/actions/pdfextractor.py,sha256=UQ10OQ3K3FNKkqx18aG67Xbqd3GjB0nNh7DA6mpNs2g,3535
24
+ erdo/_generated/actions/resource_definitions.py,sha256=0vzElFygA__fUYhgUOlcmyhkGwqLCNnxiPYcW6c3sDk,10787
25
+ erdo/_generated/actions/sqlexec.py,sha256=riUkVHyoQLIPVSOmTiVG0lIiKeLmrlgBZL3HP6Uqhqo,2862
26
+ erdo/_generated/actions/utils.py,sha256=jhCh2jJbeM_h1kgfVepIh6S-hBzoHidICDkhVn16MNk,14617
27
+ erdo/_generated/actions/webparser.py,sha256=TonVmfVvnUPthvAT2rC_l8hvO25rCPhtYVR36pNPNQI,4184
28
+ erdo/_generated/actions/websearch.py,sha256=KGKeJwZDBUXg-fPkq8oe7vw1zsspSNJ_Ei-BhSLi3zg,2715
29
+ erdo/_generated/condition/__init__.py,sha256=BgAXUvg996k85DAhXUB2hwpqIazKoYo5WxRXqnoFEL0,15908
30
+ erdo/actions/__init__.py,sha256=kb9vGSmhSGwxKNGacUCquu6z3d8u972uIw9x13aCrp0,1311
31
+ erdo/conditions/__init__.py,sha256=xN7MS1aj4lh65CrE-94yFQXnQV8v8VjdEXMzPLTK0CU,394
32
+ erdo/config/__init__.py,sha256=lROKyMtaH5cMiF1RcIRA2NLR1Sp8AKWx4brcPT1Vwy8,147
33
+ erdo/config/config.py,sha256=BSerQVQdbbp1KuARpIuKp6bM1M4Cqr-Bsf0nQJJTND8,4279
34
+ erdo/invoke/__init__.py,sha256=QhMBmUR8OXuyFS8fbNntjpRd7LNeKlV8Y8x6qSjgQ0I,249
35
+ erdo/invoke/client.py,sha256=NNuZRQGvLFDENMCub4xLzEpihFYdc6PauKyA99pncsk,8523
36
+ erdo/invoke/invoke.py,sha256=wSI_bj_EvRmCVXxnRNvtij8kEQhu1UVJ_dH3ILOUQfs,22849
37
+ erdo/sync/__init__.py,sha256=f-7-9cYngOiLrTDAng3JxMC86JIE6jFk6-Vjz_dMybs,311
38
+ erdo/sync/client.py,sha256=LrcyrsapuyrqmuPh-UwbocL7WUhHZ9zkDItXzon_AUs,3022
39
+ erdo/sync/extractor.py,sha256=nLCtg_I0XeHN-c9zFIJaLfPWKOMNJlZEBBsxCgEjU6I,17593
40
+ erdo/sync/sync.py,sha256=KzuChW5ramY8rX6QM3emRda928A09CQzFLmLJ5PLztg,10421
41
+ erdo/test/__init__.py,sha256=_OevGagFDTykFcYzA__FARXiS5kgT9tK90r_0TmyGQQ,1114
42
+ erdo/test/evaluate.py,sha256=-6vX6ynW8ICYaoXZLl-xdzAALvx1aSl1CurIRkgSJ0s,7730
43
+ erdo/test/runner.py,sha256=vZR9PLKT2nDMzHyPm_jniGSA9eddGk4p1dQq0h1dRms,7299
44
+ erdo-0.1.31.dist-info/METADATA,sha256=G4HhgVG3jnZ1iR4oUxq9JNqn0tzOCFpPjZH-7w_DTlg,12710
45
+ erdo-0.1.31.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
46
+ erdo-0.1.31.dist-info/entry_points.txt,sha256=KFGSp8-6IE3-8dSr-3Djqye3IdEY65Y4E8fABoFUCHg,45
47
+ erdo-0.1.31.dist-info/licenses/LICENSE,sha256=9pdgUAuBAumY5tewMdJnx2Ozj8dS6gGKsSiY-SVInu4,1034
48
+ erdo-0.1.31.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.28.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ erdo = erdo.cli_entry:main
@@ -0,0 +1,22 @@
1
+ Erdo Agents SDK License
2
+
3
+ Copyright (c) 2024 Erdo AI LLC
4
+
5
+ All rights reserved.
6
+
7
+ This software is proprietary to Erdo AI LLC and is protected by copyright law.
8
+ No part of this software may be reproduced, distributed, or transmitted in
9
+ any form or by any means, including photocopying, recording, or other
10
+ electronic or mechanical methods, without the prior written permission of
11
+ Erdo AI LLC, except in the case of brief quotations embodied in critical reviews
12
+ and certain other noncommercial uses permitted by copyright law.
13
+
14
+ For permission requests, contact: legal@erdo.ai
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ SOFTWARE.