chorusgraph 1.0.1__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 (231) hide show
  1. chorusgraph-1.0.1/LICENSE +17 -0
  2. chorusgraph-1.0.1/PKG-INFO +283 -0
  3. chorusgraph-1.0.1/README.md +221 -0
  4. chorusgraph-1.0.1/chorusgraph/__init__.py +57 -0
  5. chorusgraph-1.0.1/chorusgraph/adapter/__init__.py +5 -0
  6. chorusgraph-1.0.1/chorusgraph/adapter/wrap.py +249 -0
  7. chorusgraph-1.0.1/chorusgraph/agents/__init__.py +43 -0
  8. chorusgraph-1.0.1/chorusgraph/agents/agent.py +69 -0
  9. chorusgraph-1.0.1/chorusgraph/agents/agent_node.py +82 -0
  10. chorusgraph-1.0.1/chorusgraph/agents/loop.py +137 -0
  11. chorusgraph-1.0.1/chorusgraph/agents/plan_solve.py +50 -0
  12. chorusgraph-1.0.1/chorusgraph/agents/plan_utils.py +98 -0
  13. chorusgraph-1.0.1/chorusgraph/agents/policy.py +100 -0
  14. chorusgraph-1.0.1/chorusgraph/agents/react.py +48 -0
  15. chorusgraph-1.0.1/chorusgraph/agents/react_utils.py +31 -0
  16. chorusgraph-1.0.1/chorusgraph/agents/reflection.py +54 -0
  17. chorusgraph-1.0.1/chorusgraph/agents/strategies/__init__.py +20 -0
  18. chorusgraph-1.0.1/chorusgraph/agents/strategies/base.py +53 -0
  19. chorusgraph-1.0.1/chorusgraph/agents/strategies/plan_solve_strategy.py +141 -0
  20. chorusgraph-1.0.1/chorusgraph/agents/strategies/react_strategy.py +141 -0
  21. chorusgraph-1.0.1/chorusgraph/agents/strategies/reflection_strategy.py +64 -0
  22. chorusgraph-1.0.1/chorusgraph/cache_gate/__init__.py +23 -0
  23. chorusgraph-1.0.1/chorusgraph/cache_gate/backend.py +251 -0
  24. chorusgraph-1.0.1/chorusgraph/cache_gate/decision.py +33 -0
  25. chorusgraph-1.0.1/chorusgraph/cache_gate/gate.py +168 -0
  26. chorusgraph-1.0.1/chorusgraph/cache_gate/scope.py +34 -0
  27. chorusgraph-1.0.1/chorusgraph/cache_gate/seed_policy.py +56 -0
  28. chorusgraph-1.0.1/chorusgraph/cache_gate/sidecar.py +220 -0
  29. chorusgraph-1.0.1/chorusgraph/cache_gate/thresholds.py +49 -0
  30. chorusgraph-1.0.1/chorusgraph/checkpoint/__init__.py +27 -0
  31. chorusgraph-1.0.1/chorusgraph/checkpoint/prism.py +93 -0
  32. chorusgraph-1.0.1/chorusgraph/compat/__init__.py +0 -0
  33. chorusgraph-1.0.1/chorusgraph/compat/checkpoint_import.py +75 -0
  34. chorusgraph-1.0.1/chorusgraph/compat/langgraph.py +160 -0
  35. chorusgraph-1.0.1/chorusgraph/compat/otel_exporter.py +36 -0
  36. chorusgraph-1.0.1/chorusgraph/compat/tool_node.py +24 -0
  37. chorusgraph-1.0.1/chorusgraph/compose/__init__.py +47 -0
  38. chorusgraph-1.0.1/chorusgraph/compose/adapters/__init__.py +13 -0
  39. chorusgraph-1.0.1/chorusgraph/compose/adapters/keyword_retrieval.py +51 -0
  40. chorusgraph-1.0.1/chorusgraph/compose/adapters/memory.py +47 -0
  41. chorusgraph-1.0.1/chorusgraph/compose/adapters/prism_cache.py +100 -0
  42. chorusgraph-1.0.1/chorusgraph/compose/adapters/prismrag_retrieval.py +228 -0
  43. chorusgraph-1.0.1/chorusgraph/compose/adapters/redis_cache.py +178 -0
  44. chorusgraph-1.0.1/chorusgraph/compose/defaults.py +58 -0
  45. chorusgraph-1.0.1/chorusgraph/compose/ports.py +129 -0
  46. chorusgraph-1.0.1/chorusgraph/compose/stack.py +172 -0
  47. chorusgraph-1.0.1/chorusgraph/core/__init__.py +22 -0
  48. chorusgraph-1.0.1/chorusgraph/core/bus.py +93 -0
  49. chorusgraph-1.0.1/chorusgraph/core/cache_interceptor.py +136 -0
  50. chorusgraph-1.0.1/chorusgraph/core/channels.py +255 -0
  51. chorusgraph-1.0.1/chorusgraph/core/constants.py +6 -0
  52. chorusgraph-1.0.1/chorusgraph/core/envelope.py +59 -0
  53. chorusgraph-1.0.1/chorusgraph/core/graph.py +261 -0
  54. chorusgraph-1.0.1/chorusgraph/core/ir.py +155 -0
  55. chorusgraph-1.0.1/chorusgraph/core/node.py +172 -0
  56. chorusgraph-1.0.1/chorusgraph/core/pending_writes.py +128 -0
  57. chorusgraph-1.0.1/chorusgraph/core/persistence.py +324 -0
  58. chorusgraph-1.0.1/chorusgraph/core/scheduler.py +1613 -0
  59. chorusgraph-1.0.1/chorusgraph/core/send.py +177 -0
  60. chorusgraph-1.0.1/chorusgraph/core/subgraph.py +180 -0
  61. chorusgraph-1.0.1/chorusgraph/core/subgraph_transport.py +208 -0
  62. chorusgraph-1.0.1/chorusgraph/core/trace.py +226 -0
  63. chorusgraph-1.0.1/chorusgraph/core/transport_router.py +140 -0
  64. chorusgraph-1.0.1/chorusgraph/embedders.py +51 -0
  65. chorusgraph-1.0.1/chorusgraph/examples/__init__.py +0 -0
  66. chorusgraph-1.0.1/chorusgraph/examples/demo_graph.py +129 -0
  67. chorusgraph-1.0.1/chorusgraph/examples/finance_agent/__init__.py +0 -0
  68. chorusgraph-1.0.1/chorusgraph/examples/finance_agent/gemini_client.py +108 -0
  69. chorusgraph-1.0.1/chorusgraph/examples/finance_agent/graph.py +98 -0
  70. chorusgraph-1.0.1/chorusgraph/examples/finance_agent/nodes.py +480 -0
  71. chorusgraph-1.0.1/chorusgraph/examples/finance_agent/pattern_nodes.py +194 -0
  72. chorusgraph-1.0.1/chorusgraph/examples/finance_agent/patterns_graph.py +201 -0
  73. chorusgraph-1.0.1/chorusgraph/examples/finance_agent/run.py +64 -0
  74. chorusgraph-1.0.1/chorusgraph/examples/finance_agent/run_memory_demo.py +193 -0
  75. chorusgraph-1.0.1/chorusgraph/examples/finance_agent/run_patterns_demo.py +92 -0
  76. chorusgraph-1.0.1/chorusgraph/examples/finance_agent/runtime.py +126 -0
  77. chorusgraph-1.0.1/chorusgraph/examples/multi_agent_graph.py +54 -0
  78. chorusgraph-1.0.1/chorusgraph/func.py +84 -0
  79. chorusgraph-1.0.1/chorusgraph/ledger/__init__.py +15 -0
  80. chorusgraph-1.0.1/chorusgraph/ledger/instrument.py +57 -0
  81. chorusgraph-1.0.1/chorusgraph/ledger/models.py +46 -0
  82. chorusgraph-1.0.1/chorusgraph/ledger/query.py +24 -0
  83. chorusgraph-1.0.1/chorusgraph/ledger/sink.py +267 -0
  84. chorusgraph-1.0.1/chorusgraph/memory/__init__.py +16 -0
  85. chorusgraph-1.0.1/chorusgraph/memory/async_digest.py +80 -0
  86. chorusgraph-1.0.1/chorusgraph/memory/cortex_compat.py +52 -0
  87. chorusgraph-1.0.1/chorusgraph/memory/cortex_service.py +195 -0
  88. chorusgraph-1.0.1/chorusgraph/memory/recall.py +28 -0
  89. chorusgraph-1.0.1/chorusgraph/memory/structured_recall.py +59 -0
  90. chorusgraph-1.0.1/chorusgraph/nodes/__init__.py +33 -0
  91. chorusgraph-1.0.1/chorusgraph/nodes/retrieve.py +110 -0
  92. chorusgraph-1.0.1/chorusgraph/nodes/roles.py +102 -0
  93. chorusgraph-1.0.1/chorusgraph/nodes/tool.py +207 -0
  94. chorusgraph-1.0.1/chorusgraph/observability/__init__.py +18 -0
  95. chorusgraph-1.0.1/chorusgraph/observability/health.py +60 -0
  96. chorusgraph-1.0.1/chorusgraph/observability/logging.py +58 -0
  97. chorusgraph-1.0.1/chorusgraph/observability/metrics.py +51 -0
  98. chorusgraph-1.0.1/chorusgraph/observability/otel.py +44 -0
  99. chorusgraph-1.0.1/chorusgraph/persistence/__init__.py +22 -0
  100. chorusgraph-1.0.1/chorusgraph/persistence/backup.py +63 -0
  101. chorusgraph-1.0.1/chorusgraph/persistence/cortex_factory.py +66 -0
  102. chorusgraph-1.0.1/chorusgraph/persistence/lifecycle.py +107 -0
  103. chorusgraph-1.0.1/chorusgraph/persistence/migrations.py +114 -0
  104. chorusgraph-1.0.1/chorusgraph/persistence/sqlite_graph_store.py +126 -0
  105. chorusgraph-1.0.1/chorusgraph/policy/__init__.py +5 -0
  106. chorusgraph-1.0.1/chorusgraph/policy/embedder_guard.py +74 -0
  107. chorusgraph-1.0.1/chorusgraph/public.py +62 -0
  108. chorusgraph-1.0.1/chorusgraph/resilience/__init__.py +23 -0
  109. chorusgraph-1.0.1/chorusgraph/resilience/circuit_breaker.py +104 -0
  110. chorusgraph-1.0.1/chorusgraph/resilience/errors.py +72 -0
  111. chorusgraph-1.0.1/chorusgraph/resilience/executor.py +71 -0
  112. chorusgraph-1.0.1/chorusgraph/resilience/idempotency.py +29 -0
  113. chorusgraph-1.0.1/chorusgraph/resilience/partial.py +34 -0
  114. chorusgraph-1.0.1/chorusgraph/resilience/policy.py +42 -0
  115. chorusgraph-1.0.1/chorusgraph/sections/__init__.py +5 -0
  116. chorusgraph-1.0.1/chorusgraph/sections/models.py +46 -0
  117. chorusgraph-1.0.1/chorusgraph/sections/profiles.py +46 -0
  118. chorusgraph-1.0.1/chorusgraph/security/__init__.py +21 -0
  119. chorusgraph-1.0.1/chorusgraph/security/auth.py +42 -0
  120. chorusgraph-1.0.1/chorusgraph/security/cache.py +47 -0
  121. chorusgraph-1.0.1/chorusgraph/security/pii.py +35 -0
  122. chorusgraph-1.0.1/chorusgraph/security/tools.py +71 -0
  123. chorusgraph-1.0.1/chorusgraph/security/transport.py +43 -0
  124. chorusgraph-1.0.1/chorusgraph/shadow/__init__.py +19 -0
  125. chorusgraph-1.0.1/chorusgraph/shadow/dataset/__init__.py +0 -0
  126. chorusgraph-1.0.1/chorusgraph/shadow/harness.py +182 -0
  127. chorusgraph-1.0.1/chorusgraph/shadow/replay/__init__.py +19 -0
  128. chorusgraph-1.0.1/chorusgraph/shadow/replay/cli.py +43 -0
  129. chorusgraph-1.0.1/chorusgraph/shadow/replay/ingest.py +30 -0
  130. chorusgraph-1.0.1/chorusgraph/shadow/replay/policies.py +18 -0
  131. chorusgraph-1.0.1/chorusgraph/shadow/replay/replay.py +166 -0
  132. chorusgraph-1.0.1/chorusgraph/shadow/replay/report.py +116 -0
  133. chorusgraph-1.0.1/chorusgraph/shadow/replay/schema.py +31 -0
  134. chorusgraph-1.0.1/chorusgraph/shadow/replay/stats.py +69 -0
  135. chorusgraph-1.0.1/chorusgraph/shadow/report.py +96 -0
  136. chorusgraph-1.0.1/chorusgraph/shadow/results_store.py +107 -0
  137. chorusgraph-1.0.1/chorusgraph/tenant/__init__.py +17 -0
  138. chorusgraph-1.0.1/chorusgraph/tenant/context.py +27 -0
  139. chorusgraph-1.0.1/chorusgraph/tenant/isolation.py +33 -0
  140. chorusgraph-1.0.1/chorusgraph/tenant/limits.py +59 -0
  141. chorusgraph-1.0.1/chorusgraph/transforms/__init__.py +17 -0
  142. chorusgraph-1.0.1/chorusgraph/transforms/cortex_projector.py +61 -0
  143. chorusgraph-1.0.1/chorusgraph/transforms/intent.py +59 -0
  144. chorusgraph-1.0.1/chorusgraph/transforms/projector.py +49 -0
  145. chorusgraph-1.0.1/chorusgraph/transforms/templates.py +129 -0
  146. chorusgraph-1.0.1/chorusgraph/transport/__init__.py +30 -0
  147. chorusgraph-1.0.1/chorusgraph/transport/chorus.py +222 -0
  148. chorusgraph-1.0.1/chorusgraph/transport/context.py +63 -0
  149. chorusgraph-1.0.1/chorusgraph/transport/envelope.py +79 -0
  150. chorusgraph-1.0.1/chorusgraph/transport/inproc.py +61 -0
  151. chorusgraph-1.0.1/chorusgraph/transport/modes.py +23 -0
  152. chorusgraph-1.0.1/chorusgraph/transport/prismapi.py +164 -0
  153. chorusgraph-1.0.1/chorusgraph/transport/spine.py +66 -0
  154. chorusgraph-1.0.1/chorusgraph.egg-info/PKG-INFO +283 -0
  155. chorusgraph-1.0.1/chorusgraph.egg-info/SOURCES.txt +229 -0
  156. chorusgraph-1.0.1/chorusgraph.egg-info/dependency_links.txt +1 -0
  157. chorusgraph-1.0.1/chorusgraph.egg-info/entry_points.txt +9 -0
  158. chorusgraph-1.0.1/chorusgraph.egg-info/requires.txt +48 -0
  159. chorusgraph-1.0.1/chorusgraph.egg-info/top_level.txt +1 -0
  160. chorusgraph-1.0.1/pyproject.toml +129 -0
  161. chorusgraph-1.0.1/setup.cfg +4 -0
  162. chorusgraph-1.0.1/tests/test_adapter.py +125 -0
  163. chorusgraph-1.0.1/tests/test_agent.py +185 -0
  164. chorusgraph-1.0.1/tests/test_agents.py +133 -0
  165. chorusgraph-1.0.1/tests/test_benchmark.py +412 -0
  166. chorusgraph-1.0.1/tests/test_benchmark_cache_flags.py +96 -0
  167. chorusgraph-1.0.1/tests/test_benchmark_fanout.py +23 -0
  168. chorusgraph-1.0.1/tests/test_benchmark_wiring.py +11 -0
  169. chorusgraph-1.0.1/tests/test_bus_redis.py +76 -0
  170. chorusgraph-1.0.1/tests/test_cache_gate.py +154 -0
  171. chorusgraph-1.0.1/tests/test_cache_gate_profile.py +145 -0
  172. chorusgraph-1.0.1/tests/test_cache_profiles.py +34 -0
  173. chorusgraph-1.0.1/tests/test_checkpoint.py +56 -0
  174. chorusgraph-1.0.1/tests/test_chorus_batch.py +46 -0
  175. chorusgraph-1.0.1/tests/test_clinical_fingerprint.py +85 -0
  176. chorusgraph-1.0.1/tests/test_command_interrupt.py +86 -0
  177. chorusgraph-1.0.1/tests/test_compare_scenarios.py +95 -0
  178. chorusgraph-1.0.1/tests/test_compose_stack.py +165 -0
  179. chorusgraph-1.0.1/tests/test_compound_rubric.py +125 -0
  180. chorusgraph-1.0.1/tests/test_container_a_graph.py +77 -0
  181. chorusgraph-1.0.1/tests/test_container_d_artifacts.py +124 -0
  182. chorusgraph-1.0.1/tests/test_core_dependencies.py +38 -0
  183. chorusgraph-1.0.1/tests/test_core_engine.py +278 -0
  184. chorusgraph-1.0.1/tests/test_corpus_seed.py +107 -0
  185. chorusgraph-1.0.1/tests/test_cortex_compat.py +27 -0
  186. chorusgraph-1.0.1/tests/test_cortex_projector.py +38 -0
  187. chorusgraph-1.0.1/tests/test_deterministic_tier.py +20 -0
  188. chorusgraph-1.0.1/tests/test_embed_equivalence.py +67 -0
  189. chorusgraph-1.0.1/tests/test_embed_once.py +76 -0
  190. chorusgraph-1.0.1/tests/test_engine_phases.py +302 -0
  191. chorusgraph-1.0.1/tests/test_fc_hc_no_langgraph.py +21 -0
  192. chorusgraph-1.0.1/tests/test_federation.py +190 -0
  193. chorusgraph-1.0.1/tests/test_finance_agent.py +203 -0
  194. chorusgraph-1.0.1/tests/test_finance_multiagent.py +146 -0
  195. chorusgraph-1.0.1/tests/test_func_api.py +56 -0
  196. chorusgraph-1.0.1/tests/test_hc1_cache_scope.py +174 -0
  197. chorusgraph-1.0.1/tests/test_hc2_cache_payload.py +49 -0
  198. chorusgraph-1.0.1/tests/test_hc2_cache_routing.py +103 -0
  199. chorusgraph-1.0.1/tests/test_healthcare_cache_gate.py +22 -0
  200. chorusgraph-1.0.1/tests/test_healthcare_envelope_runtime.py +40 -0
  201. chorusgraph-1.0.1/tests/test_healthcare_retrieval.py +32 -0
  202. chorusgraph-1.0.1/tests/test_kb_vector.py +25 -0
  203. chorusgraph-1.0.1/tests/test_ledger.py +60 -0
  204. chorusgraph-1.0.1/tests/test_load.py +38 -0
  205. chorusgraph-1.0.1/tests/test_memory.py +119 -0
  206. chorusgraph-1.0.1/tests/test_multiagent_pipeline.py +218 -0
  207. chorusgraph-1.0.1/tests/test_native_runtime.py +99 -0
  208. chorusgraph-1.0.1/tests/test_no_langgraph_core_dep.py +50 -0
  209. chorusgraph-1.0.1/tests/test_observability.py +77 -0
  210. chorusgraph-1.0.1/tests/test_patterns.py +75 -0
  211. chorusgraph-1.0.1/tests/test_pending_writes.py +197 -0
  212. chorusgraph-1.0.1/tests/test_persistence.py +119 -0
  213. chorusgraph-1.0.1/tests/test_postgres_checkpointer.py +33 -0
  214. chorusgraph-1.0.1/tests/test_prismrag_mapping.py +52 -0
  215. chorusgraph-1.0.1/tests/test_profiler.py +45 -0
  216. chorusgraph-1.0.1/tests/test_replay.py +137 -0
  217. chorusgraph-1.0.1/tests/test_resilience.py +145 -0
  218. chorusgraph-1.0.1/tests/test_sample_data.py +120 -0
  219. chorusgraph-1.0.1/tests/test_scenarios.py +18 -0
  220. chorusgraph-1.0.1/tests/test_sections.py +14 -0
  221. chorusgraph-1.0.1/tests/test_security.py +111 -0
  222. chorusgraph-1.0.1/tests/test_seed_policy.py +50 -0
  223. chorusgraph-1.0.1/tests/test_send.py +258 -0
  224. chorusgraph-1.0.1/tests/test_shadow.py +40 -0
  225. chorusgraph-1.0.1/tests/test_subgraph.py +164 -0
  226. chorusgraph-1.0.1/tests/test_subgraph_remote.py +63 -0
  227. chorusgraph-1.0.1/tests/test_tenant_isolation.py +60 -0
  228. chorusgraph-1.0.1/tests/test_tool.py +35 -0
  229. chorusgraph-1.0.1/tests/test_transforms.py +93 -0
  230. chorusgraph-1.0.1/tests/test_transport.py +82 -0
  231. chorusgraph-1.0.1/tests/test_transport_chorus.py +105 -0
@@ -0,0 +1,17 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ Copyright 2026 Insight IT Solutions
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ http://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
@@ -0,0 +1,283 @@
1
+ Metadata-Version: 2.4
2
+ Name: chorusgraph
3
+ Version: 1.0.1
4
+ Summary: Native agent graph runtime with Prism cache, memory, swappable PrismRAG retrieval, and Route Ledger
5
+ Author: Insight IT Solutions
6
+ License: Apache-2.0
7
+ Project-URL: Homepage, https://github.com/insightitsGit/ChorusGraph
8
+ Project-URL: Documentation, https://github.com/insightitsGit/ChorusGraph/tree/master/docs
9
+ Project-URL: Repository, https://github.com/insightitsGit/ChorusGraph
10
+ Project-URL: Changelog, https://github.com/insightitsGit/ChorusGraph/blob/master/CHANGELOG.md
11
+ Project-URL: Bug Tracker, https://github.com/insightitsGit/ChorusGraph/issues
12
+ Keywords: agents,llm,semantic-cache,rag,prismrag,graph-runtime,orchestration
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: Apache Software License
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
20
+ Requires-Python: >=3.11
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: httpx>=0.27
24
+ Requires-Dist: numpy>=1.24
25
+ Requires-Dist: pydantic>=2.0
26
+ Requires-Dist: prismlang>=0.1.1
27
+ Requires-Dist: prismlib-plus>=0.7.0
28
+ Requires-Dist: prismresonance>=0.3.0
29
+ Provides-Extra: langgraph
30
+ Requires-Dist: langgraph>=0.2.0; extra == "langgraph"
31
+ Requires-Dist: langgraph-checkpoint-sqlite>=2.0; extra == "langgraph"
32
+ Provides-Extra: benchmark
33
+ Requires-Dist: chromadb>=0.4; extra == "benchmark"
34
+ Requires-Dist: langgraph>=0.2.0; extra == "benchmark"
35
+ Requires-Dist: langgraph-checkpoint-sqlite>=2.0; extra == "benchmark"
36
+ Provides-Extra: postgres
37
+ Requires-Dist: psycopg[binary]>=3.1; extra == "postgres"
38
+ Provides-Extra: postgres-checkpoint
39
+ Requires-Dist: langgraph-checkpoint-postgres>=2.0; extra == "postgres-checkpoint"
40
+ Requires-Dist: langgraph>=0.2.0; extra == "postgres-checkpoint"
41
+ Provides-Extra: cortex
42
+ Requires-Dist: prismcortex[gemini,prism]>=0.1; extra == "cortex"
43
+ Provides-Extra: gemini
44
+ Requires-Dist: google-genai>=1.0; extra == "gemini"
45
+ Provides-Extra: dev
46
+ Requires-Dist: pytest>=8.0; extra == "dev"
47
+ Requires-Dist: pytest-asyncio>=0.24; extra == "dev"
48
+ Requires-Dist: pytest-cov>=5.0; extra == "dev"
49
+ Requires-Dist: ruff>=0.8; extra == "dev"
50
+ Requires-Dist: mypy>=1.13; extra == "dev"
51
+ Requires-Dist: types-requests>=2.32; extra == "dev"
52
+ Requires-Dist: cyclonedx-bom>=4.0; extra == "dev"
53
+ Requires-Dist: pip-tools>=7.4; extra == "dev"
54
+ Requires-Dist: google-genai>=1.0; extra == "dev"
55
+ Provides-Extra: enterprise-ci
56
+ Requires-Dist: chorusgraph[benchmark,benchmark-healthcare,dev,gemini]; extra == "enterprise-ci"
57
+ Provides-Extra: benchmark-healthcare
58
+ Requires-Dist: chromadb>=0.4; extra == "benchmark-healthcare"
59
+ Provides-Extra: retrieval
60
+ Requires-Dist: chromadb>=0.4; extra == "retrieval"
61
+ Dynamic: license-file
62
+
63
+ # ChorusGraph
64
+
65
+ [![CI](https://github.com/insightitsGit/ChorusGraph/actions/workflows/ci.yml/badge.svg)](https://github.com/insightitsGit/ChorusGraph/actions/workflows/ci.yml)
66
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://www.python.org/downloads/)
67
+ [![License: Apache-2.0](https://img.shields.io/badge/License-Apache_2.0-green.svg)](LICENSE)
68
+ [![Version](https://img.shields.io/badge/version-1.0.1-informational)](CHANGELOG.md)
69
+
70
+ **Native agent runtime with semantic cache, swappable retrieval (PrismRAG), auditable memory, and enterprise hardening — one pip install, four plug-in ports.**
71
+
72
+ ChorusGraph is **not** a LangGraph wrapper. It ships a **native BSP graph engine** (`chorusgraph.core.Graph`) with the Prism stack attached by default: semantic cache, L2 retrieval, L3 memory, Route Ledger, checkpoints, and observability. Swap backends (Redis cache, vector RAG, custom tools) without rewriting orchestration.
73
+
74
+ > **ChorusGraph** = native engine + product stack · **LangGraph** = optional baseline for A/B comparison only ([`docs/TERMINOLOGY.md`](docs/TERMINOLOGY.md))
75
+
76
+ ---
77
+
78
+ ## Why ChorusGraph
79
+
80
+ Building production LLM agents usually means gluing six systems: orchestration, semantic cache, vector DB, reranker, checkpointing, and audit logs. ChorusGraph ships them as **one runtime** with explicit plug-in ports.
81
+
82
+ | Pain | ChorusGraph answer |
83
+ |------|-------------------|
84
+ | Repeat questions burn tokens | Two-stage semantic cache (coarse 64-d recall → full verify) |
85
+ | RAG is another integration project | `RetrievalBackend` plug-in — keyword default, PrismRAG vector opt-in |
86
+ | “Why did the agent say that?” | Route Ledger + `rule_chain` on every hop |
87
+ | Orchestration + ops duct tape | Native scheduler, health endpoints, Docker/k8s packaging |
88
+
89
+ **Core install has no LangGraph dependency.** Baselines that compare against LangGraph use the optional `[benchmark]` extra.
90
+
91
+ ---
92
+
93
+ ## Quick start
94
+
95
+ ```bash
96
+ pip install chorusgraph
97
+ # Optional: vector retrieval (Chroma + PrismRAG plug-in)
98
+ pip install "chorusgraph[retrieval]"
99
+ ```
100
+
101
+ ```python
102
+ from chorusgraph import Graph, START, END, ChorusStack
103
+ from chorusgraph.core.node import dict_node_adapter
104
+
105
+ stack = ChorusStack.defaults(tenant_id="demo")
106
+
107
+ g = Graph(tenant_id="demo", graph_id="hello")
108
+ g.add_node(
109
+ "echo",
110
+ dict_node_adapter(lambda s: {"reply": f"Hello, {s.get('name', 'world')}"}, hop="echo"),
111
+ )
112
+ g.add_edge(START, "echo")
113
+ g.add_edge("echo", END)
114
+
115
+ out = g.compile(stack=stack).invoke({"name": "ChorusGraph"})
116
+ print(out) # {'reply': 'Hello, ChorusGraph'}
117
+ ```
118
+
119
+ Run the bundled demo:
120
+
121
+ ```bash
122
+ chorusgraph-demo
123
+ ```
124
+
125
+ Full install guide (extras, PrismRAG walkthrough): [`docs/INSTALL.md`](docs/INSTALL.md)
126
+
127
+ ---
128
+
129
+ ## Architecture
130
+
131
+ ```
132
+ ┌─────────────────────────────────────────────────────────────┐
133
+ │ Your graph — nodes, edges, conditional routing │
134
+ ├─────────────────────────────────────────────────────────────┤
135
+ │ ChorusStack — four swappable ports │
136
+ │ ┌──────────┬──────────┬──────────┬──────────────────────┐ │
137
+ │ │ Cache │ Memory │ Tools │ Retrieval (L2) │ │
138
+ │ │ Prism / │ Cortex │ Registry │ Keyword / PrismRAG │ │
139
+ │ │ Redis │ │ │ │ │
140
+ │ └──────────┴──────────┴──────────┴──────────────────────┘ │
141
+ ├─────────────────────────────────────────────────────────────┤
142
+ │ Engine (fixed): BSP scheduler · envelopes · Resonance · JL │
143
+ ├─────────────────────────────────────────────────────────────┤
144
+ │ Route Ledger · checkpoints · tenant guards · observability │
145
+ └─────────────────────────────────────────────────────────────┘
146
+ ```
147
+
148
+ | Layer | Default | Swap |
149
+ |-------|---------|------|
150
+ | **L1 cache** | Semantic PrismCache | `RedisCacheBackend` |
151
+ | **L2 retrieval** | Keyword overlap | `PrismRAGRetrievalBackend` |
152
+ | **L3 memory** | PrismCortex | Disable or custom |
153
+ | **Tools** | Finance registry | MCP / allowlisted registry |
154
+
155
+ Details: [`docs/COMPOSE.md`](docs/COMPOSE.md) · [`docs/PLUGINS.md`](docs/PLUGINS.md)
156
+
157
+ ### PrismRAG retrieval plug-in
158
+
159
+ ```python
160
+ from chorusgraph.compose import ChorusStack, PrismRAGRetrievalBackend
161
+ from chorusgraph.embedders import PrismlangOnnxEmbedder
162
+
163
+ backend = PrismRAGRetrievalBackend(
164
+ embedder=PrismlangOnnxEmbedder(),
165
+ mapping={"categories": [...], "rules": [...]},
166
+ )
167
+ backend.index(your_corpus)
168
+
169
+ stack = ChorusStack.defaults(tenant_id="acme").with_retrieval(backend)
170
+ retrieve_node = stack.to_retrieve_handler(topic="policy", top_k=6)
171
+ ```
172
+
173
+ ---
174
+
175
+ ## Prism stack layers
176
+
177
+ | Layer | Component | Role |
178
+ |-------|-----------|------|
179
+ | L0 — hop | PrismLang | 64-d state compression + `rule_chain` audit |
180
+ | L1 — cache | PrismCache | Semantic gate, Resonance-scored recall |
181
+ | L2 — knowledge | Retrieval plug-in | Keyword default · vector + taxonomy opt-in |
182
+ | rerank | PrismResonance | Shared substrate rerank |
183
+ | L3 — memory | PrismCortex | Structured, replayable memory |
184
+ | transport | CHORUS / PrismAPI | Cross-node envelopes · federation hooks |
185
+
186
+ ---
187
+
188
+ ## Benchmark proof (Azure, canonical run `20260704_212111`)
189
+
190
+ Fair A/B vs competent LangGraph baselines — same model, tools, prompts, workload. See [`benchmark/FAIRNESS_H9.md`](benchmark/FAIRNESS_H9.md).
191
+
192
+ | Scenario | LangGraph | ChorusGraph | Delta |
193
+ |----------|-----------|-------------|-------|
194
+ | Finance single (FL1→FC1) | 87.5% | **100%** | +12.5 pp |
195
+ | Finance multi (FL2→FC2) | 75% | **87.5%** | +12.5 pp |
196
+ | Healthcare single (HL1→HC1) | 72.5% | 72.5% | tie |
197
+ | Healthcare multi (HL2→HC2) | 57.5% | **87.5%** | **+30 pp** |
198
+
199
+ Full report: [`benchmark/results/azure_20260704_212111/.../COMPARISON_REPORT.md`](benchmark/results/azure_20260704_212111/mvp_scenarios/20260704_212111/20260704_212111/COMPARISON_REPORT.md)
200
+
201
+ Run scenarios locally (requires `GEMINI_API_KEY` + `[benchmark]` extra):
202
+
203
+ ```bash
204
+ pip install -e ".[benchmark,gemini]"
205
+ python -m benchmark.run_scenarios --tier light --scenarios all
206
+ ```
207
+
208
+ ---
209
+
210
+ ## Enterprise 1.0
211
+
212
+ | Capability | Status |
213
+ |------------|--------|
214
+ | Native engine (no LangGraph on product path) | ✅ |
215
+ | CI — 327+ tests, no live keys required | ✅ |
216
+ | Resilience, security, observability | ✅ |
217
+ | Docker / k8s deploy | ✅ [`docs/DEPLOY.md`](docs/DEPLOY.md) |
218
+ | Frozen public API | ✅ [`docs/API_1_0.md`](docs/API_1_0.md) |
219
+ | SQLite durable graph (Postgres Phase 2) | 🟡 |
220
+
221
+ Readiness scorecard: [`docs/ENTERPRISE_READINESS.md`](docs/ENTERPRISE_READINESS.md)
222
+
223
+ ---
224
+
225
+ ## Documentation
226
+
227
+ | Doc | Description |
228
+ |-----|-------------|
229
+ | [`docs/INSTALL.md`](docs/INSTALL.md) | pip extras, PrismRAG implementation guide |
230
+ | [`docs/DEVELOPER_GUIDE.md`](docs/DEVELOPER_GUIDE.md) | Build agents on native `Graph` |
231
+ | [`docs/PLUGINS.md`](docs/PLUGINS.md) | Cache, memory, tools, retrieval ports |
232
+ | [`docs/WHITEPAPER.md`](docs/WHITEPAPER.md) | Product thesis + technical depth |
233
+ | [`docs/BENCHMARK.md`](docs/BENCHMARK.md) | Fairness methodology |
234
+ | [`docs/STABILITY.md`](docs/STABILITY.md) | 1.0 API stability guarantee |
235
+ | [`benchmark/SCENARIOS.md`](benchmark/SCENARIOS.md) | FL/FC/HL/HC scenario matrix |
236
+
237
+ ---
238
+
239
+ ## Development
240
+
241
+ ```bash
242
+ git clone https://github.com/insightitsGit/ChorusGraph.git
243
+ cd ChorusGraph
244
+ pip install -e ".[dev,benchmark,gemini,retrieval]"
245
+ pytest # deterministic tier — no API keys
246
+ pytest -m live # live Gemini (needs GEMINI_API_KEY)
247
+ ruff check tests .github
248
+ ```
249
+
250
+ ---
251
+
252
+ ## Optional dependencies
253
+
254
+ | Extra | Purpose |
255
+ |-------|---------|
256
+ | `retrieval` | Chroma + `PrismRAGRetrievalBackend` |
257
+ | `gemini` | Live Gemini examples |
258
+ | `cortex` | PrismCortex L3 memory |
259
+ | `benchmark` | LangGraph baselines (FL/HL) + chromadb |
260
+ | `dev` | pytest, ruff, mypy, coverage |
261
+
262
+ ---
263
+
264
+ ## Principles
265
+
266
+ - **Native first** — FC/HC product paths use `chorusgraph.core.Graph` only
267
+ - **Safe cache before fast cache** — two-stage verify; no unsafe generative replay
268
+ - **Measure, don't assert** — publish benchmarks with fairness disclosure
269
+ - **Batteries included, batteries swappable** — defaults work; ports swap cleanly
270
+
271
+ ---
272
+
273
+ ## License
274
+
275
+ Apache-2.0 — see [LICENSE](LICENSE).
276
+
277
+ ---
278
+
279
+ ## Provenance
280
+
281
+ Built by [Insight IT Solutions](https://github.com/insightitsGit). Dogfooded in production agent hubs. Part of the Prism family (PrismLang, PrismCache, PrismCortex, PrismRAG).
282
+
283
+ **Questions / enterprise:** open a GitHub issue or see [`docs/WHITEPAPER.md`](docs/WHITEPAPER.md) for commercial framing.
@@ -0,0 +1,221 @@
1
+ # ChorusGraph
2
+
3
+ [![CI](https://github.com/insightitsGit/ChorusGraph/actions/workflows/ci.yml/badge.svg)](https://github.com/insightitsGit/ChorusGraph/actions/workflows/ci.yml)
4
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://www.python.org/downloads/)
5
+ [![License: Apache-2.0](https://img.shields.io/badge/License-Apache_2.0-green.svg)](LICENSE)
6
+ [![Version](https://img.shields.io/badge/version-1.0.1-informational)](CHANGELOG.md)
7
+
8
+ **Native agent runtime with semantic cache, swappable retrieval (PrismRAG), auditable memory, and enterprise hardening — one pip install, four plug-in ports.**
9
+
10
+ ChorusGraph is **not** a LangGraph wrapper. It ships a **native BSP graph engine** (`chorusgraph.core.Graph`) with the Prism stack attached by default: semantic cache, L2 retrieval, L3 memory, Route Ledger, checkpoints, and observability. Swap backends (Redis cache, vector RAG, custom tools) without rewriting orchestration.
11
+
12
+ > **ChorusGraph** = native engine + product stack · **LangGraph** = optional baseline for A/B comparison only ([`docs/TERMINOLOGY.md`](docs/TERMINOLOGY.md))
13
+
14
+ ---
15
+
16
+ ## Why ChorusGraph
17
+
18
+ Building production LLM agents usually means gluing six systems: orchestration, semantic cache, vector DB, reranker, checkpointing, and audit logs. ChorusGraph ships them as **one runtime** with explicit plug-in ports.
19
+
20
+ | Pain | ChorusGraph answer |
21
+ |------|-------------------|
22
+ | Repeat questions burn tokens | Two-stage semantic cache (coarse 64-d recall → full verify) |
23
+ | RAG is another integration project | `RetrievalBackend` plug-in — keyword default, PrismRAG vector opt-in |
24
+ | “Why did the agent say that?” | Route Ledger + `rule_chain` on every hop |
25
+ | Orchestration + ops duct tape | Native scheduler, health endpoints, Docker/k8s packaging |
26
+
27
+ **Core install has no LangGraph dependency.** Baselines that compare against LangGraph use the optional `[benchmark]` extra.
28
+
29
+ ---
30
+
31
+ ## Quick start
32
+
33
+ ```bash
34
+ pip install chorusgraph
35
+ # Optional: vector retrieval (Chroma + PrismRAG plug-in)
36
+ pip install "chorusgraph[retrieval]"
37
+ ```
38
+
39
+ ```python
40
+ from chorusgraph import Graph, START, END, ChorusStack
41
+ from chorusgraph.core.node import dict_node_adapter
42
+
43
+ stack = ChorusStack.defaults(tenant_id="demo")
44
+
45
+ g = Graph(tenant_id="demo", graph_id="hello")
46
+ g.add_node(
47
+ "echo",
48
+ dict_node_adapter(lambda s: {"reply": f"Hello, {s.get('name', 'world')}"}, hop="echo"),
49
+ )
50
+ g.add_edge(START, "echo")
51
+ g.add_edge("echo", END)
52
+
53
+ out = g.compile(stack=stack).invoke({"name": "ChorusGraph"})
54
+ print(out) # {'reply': 'Hello, ChorusGraph'}
55
+ ```
56
+
57
+ Run the bundled demo:
58
+
59
+ ```bash
60
+ chorusgraph-demo
61
+ ```
62
+
63
+ Full install guide (extras, PrismRAG walkthrough): [`docs/INSTALL.md`](docs/INSTALL.md)
64
+
65
+ ---
66
+
67
+ ## Architecture
68
+
69
+ ```
70
+ ┌─────────────────────────────────────────────────────────────┐
71
+ │ Your graph — nodes, edges, conditional routing │
72
+ ├─────────────────────────────────────────────────────────────┤
73
+ │ ChorusStack — four swappable ports │
74
+ │ ┌──────────┬──────────┬──────────┬──────────────────────┐ │
75
+ │ │ Cache │ Memory │ Tools │ Retrieval (L2) │ │
76
+ │ │ Prism / │ Cortex │ Registry │ Keyword / PrismRAG │ │
77
+ │ │ Redis │ │ │ │ │
78
+ │ └──────────┴──────────┴──────────┴──────────────────────┘ │
79
+ ├─────────────────────────────────────────────────────────────┤
80
+ │ Engine (fixed): BSP scheduler · envelopes · Resonance · JL │
81
+ ├─────────────────────────────────────────────────────────────┤
82
+ │ Route Ledger · checkpoints · tenant guards · observability │
83
+ └─────────────────────────────────────────────────────────────┘
84
+ ```
85
+
86
+ | Layer | Default | Swap |
87
+ |-------|---------|------|
88
+ | **L1 cache** | Semantic PrismCache | `RedisCacheBackend` |
89
+ | **L2 retrieval** | Keyword overlap | `PrismRAGRetrievalBackend` |
90
+ | **L3 memory** | PrismCortex | Disable or custom |
91
+ | **Tools** | Finance registry | MCP / allowlisted registry |
92
+
93
+ Details: [`docs/COMPOSE.md`](docs/COMPOSE.md) · [`docs/PLUGINS.md`](docs/PLUGINS.md)
94
+
95
+ ### PrismRAG retrieval plug-in
96
+
97
+ ```python
98
+ from chorusgraph.compose import ChorusStack, PrismRAGRetrievalBackend
99
+ from chorusgraph.embedders import PrismlangOnnxEmbedder
100
+
101
+ backend = PrismRAGRetrievalBackend(
102
+ embedder=PrismlangOnnxEmbedder(),
103
+ mapping={"categories": [...], "rules": [...]},
104
+ )
105
+ backend.index(your_corpus)
106
+
107
+ stack = ChorusStack.defaults(tenant_id="acme").with_retrieval(backend)
108
+ retrieve_node = stack.to_retrieve_handler(topic="policy", top_k=6)
109
+ ```
110
+
111
+ ---
112
+
113
+ ## Prism stack layers
114
+
115
+ | Layer | Component | Role |
116
+ |-------|-----------|------|
117
+ | L0 — hop | PrismLang | 64-d state compression + `rule_chain` audit |
118
+ | L1 — cache | PrismCache | Semantic gate, Resonance-scored recall |
119
+ | L2 — knowledge | Retrieval plug-in | Keyword default · vector + taxonomy opt-in |
120
+ | rerank | PrismResonance | Shared substrate rerank |
121
+ | L3 — memory | PrismCortex | Structured, replayable memory |
122
+ | transport | CHORUS / PrismAPI | Cross-node envelopes · federation hooks |
123
+
124
+ ---
125
+
126
+ ## Benchmark proof (Azure, canonical run `20260704_212111`)
127
+
128
+ Fair A/B vs competent LangGraph baselines — same model, tools, prompts, workload. See [`benchmark/FAIRNESS_H9.md`](benchmark/FAIRNESS_H9.md).
129
+
130
+ | Scenario | LangGraph | ChorusGraph | Delta |
131
+ |----------|-----------|-------------|-------|
132
+ | Finance single (FL1→FC1) | 87.5% | **100%** | +12.5 pp |
133
+ | Finance multi (FL2→FC2) | 75% | **87.5%** | +12.5 pp |
134
+ | Healthcare single (HL1→HC1) | 72.5% | 72.5% | tie |
135
+ | Healthcare multi (HL2→HC2) | 57.5% | **87.5%** | **+30 pp** |
136
+
137
+ Full report: [`benchmark/results/azure_20260704_212111/.../COMPARISON_REPORT.md`](benchmark/results/azure_20260704_212111/mvp_scenarios/20260704_212111/20260704_212111/COMPARISON_REPORT.md)
138
+
139
+ Run scenarios locally (requires `GEMINI_API_KEY` + `[benchmark]` extra):
140
+
141
+ ```bash
142
+ pip install -e ".[benchmark,gemini]"
143
+ python -m benchmark.run_scenarios --tier light --scenarios all
144
+ ```
145
+
146
+ ---
147
+
148
+ ## Enterprise 1.0
149
+
150
+ | Capability | Status |
151
+ |------------|--------|
152
+ | Native engine (no LangGraph on product path) | ✅ |
153
+ | CI — 327+ tests, no live keys required | ✅ |
154
+ | Resilience, security, observability | ✅ |
155
+ | Docker / k8s deploy | ✅ [`docs/DEPLOY.md`](docs/DEPLOY.md) |
156
+ | Frozen public API | ✅ [`docs/API_1_0.md`](docs/API_1_0.md) |
157
+ | SQLite durable graph (Postgres Phase 2) | 🟡 |
158
+
159
+ Readiness scorecard: [`docs/ENTERPRISE_READINESS.md`](docs/ENTERPRISE_READINESS.md)
160
+
161
+ ---
162
+
163
+ ## Documentation
164
+
165
+ | Doc | Description |
166
+ |-----|-------------|
167
+ | [`docs/INSTALL.md`](docs/INSTALL.md) | pip extras, PrismRAG implementation guide |
168
+ | [`docs/DEVELOPER_GUIDE.md`](docs/DEVELOPER_GUIDE.md) | Build agents on native `Graph` |
169
+ | [`docs/PLUGINS.md`](docs/PLUGINS.md) | Cache, memory, tools, retrieval ports |
170
+ | [`docs/WHITEPAPER.md`](docs/WHITEPAPER.md) | Product thesis + technical depth |
171
+ | [`docs/BENCHMARK.md`](docs/BENCHMARK.md) | Fairness methodology |
172
+ | [`docs/STABILITY.md`](docs/STABILITY.md) | 1.0 API stability guarantee |
173
+ | [`benchmark/SCENARIOS.md`](benchmark/SCENARIOS.md) | FL/FC/HL/HC scenario matrix |
174
+
175
+ ---
176
+
177
+ ## Development
178
+
179
+ ```bash
180
+ git clone https://github.com/insightitsGit/ChorusGraph.git
181
+ cd ChorusGraph
182
+ pip install -e ".[dev,benchmark,gemini,retrieval]"
183
+ pytest # deterministic tier — no API keys
184
+ pytest -m live # live Gemini (needs GEMINI_API_KEY)
185
+ ruff check tests .github
186
+ ```
187
+
188
+ ---
189
+
190
+ ## Optional dependencies
191
+
192
+ | Extra | Purpose |
193
+ |-------|---------|
194
+ | `retrieval` | Chroma + `PrismRAGRetrievalBackend` |
195
+ | `gemini` | Live Gemini examples |
196
+ | `cortex` | PrismCortex L3 memory |
197
+ | `benchmark` | LangGraph baselines (FL/HL) + chromadb |
198
+ | `dev` | pytest, ruff, mypy, coverage |
199
+
200
+ ---
201
+
202
+ ## Principles
203
+
204
+ - **Native first** — FC/HC product paths use `chorusgraph.core.Graph` only
205
+ - **Safe cache before fast cache** — two-stage verify; no unsafe generative replay
206
+ - **Measure, don't assert** — publish benchmarks with fairness disclosure
207
+ - **Batteries included, batteries swappable** — defaults work; ports swap cleanly
208
+
209
+ ---
210
+
211
+ ## License
212
+
213
+ Apache-2.0 — see [LICENSE](LICENSE).
214
+
215
+ ---
216
+
217
+ ## Provenance
218
+
219
+ Built by [Insight IT Solutions](https://github.com/insightitsGit). Dogfooded in production agent hubs. Part of the Prism family (PrismLang, PrismCache, PrismCortex, PrismRAG).
220
+
221
+ **Questions / enterprise:** open a GitHub issue or see [`docs/WHITEPAPER.md`](docs/WHITEPAPER.md) for commercial framing.
@@ -0,0 +1,57 @@
1
+ """ChorusGraph — native Prism execution engine with cache, memory, and Route Ledger."""
2
+
3
+ __version__ = "1.0.1"
4
+
5
+ from chorusgraph.adapter import RunnableWithLedger, wrap
6
+ from chorusgraph.cache_gate import Decision, DecisionKind, SidecarStore, gate, seed_cache_entry
7
+ from chorusgraph.checkpoint import PrismCheckpointer, create_checkpointer, sqlite_checkpointer
8
+ from chorusgraph.compose import ChorusStack, RedisCacheBackend
9
+ from chorusgraph.core import END, START, CompiledGraph, Graph, NodeContext, NodeFn
10
+ from chorusgraph.transport import TransportMode, publish_hop
11
+ from chorusgraph.ledger import (
12
+ LedgerStep,
13
+ LedgerSink,
14
+ PostgresLedgerSink,
15
+ RouteLedger,
16
+ SqliteLedgerSink,
17
+ get_run,
18
+ list_runs,
19
+ )
20
+ from chorusgraph.memory import CortexMemoryService, get_cortex_service
21
+ from chorusgraph.sections import CachePolicy, Section
22
+ from chorusgraph.shadow import run_shadow_measurement
23
+
24
+ __all__ = [
25
+ "__version__",
26
+ "CachePolicy",
27
+ "CompiledGraph",
28
+ "CortexMemoryService",
29
+ "ChorusStack",
30
+ "Decision",
31
+ "DecisionKind",
32
+ "END",
33
+ "Graph",
34
+ "NodeContext",
35
+ "NodeFn",
36
+ "LedgerSink",
37
+ "LedgerStep",
38
+ "TransportMode",
39
+ "PrismCheckpointer",
40
+ "RedisCacheBackend",
41
+ "RouteLedger",
42
+ "RunnableWithLedger",
43
+ "Section",
44
+ "SidecarStore",
45
+ "SqliteLedgerSink",
46
+ "START",
47
+ "create_checkpointer",
48
+ "gate",
49
+ "get_cortex_service",
50
+ "get_run",
51
+ "list_runs",
52
+ "publish_hop",
53
+ "run_shadow_measurement",
54
+ "seed_cache_entry",
55
+ "sqlite_checkpointer",
56
+ "wrap",
57
+ ]
@@ -0,0 +1,5 @@
1
+ """LangGraph adapter — observe execution, emit Route Ledger."""
2
+
3
+ from chorusgraph.adapter.wrap import RunnableWithLedger, wrap
4
+
5
+ __all__ = ["RunnableWithLedger", "wrap"]