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.
- erdo/__init__.py +35 -0
- erdo/_generated/__init__.py +18 -0
- erdo/_generated/actions/__init__.py +34 -0
- erdo/_generated/actions/analysis.py +179 -0
- erdo/_generated/actions/bot.py +186 -0
- erdo/_generated/actions/codeexec.py +199 -0
- erdo/_generated/actions/llm.py +148 -0
- erdo/_generated/actions/memory.py +463 -0
- erdo/_generated/actions/pdfextractor.py +97 -0
- erdo/_generated/actions/resource_definitions.py +296 -0
- erdo/_generated/actions/sqlexec.py +90 -0
- erdo/_generated/actions/utils.py +475 -0
- erdo/_generated/actions/webparser.py +119 -0
- erdo/_generated/actions/websearch.py +85 -0
- erdo/_generated/condition/__init__.py +556 -0
- erdo/_generated/internal.py +51 -0
- erdo/_generated/internal_actions.py +91 -0
- erdo/_generated/parameters.py +17 -0
- erdo/_generated/secrets.py +17 -0
- erdo/_generated/template_functions.py +55 -0
- erdo/_generated/types.py +3907 -0
- erdo/actions/__init__.py +40 -0
- erdo/bot_permissions.py +266 -0
- erdo/cli_entry.py +73 -0
- erdo/conditions/__init__.py +11 -0
- erdo/config/__init__.py +5 -0
- erdo/config/config.py +140 -0
- erdo/formatting.py +279 -0
- erdo/install_cli.py +140 -0
- erdo/integrations.py +131 -0
- erdo/invoke/__init__.py +11 -0
- erdo/invoke/client.py +234 -0
- erdo/invoke/invoke.py +555 -0
- erdo/state.py +376 -0
- erdo/sync/__init__.py +17 -0
- erdo/sync/client.py +95 -0
- erdo/sync/extractor.py +492 -0
- erdo/sync/sync.py +327 -0
- erdo/template.py +136 -0
- erdo/test/__init__.py +41 -0
- erdo/test/evaluate.py +272 -0
- erdo/test/runner.py +263 -0
- erdo/types.py +1431 -0
- erdo-0.1.31.dist-info/METADATA +471 -0
- erdo-0.1.31.dist-info/RECORD +48 -0
- erdo-0.1.31.dist-info/WHEEL +4 -0
- erdo-0.1.31.dist-info/entry_points.txt +2 -0
- 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,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.
|