aethergraph 0.1.0a1__py3-none-any.whl → 0.1.0a2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. aethergraph/__init__.py +4 -10
  2. aethergraph/__main__.py +293 -0
  3. aethergraph/api/v1/__init__.py +0 -0
  4. aethergraph/api/v1/agents.py +46 -0
  5. aethergraph/api/v1/apps.py +70 -0
  6. aethergraph/api/v1/artifacts.py +415 -0
  7. aethergraph/api/v1/channels.py +89 -0
  8. aethergraph/api/v1/deps.py +168 -0
  9. aethergraph/api/v1/graphs.py +259 -0
  10. aethergraph/api/v1/identity.py +25 -0
  11. aethergraph/api/v1/memory.py +353 -0
  12. aethergraph/api/v1/misc.py +47 -0
  13. aethergraph/api/v1/pagination.py +29 -0
  14. aethergraph/api/v1/runs.py +568 -0
  15. aethergraph/api/v1/schemas.py +535 -0
  16. aethergraph/api/v1/session.py +323 -0
  17. aethergraph/api/v1/stats.py +201 -0
  18. aethergraph/api/v1/viz.py +152 -0
  19. aethergraph/config/config.py +22 -0
  20. aethergraph/config/loader.py +3 -2
  21. aethergraph/config/storage.py +209 -0
  22. aethergraph/contracts/__init__.py +0 -0
  23. aethergraph/contracts/services/__init__.py +0 -0
  24. aethergraph/contracts/services/artifacts.py +27 -14
  25. aethergraph/contracts/services/memory.py +45 -17
  26. aethergraph/contracts/services/metering.py +129 -0
  27. aethergraph/contracts/services/runs.py +50 -0
  28. aethergraph/contracts/services/sessions.py +87 -0
  29. aethergraph/contracts/services/state_stores.py +3 -0
  30. aethergraph/contracts/services/viz.py +44 -0
  31. aethergraph/contracts/storage/artifact_index.py +88 -0
  32. aethergraph/contracts/storage/artifact_store.py +99 -0
  33. aethergraph/contracts/storage/async_kv.py +34 -0
  34. aethergraph/contracts/storage/blob_store.py +50 -0
  35. aethergraph/contracts/storage/doc_store.py +35 -0
  36. aethergraph/contracts/storage/event_log.py +31 -0
  37. aethergraph/contracts/storage/vector_index.py +48 -0
  38. aethergraph/core/__init__.py +0 -0
  39. aethergraph/core/execution/forward_scheduler.py +13 -2
  40. aethergraph/core/execution/global_scheduler.py +21 -15
  41. aethergraph/core/execution/step_forward.py +10 -1
  42. aethergraph/core/graph/__init__.py +0 -0
  43. aethergraph/core/graph/graph_builder.py +8 -4
  44. aethergraph/core/graph/graph_fn.py +156 -15
  45. aethergraph/core/graph/graph_spec.py +8 -0
  46. aethergraph/core/graph/graphify.py +146 -27
  47. aethergraph/core/graph/node_spec.py +0 -2
  48. aethergraph/core/graph/node_state.py +3 -0
  49. aethergraph/core/graph/task_graph.py +39 -1
  50. aethergraph/core/runtime/__init__.py +0 -0
  51. aethergraph/core/runtime/ad_hoc_context.py +64 -4
  52. aethergraph/core/runtime/base_service.py +28 -4
  53. aethergraph/core/runtime/execution_context.py +13 -15
  54. aethergraph/core/runtime/graph_runner.py +222 -37
  55. aethergraph/core/runtime/node_context.py +510 -6
  56. aethergraph/core/runtime/node_services.py +12 -5
  57. aethergraph/core/runtime/recovery.py +15 -1
  58. aethergraph/core/runtime/run_manager.py +783 -0
  59. aethergraph/core/runtime/run_manager_local.py +204 -0
  60. aethergraph/core/runtime/run_registration.py +2 -2
  61. aethergraph/core/runtime/run_types.py +89 -0
  62. aethergraph/core/runtime/runtime_env.py +136 -7
  63. aethergraph/core/runtime/runtime_metering.py +71 -0
  64. aethergraph/core/runtime/runtime_registry.py +36 -13
  65. aethergraph/core/runtime/runtime_services.py +194 -6
  66. aethergraph/core/tools/builtins/toolset.py +1 -1
  67. aethergraph/core/tools/toolkit.py +5 -0
  68. aethergraph/plugins/agents/default_chat_agent copy.py +90 -0
  69. aethergraph/plugins/agents/default_chat_agent.py +171 -0
  70. aethergraph/plugins/agents/shared.py +81 -0
  71. aethergraph/plugins/channel/adapters/webui.py +112 -112
  72. aethergraph/plugins/channel/routes/webui_routes.py +367 -102
  73. aethergraph/plugins/channel/utils/slack_utils.py +115 -59
  74. aethergraph/plugins/channel/utils/telegram_utils.py +88 -47
  75. aethergraph/plugins/channel/websockets/weibui_ws.py +172 -0
  76. aethergraph/runtime/__init__.py +15 -0
  77. aethergraph/server/app_factory.py +190 -34
  78. aethergraph/server/clients/channel_client.py +202 -0
  79. aethergraph/server/http/channel_http_routes.py +116 -0
  80. aethergraph/server/http/channel_ws_routers.py +45 -0
  81. aethergraph/server/loading.py +117 -0
  82. aethergraph/server/server.py +131 -0
  83. aethergraph/server/server_state.py +240 -0
  84. aethergraph/server/start.py +227 -66
  85. aethergraph/server/ui_static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  86. aethergraph/server/ui_static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  87. aethergraph/server/ui_static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  88. aethergraph/server/ui_static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  89. aethergraph/server/ui_static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  90. aethergraph/server/ui_static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  91. aethergraph/server/ui_static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  92. aethergraph/server/ui_static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  93. aethergraph/server/ui_static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  94. aethergraph/server/ui_static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  95. aethergraph/server/ui_static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  96. aethergraph/server/ui_static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  97. aethergraph/server/ui_static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  98. aethergraph/server/ui_static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  99. aethergraph/server/ui_static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  100. aethergraph/server/ui_static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  101. aethergraph/server/ui_static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  102. aethergraph/server/ui_static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  103. aethergraph/server/ui_static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  104. aethergraph/server/ui_static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  105. aethergraph/server/ui_static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  106. aethergraph/server/ui_static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  107. aethergraph/server/ui_static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  108. aethergraph/server/ui_static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  109. aethergraph/server/ui_static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  110. aethergraph/server/ui_static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  111. aethergraph/server/ui_static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  112. aethergraph/server/ui_static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  113. aethergraph/server/ui_static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  114. aethergraph/server/ui_static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  115. aethergraph/server/ui_static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  116. aethergraph/server/ui_static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  117. aethergraph/server/ui_static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  118. aethergraph/server/ui_static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  119. aethergraph/server/ui_static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  120. aethergraph/server/ui_static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  121. aethergraph/server/ui_static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  122. aethergraph/server/ui_static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  123. aethergraph/server/ui_static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  124. aethergraph/server/ui_static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  125. aethergraph/server/ui_static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  126. aethergraph/server/ui_static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  127. aethergraph/server/ui_static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  128. aethergraph/server/ui_static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  129. aethergraph/server/ui_static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  130. aethergraph/server/ui_static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  131. aethergraph/server/ui_static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  132. aethergraph/server/ui_static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  133. aethergraph/server/ui_static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  134. aethergraph/server/ui_static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  135. aethergraph/server/ui_static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  136. aethergraph/server/ui_static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  137. aethergraph/server/ui_static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  138. aethergraph/server/ui_static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  139. aethergraph/server/ui_static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  140. aethergraph/server/ui_static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  141. aethergraph/server/ui_static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  142. aethergraph/server/ui_static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  143. aethergraph/server/ui_static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  144. aethergraph/server/ui_static/assets/index-BR5GtXcZ.css +1 -0
  145. aethergraph/server/ui_static/assets/index-CQ0HZZ83.js +400 -0
  146. aethergraph/server/ui_static/index.html +15 -0
  147. aethergraph/server/ui_static/logo.png +0 -0
  148. aethergraph/services/artifacts/__init__.py +0 -0
  149. aethergraph/services/artifacts/facade.py +1239 -132
  150. aethergraph/services/auth/{dev.py → authn.py} +0 -8
  151. aethergraph/services/auth/authz.py +100 -0
  152. aethergraph/services/channel/__init__.py +0 -0
  153. aethergraph/services/channel/channel_bus.py +19 -1
  154. aethergraph/services/channel/factory.py +13 -1
  155. aethergraph/services/channel/ingress.py +311 -0
  156. aethergraph/services/channel/queue_adapter.py +75 -0
  157. aethergraph/services/channel/session.py +502 -19
  158. aethergraph/services/container/default_container.py +122 -43
  159. aethergraph/services/continuations/continuation.py +6 -0
  160. aethergraph/services/continuations/stores/fs_store.py +19 -0
  161. aethergraph/services/eventhub/event_hub.py +76 -0
  162. aethergraph/services/kv/__init__.py +0 -0
  163. aethergraph/services/kv/ephemeral.py +244 -0
  164. aethergraph/services/llm/__init__.py +0 -0
  165. aethergraph/services/llm/generic_client copy.py +691 -0
  166. aethergraph/services/llm/generic_client.py +1288 -187
  167. aethergraph/services/llm/providers.py +3 -1
  168. aethergraph/services/llm/types.py +47 -0
  169. aethergraph/services/llm/utils.py +284 -0
  170. aethergraph/services/logger/std.py +3 -0
  171. aethergraph/services/mcp/__init__.py +9 -0
  172. aethergraph/services/mcp/http_client.py +38 -0
  173. aethergraph/services/mcp/service.py +225 -1
  174. aethergraph/services/mcp/stdio_client.py +41 -6
  175. aethergraph/services/mcp/ws_client.py +44 -2
  176. aethergraph/services/memory/__init__.py +0 -0
  177. aethergraph/services/memory/distillers/llm_long_term.py +234 -0
  178. aethergraph/services/memory/distillers/llm_meta_summary.py +398 -0
  179. aethergraph/services/memory/distillers/long_term.py +225 -0
  180. aethergraph/services/memory/facade/__init__.py +3 -0
  181. aethergraph/services/memory/facade/chat.py +440 -0
  182. aethergraph/services/memory/facade/core.py +447 -0
  183. aethergraph/services/memory/facade/distillation.py +424 -0
  184. aethergraph/services/memory/facade/rag.py +410 -0
  185. aethergraph/services/memory/facade/results.py +315 -0
  186. aethergraph/services/memory/facade/retrieval.py +139 -0
  187. aethergraph/services/memory/facade/types.py +77 -0
  188. aethergraph/services/memory/facade/utils.py +43 -0
  189. aethergraph/services/memory/facade_dep.py +1539 -0
  190. aethergraph/services/memory/factory.py +9 -3
  191. aethergraph/services/memory/utils.py +10 -0
  192. aethergraph/services/metering/eventlog_metering.py +470 -0
  193. aethergraph/services/metering/noop.py +25 -4
  194. aethergraph/services/rag/__init__.py +0 -0
  195. aethergraph/services/rag/facade.py +279 -23
  196. aethergraph/services/rag/index_factory.py +2 -2
  197. aethergraph/services/rag/node_rag.py +317 -0
  198. aethergraph/services/rate_limit/inmem_rate_limit.py +24 -0
  199. aethergraph/services/registry/__init__.py +0 -0
  200. aethergraph/services/registry/agent_app_meta.py +419 -0
  201. aethergraph/services/registry/registry_key.py +1 -1
  202. aethergraph/services/registry/unified_registry.py +74 -6
  203. aethergraph/services/scope/scope.py +159 -0
  204. aethergraph/services/scope/scope_factory.py +164 -0
  205. aethergraph/services/state_stores/serialize.py +5 -0
  206. aethergraph/services/state_stores/utils.py +2 -1
  207. aethergraph/services/viz/__init__.py +0 -0
  208. aethergraph/services/viz/facade.py +413 -0
  209. aethergraph/services/viz/viz_service.py +69 -0
  210. aethergraph/storage/artifacts/artifact_index_jsonl.py +180 -0
  211. aethergraph/storage/artifacts/artifact_index_sqlite.py +426 -0
  212. aethergraph/storage/artifacts/cas_store.py +422 -0
  213. aethergraph/storage/artifacts/fs_cas.py +18 -0
  214. aethergraph/storage/artifacts/s3_cas.py +14 -0
  215. aethergraph/storage/artifacts/utils.py +124 -0
  216. aethergraph/storage/blob/fs_blob.py +86 -0
  217. aethergraph/storage/blob/s3_blob.py +115 -0
  218. aethergraph/storage/continuation_store/fs_cont.py +283 -0
  219. aethergraph/storage/continuation_store/inmem_cont.py +146 -0
  220. aethergraph/storage/continuation_store/kvdoc_cont.py +261 -0
  221. aethergraph/storage/docstore/fs_doc.py +63 -0
  222. aethergraph/storage/docstore/sqlite_doc.py +31 -0
  223. aethergraph/storage/docstore/sqlite_doc_sync.py +90 -0
  224. aethergraph/storage/eventlog/fs_event.py +136 -0
  225. aethergraph/storage/eventlog/sqlite_event.py +47 -0
  226. aethergraph/storage/eventlog/sqlite_event_sync.py +178 -0
  227. aethergraph/storage/factory.py +432 -0
  228. aethergraph/storage/fs_utils.py +28 -0
  229. aethergraph/storage/graph_state_store/state_store.py +64 -0
  230. aethergraph/storage/kv/inmem_kv.py +103 -0
  231. aethergraph/storage/kv/layered_kv.py +52 -0
  232. aethergraph/storage/kv/sqlite_kv.py +39 -0
  233. aethergraph/storage/kv/sqlite_kv_sync.py +98 -0
  234. aethergraph/storage/memory/event_persist.py +68 -0
  235. aethergraph/storage/memory/fs_persist.py +118 -0
  236. aethergraph/{services/memory/hotlog_kv.py → storage/memory/hotlog.py} +8 -2
  237. aethergraph/{services → storage}/memory/indices.py +31 -7
  238. aethergraph/storage/metering/meter_event.py +55 -0
  239. aethergraph/storage/runs/doc_store.py +280 -0
  240. aethergraph/storage/runs/inmen_store.py +82 -0
  241. aethergraph/storage/runs/sqlite_run_store.py +403 -0
  242. aethergraph/storage/sessions/doc_store.py +183 -0
  243. aethergraph/storage/sessions/inmem_store.py +110 -0
  244. aethergraph/storage/sessions/sqlite_session_store.py +399 -0
  245. aethergraph/storage/vector_index/chroma_index.py +138 -0
  246. aethergraph/storage/vector_index/faiss_index.py +179 -0
  247. aethergraph/storage/vector_index/sqlite_index.py +187 -0
  248. {aethergraph-0.1.0a1.dist-info → aethergraph-0.1.0a2.dist-info}/METADATA +138 -31
  249. aethergraph-0.1.0a2.dist-info/RECORD +356 -0
  250. aethergraph-0.1.0a2.dist-info/entry_points.txt +3 -0
  251. aethergraph/services/artifacts/factory.py +0 -35
  252. aethergraph/services/artifacts/fs_store.py +0 -656
  253. aethergraph/services/artifacts/jsonl_index.py +0 -123
  254. aethergraph/services/artifacts/sqlite_index.py +0 -209
  255. aethergraph/services/memory/distillers/episode.py +0 -116
  256. aethergraph/services/memory/distillers/rolling.py +0 -74
  257. aethergraph/services/memory/facade.py +0 -633
  258. aethergraph/services/memory/persist_fs.py +0 -40
  259. aethergraph/services/rag/index/base.py +0 -27
  260. aethergraph/services/rag/index/faiss_index.py +0 -121
  261. aethergraph/services/rag/index/sqlite_index.py +0 -134
  262. aethergraph-0.1.0a1.dist-info/RECORD +0 -182
  263. aethergraph-0.1.0a1.dist-info/entry_points.txt +0 -2
  264. {aethergraph-0.1.0a1.dist-info → aethergraph-0.1.0a2.dist-info}/WHEEL +0 -0
  265. {aethergraph-0.1.0a1.dist-info → aethergraph-0.1.0a2.dist-info}/licenses/LICENSE +0 -0
  266. {aethergraph-0.1.0a1.dist-info → aethergraph-0.1.0a2.dist-info}/licenses/NOTICE +0 -0
  267. {aethergraph-0.1.0a1.dist-info → aethergraph-0.1.0a2.dist-info}/top_level.txt +0 -0
@@ -1,121 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import os
4
- import pickle
5
- from typing import Any
6
-
7
- import numpy as np
8
-
9
- try:
10
- import faiss
11
- except Exception:
12
- faiss = None
13
-
14
- from .base import VectorIndex
15
-
16
- """A simple FAISS index per corpus (L2 on normalized vectors ~ cosine).
17
- Stores vectors as BLOBs along with metadata in a simple schema.
18
- """
19
-
20
-
21
- class FAISSVectorIndex(VectorIndex):
22
- """A simple FAISS index per corpus (L2 on normalized vectors ~ cosine)."""
23
-
24
- def __init__(self, index_path: str, dim: int | None = None):
25
- super().__init__(index_path)
26
- self.dim = dim # optional default; will infer on first add
27
- os.makedirs(index_path, exist_ok=True)
28
-
29
- def _paths(self, corpus_id: str):
30
- base = os.path.join(self.index_path, corpus_id)
31
- return base + ".index", base + ".meta.pkl"
32
-
33
- def _load(self, corpus_id: str):
34
- idx_path, meta_path = self._paths(corpus_id)
35
- if not (os.path.exists(idx_path) and os.path.exists(meta_path)):
36
- return None, []
37
- if faiss is None:
38
- raise RuntimeError("FAISS not installed")
39
- index = faiss.read_index(idx_path)
40
- with open(meta_path, "rb") as f:
41
- metas = pickle.load(f)
42
- return index, metas
43
-
44
- def _save(self, corpus_id: str, index, metas):
45
- idx_path, meta_path = self._paths(corpus_id)
46
- if faiss is None:
47
- raise RuntimeError("FAISS not installed")
48
- faiss.write_index(index, idx_path)
49
- with open(meta_path, "wb") as f:
50
- pickle.dump(metas, f)
51
-
52
- async def add(
53
- self,
54
- corpus_id: str,
55
- chunk_ids: list[str],
56
- vectors: list[list[float]],
57
- metas: list[dict[str, Any]],
58
- ):
59
- if faiss is None:
60
- raise RuntimeError("FAISS not installed")
61
- vecs = np.asarray(vectors, dtype=np.float32)
62
- # normalize for cosine
63
- norms = np.linalg.norm(vecs, axis=1, keepdims=True) + 1e-9
64
- vecs = vecs / norms
65
- d = vecs.shape[1]
66
- index, old_metas = self._load(corpus_id)
67
- if index is None:
68
- index = faiss.IndexFlatIP(d) # cosine via normalized dot
69
- old_metas = []
70
- index.add(vecs)
71
- for cid, m in zip(chunk_ids, metas, strict=True):
72
- old_metas.append({"chunk_id": cid, "meta": m})
73
- self._save(corpus_id, index, old_metas)
74
-
75
- async def delete(self, corpus_id: str, chunk_ids: list[str] | None = None):
76
- # Simple approach: rebuild if filtering; or delete entire corpus.
77
- if not chunk_ids:
78
- idx_path, meta_path = self._paths(corpus_id)
79
- for p in (idx_path, meta_path):
80
- if os.path.exists(p):
81
- os.remove(p)
82
- else:
83
- index, metas = self._load(corpus_id)
84
- if index is None:
85
- return
86
- # Rebuild without those ids
87
- keep = [i for i, m in enumerate(metas) if m["chunk_id"] not in set(chunk_ids)]
88
- if not keep:
89
- await self.delete(corpus_id, None)
90
- return
91
- # Need stored vectors to rebuild — this simple implementation does not persist them.
92
- # In production, persist vectors or recompute from text.
93
- raise NotImplementedError(
94
- "Selective delete requires stored vectors; not implemented here."
95
- )
96
-
97
- async def list_chunks(self, corpus_id: str) -> list[str]:
98
- _, metas = self._load(corpus_id)
99
- return [m["chunk_id"] for m in metas] if metas else []
100
-
101
- async def search(self, corpus_id: str, query_vec: list[float], k: int):
102
- if faiss is None:
103
- raise RuntimeError("FAISS not installed")
104
- index, metas = self._load(corpus_id)
105
- if index is None:
106
- return []
107
- q = np.asarray([query_vec], dtype=np.float32)
108
- q = q / (np.linalg.norm(q, axis=1, keepdims=True) + 1e-9)
109
- D, I = index.search(q, k) # noqa: E741
110
- out = []
111
- for score, idx in zip(D[0].tolist(), I[0].tolist(), strict=True):
112
- if idx < 0 or idx >= len(metas):
113
- continue
114
- out.append(
115
- {
116
- "chunk_id": metas[idx]["chunk_id"],
117
- "score": float(score),
118
- "meta": metas[idx]["meta"],
119
- }
120
- )
121
- return out
@@ -1,134 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import json
4
- import os
5
- import sqlite3
6
- from typing import Any
7
-
8
- import numpy as np
9
-
10
- from .base import VectorIndex
11
-
12
- """A simple SQLite-based vector index per corpus (brute-force cosine similarity).
13
- Stores vectors as BLOBs along with metadata in a simple schema.
14
- """
15
-
16
-
17
- SCHEMA = """
18
- CREATE TABLE IF NOT EXISTS chunks (
19
- corpus_id TEXT,
20
- chunk_id TEXT,
21
- meta_json TEXT,
22
- PRIMARY KEY (corpus_id, chunk_id)
23
- );
24
- CREATE TABLE IF NOT EXISTS embeddings (
25
- corpus_id TEXT,
26
- chunk_id TEXT,
27
- vec BLOB, -- np.float32 array bytes
28
- norm REAL,
29
- PRIMARY KEY (corpus_id, chunk_id)
30
- );
31
- """
32
-
33
-
34
- def _ensure_db(path: str):
35
- os.makedirs(os.path.dirname(path), exist_ok=True)
36
- conn = sqlite3.connect(path)
37
- try:
38
- for stmt in SCHEMA.strip().split(";\n"):
39
- s = stmt.strip()
40
- if s:
41
- conn.execute(s)
42
- conn.commit()
43
- finally:
44
- conn.close()
45
-
46
-
47
- class SQLiteVectorIndex(VectorIndex):
48
- def __init__(self, index_path: str):
49
- super().__init__(index_path)
50
- self.db_path = os.path.join(index_path, "index.sqlite")
51
- _ensure_db(self.db_path)
52
-
53
- def _connect(self):
54
- return sqlite3.connect(self.db_path)
55
-
56
- async def add(
57
- self,
58
- corpus_id: str,
59
- chunk_ids: list[str],
60
- vectors: list[list[float]],
61
- metas: list[dict[str, Any]],
62
- ):
63
- conn = self._connect()
64
- try:
65
- cur = conn.cursor()
66
- for cid, vec, meta in zip(chunk_ids, vectors, metas, strict=True):
67
- v = np.asarray(vec, dtype=np.float32)
68
- norm = float(np.linalg.norm(v) + 1e-9)
69
- cur.execute(
70
- "REPLACE INTO chunks(corpus_id,chunk_id,meta_json) VALUES(?,?,?)",
71
- (corpus_id, cid, json.dumps(meta, ensure_ascii=False)),
72
- )
73
- cur.execute(
74
- "REPLACE INTO embeddings(corpus_id,chunk_id,vec,norm) VALUES(?,?,?,?)",
75
- (corpus_id, cid, v.tobytes(), norm),
76
- )
77
- conn.commit()
78
- finally:
79
- conn.close()
80
-
81
- async def delete(self, corpus_id: str, chunk_ids: list[str] | None = None):
82
- conn = self._connect()
83
- try:
84
- cur = conn.cursor()
85
- if chunk_ids:
86
- q = f"DELETE FROM chunks WHERE corpus_id=? AND chunk_id IN ({','.join(['?'] * len(chunk_ids))})"
87
- cur.execute(q, [corpus_id, *chunk_ids])
88
- q2 = f"DELETE FROM embeddings WHERE corpus_id=? AND chunk_id IN ({','.join(['?'] * len(chunk_ids))})"
89
- cur.execute(q2, [corpus_id, *chunk_ids])
90
- else:
91
- cur.execute("DELETE FROM chunks WHERE corpus_id=?", (corpus_id,))
92
- cur.execute("DELETE FROM embeddings WHERE corpus_id=?", (corpus_id,))
93
- conn.commit()
94
- finally:
95
- conn.close()
96
-
97
- async def list_chunks(self, corpus_id: str) -> list[str]:
98
- conn = self._connect()
99
- try:
100
- cur = conn.cursor()
101
- cur.execute("SELECT chunk_id FROM chunks WHERE corpus_id=?", (corpus_id,))
102
- return [r[0] for r in cur.fetchall()]
103
- finally:
104
- conn.close()
105
-
106
- async def search(
107
- self, corpus_id: str, query_vec: list[float], k: int
108
- ) -> list[dict[str, Any]]: # Brute-force cosine similarity. Loads vectors for that corpus.
109
- q = np.asarray(query_vec, dtype=np.float32)
110
- qn = float(np.linalg.norm(q) + 1e-9)
111
-
112
- conn = self._connect()
113
- try:
114
- cur = conn.cursor()
115
- cur.execute(
116
- "SELECT e.chunk_id, e.vec, e.norm, c.meta_json FROM embeddings e JOIN chunks c USING(corpus_id,chunk_id) WHERE e.corpus_id=?",
117
- (corpus_id,),
118
- )
119
- rows = cur.fetchall()
120
- finally:
121
- conn.close()
122
-
123
- scores = []
124
- for chunk_id, vec_bytes, norm, meta_json in rows:
125
- v = np.frombuffer(vec_bytes, dtype=np.float32)
126
- score = float(np.dot(q, v) / (qn * norm))
127
- scores.append((score, chunk_id, meta_json))
128
-
129
- scores.sort(reverse=True, key=lambda x: x[0])
130
- top = scores[:k]
131
- out = []
132
- for score, chunk_id, meta_json in top:
133
- out.append({"chunk_id": chunk_id, "score": score, "meta": json.loads(meta_json)})
134
- return out
@@ -1,182 +0,0 @@
1
- aethergraph/__init__.py,sha256=LuzSyqu0jmt4YxwHdgFn-OM_5EsO66YI55QKaDa-N9w,1290
2
- aethergraph/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- aethergraph/config/config.py,sha256=OJewUlLyNFJhKgnDTsPvZQvaw1Z6FfuBbRbpxJq_VJg,4182
4
- aethergraph/config/context.py,sha256=dn0-6LG52fdVDzSJjq9GDv7BWaO9ncM1LJ54FVGLmXc,451
5
- aethergraph/config/llm.py,sha256=_oi_JeuX-IpPhj-Y5oBeLlebFnjWr7xYyzmgpIjT7dk,785
6
- aethergraph/config/loader.py,sha256=x_t6QLYnCCgZ8-805IMioZjaK0_Cinl1tqMBr4_84us,2031
7
- aethergraph/config/runtime.py,sha256=tYcs2QPmhgcePLJJPnbmJ9xd69S_qvYJm2Kt5OWziR4,194
8
- aethergraph/contracts/errors/errors.py,sha256=EELKbyU65wzSaoiW4UDKkIcDmVs3jUi-UyuwtAizXQ0,1421
9
- aethergraph/contracts/services/artifacts.py,sha256=kq9Do-MFChneJzHfnDjrTs71fnXdT5mBSpovhF0fZ4M,4500
10
- aethergraph/contracts/services/channel.py,sha256=VcAWdklLaADCKEWr6eH4eFwtwgib6aDtul-28Q8Q_7A,2846
11
- aethergraph/contracts/services/continuations.py,sha256=n7joRpMjFEQ61k5UgMmG1qzmzFxn8yFJeufGV2ojUHU,1021
12
- aethergraph/contracts/services/eventbus.py,sha256=p6l_Ebmk0h6zF6nrq2RP83Y21jjlSiSoCFY3Nhzt_-g,366
13
- aethergraph/contracts/services/kv.py,sha256=82q_tQEQ1YfhQPU1CbotIMPcwYAO0pu0VkKdy6_LRKo,1072
14
- aethergraph/contracts/services/llm.py,sha256=viAwFGbyzC3k4Fw22lnc_Jezi9lMopkHPBoM53TdjXY,583
15
- aethergraph/contracts/services/mcp.py,sha256=X24iufFK8GaijqgMXhVQNgbiVobMbHppOmf8J7A5Uzs,626
16
- aethergraph/contracts/services/memory.py,sha256=NYJz9n1ixbJGpHNLw0pX9Fyinb9KTV97NFBF1XVxgKw,3721
17
- aethergraph/contracts/services/resume.py,sha256=5TyP9KP_NnavWMG2R_ZR-o6aKNg09oOI0KwXLgcztm8,856
18
- aethergraph/contracts/services/state_stores.py,sha256=irNCfZBy4n-0jySSLk-ZmJKaWvkAT9Htu5L5sf8ePlo,997
19
- aethergraph/contracts/services/wakeup.py,sha256=RyKg0doETHWTu4ki4Wne9VpBkvSA4D9fN078ipjW94Q,879
20
- aethergraph/core/execution/base_scheduler.py,sha256=nhcusZQp7KO-6V6h4wv0Zvx_YLvrGVmI8aks0f4Z6ec,2475
21
- aethergraph/core/execution/forward_scheduler.py,sha256=wbjxxeoRNjumcZuDpSGYZ6xFKWrewJcxmKG3AjPUh5w,33866
22
- aethergraph/core/execution/global_scheduler.py,sha256=xM3JdmCdCh7ndhUtBBwEUfbrDO1mdIJOefY-iiJORtg,25871
23
- aethergraph/core/execution/retry_policy.py,sha256=zLHYs8ZX3yaPYSUBp_9oyMaj1RvQmv_JBkPl_aBg-rc,810
24
- aethergraph/core/execution/step_forward.py,sha256=GR-x9CX28ZMWbe4WP9iE4SiHWd6r48gRRxOMtaD_7tA,14758
25
- aethergraph/core/execution/step_result.py,sha256=-ywMoVghqvEKsbi5hceEt_uMCetp-_6BajdD36W4oQs,698
26
- aethergraph/core/execution/wait_types.py,sha256=QYRR3MyIhOeSrbLtLXj9n9OIU8Sck5YHpeHsdwuQHzc,2826
27
- aethergraph/core/graph/graph_builder.py,sha256=l7IQsMrJREbLyd2CiUbvJrtwvU5eZZ8_iRLMpxAoxRs,7142
28
- aethergraph/core/graph/graph_fn.py,sha256=yuj-Bxyg65Y293O3JeuDi5BPvM3nZnY1M_QJd2CbH_Y,7471
29
- aethergraph/core/graph/graph_io.py,sha256=uoUtTQP6TO-MZ0CszPAR6tiKOxfKSz-Y6wUMK8P38NU,2560
30
- aethergraph/core/graph/graph_refs.py,sha256=_6daCyA2uQzB-fxUBPAjTARgCF8Juh0d0kTHHwGeiKI,5049
31
- aethergraph/core/graph/graph_spec.py,sha256=D5QsQNwQyvyCOnmin__4MAXgw_HUVGIMVyNN69aK9eU,3796
32
- aethergraph/core/graph/graph_state.py,sha256=z4_3gBGZ6gBzJH9E5YUbGc5EtRAP611xiXFW6WArwIE,2394
33
- aethergraph/core/graph/graphify.py,sha256=gpTK4bWAFT-fHo_n0E7HrSMQqlsPvig16OV-0CdzUOg,4713
34
- aethergraph/core/graph/interpreter.py,sha256=b9aNzr8Z4G_gsnDcJxd5ci8fQRdAsOqOnGM24DPHTNU,4807
35
- aethergraph/core/graph/node_handle.py,sha256=eGo5h5cG2ogbYnRl8phcyHs6-4QtOeWNizgZKh4dKbM,1117
36
- aethergraph/core/graph/node_spec.py,sha256=pXcSdjLFb9riWH7khh-E2oPOJLTN8pFIZXVYqLX_rXk,1451
37
- aethergraph/core/graph/node_state.py,sha256=5XMrDv8F0rpGUQn3licTTZOVzRJ_5nBDeaXpn6MWHGI,2034
38
- aethergraph/core/graph/task_graph.py,sha256=NpVX-D_CDNg1uhcuNInAuush7KeVmTXMJu4tna5RlWE,30586
39
- aethergraph/core/graph/task_node.py,sha256=Hg-rVwKfViPtD0hsU5Z381Zw7ecxOxYXyGqvQ25qr-M,2143
40
- aethergraph/core/graph/utils.py,sha256=7H-2PCirgBfiUsNd0-C1yG3Y8x9zuWh5OXue_Gx32g8,1245
41
- aethergraph/core/graph/visualize.py,sha256=TFRNJmcakAc2MqWASUvTGGDf8XJx38t5EW4tfyAj3ag,8110
42
- aethergraph/core/runtime/ad_hoc_context.py,sha256=gd-CGfMp-UEy458OLKtNRC6-IzFKnLchuX3ufc1tOEU,1680
43
- aethergraph/core/runtime/base_service.py,sha256=LXESFb0hf-gUMCRS25wymELaXAKpLsOtIUr1LbKZEaU,4778
44
- aethergraph/core/runtime/bind_adapter.py,sha256=HlPJyPxiNF8nlzBqsDeDiiSkeVr2gq7oEDR_7vX1f6k,1097
45
- aethergraph/core/runtime/bound_memory.py,sha256=uKxvmyP56G14pReJN_B0_kKdKHHoKkJFCmyjB-_COiE,2242
46
- aethergraph/core/runtime/execution_context.py,sha256=_QceHQch2e6aDRAO4c7JtIhQvPyFlLSqvZNluz3Y_Z4,9344
47
- aethergraph/core/runtime/graph_runner.py,sha256=t_tvIa51fiSSNhg6ZUs08mIaUiA41KKubqeooyZUn2Y,12539
48
- aethergraph/core/runtime/lifecycle.py,sha256=xPoGDWxNp-MEufM19VmQXoBOzr9HHErCDAEIqpYSIyQ,776
49
- aethergraph/core/runtime/node_context.py,sha256=sG3ZbyyWK6G-Is27eABH5sKwR_RWcMItG6vmc0fasq8,7114
50
- aethergraph/core/runtime/node_services.py,sha256=8_MVKYANZnSS7UWsfNGRFhwejgsnNDqs4pmnpSDBLn4,1339
51
- aethergraph/core/runtime/recovery.py,sha256=DGIICAKpPyfFQDUz5sux1MamWrm5E3BMWdZXm--3wYk,5766
52
- aethergraph/core/runtime/run_registration.py,sha256=oouS-GZgiK2A_3agFPqv1vJjkZCAPLcy56ijzKL6GOM,1305
53
- aethergraph/core/runtime/runtime_env.py,sha256=yTAWG3wh1ZgdHnMYV2SGe2Ya_gZr9zG4QzqsX6ND86w,5321
54
- aethergraph/core/runtime/runtime_registry.py,sha256=ik2VMWEWVSHc1xsUGZHu4krKE4cTZ-Lvab_Vv9j6KBA,1081
55
- aethergraph/core/runtime/runtime_services.py,sha256=O9ma7HWbpnmf8UTUtDML8KLUeAYUY5EQ3deyV9rXv6k,6269
56
- aethergraph/core/runtime/wakeup_watcher.py,sha256=Exw8chz7UXqfKVObuYjY-byRAyYk9pw_stlXqzkuct0,1496
57
- aethergraph/core/tools/__init__.py,sha256=_IITFxrr0evTGMHyjFGUrFcZysm0LSPg2g6IiSsRRMo,298
58
- aethergraph/core/tools/toolkit.py,sha256=DsmLqemYXlFMulALLdXKctopUe8R_rRiK58dktx0TaM,18944
59
- aethergraph/core/tools/waitable.py,sha256=xcJIvgKY11HszCeleu9Hm6sgD1KRwmJ-A5rjDcRd2Rs,4053
60
- aethergraph/core/tools/builtins/channel_tools.py,sha256=Ho2nM6WeViHJKE26MnB-eHPaPW9R8N1axE0WpGo4XGk,5710
61
- aethergraph/core/tools/builtins/toolset.py,sha256=5pJ4pYHEmwp9WrQ7Z7FyUk6RpSWQ2X5_OyT6TbmYTCE,3555
62
- aethergraph/plugins/channel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
- aethergraph/plugins/channel/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
- aethergraph/plugins/channel/adapters/console.py,sha256=Fe620-lVD42xKaX7y69TwU-n_iKoe91omNefZciLDeE,4242
65
- aethergraph/plugins/channel/adapters/file.py,sha256=rd0vKMTX5UojKUTm_L5gQIOE2oTRP7EqI2rrTAI01TI,3374
66
- aethergraph/plugins/channel/adapters/slack.py,sha256=pmbvU-u_4VxH_QVnm6vFMlH6gJ57yPulnxdb-l3sqmo,11245
67
- aethergraph/plugins/channel/adapters/telegram.py,sha256=OldJo21nrG9rEHygDQU1GDhg0HzJPv-3v6E8VtKJ6fY,12279
68
- aethergraph/plugins/channel/adapters/webhook.py,sha256=28j2PL3OXiUugecTtGfl0t3J0h24hu7RSir3QHQlhbs,3811
69
- aethergraph/plugins/channel/adapters/webui.py,sha256=JZ3g0Z4zx1WI0TZ_S4ilyKU9m1mQgomVuuPiUBbrYHM,4703
70
- aethergraph/plugins/channel/routes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
- aethergraph/plugins/channel/routes/console_routes.py,sha256=k6KPPEROBMU9yenBm2qSOix7QLRoSY8lXwPt0uVqtlU,3395
72
- aethergraph/plugins/channel/routes/slack_routes.py,sha256=4fzJWEOzU3lbcB7ToXrxfkdN9Kt-B2Hkgl-FSsO2xLI,1354
73
- aethergraph/plugins/channel/routes/telegram_routes.py,sha256=OJ2pZmLr8vmLpAtFlVjtG0kS4fv7sh_2j6Rm-MB0oTI,809
74
- aethergraph/plugins/channel/routes/webui_routes.py,sha256=_ogCHF2WR33QTx2Djo93qWyjNwBG86ZZwXevdIV3dUU,4351
75
- aethergraph/plugins/channel/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
- aethergraph/plugins/channel/utils/slack_utils.py,sha256=SBS5YrIhklv6Mk-s49_4ttGt58GRoqqU-rMXVJwidMM,10264
77
- aethergraph/plugins/channel/utils/telegram_utils.py,sha256=FyHIYOdGZBfjrrpGPqAA0PQ4RlLV25s7Vz_m4a-sF8w,12132
78
- aethergraph/plugins/channel/websockets/slack_ws.py,sha256=7zU28StFGFfFSAT1I2u2OGsP7QchO5wU1Hz-w3vyn08,2842
79
- aethergraph/plugins/channel/websockets/telegram_polling.py,sha256=R0Enc4v-9po2cxvlXxIDJvk8RAzm_yp_sCF3JCFAdo4,5922
80
- aethergraph/plugins/mcp/fs_server.py,sha256=skRjoA7crAUiYQwy8npwzu51PhhNKP8eBkDwHZF1tSs,3858
81
- aethergraph/plugins/mcp/http_server.py,sha256=wQrV4wdqkStKuj8f2pblbik9ohQDj-yT87hRAOgMWO8,3153
82
- aethergraph/plugins/mcp/ws_server.py,sha256=zMcMJJnzWQ5GTTlIfZyDQasgaAxXrH1nq281aQKJZbs,6603
83
- aethergraph/plugins/net/http.py,sha256=2CiSzUCNGd0dl-ld0Z2RU1OgkMKm8t1188wmt27SLjo,299
84
- aethergraph/plugins/utils/data_io.py,sha256=7gfd8jUUmYJmAupwno7O9TwteVWsjY_Tnp0qB1QBQLg,10824
85
- aethergraph/runner/__init__.py,sha256=l90QHNCvY7rLgHQSKxWA3faiqXF8pt_2mApMuUgR37c,190
86
- aethergraph/runtime/__init__.py,sha256=A8xUT42-698yg9ycfJmg2mD9EI-OE0vz7eIJoTDb3dQ,1715
87
- aethergraph/server/__init__.py,sha256=sAOwqEBX6vWES6_D0CBDCYcpVaIM6pz8El-mGxp3zpA,133
88
- aethergraph/server/app_factory.py,sha256=xB-wuXjh1-u6Rv7G2YZK-WM3R6lXiwrxxKnpxJVocxk,2993
89
- aethergraph/server/start.py,sha256=QWIgIJhH5OzKN6qp03jzlDg8GRk39etk4sslF1TY1Ew,3288
90
- aethergraph/services/__init__.py,sha256=SX50b1u1rFsHaMr4UAj5RhJzh0fEmx2l-cZ31MNA_EA,482
91
- aethergraph/services/artifacts/facade.py,sha256=bdS2iR4Bax4aHSCtIae5WKYclWHJAIaEI6M_H8DdEyU,10656
92
- aethergraph/services/artifacts/factory.py,sha256=vTDYChY7S1SXtbcFU2-ZoM9bj_-_X8fm44zhvgXvyHc,1120
93
- aethergraph/services/artifacts/fs_store.py,sha256=s3HtZ8z68o7YbDM_45hhw23Q51vwTv-p6XH9lYydGp4,24204
94
- aethergraph/services/artifacts/jsonl_index.py,sha256=Y4YABM-ybslTj-M-8rZnhqabuKH3EKx5qNw-MzTcJkY,4944
95
- aethergraph/services/artifacts/paths.py,sha256=Q3mtLvK418HP4cjYF3SA9TgI_lH_uK0NJd4lqUKk_-w,926
96
- aethergraph/services/artifacts/sqlite_index.py,sha256=_ztXa2TwGGO_kNoeIIX1VEKM_aQzHZVkgRmVKt1MVQA,7202
97
- aethergraph/services/artifacts/utils.py,sha256=0VfMrsGUVZPyvO_lA3lXtKZqLCYES5VxJBqoVZdRd9w,4471
98
- aethergraph/services/auth/dev.py,sha256=KziwuOmHgBPA_ORAIWmDgNYaGFNa7TwQjku8mAblgXw,521
99
- aethergraph/services/channel/channel_bus.py,sha256=oS612apQdkmWduN8zaAhoFm_vJaPptVPE6suygG2iVo,11997
100
- aethergraph/services/channel/factory.py,sha256=xrFqfm2FoM1u5LsRpSp5LIOsuR_WnVkAC5E0xanSUaw,1743
101
- aethergraph/services/channel/session.py,sha256=HwH9G1n7O0uzSIGkuvTDXroruIEfzm3t21rVhLXX80U,18834
102
- aethergraph/services/channel/wait_helpers.py,sha256=40NbvSZsMPOQGelb6sP4bpF6XeelFVeBaGQ3L5dF6qo,1975
103
- aethergraph/services/clock/clock.py,sha256=XIt_7NxkpHd_rmbXhHJqWKW3icXu8fdAmmj2rV97bDk,190
104
- aethergraph/services/container/default_container.py,sha256=usUnPdAQ-4z0pZ_6oHdSOzWE8Hpl8lhk89t8EkF5_cA,10950
105
- aethergraph/services/continuations/continuation.py,sha256=ExQYImsKCUAQND44Yhu-iYqEY6BxCc5O54ApTAYVAWQ,1851
106
- aethergraph/services/continuations/factory.py,sha256=fNL0ykF28ahFRKg0Wn_9SAqjaE-S2DLfBkULFMK6v4w,1291
107
- aethergraph/services/continuations/stores/fs_store.py,sha256=z0bfay6DyAxBNGWJmoN6ibxaUOGFao_DDtVinZ18DSw,10547
108
- aethergraph/services/continuations/stores/inmem_store.py,sha256=QyRzEK8uQ2fIHHmAlFj9UsBzs8Ub5PUWz15eSDNG4sY,3573
109
- aethergraph/services/eventbus/inmem.py,sha256=F8C89icPi8ZDcnhb_E4Gt4Q0PEIm7HLLzWGWjJ4aot4,677
110
- aethergraph/services/features/static.py,sha256=-zefImm-eq_nZNEJzs1N3okgpHGm8cPHVLgjNdSQ-yk,296
111
- aethergraph/services/kv/ephemeral.py,sha256=_CgycBaLzSzUotH_BLRpKch78WDNmNaZspxWDVQXhG8,3036
112
- aethergraph/services/kv/factory.py,sha256=V4Q5qUb9Ykhw8tg-UK8QfH1T4E8wybhVOI3dlfZ0J-Q,819
113
- aethergraph/services/kv/layered.py,sha256=TsUA1pKCeKyxNfTcTFQyobV8vBrsCoH1KyZ40Ge9-Pc,1523
114
- aethergraph/services/kv/sqlite_kv.py,sha256=PjeRpBDXLXvuioHBbk1JgASDpFCqUtlJL70OEaUYAZA,4796
115
- aethergraph/services/llm/factory.py,sha256=rfZkGOj7KLNIT_SEJCyTMnA1_GX3JhXZ1ezCDbsYJEU,5546
116
- aethergraph/services/llm/generic_client.py,sha256=tD26Tn8OAsBHl_glDJHfcQozIt64PxeMm8KIHDHaOCw,20612
117
- aethergraph/services/llm/providers.py,sha256=PfiAn2OhXEv8FR1jlPaA7kBI60_gWvrw_2SxYXfgMC8,128
118
- aethergraph/services/llm/service.py,sha256=3uDHQrVTKZc9ptKnLPfZyqiaoN017jVvcrY0Kx6kOHA,3754
119
- aethergraph/services/logger/base.py,sha256=BuWtFvS0Y9Y_f0_8Do3zfdM58gE70MfIPA6_M1qSI8I,1321
120
- aethergraph/services/logger/compat.py,sha256=2BSbKv23oWn1ccIQ4NgX079IV94QTg3Z8PlrDfZ6x0c,1838
121
- aethergraph/services/logger/formatters.py,sha256=2MvYRq5VPWQGwplgokGBtJX9EYULpaHGItDjTTKW2J0,3655
122
- aethergraph/services/logger/std.py,sha256=EyxbhiHqKR-To3h3Tt9Ff2LVGxemdiCtkbcnTpzftE0,7346
123
- aethergraph/services/mcp/helpers.py,sha256=lMSViIO3dZD-fHpFMBosr9SdBYgD3GMwd23XswxduOQ,819
124
- aethergraph/services/mcp/http_client.py,sha256=y8EUZDMwiLVPOheyXiw5eksPp0NoZzjqP3PxXFYAFgo,2311
125
- aethergraph/services/mcp/mcp_tools.py,sha256=uUXmKvYmVmLvcABIptZ5MzbYC0cDPCgCFppr4O2tKM4,837
126
- aethergraph/services/mcp/registry.py,sha256=CM8ZfeIHmI0UlPxLITZL_dZv83VXtwPX6ZUb5gZnauM,460
127
- aethergraph/services/mcp/service.py,sha256=BYvVFqrJnCWwt5rDEKibVoMWgoYpXkrsRf-4hsPLzQY,3637
128
- aethergraph/services/mcp/stdio_client.py,sha256=nm2tVc4EvJ7MY23S7H9lRpkL-c8G9i3RWBSDYlV4FJI,2728
129
- aethergraph/services/mcp/ws_client.py,sha256=ctCJzfhVjGXpPbbU2lUQ7ebP5OaqC6GFQm0QbigEDLs,4088
130
- aethergraph/services/memory/bound.py,sha256=tfsy-RWe4QAAGUDcrzNp54ZRgSZS8g5Irm8hSwmiG9Y,3515
131
- aethergraph/services/memory/facade.py,sha256=mVycybD27qIJi6gQMneiCp6wsLwKNBZkbOxfqiXJvpM,25079
132
- aethergraph/services/memory/factory.py,sha256=0FnkMmCAqs4-mgWJiG1lsit9hRh1tI4PIHKEk4BzRHA,2579
133
- aethergraph/services/memory/hotlog_kv.py,sha256=JVWssYsL-t4asokwq918c1vIa4EVyyi1iyk4uv1Ul1Y,991
134
- aethergraph/services/memory/indices.py,sha256=Vs1b8JT9xCrHuipTQh6JGlgjFVHiRL4bAuLv2V8vxQc,2799
135
- aethergraph/services/memory/io_helpers.py,sha256=HOFgVVwoM0erpBu6OtiPlBmjf0L5zHREPm0YtClFz9A,2033
136
- aethergraph/services/memory/persist_fs.py,sha256=3mPxXfNTObPUzsxdBoPiG4fZ4haLM-GLmjE9oIVhnis,1427
137
- aethergraph/services/memory/resolver.py,sha256=TiMBJO1ALRO4_7CwafbZ-V70b1ldMLCLHdrn2cN8nuk,5261
138
- aethergraph/services/memory/distillers/episode.py,sha256=dWsqPGNhMt9KAIKqvNzeCFl4rFCoZ0evR03phVP8kg0,3629
139
- aethergraph/services/memory/distillers/rolling.py,sha256=vc3Ezecg7hHDYRoCMK3h6UgFC2HsEF1dWzJmiQ-ExTU,2562
140
- aethergraph/services/metering/noop.py,sha256=d6BJMiRGYpStqMtTv7MPNmVm5z9u9gWCVjUez2Cohss,139
141
- aethergraph/services/prompts/file_store.py,sha256=z3tyoekJFTs3XVqFjLEC0wmVmdYj8vWDt9L5-GZ_UDg,1429
142
- aethergraph/services/rag/chunker.py,sha256=WsjlciEUAVn-31nuDJiDcEkM-JtWB6Cp5aYfFC0mpmE,936
143
- aethergraph/services/rag/facade.py,sha256=8btDrY9405OVKrasBZuzTm5SnANgwI-GMRagCEtvv64,24003
144
- aethergraph/services/rag/index_factory.py,sha256=jwk7HExXVRxLEkjUjIUwpFFcadQplUup50P6icmD8WY,1741
145
- aethergraph/services/rag/index/base.py,sha256=814bRi5kO8ZNyPTVo8x1QGEo6hxdmSd4peeUINbfFbg,819
146
- aethergraph/services/rag/index/faiss_index.py,sha256=9SUNN98fLAkiS-a488sU2zo6_Fn4mxwV6Rz9TmtxErM,4460
147
- aethergraph/services/rag/index/sqlite_index.py,sha256=anGAgFi_NJqCU71LEsNbEs-un_P4hOEq5LNvO-tFbOM,4524
148
- aethergraph/services/rag/parsers/md.py,sha256=2rxCBCk0TWQ3CBkOiBSoKUifhNzhaq2JXS6W33uFGM4,196
149
- aethergraph/services/rag/parsers/pdf.py,sha256=GkNZqz-Yq01iJ6ABTF77wQpI0Y0lHsjdXybKrsnEDiM,375
150
- aethergraph/services/rag/parsers/txt.py,sha256=2rxCBCk0TWQ3CBkOiBSoKUifhNzhaq2JXS6W33uFGM4,196
151
- aethergraph/services/rag/utils/hybrid.py,sha256=2as5XZBUWb5EsP_S8YUvvtNZDWyCqSwKd0mjG0SFLj4,1196
152
- aethergraph/services/rag/utils/make_fs_key.py,sha256=VaJmJUhXIlAckGWfRDPFew07qPBOI_X_NlB75cjP_s4,1658
153
- aethergraph/services/redactor/simple.py,sha256=uuO7BPHjZ28pncWUjuxRymlN253WWq9lcTRPjkFPybg,505
154
- aethergraph/services/registry/key_parsing.py,sha256=DeCCrFms2Zx4VO6ONj7M02xPJYv29Ol6gIWAl8bq4js,1334
155
- aethergraph/services/registry/registry_key.py,sha256=s5ZBdeEyC_3_fkwt44VOiXYacgy9MEITb8qC8Etv8L4,569
156
- aethergraph/services/registry/unified_registry.py,sha256=nXGmvDJAH0OCYNKDPIC4az5FXLrpI8kUasVPp9v7mhQ,7021
157
- aethergraph/services/resume/multi_scheduler_resume_bus.py,sha256=ZeQnG1KXKWw2vk4rcgJePYdzPNWOI5m__ZDIHQetibk,2274
158
- aethergraph/services/resume/router.py,sha256=NYS9uLaq2AB0j5x_VWlEkRRzApxlmlcePigm8vhEqtE,2856
159
- aethergraph/services/schedulers/registry.py,sha256=tHQKHFqKEzoxzV0e-hTkrPjlGw5ou1BAxk3dzyVMfZY,1200
160
- aethergraph/services/secrets/base.py,sha256=St9bnXjqNuybq8W2q0IWC-bsboOv8GQDOypGPPsqpNE,204
161
- aethergraph/services/secrets/env.py,sha256=Zqo-KlyQ_qucZ1Ul2pIUnPheeWqlou4gftWYmhqPIc4,149
162
- aethergraph/services/state_stores/externalize.py,sha256=jaItE8sOqM7NvjAPka8TOC0c0jhunXBiTJhrROSv3ng,3761
163
- aethergraph/services/state_stores/graph_observer.py,sha256=OZz81iwqExDlicVHEyGVcAoC7h0QTCPLZSeKABcNvIs,5061
164
- aethergraph/services/state_stores/json_store.py,sha256=WeoAtCsHdR8Hdewn4zOl_EguvFVSuUXAR5D_85g3mt0,2611
165
- aethergraph/services/state_stores/resume_policy.py,sha256=_EY8Vvmm7JVyABlKRcI07uMkT4rdzlUKBoWnk_a0UZI,3850
166
- aethergraph/services/state_stores/serialize.py,sha256=ocTtOovEbSoHKXWy_4qmw83uI-YhV7ewfYyLPRZUn5g,8684
167
- aethergraph/services/state_stores/utils.py,sha256=OB9OYTYzxFZB75wTKYfCn8QA6gYyfpZ_YAEvx2dHH_8,2761
168
- aethergraph/services/state_stores/validate.py,sha256=wqaY15P6Gk6CUg9Y3TYPVVmGIojl5UK8D_RiLKGKDsk,2564
169
- aethergraph/services/tracing/noop.py,sha256=iM_3aVPVj-AK-rRzDIV49PVoq0SF1nkJA0f2SDbMYqE,478
170
- aethergraph/services/waits/wait_registry.py,sha256=MQJp7AxV7rJE7cEcnleOgK9-4wgMcPPJJkberkICxcQ,3492
171
- aethergraph/services/wakeup/memory_queue.py,sha256=b2MVBXnpages8kKEy5t3lXhs1GBHDQKv7GLK209PMJM,1956
172
- aethergraph/services/wakeup/scanner_producer.py,sha256=lkaok9cqeyaxrRjf1YSZd4woz1pOoKeqnL7MZlh1L_s,2047
173
- aethergraph/services/wakeup/worker.py,sha256=3xbZEaEKPWfaWLWR4KQ6lb_DD34ktK9hDP3VM3UEsdk,1110
174
- aethergraph/tools/__init__.py,sha256=X6UEYgaxAoB532m40LPo0uMvMierk3gmVvsjM7MA4ow,458
175
- aethergraph/utils/optdeps.py,sha256=wlIq0e_WBTXBgYGqzYxaCcg_D47vDccqY3sql5zKbW4,285
176
- aethergraph-0.1.0a1.dist-info/licenses/LICENSE,sha256=JcWMZSXRGzXgAJMkTpqHvmyXtsYoAwRcB0rnNS0cRCE,10034
177
- aethergraph-0.1.0a1.dist-info/licenses/NOTICE,sha256=10TYfrFmJdzpCWge_f-DYyDtYDzU2MtE5qtQr4Sm8kc,1338
178
- aethergraph-0.1.0a1.dist-info/METADATA,sha256=ITSvhmv21zKTrLYSvYmta1D8OfAvkDNnQWtWsppuE7E,18759
179
- aethergraph-0.1.0a1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
180
- aethergraph-0.1.0a1.dist-info/entry_points.txt,sha256=pil9_sSqwRH9PTc06Uk86D_XeQeE5b5o2n2U1Of7XrA,58
181
- aethergraph-0.1.0a1.dist-info/top_level.txt,sha256=omXbbeG3KmSv0unFePBbnmxe6L0k9E5CSoANPs7FMkY,12
182
- aethergraph-0.1.0a1.dist-info/RECORD,,
@@ -1,2 +0,0 @@
1
- [console_scripts]
2
- aethergraph = aethergraph.cli.main:main