activegraph 1.0.0rc2__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 (82) hide show
  1. activegraph/__init__.py +222 -0
  2. activegraph/__main__.py +5 -0
  3. activegraph/behaviors/__init__.py +1 -0
  4. activegraph/behaviors/base.py +153 -0
  5. activegraph/behaviors/decorators.py +218 -0
  6. activegraph/cli/__init__.py +17 -0
  7. activegraph/cli/main.py +793 -0
  8. activegraph/cli/quickstart.py +556 -0
  9. activegraph/core/__init__.py +1 -0
  10. activegraph/core/clock.py +46 -0
  11. activegraph/core/event.py +33 -0
  12. activegraph/core/graph.py +846 -0
  13. activegraph/core/ids.py +135 -0
  14. activegraph/core/patch.py +47 -0
  15. activegraph/core/view.py +59 -0
  16. activegraph/errors.py +342 -0
  17. activegraph/frame.py +15 -0
  18. activegraph/llm/__init__.py +51 -0
  19. activegraph/llm/anthropic.py +339 -0
  20. activegraph/llm/cache.py +180 -0
  21. activegraph/llm/errors.py +257 -0
  22. activegraph/llm/prompt.py +420 -0
  23. activegraph/llm/provider.py +66 -0
  24. activegraph/llm/recorded.py +270 -0
  25. activegraph/llm/types.py +130 -0
  26. activegraph/observability/__init__.py +61 -0
  27. activegraph/observability/logging.py +205 -0
  28. activegraph/observability/metrics.py +219 -0
  29. activegraph/observability/migration.py +404 -0
  30. activegraph/observability/prometheus.py +101 -0
  31. activegraph/observability/status.py +83 -0
  32. activegraph/packs/__init__.py +999 -0
  33. activegraph/packs/diligence/__init__.py +86 -0
  34. activegraph/packs/diligence/behaviors.py +447 -0
  35. activegraph/packs/diligence/fixtures/__init__.py +364 -0
  36. activegraph/packs/diligence/fixtures/companies.py +511 -0
  37. activegraph/packs/diligence/object_types.py +163 -0
  38. activegraph/packs/diligence/settings.py +60 -0
  39. activegraph/packs/diligence/tools.py +124 -0
  40. activegraph/packs/loader.py +709 -0
  41. activegraph/packs/scaffold.py +317 -0
  42. activegraph/policy.py +20 -0
  43. activegraph/runtime/__init__.py +1 -0
  44. activegraph/runtime/behavior_graph.py +151 -0
  45. activegraph/runtime/budget.py +120 -0
  46. activegraph/runtime/config_errors.py +124 -0
  47. activegraph/runtime/diff.py +145 -0
  48. activegraph/runtime/errors.py +216 -0
  49. activegraph/runtime/exec_errors.py +232 -0
  50. activegraph/runtime/patterns.py +946 -0
  51. activegraph/runtime/queue.py +27 -0
  52. activegraph/runtime/registration_errors.py +291 -0
  53. activegraph/runtime/registry.py +111 -0
  54. activegraph/runtime/runtime.py +2441 -0
  55. activegraph/runtime/scheduler.py +206 -0
  56. activegraph/runtime/view_builder.py +65 -0
  57. activegraph/store/__init__.py +41 -0
  58. activegraph/store/base.py +66 -0
  59. activegraph/store/conformance.py +161 -0
  60. activegraph/store/errors.py +84 -0
  61. activegraph/store/memory.py +118 -0
  62. activegraph/store/postgres.py +609 -0
  63. activegraph/store/serde.py +202 -0
  64. activegraph/store/sqlite.py +446 -0
  65. activegraph/store/url.py +230 -0
  66. activegraph/tools/__init__.py +64 -0
  67. activegraph/tools/base.py +57 -0
  68. activegraph/tools/cache.py +157 -0
  69. activegraph/tools/context.py +48 -0
  70. activegraph/tools/decorators.py +70 -0
  71. activegraph/tools/errors.py +320 -0
  72. activegraph/tools/graph_query.py +94 -0
  73. activegraph/tools/recorded.py +205 -0
  74. activegraph/tools/web_fetch.py +80 -0
  75. activegraph/trace/__init__.py +1 -0
  76. activegraph/trace/causal.py +123 -0
  77. activegraph/trace/printer.py +495 -0
  78. activegraph-1.0.0rc2.dist-info/METADATA +228 -0
  79. activegraph-1.0.0rc2.dist-info/RECORD +82 -0
  80. activegraph-1.0.0rc2.dist-info/WHEEL +5 -0
  81. activegraph-1.0.0rc2.dist-info/entry_points.txt +5 -0
  82. activegraph-1.0.0rc2.dist-info/top_level.txt +1 -0
@@ -0,0 +1,228 @@
1
+ Metadata-Version: 2.4
2
+ Name: activegraph
3
+ Version: 1.0.0rc2
4
+ Summary: An event-sourced reactive graph runtime for long-running, auditable, agentic systems.
5
+ Author: Active Graph contributors
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/yoheinakajima/activegraph
8
+ Keywords: graph,agents,event-sourcing,runtime
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Programming Language :: Python :: 3.11
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Development Status :: 3 - Alpha
15
+ Requires-Python: >=3.11
16
+ Description-Content-Type: text/markdown
17
+ Requires-Dist: click<9,>=8
18
+ Requires-Dist: pydantic>=2
19
+ Provides-Extra: llm
20
+ Requires-Dist: anthropic>=0.40; extra == "llm"
21
+ Requires-Dist: pydantic>=2; extra == "llm"
22
+ Provides-Extra: sqlite
23
+ Provides-Extra: postgres
24
+ Requires-Dist: psycopg[binary]<4,>=3.1; extra == "postgres"
25
+ Provides-Extra: prometheus
26
+ Requires-Dist: prometheus_client>=0.20; extra == "prometheus"
27
+ Provides-Extra: all
28
+ Requires-Dist: anthropic>=0.40; extra == "all"
29
+ Requires-Dist: pydantic>=2; extra == "all"
30
+ Requires-Dist: psycopg[binary]<4,>=3.1; extra == "all"
31
+ Requires-Dist: prometheus_client>=0.20; extra == "all"
32
+ Provides-Extra: dev
33
+ Requires-Dist: pytest>=7; extra == "dev"
34
+ Requires-Dist: pydantic>=2; extra == "dev"
35
+ Requires-Dist: prometheus_client>=0.20; extra == "dev"
36
+ Requires-Dist: psycopg[binary]<4,>=3.1; extra == "dev"
37
+
38
+ # Active Graph
39
+
40
+ > The graph is the world. Behaviors are physics. The trace is the proof.
41
+
42
+ An event-sourced reactive graph runtime for long-running, auditable,
43
+ agentic systems. Behaviors react to a shared graph instead of talking
44
+ to each other. Every change is traceable. Every run is resumable,
45
+ forkable, and diff-able from its event log.
46
+
47
+ If chat-based agents are a group conversation, Active Graph is a
48
+ shared workspace where everyone can see what changed, who changed
49
+ it, and why.
50
+
51
+ ## Try it in 30 seconds
52
+
53
+ ```bash
54
+ pip install activegraph
55
+ activegraph quickstart
56
+ ```
57
+
58
+ The bundled Diligence pack runs against recorded fixtures: no API
59
+ key, no configuration, byte-deterministic output. You see what the
60
+ framework does before you read about how it does it.
61
+
62
+ Then walk the 10-minute tutorial:
63
+
64
+ ```bash
65
+ activegraph quickstart --interactive
66
+ ```
67
+
68
+ It scaffolds a behavior, runs it against the same fixtures, and ends
69
+ with the fork-and-diff workflow — the framework's most differentiated
70
+ capability.
71
+
72
+ ## Install
73
+
74
+ ```bash
75
+ pip install activegraph # core runtime + SQLite store + Diligence pack
76
+ pip install "activegraph[llm]" # Anthropic provider
77
+ pip install "activegraph[postgres]" # Postgres-backed event store
78
+ pip install "activegraph[prometheus]" # Prometheus metrics
79
+ pip install "activegraph[all]" # everything
80
+ ```
81
+
82
+ Python 3.11+. Two hard dependencies (`click` for the CLI, `pydantic`
83
+ for the pack format); persistence backends and provider integrations
84
+ are opt-in extras.
85
+
86
+ ## What you get
87
+
88
+ - **Event-sourced graph runtime.** Objects + typed relations + an
89
+ append-only event log. Every mutation is an event; the trace is the
90
+ audit trail.
91
+ - **Reactive behaviors as first-class.** Function, class, LLM-backed,
92
+ or attached to typed edges (the relation-behavior primitive — edges
93
+ with logic). Subscriptions are event type + predicate + a Cypher
94
+ subset for graph-shape patterns.
95
+ - **Fork-and-diff.** Branch any run at any event into an independent
96
+ fork, configure it differently, and structurally diff the result
97
+ against the parent. Cache replay means the shared prefix doesn't
98
+ re-execute (no new LLM calls). Most agent frameworks can't do this.
99
+ - **Packs.** A pack bundles object types, behaviors, tools, prompts,
100
+ and policies for a specific domain. The bundled
101
+ [Diligence pack](activegraph/packs/diligence) is the reference:
102
+ 8 object types, 7 behaviors, 3 tools, recorded fixtures.
103
+ - **Per-error reference pages.** Every error message ends with a
104
+ `More:` link to a page that explains when it fires, why, and how to
105
+ fix it. Catalog at [docs.activegraph.dev/reference/errors](https://docs.activegraph.dev/reference/errors/).
106
+
107
+ ## A small example
108
+
109
+ The relation-behavior primitive — coordination logic on the edge,
110
+ not on either endpoint:
111
+
112
+ ```python
113
+ from activegraph import Graph, Runtime, behavior, relation_behavior
114
+
115
+ graph = Graph()
116
+ runtime = Runtime(graph, budget={"max_events": 200, "max_seconds": 60})
117
+
118
+ @behavior(name="planner", on=["goal.created"])
119
+ def planner(event, graph, ctx):
120
+ research = graph.add_object("task", {"title": "Research", "status": "open"})
121
+ memo = graph.add_object("task", {"title": "Draft memo", "status": "blocked"})
122
+ graph.add_relation(research.id, memo.id, "depends_on")
123
+
124
+ @behavior(name="researcher", on=["object.created"], where={"object.type": "task"})
125
+ def researcher(event, graph, ctx):
126
+ task = event.payload["object"]
127
+ if task["data"]["status"] != "open" or "Research" not in task["data"]["title"]:
128
+ return
129
+ graph.add_object("claim", {"text": "Market early but growing.", "confidence": 0.7})
130
+ graph.emit("task.completed", {"task_id": task["id"]})
131
+
132
+ @relation_behavior(name="unblock", relation_type="depends_on", on=["task.completed"])
133
+ def unblock(relation, event, graph, ctx):
134
+ if event.payload["task_id"] == relation.source:
135
+ graph.patch_object(relation.target, {"status": "open"})
136
+
137
+ runtime.run_goal("Evaluate this startup idea")
138
+ runtime.print_trace()
139
+ ```
140
+
141
+ The `unblock` relation behavior fires only for events touching one of
142
+ its edge endpoints. The conceptual deep-dive on edges-with-logic is
143
+ in [`docs/concepts/relations.md`](https://docs.activegraph.dev/concepts/relations/).
144
+
145
+ ## Documentation
146
+
147
+ - **[docs.activegraph.dev](https://docs.activegraph.dev/)** — full doc site:
148
+ concepts, guides, cookbook, CLI reference, API reference, the
149
+ per-error catalog.
150
+ - **[10-minute tutorial](https://docs.activegraph.dev/quickstart/)** — install
151
+ to a working custom behavior, including fork-and-diff.
152
+ - **[CHANGELOG.md](CHANGELOG.md)** — every release, with per-version
153
+ migration notes.
154
+ - **[CONTRACT.md](CONTRACT.md)** — locked design decisions, version
155
+ by version. Useful when you want to know *why* something is the way
156
+ it is.
157
+ - **[examples/](examples)** — runnable end-to-end demos:
158
+ [`diligence_real_run.py`](examples/diligence_real_run.py),
159
+ [`resume_and_fork.py`](examples/resume_and_fork.py),
160
+ [`llm_claim_extraction.py`](examples/llm_claim_extraction.py),
161
+ [`diligence_with_tools.py`](examples/diligence_with_tools.py),
162
+ [`operate_a_run.py`](examples/operate_a_run.py).
163
+
164
+ ## What this is not
165
+
166
+ - Not a chat framework. If your problem fits in one conversation, use
167
+ a chat framework.
168
+ - Not a workflow engine. Workflows model control flow. This models
169
+ world state.
170
+ - Not a rules engine, exactly. Rules engines forward-chain over
171
+ facts. This event-sources over a graph and supports LLM behaviors
172
+ as first-class.
173
+ - Not a production graph database. The default store is SQLite,
174
+ optionally Postgres. For a high-throughput graph backend, plug one
175
+ in behind the `EventStore` protocol.
176
+ - Not magic. Bad behaviors produce bad graphs. The runtime makes the
177
+ badness inspectable, not absent.
178
+
179
+ ## Status
180
+
181
+ **v1.0-rc1** (2026-05). v1.0 final ships after the first-time-user
182
+ gate per [CONTRACT v1.0 #C4](CONTRACT.md#v10-c4-v10-ships-as-v10-rc1-first-time-user-gate-is-owned-externally).
183
+ See [CHANGELOG.md](CHANGELOG.md) for the full v0 → v1.0 history and
184
+ per-version migration notes.
185
+
186
+ Major shipped milestones:
187
+
188
+ - **v1.0 (rc1)** — error hierarchy rewrite with per-error reference
189
+ pages, doc site at [docs.activegraph.dev](https://docs.activegraph.dev/),
190
+ `activegraph quickstart` command, mypy `--strict` and docstring
191
+ coverage CI gates.
192
+ - **v0.9** — pack format and the Diligence reference pack (8 object
193
+ types, 7 behaviors, 3 tools, recorded fixtures).
194
+ - **v0.8** — operator surface: structured logging, Prometheus
195
+ metrics, `runtime.status()`, full `activegraph` CLI,
196
+ `PostgresEventStore`.
197
+ - **v0.7** — `@tool` decorator, Cypher-subset pattern subscriptions,
198
+ temporal predicates.
199
+ - **v0.6** — `@llm_behavior` with structured output, frame-aware
200
+ prompt construction, cost accounting.
201
+ - **v0.5** — full event-log persistence, save/load across processes,
202
+ fork from any historical event, structural diff between runs.
203
+ - **v0** — core runtime: graph, behaviors, relation behaviors,
204
+ patches with optimistic concurrency, views, frames, policies,
205
+ budgets, the trace.
206
+
207
+ Roadmap items planned for v1.1 are tracked in
208
+ [CONTRACT.md § v1.1](CONTRACT.md).
209
+
210
+ ## License
211
+
212
+ MIT.
213
+
214
+ ## Contributing
215
+
216
+ The core runtime stays small and sharp. Contributions to packs,
217
+ backends, and LLM integrations are especially welcome. Open an issue
218
+ before large changes — the abstractions are still settling.
219
+
220
+ **Test discipline:** tests must remain deterministic. No live network
221
+ calls in CI. LLM and tool tests use recorded fixtures
222
+ (`RecordedLLMProvider`, `RecordedToolProvider`). If a contribution
223
+ adds a test that would only pass with a live API key or live HTTP,
224
+ it cannot land.
225
+
226
+ ---
227
+
228
+ The graph is the world. Behaviors are physics. The trace is the proof.
@@ -0,0 +1,82 @@
1
+ activegraph/__init__.py,sha256=yX-NpJeHfqUGS07ZcmmsT_83tMUd4QAcNLmVwLzIiSA,5594
2
+ activegraph/__main__.py,sha256=llxXBaMVgcU891cIt3g4Cy0lk-eG5OcNHukSqoQjtxQ,118
3
+ activegraph/errors.py,sha256=FgNaJsbz5yjXPerJlBQ_M_CMDO2RdGqr4sfGTuN9IZw,12532
4
+ activegraph/frame.py,sha256=Wo35msB2gLFXLtk-rbO0OnyXchlvvuvOVuD2ImHjw2s,384
5
+ activegraph/policy.py,sha256=L2meukP8tyAS1bBF1xsJytOw_Y5tBRGkcfg-9OhameM,743
6
+ activegraph/behaviors/__init__.py,sha256=RiVSowhQZ27MYY-djO0uYiIof27mkv__rlXwI858Cfo,78
7
+ activegraph/behaviors/base.py,sha256=366fMvfjFhfdhKMHl_CE9yENDljUWD7Twl50NkQ7fr4,5487
8
+ activegraph/behaviors/decorators.py,sha256=wLY3Miyq0XRhIkSmvx2Q6_8tK8ZhNki4KnStzAPPWpU,7302
9
+ activegraph/cli/__init__.py,sha256=G_yz3MG14Yz78YmG9sbNYTd9d7-6afGI3SqUGVspCq4,521
10
+ activegraph/cli/main.py,sha256=xnBxQFBV_QDxkT_uv9va9OuNg5iIgvOnj6Ix5Nu82IM,26778
11
+ activegraph/cli/quickstart.py,sha256=Yr0FODUURDank0FOK0846aNsA1MyREiSNyi3vKJm2j0,20643
12
+ activegraph/core/__init__.py,sha256=qc5isDQs1xRdVf67KEvMvIeXEhzWwSpvslgpQkIKr7w,65
13
+ activegraph/core/clock.py,sha256=apCa10mtdHvg_oH5ihtnVFMI-YE8Yv13y94UYTcFUmY,1256
14
+ activegraph/core/event.py,sha256=seA7lS_Qha7uz4x9KxeolIOuzvXHtJPSVmQWDosD-NA,960
15
+ activegraph/core/graph.py,sha256=RiAC3bJcaSzbgZ4RTxJulZkw-HN80SnUUBnnKEWQCFE,29158
16
+ activegraph/core/ids.py,sha256=Mri3PxnuEZRHUal1Gu_dtIds5nAosj_LaSVYE5oi35A,4676
17
+ activegraph/core/patch.py,sha256=M4-moXMOzsibJfpM5OVhz62gwUK2BsBU-bWyA8naPTE,1448
18
+ activegraph/core/view.py,sha256=ESdC0aY7a-Rw-FcFQHoEAb76kQSEXMn7wO5qoO8pyAc,1668
19
+ activegraph/llm/__init__.py,sha256=8Wc1FIXkFX9D5X13KrkYJHHhbrZj8BJ3hTAqMWnt10g,1824
20
+ activegraph/llm/anthropic.py,sha256=2CPc7nO5D8eKPUOeqMzPRqVzMYsR33CgW-cEXn4hbiA,11730
21
+ activegraph/llm/cache.py,sha256=LvI6cpKXabcY9-eGCBBo00CGVR9y5Ren-k7q6qMsSZk,6388
22
+ activegraph/llm/errors.py,sha256=Y8UX2WvQYDL9Fetp5Qcc7-cZy1Qiqx8gP_BNr5NQx2U,11799
23
+ activegraph/llm/prompt.py,sha256=cg8LWKai8CqlTh2XpT83fhYJ8-AhhzWOiW3222AlwNg,13518
24
+ activegraph/llm/provider.py,sha256=gB9lmZ22KuSXXxd1P1_g3Ua8EO5agLZSU0g5JA1RJZM,1998
25
+ activegraph/llm/recorded.py,sha256=ZK9Ad92XFUX40qB8oZqIzzRB6PgXKLNKukmK2jDc0TQ,9029
26
+ activegraph/llm/types.py,sha256=hn1m4rHShQAkP144iVTa4TWuzwFXwru6wpeJAochX1E,4553
27
+ activegraph/observability/__init__.py,sha256=cBChBnlVO8Nolz13pkVcmkpNZdCgZ88uWt1hviZjHP4,1561
28
+ activegraph/observability/logging.py,sha256=ox-bczq34kdZ_76a4THRlt3HSYTFiYMM7jfDh-ZsOoM,6666
29
+ activegraph/observability/metrics.py,sha256=6rs7gt5VJ46TDtbnOQE716CnPRZTXm0LwbJsg5dWCjo,6572
30
+ activegraph/observability/migration.py,sha256=Gr6SlYavZkpyl0c5yZSKV_S3LW-DiXdI8lqk0pNBVo8,14183
31
+ activegraph/observability/prometheus.py,sha256=NkSm-ub_Q_eJn15iJ30fomdP6Re6DTSUvHgRdRDZN4w,3375
32
+ activegraph/observability/status.py,sha256=v3YexsS1ZZDGy7paKuzliqyV0gFDE3K0gN4Nkd5cRH4,2363
33
+ activegraph/packs/__init__.py,sha256=Ln6ad9X0aIWRfz7D7s9n74iv8l7r_N574sv_hMN5GY8,35971
34
+ activegraph/packs/loader.py,sha256=eIiuzrpuuO79X9NLFRwIkzUMvKL0WRBq1aEZhgeRyO8,29959
35
+ activegraph/packs/scaffold.py,sha256=817ymv0ijuUZhadbE_JVGgXxnRIerfoj_bwcE0qvzPQ,8343
36
+ activegraph/packs/diligence/__init__.py,sha256=Z4ePKbxauiznywlUYCDgYU9FMA81q090SmkstOynpF0,3033
37
+ activegraph/packs/diligence/behaviors.py,sha256=cMlckVaQ6iwctJqNFXSVvVzuLgDd66j259p40T4DbS4,15229
38
+ activegraph/packs/diligence/object_types.py,sha256=KywLMKi19l343G0i9i44IoOSPebR7wZl7kzx1n-LJA4,4926
39
+ activegraph/packs/diligence/settings.py,sha256=UwvZuyDrpmaFzM7mzXm48X3YuNTNUtzZrpqf7zDJKXQ,2269
40
+ activegraph/packs/diligence/tools.py,sha256=MAQImvXgI7lzajTbnz4pGePNGv5wlXAqx9SoP1_Qaqk,3618
41
+ activegraph/packs/diligence/fixtures/__init__.py,sha256=wW64z7OiKmfw0_ye0Hg0OJtpm3SeIpZkojqBbyGLj-U,12216
42
+ activegraph/packs/diligence/fixtures/companies.py,sha256=ozki5gbeHLrx_R3t99cRCuKIbO9Y1QjyHML2R_Pgzg4,24292
43
+ activegraph/runtime/__init__.py,sha256=amm1uU8YT7WTj6k1nF72U9ZDD9N_2-x5FAjkAMTYub8,51
44
+ activegraph/runtime/behavior_graph.py,sha256=9cmYh7yFva31EzQhGDWm0S08z5g4gRnctrUJMh-G9yc,5172
45
+ activegraph/runtime/budget.py,sha256=GlJUPguVdWZ9tdcRCwd-hJ5Pjp7FtVZOPgaONig4CoQ,4368
46
+ activegraph/runtime/config_errors.py,sha256=bHmVbvn8acdfZC8naEGG3tsVqs2wevP-pYTlJUbabS8,3922
47
+ activegraph/runtime/diff.py,sha256=VkDd9TfpsjjzTrW8HKlLXCkzxblymgN-2hpx0FE94PU,5053
48
+ activegraph/runtime/errors.py,sha256=4E02S8c7hjyAcZLC3jJFd9ytlyjXfFx-UW87Wh6r9o4,9339
49
+ activegraph/runtime/exec_errors.py,sha256=3wPxccdivB00fZK62e92rR87mkhBP0ZTMsOqpiYQK3Q,9912
50
+ activegraph/runtime/patterns.py,sha256=KFH4EeRQ9f79eruTu-s-Yh58nu1zkmUZoQzZUTyVUxg,35141
51
+ activegraph/runtime/queue.py,sha256=Ct0eKPhbRq_4ZBd2jJ4KISucNJX46VnOKUe-WRpwj3I,616
52
+ activegraph/runtime/registration_errors.py,sha256=1zwZLSKKo_TKt4QaEUCYzit0_9X_P8RxUDkng_Vyup0,11545
53
+ activegraph/runtime/registry.py,sha256=TxyJg_uoCoXr4rbci7alKfsnFFPyPinTSsMwzoxN9rI,3859
54
+ activegraph/runtime/runtime.py,sha256=-t1khv6g33yh02S-rO1AmmCaQ7Rmebm3xHdubBMM71E,100559
55
+ activegraph/runtime/scheduler.py,sha256=KQaVKPuAQ_XYGQM9F8K60wu4bVhCw7yw78Yh4jTKiXI,7404
56
+ activegraph/runtime/view_builder.py,sha256=NIp7n0Zj5290xdwrKfDpur6RoCt6xB25VHmes0EOwLk,1882
57
+ activegraph/store/__init__.py,sha256=T97zSLwgiVCvjmRhni9ijOATANc2D_k2GOoUaeaXsqM,1403
58
+ activegraph/store/base.py,sha256=W274nFexXe6FdhVdzVz_aNcftJkCndHrhTfp_PSrNRM,1855
59
+ activegraph/store/conformance.py,sha256=MuAzb0BAbei2vgNwQ17oZPjGDLQxguG6ykTv1WwmsLo,5460
60
+ activegraph/store/errors.py,sha256=egLqaUrsZxtO0SHhtvATe0laAypDwy3dEKFy9s4LTHw,3119
61
+ activegraph/store/memory.py,sha256=zpgJFymJw22dC4JorKAXJNgvRIxzfZ_t2PK-qr307x4,4808
62
+ activegraph/store/postgres.py,sha256=olejMn4IDXu1FqW5738GybWGZ1URv6d-ch944ipJVLk,22798
63
+ activegraph/store/serde.py,sha256=v7nJhlP7moug1qBn506h8vgKRVGqBMTtUilX42URfR0,8824
64
+ activegraph/store/sqlite.py,sha256=mt_6vHRW1WPl_K9wx9oWRMh1OfFBOZiR35P2hvR5_pM,16301
65
+ activegraph/store/url.py,sha256=t1kV0zn-akR1S4VjTDsgffzdC8HwPE_PasgnQd71Kww,8579
66
+ activegraph/tools/__init__.py,sha256=atcQfLQn-DPpGnE0cGy27vTATcfGVBfwFwNusAvdmlY,2343
67
+ activegraph/tools/base.py,sha256=xEnC2FVkRpTvs32e4rHW47jAKwPbzJRqGuDmOYqgXR8,2117
68
+ activegraph/tools/cache.py,sha256=eWMQKl5W3YvOaAdqetZ9AK6sz4Rrq7cxOr-42YZsmU0,5201
69
+ activegraph/tools/context.py,sha256=TjKkEcLhUv7_5pSwbZ8FexzH5AMQbex0aqrZUSjQzCk,1858
70
+ activegraph/tools/decorators.py,sha256=aPGeOGqsbsLIoRiYStjZavUIpCiIE9HyiWQe52dG5CA,1985
71
+ activegraph/tools/errors.py,sha256=UrSwAwPPFDQQyqesReRVYdHr_pFucg4tx_Io5ewVT6o,13972
72
+ activegraph/tools/graph_query.py,sha256=HHIb2G_CLudmSJTmYTllHKyRcQfTDF4IJKkk2npVDYY,3357
73
+ activegraph/tools/recorded.py,sha256=f8dKHMiYBF9g7cYXj0udSPiJ2bIaUr39gQ0QxHW6034,7007
74
+ activegraph/tools/web_fetch.py,sha256=An0HKIGqsvmC1Lm7SWtOn5MsJN__VT5IkfiIBsOrV6E,2541
75
+ activegraph/trace/__init__.py,sha256=0x8WsSczh97pTT2hMxwIWFwCZMSR0wJC2kRWRKbxUDo,77
76
+ activegraph/trace/causal.py,sha256=uZD9N50XAJkPpw4C2y8P6HWEGdZOfcHFDrU1XiXIjsQ,4673
77
+ activegraph/trace/printer.py,sha256=qTkPueatHYm0GHlCgMfErDXNQ5d3pIXgAn1nHYRs3Iw,17500
78
+ activegraph-1.0.0rc2.dist-info/METADATA,sha256=uXnOfX1l58pvw8kTyUZt9ancA8EldbTr1pIaWJTpavg,9195
79
+ activegraph-1.0.0rc2.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
80
+ activegraph-1.0.0rc2.dist-info/entry_points.txt,sha256=dhpJ7jGTS24NzVDZrrN_-k29N3bCgRZLysVmz33l9rg,124
81
+ activegraph-1.0.0rc2.dist-info/top_level.txt,sha256=-N9134CRIXyBGLncyVFkCzYUgNfpUR-_NItwz4Lvad0,12
82
+ activegraph-1.0.0rc2.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,5 @@
1
+ [activegraph.packs]
2
+ diligence = activegraph.packs.diligence:pack
3
+
4
+ [console_scripts]
5
+ activegraph = activegraph.cli.main:main
@@ -0,0 +1 @@
1
+ activegraph