aethergraph 0.1.0a1__tar.gz → 0.1.0a2__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.
Files changed (393) hide show
  1. aethergraph-0.1.0a2/MANIFEST.in +5 -0
  2. {aethergraph-0.1.0a1/src/aethergraph.egg-info → aethergraph-0.1.0a2}/PKG-INFO +138 -31
  3. aethergraph-0.1.0a2/README.md +273 -0
  4. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/pyproject.toml +19 -8
  5. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/__init__.py +4 -10
  6. aethergraph-0.1.0a2/src/aethergraph/__main__.py +293 -0
  7. aethergraph-0.1.0a2/src/aethergraph/api/v1/agents.py +46 -0
  8. aethergraph-0.1.0a2/src/aethergraph/api/v1/apps.py +70 -0
  9. aethergraph-0.1.0a2/src/aethergraph/api/v1/artifacts.py +415 -0
  10. aethergraph-0.1.0a2/src/aethergraph/api/v1/channels.py +89 -0
  11. aethergraph-0.1.0a2/src/aethergraph/api/v1/deps.py +168 -0
  12. aethergraph-0.1.0a2/src/aethergraph/api/v1/graphs.py +259 -0
  13. aethergraph-0.1.0a2/src/aethergraph/api/v1/identity.py +25 -0
  14. aethergraph-0.1.0a2/src/aethergraph/api/v1/memory.py +353 -0
  15. aethergraph-0.1.0a2/src/aethergraph/api/v1/misc.py +47 -0
  16. aethergraph-0.1.0a2/src/aethergraph/api/v1/pagination.py +29 -0
  17. aethergraph-0.1.0a2/src/aethergraph/api/v1/runs.py +568 -0
  18. aethergraph-0.1.0a2/src/aethergraph/api/v1/schemas.py +535 -0
  19. aethergraph-0.1.0a2/src/aethergraph/api/v1/session.py +323 -0
  20. aethergraph-0.1.0a2/src/aethergraph/api/v1/stats.py +201 -0
  21. aethergraph-0.1.0a2/src/aethergraph/api/v1/viz.py +152 -0
  22. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/config/config.py +22 -0
  23. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/config/loader.py +3 -2
  24. aethergraph-0.1.0a2/src/aethergraph/config/storage.py +209 -0
  25. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/contracts/services/artifacts.py +27 -14
  26. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/contracts/services/memory.py +45 -17
  27. aethergraph-0.1.0a2/src/aethergraph/contracts/services/metering.py +129 -0
  28. aethergraph-0.1.0a2/src/aethergraph/contracts/services/runs.py +50 -0
  29. aethergraph-0.1.0a2/src/aethergraph/contracts/services/sessions.py +87 -0
  30. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/contracts/services/state_stores.py +3 -0
  31. aethergraph-0.1.0a2/src/aethergraph/contracts/services/viz.py +44 -0
  32. aethergraph-0.1.0a2/src/aethergraph/contracts/storage/artifact_index.py +88 -0
  33. aethergraph-0.1.0a2/src/aethergraph/contracts/storage/artifact_store.py +99 -0
  34. aethergraph-0.1.0a2/src/aethergraph/contracts/storage/async_kv.py +34 -0
  35. aethergraph-0.1.0a2/src/aethergraph/contracts/storage/blob_store.py +50 -0
  36. aethergraph-0.1.0a2/src/aethergraph/contracts/storage/doc_store.py +35 -0
  37. aethergraph-0.1.0a2/src/aethergraph/contracts/storage/event_log.py +31 -0
  38. aethergraph-0.1.0a2/src/aethergraph/contracts/storage/vector_index.py +48 -0
  39. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/execution/forward_scheduler.py +13 -2
  40. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/execution/global_scheduler.py +21 -15
  41. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/execution/step_forward.py +10 -1
  42. aethergraph-0.1.0a2/src/aethergraph/core/graph/__init__.py +0 -0
  43. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/graph/graph_builder.py +8 -4
  44. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/graph/graph_fn.py +156 -15
  45. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/graph/graph_spec.py +8 -0
  46. aethergraph-0.1.0a2/src/aethergraph/core/graph/graphify.py +247 -0
  47. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/graph/node_spec.py +0 -2
  48. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/graph/node_state.py +3 -0
  49. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/graph/task_graph.py +39 -1
  50. aethergraph-0.1.0a2/src/aethergraph/core/runtime/__init__.py +0 -0
  51. aethergraph-0.1.0a2/src/aethergraph/core/runtime/ad_hoc_context.py +121 -0
  52. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/runtime/base_service.py +28 -4
  53. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/runtime/execution_context.py +13 -15
  54. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/runtime/graph_runner.py +222 -37
  55. aethergraph-0.1.0a2/src/aethergraph/core/runtime/node_context.py +707 -0
  56. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/runtime/node_services.py +12 -5
  57. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/runtime/recovery.py +15 -1
  58. aethergraph-0.1.0a2/src/aethergraph/core/runtime/run_manager.py +783 -0
  59. aethergraph-0.1.0a2/src/aethergraph/core/runtime/run_manager_local.py +204 -0
  60. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/runtime/run_registration.py +2 -2
  61. aethergraph-0.1.0a2/src/aethergraph/core/runtime/run_types.py +89 -0
  62. aethergraph-0.1.0a2/src/aethergraph/core/runtime/runtime_env.py +286 -0
  63. aethergraph-0.1.0a2/src/aethergraph/core/runtime/runtime_metering.py +71 -0
  64. aethergraph-0.1.0a2/src/aethergraph/core/runtime/runtime_registry.py +55 -0
  65. aethergraph-0.1.0a2/src/aethergraph/core/runtime/runtime_services.py +412 -0
  66. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/tools/builtins/toolset.py +1 -1
  67. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/tools/toolkit.py +5 -0
  68. aethergraph-0.1.0a2/src/aethergraph/plugins/agents/default_chat_agent copy.py +90 -0
  69. aethergraph-0.1.0a2/src/aethergraph/plugins/agents/default_chat_agent.py +171 -0
  70. aethergraph-0.1.0a2/src/aethergraph/plugins/agents/shared.py +81 -0
  71. aethergraph-0.1.0a2/src/aethergraph/plugins/channel/__init__.py +0 -0
  72. aethergraph-0.1.0a2/src/aethergraph/plugins/channel/adapters/__init__.py +0 -0
  73. aethergraph-0.1.0a2/src/aethergraph/plugins/channel/adapters/webui.py +134 -0
  74. aethergraph-0.1.0a2/src/aethergraph/plugins/channel/routes/__init__.py +0 -0
  75. aethergraph-0.1.0a2/src/aethergraph/plugins/channel/routes/webui_routes.py +401 -0
  76. aethergraph-0.1.0a2/src/aethergraph/plugins/channel/utils/__init__.py +0 -0
  77. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/plugins/channel/utils/slack_utils.py +115 -59
  78. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/plugins/channel/utils/telegram_utils.py +88 -47
  79. aethergraph-0.1.0a2/src/aethergraph/plugins/channel/websockets/weibui_ws.py +172 -0
  80. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/runtime/__init__.py +15 -0
  81. aethergraph-0.1.0a2/src/aethergraph/server/app_factory.py +240 -0
  82. aethergraph-0.1.0a2/src/aethergraph/server/clients/channel_client.py +202 -0
  83. aethergraph-0.1.0a2/src/aethergraph/server/http/channel_http_routes.py +116 -0
  84. aethergraph-0.1.0a2/src/aethergraph/server/http/channel_ws_routers.py +45 -0
  85. aethergraph-0.1.0a2/src/aethergraph/server/loading.py +117 -0
  86. aethergraph-0.1.0a2/src/aethergraph/server/server.py +131 -0
  87. aethergraph-0.1.0a2/src/aethergraph/server/server_state.py +240 -0
  88. aethergraph-0.1.0a2/src/aethergraph/server/start.py +283 -0
  89. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  90. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  91. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  92. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  93. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  94. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  95. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  96. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  97. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  98. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  99. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  100. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  101. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  102. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  103. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  104. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  105. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  106. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  107. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  108. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  109. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  110. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  111. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  112. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  113. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  114. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  115. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  116. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  117. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  118. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  119. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  120. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  121. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  122. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  123. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  124. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  125. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  126. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  127. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  128. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  129. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  130. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  131. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  132. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  133. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  134. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  135. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  136. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  137. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  138. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  139. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  140. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  141. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  142. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  143. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  144. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  145. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  146. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  147. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  148. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/index-BR5GtXcZ.css +1 -0
  149. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/assets/index-CQ0HZZ83.js +400 -0
  150. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/index.html +15 -0
  151. aethergraph-0.1.0a2/src/aethergraph/server/ui_static/logo.png +0 -0
  152. aethergraph-0.1.0a2/src/aethergraph/services/artifacts/__init__.py +0 -0
  153. aethergraph-0.1.0a2/src/aethergraph/services/artifacts/facade.py +1391 -0
  154. aethergraph-0.1.0a1/src/aethergraph/services/auth/dev.py → aethergraph-0.1.0a2/src/aethergraph/services/auth/authn.py +0 -8
  155. aethergraph-0.1.0a2/src/aethergraph/services/auth/authz.py +100 -0
  156. aethergraph-0.1.0a2/src/aethergraph/services/channel/__init__.py +0 -0
  157. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/channel/channel_bus.py +19 -1
  158. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/channel/factory.py +13 -1
  159. aethergraph-0.1.0a2/src/aethergraph/services/channel/ingress.py +311 -0
  160. aethergraph-0.1.0a2/src/aethergraph/services/channel/queue_adapter.py +75 -0
  161. aethergraph-0.1.0a2/src/aethergraph/services/channel/session.py +994 -0
  162. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/container/default_container.py +122 -43
  163. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/continuations/continuation.py +6 -0
  164. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/continuations/stores/fs_store.py +19 -0
  165. aethergraph-0.1.0a2/src/aethergraph/services/eventhub/event_hub.py +76 -0
  166. aethergraph-0.1.0a2/src/aethergraph/services/kv/__init__.py +0 -0
  167. aethergraph-0.1.0a2/src/aethergraph/services/kv/ephemeral.py +334 -0
  168. aethergraph-0.1.0a2/src/aethergraph/services/llm/__init__.py +0 -0
  169. aethergraph-0.1.0a1/src/aethergraph/services/llm/generic_client.py → aethergraph-0.1.0a2/src/aethergraph/services/llm/generic_client copy.py +151 -2
  170. aethergraph-0.1.0a2/src/aethergraph/services/llm/generic_client.py +1643 -0
  171. aethergraph-0.1.0a2/src/aethergraph/services/llm/providers.py +5 -0
  172. aethergraph-0.1.0a2/src/aethergraph/services/llm/types.py +47 -0
  173. aethergraph-0.1.0a2/src/aethergraph/services/llm/utils.py +284 -0
  174. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/logger/std.py +3 -0
  175. aethergraph-0.1.0a2/src/aethergraph/services/mcp/__init__.py +9 -0
  176. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/mcp/http_client.py +38 -0
  177. aethergraph-0.1.0a2/src/aethergraph/services/mcp/service.py +324 -0
  178. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/mcp/stdio_client.py +41 -6
  179. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/mcp/ws_client.py +44 -2
  180. aethergraph-0.1.0a2/src/aethergraph/services/memory/__init__.py +0 -0
  181. aethergraph-0.1.0a2/src/aethergraph/services/memory/distillers/llm_long_term.py +234 -0
  182. aethergraph-0.1.0a2/src/aethergraph/services/memory/distillers/llm_meta_summary.py +398 -0
  183. aethergraph-0.1.0a2/src/aethergraph/services/memory/distillers/long_term.py +225 -0
  184. aethergraph-0.1.0a2/src/aethergraph/services/memory/facade/__init__.py +3 -0
  185. aethergraph-0.1.0a2/src/aethergraph/services/memory/facade/chat.py +440 -0
  186. aethergraph-0.1.0a2/src/aethergraph/services/memory/facade/core.py +447 -0
  187. aethergraph-0.1.0a2/src/aethergraph/services/memory/facade/distillation.py +424 -0
  188. aethergraph-0.1.0a2/src/aethergraph/services/memory/facade/rag.py +410 -0
  189. aethergraph-0.1.0a2/src/aethergraph/services/memory/facade/results.py +315 -0
  190. aethergraph-0.1.0a2/src/aethergraph/services/memory/facade/retrieval.py +139 -0
  191. aethergraph-0.1.0a2/src/aethergraph/services/memory/facade/types.py +77 -0
  192. aethergraph-0.1.0a2/src/aethergraph/services/memory/facade/utils.py +43 -0
  193. aethergraph-0.1.0a2/src/aethergraph/services/memory/facade_dep.py +1539 -0
  194. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/memory/factory.py +9 -3
  195. aethergraph-0.1.0a2/src/aethergraph/services/memory/utils.py +10 -0
  196. aethergraph-0.1.0a2/src/aethergraph/services/metering/eventlog_metering.py +470 -0
  197. aethergraph-0.1.0a2/src/aethergraph/services/metering/noop.py +25 -0
  198. aethergraph-0.1.0a2/src/aethergraph/services/rag/__init__.py +0 -0
  199. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/rag/facade.py +279 -23
  200. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/rag/index_factory.py +2 -2
  201. aethergraph-0.1.0a2/src/aethergraph/services/rag/node_rag.py +317 -0
  202. aethergraph-0.1.0a2/src/aethergraph/services/rate_limit/inmem_rate_limit.py +24 -0
  203. aethergraph-0.1.0a2/src/aethergraph/services/registry/__init__.py +0 -0
  204. aethergraph-0.1.0a2/src/aethergraph/services/registry/agent_app_meta.py +419 -0
  205. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/registry/registry_key.py +1 -1
  206. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/registry/unified_registry.py +74 -6
  207. aethergraph-0.1.0a2/src/aethergraph/services/scope/scope.py +159 -0
  208. aethergraph-0.1.0a2/src/aethergraph/services/scope/scope_factory.py +164 -0
  209. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/state_stores/serialize.py +5 -0
  210. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/state_stores/utils.py +2 -1
  211. aethergraph-0.1.0a2/src/aethergraph/services/viz/__init__.py +0 -0
  212. aethergraph-0.1.0a2/src/aethergraph/services/viz/facade.py +413 -0
  213. aethergraph-0.1.0a2/src/aethergraph/services/viz/viz_service.py +69 -0
  214. aethergraph-0.1.0a2/src/aethergraph/storage/artifacts/artifact_index_jsonl.py +180 -0
  215. aethergraph-0.1.0a2/src/aethergraph/storage/artifacts/artifact_index_sqlite.py +426 -0
  216. aethergraph-0.1.0a2/src/aethergraph/storage/artifacts/cas_store.py +422 -0
  217. aethergraph-0.1.0a2/src/aethergraph/storage/artifacts/fs_cas.py +18 -0
  218. aethergraph-0.1.0a2/src/aethergraph/storage/artifacts/s3_cas.py +14 -0
  219. aethergraph-0.1.0a2/src/aethergraph/storage/artifacts/utils.py +124 -0
  220. aethergraph-0.1.0a2/src/aethergraph/storage/blob/fs_blob.py +86 -0
  221. aethergraph-0.1.0a2/src/aethergraph/storage/blob/s3_blob.py +115 -0
  222. aethergraph-0.1.0a2/src/aethergraph/storage/continuation_store/fs_cont.py +283 -0
  223. aethergraph-0.1.0a2/src/aethergraph/storage/continuation_store/inmem_cont.py +146 -0
  224. aethergraph-0.1.0a2/src/aethergraph/storage/continuation_store/kvdoc_cont.py +261 -0
  225. aethergraph-0.1.0a2/src/aethergraph/storage/docstore/fs_doc.py +63 -0
  226. aethergraph-0.1.0a2/src/aethergraph/storage/docstore/sqlite_doc.py +31 -0
  227. aethergraph-0.1.0a2/src/aethergraph/storage/docstore/sqlite_doc_sync.py +90 -0
  228. aethergraph-0.1.0a2/src/aethergraph/storage/eventlog/fs_event.py +136 -0
  229. aethergraph-0.1.0a2/src/aethergraph/storage/eventlog/sqlite_event.py +47 -0
  230. aethergraph-0.1.0a2/src/aethergraph/storage/eventlog/sqlite_event_sync.py +178 -0
  231. aethergraph-0.1.0a2/src/aethergraph/storage/factory.py +432 -0
  232. aethergraph-0.1.0a2/src/aethergraph/storage/fs_utils.py +28 -0
  233. aethergraph-0.1.0a2/src/aethergraph/storage/graph_state_store/state_store.py +64 -0
  234. aethergraph-0.1.0a1/src/aethergraph/services/kv/ephemeral.py → aethergraph-0.1.0a2/src/aethergraph/storage/kv/inmem_kv.py +58 -45
  235. aethergraph-0.1.0a2/src/aethergraph/storage/kv/layered_kv.py +52 -0
  236. aethergraph-0.1.0a2/src/aethergraph/storage/kv/sqlite_kv.py +39 -0
  237. aethergraph-0.1.0a2/src/aethergraph/storage/kv/sqlite_kv_sync.py +98 -0
  238. aethergraph-0.1.0a2/src/aethergraph/storage/memory/event_persist.py +68 -0
  239. aethergraph-0.1.0a2/src/aethergraph/storage/memory/fs_persist.py +118 -0
  240. aethergraph-0.1.0a1/src/aethergraph/services/memory/hotlog_kv.py → aethergraph-0.1.0a2/src/aethergraph/storage/memory/hotlog.py +8 -2
  241. {aethergraph-0.1.0a1/src/aethergraph/services → aethergraph-0.1.0a2/src/aethergraph/storage}/memory/indices.py +31 -7
  242. aethergraph-0.1.0a2/src/aethergraph/storage/metering/meter_event.py +55 -0
  243. aethergraph-0.1.0a2/src/aethergraph/storage/runs/doc_store.py +280 -0
  244. aethergraph-0.1.0a2/src/aethergraph/storage/runs/inmen_store.py +82 -0
  245. aethergraph-0.1.0a2/src/aethergraph/storage/runs/sqlite_run_store.py +403 -0
  246. aethergraph-0.1.0a2/src/aethergraph/storage/sessions/doc_store.py +183 -0
  247. aethergraph-0.1.0a2/src/aethergraph/storage/sessions/inmem_store.py +110 -0
  248. aethergraph-0.1.0a2/src/aethergraph/storage/sessions/sqlite_session_store.py +399 -0
  249. aethergraph-0.1.0a2/src/aethergraph/storage/vector_index/chroma_index.py +138 -0
  250. aethergraph-0.1.0a2/src/aethergraph/storage/vector_index/faiss_index.py +179 -0
  251. aethergraph-0.1.0a2/src/aethergraph/storage/vector_index/sqlite_index.py +187 -0
  252. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2/src/aethergraph.egg-info}/PKG-INFO +138 -31
  253. aethergraph-0.1.0a2/src/aethergraph.egg-info/SOURCES.txt +360 -0
  254. aethergraph-0.1.0a2/src/aethergraph.egg-info/entry_points.txt +3 -0
  255. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph.egg-info/requires.txt +2 -1
  256. aethergraph-0.1.0a1/README.md +0 -167
  257. aethergraph-0.1.0a1/src/aethergraph/core/graph/graphify.py +0 -128
  258. aethergraph-0.1.0a1/src/aethergraph/core/runtime/ad_hoc_context.py +0 -61
  259. aethergraph-0.1.0a1/src/aethergraph/core/runtime/node_context.py +0 -203
  260. aethergraph-0.1.0a1/src/aethergraph/core/runtime/runtime_env.py +0 -157
  261. aethergraph-0.1.0a1/src/aethergraph/core/runtime/runtime_registry.py +0 -32
  262. aethergraph-0.1.0a1/src/aethergraph/core/runtime/runtime_services.py +0 -224
  263. aethergraph-0.1.0a1/src/aethergraph/plugins/channel/adapters/webui.py +0 -134
  264. aethergraph-0.1.0a1/src/aethergraph/plugins/channel/routes/webui_routes.py +0 -136
  265. aethergraph-0.1.0a1/src/aethergraph/server/app_factory.py +0 -84
  266. aethergraph-0.1.0a1/src/aethergraph/server/start.py +0 -122
  267. aethergraph-0.1.0a1/src/aethergraph/services/artifacts/facade.py +0 -284
  268. aethergraph-0.1.0a1/src/aethergraph/services/artifacts/factory.py +0 -35
  269. aethergraph-0.1.0a1/src/aethergraph/services/artifacts/fs_store.py +0 -656
  270. aethergraph-0.1.0a1/src/aethergraph/services/artifacts/jsonl_index.py +0 -123
  271. aethergraph-0.1.0a1/src/aethergraph/services/artifacts/sqlite_index.py +0 -209
  272. aethergraph-0.1.0a1/src/aethergraph/services/channel/session.py +0 -511
  273. aethergraph-0.1.0a1/src/aethergraph/services/llm/providers.py +0 -3
  274. aethergraph-0.1.0a1/src/aethergraph/services/mcp/service.py +0 -100
  275. aethergraph-0.1.0a1/src/aethergraph/services/memory/distillers/episode.py +0 -116
  276. aethergraph-0.1.0a1/src/aethergraph/services/memory/distillers/rolling.py +0 -74
  277. aethergraph-0.1.0a1/src/aethergraph/services/memory/facade.py +0 -633
  278. aethergraph-0.1.0a1/src/aethergraph/services/memory/persist_fs.py +0 -40
  279. aethergraph-0.1.0a1/src/aethergraph/services/metering/noop.py +0 -4
  280. aethergraph-0.1.0a1/src/aethergraph/services/rag/index/base.py +0 -27
  281. aethergraph-0.1.0a1/src/aethergraph/services/rag/index/faiss_index.py +0 -121
  282. aethergraph-0.1.0a1/src/aethergraph/services/rag/index/sqlite_index.py +0 -134
  283. aethergraph-0.1.0a1/src/aethergraph.egg-info/SOURCES.txt +0 -187
  284. aethergraph-0.1.0a1/src/aethergraph.egg-info/entry_points.txt +0 -2
  285. aethergraph-0.1.0a1/tests/test_slack_extra.py +0 -9
  286. aethergraph-0.1.0a1/tests/test_smoke.py +0 -2
  287. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/LICENSE +0 -0
  288. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/NOTICE +0 -0
  289. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/setup.cfg +0 -0
  290. {aethergraph-0.1.0a1/src/aethergraph/config → aethergraph-0.1.0a2/src/aethergraph/api/v1}/__init__.py +0 -0
  291. {aethergraph-0.1.0a1/src/aethergraph/plugins/channel → aethergraph-0.1.0a2/src/aethergraph/config}/__init__.py +0 -0
  292. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/config/context.py +0 -0
  293. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/config/llm.py +0 -0
  294. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/config/runtime.py +0 -0
  295. {aethergraph-0.1.0a1/src/aethergraph/plugins/channel/adapters → aethergraph-0.1.0a2/src/aethergraph/contracts}/__init__.py +0 -0
  296. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/contracts/errors/errors.py +0 -0
  297. {aethergraph-0.1.0a1/src/aethergraph/plugins/channel/routes → aethergraph-0.1.0a2/src/aethergraph/contracts/services}/__init__.py +0 -0
  298. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/contracts/services/channel.py +0 -0
  299. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/contracts/services/continuations.py +0 -0
  300. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/contracts/services/eventbus.py +0 -0
  301. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/contracts/services/kv.py +0 -0
  302. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/contracts/services/llm.py +0 -0
  303. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/contracts/services/mcp.py +0 -0
  304. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/contracts/services/resume.py +0 -0
  305. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/contracts/services/wakeup.py +0 -0
  306. {aethergraph-0.1.0a1/src/aethergraph/plugins/channel/utils → aethergraph-0.1.0a2/src/aethergraph/core}/__init__.py +0 -0
  307. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/execution/base_scheduler.py +0 -0
  308. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/execution/retry_policy.py +0 -0
  309. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/execution/step_result.py +0 -0
  310. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/execution/wait_types.py +0 -0
  311. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/graph/graph_io.py +0 -0
  312. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/graph/graph_refs.py +0 -0
  313. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/graph/graph_state.py +0 -0
  314. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/graph/interpreter.py +0 -0
  315. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/graph/node_handle.py +0 -0
  316. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/graph/task_node.py +0 -0
  317. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/graph/utils.py +0 -0
  318. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/graph/visualize.py +0 -0
  319. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/runtime/bind_adapter.py +0 -0
  320. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/runtime/bound_memory.py +0 -0
  321. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/runtime/lifecycle.py +0 -0
  322. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/runtime/wakeup_watcher.py +0 -0
  323. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/tools/__init__.py +0 -0
  324. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/tools/builtins/channel_tools.py +0 -0
  325. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/core/tools/waitable.py +0 -0
  326. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/plugins/channel/adapters/console.py +0 -0
  327. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/plugins/channel/adapters/file.py +0 -0
  328. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/plugins/channel/adapters/slack.py +0 -0
  329. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/plugins/channel/adapters/telegram.py +0 -0
  330. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/plugins/channel/adapters/webhook.py +0 -0
  331. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/plugins/channel/routes/console_routes.py +0 -0
  332. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/plugins/channel/routes/slack_routes.py +0 -0
  333. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/plugins/channel/routes/telegram_routes.py +0 -0
  334. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/plugins/channel/websockets/slack_ws.py +0 -0
  335. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/plugins/channel/websockets/telegram_polling.py +0 -0
  336. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/plugins/mcp/fs_server.py +0 -0
  337. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/plugins/mcp/http_server.py +0 -0
  338. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/plugins/mcp/ws_server.py +0 -0
  339. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/plugins/net/http.py +0 -0
  340. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/plugins/utils/data_io.py +0 -0
  341. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/runner/__init__.py +0 -0
  342. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/server/__init__.py +0 -0
  343. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/__init__.py +0 -0
  344. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/artifacts/paths.py +0 -0
  345. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/artifacts/utils.py +0 -0
  346. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/channel/wait_helpers.py +0 -0
  347. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/clock/clock.py +0 -0
  348. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/continuations/factory.py +0 -0
  349. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/continuations/stores/inmem_store.py +0 -0
  350. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/eventbus/inmem.py +0 -0
  351. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/features/static.py +0 -0
  352. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/kv/factory.py +0 -0
  353. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/kv/layered.py +0 -0
  354. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/kv/sqlite_kv.py +0 -0
  355. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/llm/factory.py +0 -0
  356. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/llm/service.py +0 -0
  357. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/logger/base.py +0 -0
  358. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/logger/compat.py +0 -0
  359. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/logger/formatters.py +0 -0
  360. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/mcp/helpers.py +0 -0
  361. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/mcp/mcp_tools.py +0 -0
  362. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/mcp/registry.py +0 -0
  363. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/memory/bound.py +0 -0
  364. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/memory/io_helpers.py +0 -0
  365. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/memory/resolver.py +0 -0
  366. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/prompts/file_store.py +0 -0
  367. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/rag/chunker.py +0 -0
  368. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/rag/parsers/md.py +0 -0
  369. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/rag/parsers/pdf.py +0 -0
  370. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/rag/parsers/txt.py +0 -0
  371. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/rag/utils/hybrid.py +0 -0
  372. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/rag/utils/make_fs_key.py +0 -0
  373. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/redactor/simple.py +0 -0
  374. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/registry/key_parsing.py +0 -0
  375. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/resume/multi_scheduler_resume_bus.py +0 -0
  376. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/resume/router.py +0 -0
  377. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/schedulers/registry.py +0 -0
  378. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/secrets/base.py +0 -0
  379. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/secrets/env.py +0 -0
  380. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/state_stores/externalize.py +0 -0
  381. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/state_stores/graph_observer.py +0 -0
  382. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/state_stores/json_store.py +0 -0
  383. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/state_stores/resume_policy.py +0 -0
  384. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/state_stores/validate.py +0 -0
  385. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/tracing/noop.py +0 -0
  386. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/waits/wait_registry.py +0 -0
  387. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/wakeup/memory_queue.py +0 -0
  388. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/wakeup/scanner_producer.py +0 -0
  389. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/services/wakeup/worker.py +0 -0
  390. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/tools/__init__.py +0 -0
  391. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph/utils/optdeps.py +0 -0
  392. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph.egg-info/dependency_links.txt +0 -0
  393. {aethergraph-0.1.0a1 → aethergraph-0.1.0a2}/src/aethergraph.egg-info/top_level.txt +0 -0
@@ -0,0 +1,5 @@
1
+ prune tests
2
+ prune examples
3
+ prune src/aethergraph/demos
4
+
5
+ global-exclude *.py[cod] __pycache__ .DS_Store
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aethergraph
3
- Version: 0.1.0a1
3
+ Version: 0.1.0a2
4
4
  Summary: Python-first agentic DAG execution framework
5
5
  Author-email: Zhaocheng Liu <zhaocheng@aiperture.io>
6
6
  License: Apache License
@@ -199,7 +199,7 @@ Requires-Python: >=3.10
199
199
  Description-Content-Type: text/markdown
200
200
  License-File: LICENSE
201
201
  License-File: NOTICE
202
- Requires-Dist: fastapi>=0.110
202
+ Requires-Dist: fastapi<1.0,>=0.110
203
203
  Requires-Dist: uvicorn[standard]>=0.31
204
204
  Requires-Dist: pydantic>=2.6
205
205
  Requires-Dist: pydantic-settings>=2.2
@@ -239,6 +239,7 @@ Provides-Extra: test
239
239
  Requires-Dist: pytest>=8.0.0; extra == "test"
240
240
  Requires-Dist: pytest-asyncio>=0.23; extra == "test"
241
241
  Requires-Dist: coverage>=7.4; extra == "test"
242
+ Requires-Dist: trio; extra == "test"
242
243
  Dynamic: license-file
243
244
 
244
245
  <p align="center">
@@ -247,9 +248,13 @@ Dynamic: license-file
247
248
 
248
249
  # AetherGraph
249
250
 
250
- **AetherGraph** is a **Pythonfirst agentic DAG execution framework** for building and orchestrating AIpowered workflows. It pairs a clean, functionoriented developer experience with a resilient runtime—eventdriven waits, resumable runs, and pluggable services (LLM, memory, artifacts, RAG)—so you can start simple and scale to complex R&D pipelines.
251
+ **AetherGraph** is a **Python-first agentic DAG execution framework** for building and orchestrating AI-powered workflows. It pairs a clean, function-oriented developer experience with a resilient runtime—event-driven waits, resumable runs, and pluggable services (LLM, memory, artifacts, RAG)—so you can start simple and scale to complex R&D pipelines.
251
252
 
252
- Use AetherGraph to prototype interactive assistants, simulation/optimization loops, data transforms, or multistep automations without boilerplate. It works **with or without LLMs**—bring your own tools and services, and compose them into repeatable, observable graphs.
253
+ Use AetherGraph to prototype interactive assistants, simulation/optimization loops, data transforms, or multi-step automations without boilerplate. It works **with or without LLMs**—bring your own tools and services, and compose them into repeatable, observable graphs.
254
+
255
+ * **[Introduction](https://aiperture.io)**
256
+ * **[Docs](https://aiperture.github.io/aethergraph-docs/)**
257
+ * **[Examples](https://github.com/AIperture/aethergraph-examples)**
253
258
 
254
259
  ---
255
260
 
@@ -257,8 +262,9 @@ Use AetherGraph to prototype interactive assistants, simulation/optimization loo
257
262
 
258
263
  * Python **3.10+**
259
264
  * macOS, Linux, or Windows
260
- * *(Optional)* LLM API keys (OpenAI, Anthropic, Google, etc.)
261
- * *(Optional extras)* `slack` adapter
265
+ * *(Suggested)* LLM API keys (OpenAI, Anthropic, Google, etc.)
266
+ * *(Optional)* `slack` or `telegram` token. See [Channel Setup](https://aiperture.github.io/aethergraph-docs/channel-setup/introduction/)
267
+ * *(Optional UI)* A modern browser to use the built-in AetherGraph web UI
262
268
 
263
269
  ---
264
270
 
@@ -280,6 +286,8 @@ pip install "aethergraph[slack]"
280
286
  pip install "aethergraph[dev]"
281
287
  ```
282
288
 
289
+ > The PyPI package ships with a prebuilt UI bundle, so `/ui` works out of the box
290
+ > when you run the server locally.
283
291
 
284
292
  ### Option B — From source (editable dev mode)
285
293
 
@@ -294,11 +302,16 @@ pip install -e .
294
302
  echo "(optional)" && pip install -e ".[slack,dev]"
295
303
  ```
296
304
 
305
+ > When running from source, the backend still works without the frontend bundle.
306
+ > If you want the **built-in UI** from source, you’ll need to build the frontend
307
+ > and copy the static bundle into `aethergraph/server/ui_static/`
308
+ > (see the “UI Guide” in the docs).
309
+
297
310
  ---
298
311
 
299
- ## Configure (optional)
312
+ ## Configure
300
313
 
301
- Most examples run without an LLM, but for LLMbacked flows set keys via environment variables or a local secrets file.
314
+ Aethergraph can run without an LLM, but for many LLM-backed flows in [examples](https://github.com/AIperture/aethergraph-examples), set keys via environment variables or a local secrets file.
302
315
 
303
316
  Minimal example (OpenAI):
304
317
 
@@ -310,7 +323,7 @@ AETHERGRAPH_LLM__DEFAULT__MODEL=gpt-4o-mini
310
323
  AETHERGRAPH_LLM__DEFAULT__API_KEY=sk-...your-key...
311
324
  ```
312
325
 
313
- Or inline in a script at runtime (for ondemand key setting):
326
+ Or inline in a script at runtime (for on-demand key setting):
314
327
 
315
328
  ```python
316
329
  from aethergraph.runtime import register_llm_client
@@ -323,45 +336,131 @@ open_ai_client = register_llm_client(
323
336
  )
324
337
  ```
325
338
 
326
- See our docs for setup of **external channel** methods for real-time interaction.
327
-
339
+ See the docs for setup of **external channel** methods (Slack, Telegram, etc.) for real-time interaction.
328
340
 
329
- > **Where should `.env` live?** In your **project root** (the directory where you run your Python entry point). You can override with `AETHERGRAPH_ENV_FILE=/path/to/.env` if needed.
341
+ > **Where should `.env` live?**
342
+ > In your **project root** (the directory where you run your Python entry point).
343
+ > You can override with `AETHERGRAPH_ENV_FILE=/path/to/.env` if needed.
330
344
 
331
345
  ---
332
346
 
333
- ## Quickstart (60 seconds)
334
-
335
- 1. Verify install:
347
+ ## Verify install
336
348
 
337
349
  ```bash
338
350
  python -c "import aethergraph; print('AetherGraph OK, version:', getattr(aethergraph, '__version__', 'dev'))"
339
351
  ```
340
352
 
341
- 2. Run a minimal graph:
353
+ ---
354
+
355
+ ## Run the built-in UI
356
+
357
+ AetherGraph ships with a small web UI that lets you:
358
+
359
+ * Browse and launch **apps** (click-to-run graphs)
360
+ * Chat with **agents** (graph-backed chat endpoints)
361
+ * Inspect **runs**, **sessions**, and **artifacts**
362
+
363
+ ### 1. Define a simple project module
364
+
365
+ From your project root:
366
+
367
+ ```text
368
+ my_project/
369
+ demos/
370
+ __init__.py
371
+ chat_demo.py
372
+ aethergraph_data/ # workspace (created automatically as needed)
373
+ ```
374
+
375
+ Example `chat_demo.py`:
376
+
377
+ ```python
378
+ # demos/chat_demo.py
379
+ from aethergraph import graphify
380
+
381
+ @graphify(
382
+ name="chat_with_memory_demo",
383
+ inputs=[],
384
+ outputs=["turns", "summary"],
385
+ as_app={
386
+ "id": "chat_with_memory_demo",
387
+ "name": "Chat with Memory",
388
+ },
389
+ )
390
+ def chat_with_memory_demo():
391
+ # Your graph implementation here – tools, nodes, etc.
392
+ ...
393
+ ```
394
+
395
+ > `as_app={...}` tells AetherGraph to expose this graph in the **App Gallery** of the UI.
396
+ > You can also define `graph_fn`-based **agents** with `as_agent={...}` to appear in the
397
+ > **Agent Gallery**.
398
+
399
+ ### 2. Start the server with UI from the terminal (recommended)
400
+
401
+ From `my_project/`:
342
402
 
343
403
  ```bash
344
- python - <<'PY'
345
- from aethergraph import graph_fn, NodeContext
346
- from aethergraph.runner import run
404
+ aethergraph serve \
405
+ --project-root . \
406
+ --load-module demos \
407
+ --reload
408
+ ```
347
409
 
348
- @graph_fn(name="hello_world")
349
- async def hello_world(context: NodeContext):
350
- print("Hello from AetherGraph!")
351
- return {"ok": True}
410
+ This will:
352
411
 
353
- run(hello_world)
354
- PY
412
+ * Add `.` to `sys.path` so `demos` can be imported.
413
+ * Load any graphs/apps/agents defined in the `demos` module.
414
+ * Start the API + UI server on `http://127.0.0.1:8745`.
415
+ * Enable **auto-reload**: editing your graph files triggers a restart and reload.
416
+
417
+ You should see log lines like:
418
+
419
+ ```text
420
+ [AetherGraph] 🚀 Server started at: http://127.0.0.1:8745
421
+ [AetherGraph] 🖥️ UI: http://127.0.0.1:8745/ui
422
+ [AetherGraph] 📡 API: http://127.0.0.1:8745/api/v1/
423
+ [AetherGraph] 📂 Workspace: ./aethergraph_data
424
+ [AetherGraph] ♻️ Auto-reload: enabled
425
+ ```
426
+
427
+ Then open in your browser:
428
+
429
+ * **UI:** `http://127.0.0.1:8745/ui` – App Gallery, Agent Gallery, runs, sessions, artifacts.
430
+ * **API:** `http://127.0.0.1:8745/api/v1/` – for direct HTTP calls.
431
+
432
+ ### 3. (Optional) Start the server from a Python script
433
+
434
+ If you prefer to embed the server in your own launcher:
435
+
436
+ ```python
437
+ # start_server.py
438
+ from aethergraph import start_server
439
+
440
+ if __name__ == "__main__":
441
+ start_server(
442
+ workspace="./aethergraph_data",
443
+ project_root=".",
444
+ load_module=["demos"],
445
+ host="127.0.0.1",
446
+ port=8745,
447
+ )
448
+ ```
449
+
450
+ ```bash
451
+ python start_server.py
355
452
  ```
356
453
 
454
+ > For **active development**, the CLI with `--reload` is recommended.
455
+ > `start_server(...)` is better when you want a simple “ship a server in my app” story.
456
+
457
+ For more details, see the **UI Guide** section in the docs (server setup, agents/apps, and common pitfalls).
458
+
357
459
  ---
358
460
 
359
461
  ## Examples
360
462
 
361
- Quickstart scripts live under `examples/` in this repo. A growing gallery of standalone examples will be published at:
362
-
363
- * **Repo:** [https://github.com/AIperture/aethergraph-examples](https://github.com/AIperture/aethergraph-examples)
364
- * **Path:** `examples/`
463
+ Quick-start scripts live under `examples/` in this repo.
365
464
 
366
465
  Run an example:
367
466
 
@@ -370,14 +469,22 @@ cd examples
370
469
  python hello_world.py
371
470
  ```
372
471
 
472
+ A growing gallery of standalone examples and recipes lives under:
473
+
474
+ * **Repo:** [https://github.com/AIperture/aethergraph-examples](https://github.com/AIperture/aethergraph-examples)
475
+
373
476
  ---
374
477
 
375
478
  ## Troubleshooting
376
479
 
377
480
  * **`ModuleNotFoundError`**: ensure you installed into the active venv and that your shell is using it.
378
481
  * **LLM/API errors**: confirm provider/model/key configuration (env vars or your local secrets file).
379
- * **Windows path quirks**: clear any local cache folders (e.g., `.rag/`) and rerun; verify write permissions.
482
+ * **Windows path quirks**: clear any local cache folders (e.g., `.rag/`) and re-run; verify write permissions.
380
483
  * **Slack extra**: install with `pip install "aethergraph[slack]"` if you need Slack channel integration.
484
+ * **UI shows no apps/agents**:
485
+
486
+ * Make sure your module (e.g. `demos`) is importable under `--project-root`.
487
+ * Ensure at least one graph has `as_app={...}` or `graph_fn` has `as_agent={...}`.
381
488
 
382
489
  ---
383
490
 
@@ -407,4 +514,4 @@ pytest -q
407
514
 
408
515
  ## License
409
516
 
410
- **Apache2.0** — see `LICENSE`.
517
+ **Apache-2.0** — see `LICENSE`.
@@ -0,0 +1,273 @@
1
+ <p align="center">
2
+ <img src="assets/logo.png" alt="AetherGraph" width="360"/>
3
+ </p>
4
+
5
+ # AetherGraph
6
+
7
+ **AetherGraph** is a **Python-first agentic DAG execution framework** for building and orchestrating AI-powered workflows. It pairs a clean, function-oriented developer experience with a resilient runtime—event-driven waits, resumable runs, and pluggable services (LLM, memory, artifacts, RAG)—so you can start simple and scale to complex R&D pipelines.
8
+
9
+ Use AetherGraph to prototype interactive assistants, simulation/optimization loops, data transforms, or multi-step automations without boilerplate. It works **with or without LLMs**—bring your own tools and services, and compose them into repeatable, observable graphs.
10
+
11
+ * **[Introduction](https://aiperture.io)**
12
+ * **[Docs](https://aiperture.github.io/aethergraph-docs/)**
13
+ * **[Examples](https://github.com/AIperture/aethergraph-examples)**
14
+
15
+ ---
16
+
17
+ ## Requirements
18
+
19
+ * Python **3.10+**
20
+ * macOS, Linux, or Windows
21
+ * *(Suggested)* LLM API keys (OpenAI, Anthropic, Google, etc.)
22
+ * *(Optional)* `slack` or `telegram` token. See [Channel Setup](https://aiperture.github.io/aethergraph-docs/channel-setup/introduction/)
23
+ * *(Optional UI)* A modern browser to use the built-in AetherGraph web UI
24
+
25
+ ---
26
+
27
+ ## Install
28
+
29
+ ### Option A — PyPI (recommended)
30
+
31
+ ```bash
32
+ pip install aethergraph
33
+ ```
34
+
35
+ Optional extras:
36
+
37
+ ```bash
38
+ # Slack adapter
39
+ pip install "aethergraph[slack]"
40
+
41
+ # Dev tooling (linting, tests, types)
42
+ pip install "aethergraph[dev]"
43
+ ```
44
+
45
+ > The PyPI package ships with a prebuilt UI bundle, so `/ui` works out of the box
46
+ > when you run the server locally.
47
+
48
+ ### Option B — From source (editable dev mode)
49
+
50
+ ```bash
51
+ git clone https://github.com/AIperture/aethergraph.git
52
+ cd aethergraph
53
+
54
+ # Base
55
+ pip install -e .
56
+
57
+ # With extras
58
+ echo "(optional)" && pip install -e ".[slack,dev]"
59
+ ```
60
+
61
+ > When running from source, the backend still works without the frontend bundle.
62
+ > If you want the **built-in UI** from source, you’ll need to build the frontend
63
+ > and copy the static bundle into `aethergraph/server/ui_static/`
64
+ > (see the “UI Guide” in the docs).
65
+
66
+ ---
67
+
68
+ ## Configure
69
+
70
+ Aethergraph can run without an LLM, but for many LLM-backed flows in [examples](https://github.com/AIperture/aethergraph-examples), set keys via environment variables or a local secrets file.
71
+
72
+ Minimal example (OpenAI):
73
+
74
+ ```ini
75
+ # .env (example)
76
+ AETHERGRAPH_LLM__ENABLED=true
77
+ AETHERGRAPH_LLM__DEFAULT__PROVIDER=openai
78
+ AETHERGRAPH_LLM__DEFAULT__MODEL=gpt-4o-mini
79
+ AETHERGRAPH_LLM__DEFAULT__API_KEY=sk-...your-key...
80
+ ```
81
+
82
+ Or inline in a script at runtime (for on-demand key setting):
83
+
84
+ ```python
85
+ from aethergraph.runtime import register_llm_client
86
+
87
+ open_ai_client = register_llm_client(
88
+ profile="my_llm",
89
+ provider="openai",
90
+ model="gpt-4o-mini",
91
+ api_key="sk-...your-key...",
92
+ )
93
+ ```
94
+
95
+ See the docs for setup of **external channel** methods (Slack, Telegram, etc.) for real-time interaction.
96
+
97
+ > **Where should `.env` live?**
98
+ > In your **project root** (the directory where you run your Python entry point).
99
+ > You can override with `AETHERGRAPH_ENV_FILE=/path/to/.env` if needed.
100
+
101
+ ---
102
+
103
+ ## Verify install
104
+
105
+ ```bash
106
+ python -c "import aethergraph; print('AetherGraph OK, version:', getattr(aethergraph, '__version__', 'dev'))"
107
+ ```
108
+
109
+ ---
110
+
111
+ ## Run the built-in UI
112
+
113
+ AetherGraph ships with a small web UI that lets you:
114
+
115
+ * Browse and launch **apps** (click-to-run graphs)
116
+ * Chat with **agents** (graph-backed chat endpoints)
117
+ * Inspect **runs**, **sessions**, and **artifacts**
118
+
119
+ ### 1. Define a simple project module
120
+
121
+ From your project root:
122
+
123
+ ```text
124
+ my_project/
125
+ demos/
126
+ __init__.py
127
+ chat_demo.py
128
+ aethergraph_data/ # workspace (created automatically as needed)
129
+ ```
130
+
131
+ Example `chat_demo.py`:
132
+
133
+ ```python
134
+ # demos/chat_demo.py
135
+ from aethergraph import graphify
136
+
137
+ @graphify(
138
+ name="chat_with_memory_demo",
139
+ inputs=[],
140
+ outputs=["turns", "summary"],
141
+ as_app={
142
+ "id": "chat_with_memory_demo",
143
+ "name": "Chat with Memory",
144
+ },
145
+ )
146
+ def chat_with_memory_demo():
147
+ # Your graph implementation here – tools, nodes, etc.
148
+ ...
149
+ ```
150
+
151
+ > `as_app={...}` tells AetherGraph to expose this graph in the **App Gallery** of the UI.
152
+ > You can also define `graph_fn`-based **agents** with `as_agent={...}` to appear in the
153
+ > **Agent Gallery**.
154
+
155
+ ### 2. Start the server with UI from the terminal (recommended)
156
+
157
+ From `my_project/`:
158
+
159
+ ```bash
160
+ aethergraph serve \
161
+ --project-root . \
162
+ --load-module demos \
163
+ --reload
164
+ ```
165
+
166
+ This will:
167
+
168
+ * Add `.` to `sys.path` so `demos` can be imported.
169
+ * Load any graphs/apps/agents defined in the `demos` module.
170
+ * Start the API + UI server on `http://127.0.0.1:8745`.
171
+ * Enable **auto-reload**: editing your graph files triggers a restart and reload.
172
+
173
+ You should see log lines like:
174
+
175
+ ```text
176
+ [AetherGraph] 🚀 Server started at: http://127.0.0.1:8745
177
+ [AetherGraph] 🖥️ UI: http://127.0.0.1:8745/ui
178
+ [AetherGraph] 📡 API: http://127.0.0.1:8745/api/v1/
179
+ [AetherGraph] 📂 Workspace: ./aethergraph_data
180
+ [AetherGraph] ♻️ Auto-reload: enabled
181
+ ```
182
+
183
+ Then open in your browser:
184
+
185
+ * **UI:** `http://127.0.0.1:8745/ui` – App Gallery, Agent Gallery, runs, sessions, artifacts.
186
+ * **API:** `http://127.0.0.1:8745/api/v1/` – for direct HTTP calls.
187
+
188
+ ### 3. (Optional) Start the server from a Python script
189
+
190
+ If you prefer to embed the server in your own launcher:
191
+
192
+ ```python
193
+ # start_server.py
194
+ from aethergraph import start_server
195
+
196
+ if __name__ == "__main__":
197
+ start_server(
198
+ workspace="./aethergraph_data",
199
+ project_root=".",
200
+ load_module=["demos"],
201
+ host="127.0.0.1",
202
+ port=8745,
203
+ )
204
+ ```
205
+
206
+ ```bash
207
+ python start_server.py
208
+ ```
209
+
210
+ > For **active development**, the CLI with `--reload` is recommended.
211
+ > `start_server(...)` is better when you want a simple “ship a server in my app” story.
212
+
213
+ For more details, see the **UI Guide** section in the docs (server setup, agents/apps, and common pitfalls).
214
+
215
+ ---
216
+
217
+ ## Examples
218
+
219
+ Quick-start scripts live under `examples/` in this repo.
220
+
221
+ Run an example:
222
+
223
+ ```bash
224
+ cd examples
225
+ python hello_world.py
226
+ ```
227
+
228
+ A growing gallery of standalone examples and recipes lives under:
229
+
230
+ * **Repo:** [https://github.com/AIperture/aethergraph-examples](https://github.com/AIperture/aethergraph-examples)
231
+
232
+ ---
233
+
234
+ ## Troubleshooting
235
+
236
+ * **`ModuleNotFoundError`**: ensure you installed into the active venv and that your shell is using it.
237
+ * **LLM/API errors**: confirm provider/model/key configuration (env vars or your local secrets file).
238
+ * **Windows path quirks**: clear any local cache folders (e.g., `.rag/`) and re-run; verify write permissions.
239
+ * **Slack extra**: install with `pip install "aethergraph[slack]"` if you need Slack channel integration.
240
+ * **UI shows no apps/agents**:
241
+
242
+ * Make sure your module (e.g. `demos`) is importable under `--project-root`.
243
+ * Ensure at least one graph has `as_app={...}` or `graph_fn` has `as_agent={...}`.
244
+
245
+ ---
246
+
247
+ ## Contributing (early phase)
248
+
249
+ * Use feature branches and open a PR against `main`.
250
+ * Keep public examples free of real secrets.
251
+ * Run tests locally before pushing.
252
+
253
+ Dev install:
254
+
255
+ ```bash
256
+ pip install -e .[dev]
257
+ pytest -q
258
+ ```
259
+
260
+ ---
261
+
262
+ ## Project Links
263
+
264
+ * **Source:** [https://github.com/AIperture/aethergraph](https://github.com/AIperture/aethergraph)
265
+ * **Issues:** [https://github.com/AIperture/aethergraph/issues](https://github.com/AIperture/aethergraph/issues)
266
+ * **Examples:** [https://github.com/AIperture/aethergraph-examples](https://github.com/AIperture/aethergraph-examples)
267
+ * **Docs (preview):** [https://aiperture.github.io/aethergraph-docs/](https://aiperture.github.io/aethergraph-docs/)
268
+
269
+ ---
270
+
271
+ ## License
272
+
273
+ **Apache-2.0** — see `LICENSE`.
@@ -4,16 +4,16 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "aethergraph"
7
- version = "0.1.0a1"
7
+ version = "0.1.0a2"
8
8
  description = "Python-first agentic DAG execution framework"
9
9
  readme = "README.md"
10
10
  license = { file = "LICENSE" }
11
11
  authors = [{ name = "Zhaocheng Liu", email = "zhaocheng@aiperture.io" }]
12
12
  requires-python = ">=3.10"
13
13
 
14
- # Conservative lower bounds; you can tighten as you stabilize.
14
+ # Conservative lower bounds; tighten as stabilize.
15
15
  dependencies = [
16
- "fastapi>=0.110",
16
+ "fastapi>=0.110,<1.0",
17
17
  "uvicorn[standard]>=0.31",
18
18
  "pydantic>=2.6",
19
19
  "pydantic-settings>=2.2",
@@ -50,7 +50,9 @@ Documentation = "https://aiperture.github.io/aethergraph-docs/"
50
50
  Issues = "https://github.com/AIperture/aethergraph/issues"
51
51
 
52
52
  [project.scripts]
53
- aethergraph = "aethergraph.cli.main:main"
53
+ aethergraph = "aethergraph.__main__:main"
54
+ aethergraph-server = "aethergraph.server.server:main"
55
+
54
56
 
55
57
  [project.optional-dependencies]
56
58
  # Keep extras small and purposeful; add more as modularize features.
@@ -81,18 +83,26 @@ docs = [
81
83
  test = [
82
84
  "pytest>=8.0.0",
83
85
  "pytest-asyncio>=0.23",
84
- "coverage>=7.4"
86
+ "coverage>=7.4",
87
+ "trio"
85
88
  ]
86
89
 
87
90
  [tool.setuptools]
88
91
  package-dir = { "" = "src" }
89
- include-package-data = true
92
+ include-package-data = false # specify in later
90
93
  license-files = ["LICENSE*", "NOTICE*", "COPYING*"]
91
94
 
92
95
  [tool.setuptools.packages.find]
93
96
  where = ["src"]
94
- # If you want to exclude experimental dirs, uncomment and adjust:
95
- # exclude = ["tests*", "examples*"]
97
+ exclude = [
98
+ "tests*",
99
+ "examples*",
100
+ "aethergraph.demos*",
101
+ "aethergraph.demos.*"
102
+ ]
103
+
104
+ [tool.setuptools.exclude-package-data]
105
+ aethergraph = ["demos/**"]
96
106
 
97
107
  [tool.setuptools.package-data]
98
108
  # Ship non-Python assets bundled with the package (adjust as needed)
@@ -102,6 +112,7 @@ aethergraph = [
102
112
  "**/*.yml",
103
113
  "**/*.txt",
104
114
  "v*/**/templates/**/*",
115
+ "server/ui_static/**",
105
116
  ]
106
117
 
107
118
  # -------------------------
@@ -1,8 +1,7 @@
1
- __version__ = "0.1.0a1"
1
+ __version__ = "0.1.0a2"
2
2
 
3
+ import logging
3
4
 
4
- # Server
5
- # Channel buttons
6
5
  from .contracts.services.channel import Button
7
6
 
8
7
  # Graphs
@@ -24,6 +23,8 @@ from .server.start import (
24
23
  stop_server, # stop the sidecar server
25
24
  )
26
25
 
26
+ logging.getLogger("aethergraph").addHandler(logging.NullHandler())
27
+
27
28
  __all__ = [
28
29
  # Server
29
30
  "start_server",
@@ -34,16 +35,9 @@ __all__ = [
34
35
  "graph_fn",
35
36
  "graphify",
36
37
  "TaskGraph",
37
- "RuntimeEnv",
38
38
  "NodeContext",
39
39
  # Services
40
40
  "Service",
41
41
  # Channel buttons
42
42
  "Button",
43
43
  ]
44
-
45
-
46
- # Setup a default null logger to avoid "No handler found" warnings
47
- import logging
48
-
49
- logging.getLogger("aethergraph").addHandler(logging.NullHandler())