edda-framework 0.5.0__py3-none-any.whl → 0.7.0__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.
- edda/integrations/mcp/decorators.py +101 -5
- edda/integrations/mcp/server.py +36 -15
- edda/storage/protocol.py +18 -4
- edda/storage/sqlalchemy_storage.py +105 -5
- edda/viewer_ui/app.py +552 -126
- edda/viewer_ui/components.py +81 -68
- edda/viewer_ui/data_service.py +42 -3
- edda/viewer_ui/theme.py +200 -0
- {edda_framework-0.5.0.dist-info → edda_framework-0.7.0.dist-info}/METADATA +8 -5
- {edda_framework-0.5.0.dist-info → edda_framework-0.7.0.dist-info}/RECORD +13 -12
- {edda_framework-0.5.0.dist-info → edda_framework-0.7.0.dist-info}/WHEEL +1 -1
- {edda_framework-0.5.0.dist-info → edda_framework-0.7.0.dist-info}/entry_points.txt +0 -0
- {edda_framework-0.5.0.dist-info → edda_framework-0.7.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: edda-framework
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.0
|
|
4
4
|
Summary: Lightweight Durable Execution Framework
|
|
5
5
|
Project-URL: Homepage, https://github.com/i2y/edda
|
|
6
6
|
Project-URL: Documentation, https://github.com/i2y/edda#readme
|
|
@@ -30,11 +30,13 @@ Requires-Dist: sqlalchemy[asyncio]>=2.0.0
|
|
|
30
30
|
Requires-Dist: uvloop>=0.22.1
|
|
31
31
|
Provides-Extra: dev
|
|
32
32
|
Requires-Dist: black>=25.9.0; extra == 'dev'
|
|
33
|
+
Requires-Dist: mcp>=1.22.0; extra == 'dev'
|
|
33
34
|
Requires-Dist: mypy>=1.18.2; extra == 'dev'
|
|
34
35
|
Requires-Dist: pytest-asyncio>=1.2.0; extra == 'dev'
|
|
35
36
|
Requires-Dist: pytest-cov>=7.0.0; extra == 'dev'
|
|
36
37
|
Requires-Dist: pytest>=8.4.2; extra == 'dev'
|
|
37
38
|
Requires-Dist: ruff>=0.14.2; extra == 'dev'
|
|
39
|
+
Requires-Dist: starlette>=0.40.0; extra == 'dev'
|
|
38
40
|
Requires-Dist: testcontainers[mysql]>=4.0.0; extra == 'dev'
|
|
39
41
|
Requires-Dist: testcontainers[postgres]>=4.0.0; extra == 'dev'
|
|
40
42
|
Requires-Dist: tsuno>=0.1.3; extra == 'dev'
|
|
@@ -709,7 +711,7 @@ def process_payment(ctx: WorkflowContext, amount: float) -> dict:
|
|
|
709
711
|
@workflow
|
|
710
712
|
async def payment_workflow(ctx: WorkflowContext, order_id: str) -> dict:
|
|
711
713
|
# Workflows still use async (for deterministic replay)
|
|
712
|
-
result = await process_payment(ctx, 99.99
|
|
714
|
+
result = await process_payment(ctx, 99.99)
|
|
713
715
|
return result
|
|
714
716
|
```
|
|
715
717
|
|
|
@@ -748,13 +750,14 @@ if __name__ == "__main__":
|
|
|
748
750
|
|
|
749
751
|
### Auto-Generated Tools
|
|
750
752
|
|
|
751
|
-
Each `@durable_tool` automatically generates **
|
|
753
|
+
Each `@durable_tool` automatically generates **four MCP tools**:
|
|
752
754
|
|
|
753
755
|
1. **Main tool** (`process_order`): Starts the workflow, returns instance ID
|
|
754
|
-
2. **Status tool** (`process_order_status`): Checks workflow progress
|
|
756
|
+
2. **Status tool** (`process_order_status`): Checks workflow progress with completed activity count and suggested poll interval
|
|
755
757
|
3. **Result tool** (`process_order_result`): Gets final result when completed
|
|
758
|
+
4. **Cancel tool** (`process_order_cancel`): Cancels workflow if running or waiting, executes compensation handlers
|
|
756
759
|
|
|
757
|
-
This enables AI assistants to work with workflows that take minutes, hours, or even days to complete.
|
|
760
|
+
This enables AI assistants to work with workflows that take minutes, hours, or even days to complete, with full control over the workflow lifecycle.
|
|
758
761
|
|
|
759
762
|
### MCP Prompts
|
|
760
763
|
|
|
@@ -14,8 +14,8 @@ edda/workflow.py,sha256=daSppYAzgXkjY_9-HS93Zi7_tPR6srmchxY5YfwgU-4,7239
|
|
|
14
14
|
edda/wsgi.py,sha256=1pGE5fhHpcsYnDR8S3NEFKWUs5P0JK4roTAzX9BsIj0,2391
|
|
15
15
|
edda/integrations/__init__.py,sha256=F_CaTvlDEbldfOpPKq_U9ve1E573tS6XzqXnOtyHcXI,33
|
|
16
16
|
edda/integrations/mcp/__init__.py,sha256=YK-8m0DIdP-RSqewlIX7xnWU7TD3NioCiW2_aZSgnn8,1232
|
|
17
|
-
edda/integrations/mcp/decorators.py,sha256=
|
|
18
|
-
edda/integrations/mcp/server.py,sha256=
|
|
17
|
+
edda/integrations/mcp/decorators.py,sha256=31SmbDwmHEGvUNa3aaatW91hBkpnS5iN9uy47dID3J4,10037
|
|
18
|
+
edda/integrations/mcp/server.py,sha256=Q5r4AbMn-9gBcy2CZocbgW7O0fn7Qb4e9CBJa1FEmzU,14507
|
|
19
19
|
edda/integrations/opentelemetry/__init__.py,sha256=x1_PyyygGDW-rxQTwoIrGzyjKErXHOOKdquFAMlCOAo,906
|
|
20
20
|
edda/integrations/opentelemetry/hooks.py,sha256=FBYnSZBh8_0vw9M1E2AbJrx1cTTsKeiHf5wspr0UnzU,21288
|
|
21
21
|
edda/outbox/__init__.py,sha256=azXG1rtheJEjOyoWmMsBeR2jp8Bz02R3wDEd5tQnaWA,424
|
|
@@ -26,17 +26,18 @@ edda/serialization/base.py,sha256=xJy2CY9gdJDCF0tmCor8NomL2Lr_w7cveVvxccuc-tA,19
|
|
|
26
26
|
edda/serialization/json.py,sha256=Dq96V4n1yozexjCPd_CL6Iuvh1u3jJhef6sTcNxXZeA,2842
|
|
27
27
|
edda/storage/__init__.py,sha256=Q-kNJsjF8hMc2Q5MYFlLBENKExlNlKkbmUkwBOosj9I,216
|
|
28
28
|
edda/storage/models.py,sha256=usVPKLV4H1-LA6QC72_gkfYrG9T8AwkcmCXppBo-2gQ,7338
|
|
29
|
-
edda/storage/protocol.py,sha256=
|
|
30
|
-
edda/storage/sqlalchemy_storage.py,sha256=
|
|
29
|
+
edda/storage/protocol.py,sha256=j1YNW1TepuLvPvn7wCcPVIehs0obD30cGOMcyqMwtlA,25852
|
|
30
|
+
edda/storage/sqlalchemy_storage.py,sha256=dZ0ulDp6CuZEtDzkD0g76x4ew-dseLWRXrULVsW_isk,76258
|
|
31
31
|
edda/viewer_ui/__init__.py,sha256=N1-T33SXadOXcBsDSgJJ9Iqz4y4verJngWryQu70c5c,517
|
|
32
|
-
edda/viewer_ui/app.py,sha256=
|
|
33
|
-
edda/viewer_ui/components.py,sha256=
|
|
34
|
-
edda/viewer_ui/data_service.py,sha256=
|
|
32
|
+
edda/viewer_ui/app.py,sha256=Zf-ZMDWhmaTuKGJbb27NTQoLhOXMlF-aqRJ7VsC9BwA,95502
|
|
33
|
+
edda/viewer_ui/components.py,sha256=A0IxLwgj_Lu51O57OfzOwME8jzoJtKegEVvSnWc7uPo,45174
|
|
34
|
+
edda/viewer_ui/data_service.py,sha256=IK5I9Y2eho5VJz63DhBKuTEsS3LqkeV24Ctc75OGxDM,36478
|
|
35
|
+
edda/viewer_ui/theme.py,sha256=mrXoXLRzgSnvE2a58LuMcPJkhlvHEDMWVa8Smqtk4l0,8118
|
|
35
36
|
edda/visualizer/__init__.py,sha256=DOpDstNhR0VcXAs_eMKxaL30p_0u4PKZ4o2ndnYhiRo,343
|
|
36
37
|
edda/visualizer/ast_analyzer.py,sha256=plmx7C9X_X35xLY80jxOL3ljg3afXxBePRZubqUIkxY,13663
|
|
37
38
|
edda/visualizer/mermaid_generator.py,sha256=XWa2egoOTNDfJEjPcwoxwQmblUqXf7YInWFjFRI1QGo,12457
|
|
38
|
-
edda_framework-0.
|
|
39
|
-
edda_framework-0.
|
|
40
|
-
edda_framework-0.
|
|
41
|
-
edda_framework-0.
|
|
42
|
-
edda_framework-0.
|
|
39
|
+
edda_framework-0.7.0.dist-info/METADATA,sha256=d2PVbDx-LymunfaAs13Hvxb1U8dOf-NR4VmX6whrrP0,31794
|
|
40
|
+
edda_framework-0.7.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
41
|
+
edda_framework-0.7.0.dist-info/entry_points.txt,sha256=dPH47s6UoJgUZxHoeSMqZsQkLaSE-SGLi-gh88k2WrU,48
|
|
42
|
+
edda_framework-0.7.0.dist-info/licenses/LICENSE,sha256=udxb-V7_cYKTHqW7lNm48rxJ-Zpf0WAY_PyGDK9BPCo,1069
|
|
43
|
+
edda_framework-0.7.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|