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.
- chorusgraph-1.0.1/LICENSE +17 -0
- chorusgraph-1.0.1/PKG-INFO +283 -0
- chorusgraph-1.0.1/README.md +221 -0
- chorusgraph-1.0.1/chorusgraph/__init__.py +57 -0
- chorusgraph-1.0.1/chorusgraph/adapter/__init__.py +5 -0
- chorusgraph-1.0.1/chorusgraph/adapter/wrap.py +249 -0
- chorusgraph-1.0.1/chorusgraph/agents/__init__.py +43 -0
- chorusgraph-1.0.1/chorusgraph/agents/agent.py +69 -0
- chorusgraph-1.0.1/chorusgraph/agents/agent_node.py +82 -0
- chorusgraph-1.0.1/chorusgraph/agents/loop.py +137 -0
- chorusgraph-1.0.1/chorusgraph/agents/plan_solve.py +50 -0
- chorusgraph-1.0.1/chorusgraph/agents/plan_utils.py +98 -0
- chorusgraph-1.0.1/chorusgraph/agents/policy.py +100 -0
- chorusgraph-1.0.1/chorusgraph/agents/react.py +48 -0
- chorusgraph-1.0.1/chorusgraph/agents/react_utils.py +31 -0
- chorusgraph-1.0.1/chorusgraph/agents/reflection.py +54 -0
- chorusgraph-1.0.1/chorusgraph/agents/strategies/__init__.py +20 -0
- chorusgraph-1.0.1/chorusgraph/agents/strategies/base.py +53 -0
- chorusgraph-1.0.1/chorusgraph/agents/strategies/plan_solve_strategy.py +141 -0
- chorusgraph-1.0.1/chorusgraph/agents/strategies/react_strategy.py +141 -0
- chorusgraph-1.0.1/chorusgraph/agents/strategies/reflection_strategy.py +64 -0
- chorusgraph-1.0.1/chorusgraph/cache_gate/__init__.py +23 -0
- chorusgraph-1.0.1/chorusgraph/cache_gate/backend.py +251 -0
- chorusgraph-1.0.1/chorusgraph/cache_gate/decision.py +33 -0
- chorusgraph-1.0.1/chorusgraph/cache_gate/gate.py +168 -0
- chorusgraph-1.0.1/chorusgraph/cache_gate/scope.py +34 -0
- chorusgraph-1.0.1/chorusgraph/cache_gate/seed_policy.py +56 -0
- chorusgraph-1.0.1/chorusgraph/cache_gate/sidecar.py +220 -0
- chorusgraph-1.0.1/chorusgraph/cache_gate/thresholds.py +49 -0
- chorusgraph-1.0.1/chorusgraph/checkpoint/__init__.py +27 -0
- chorusgraph-1.0.1/chorusgraph/checkpoint/prism.py +93 -0
- chorusgraph-1.0.1/chorusgraph/compat/__init__.py +0 -0
- chorusgraph-1.0.1/chorusgraph/compat/checkpoint_import.py +75 -0
- chorusgraph-1.0.1/chorusgraph/compat/langgraph.py +160 -0
- chorusgraph-1.0.1/chorusgraph/compat/otel_exporter.py +36 -0
- chorusgraph-1.0.1/chorusgraph/compat/tool_node.py +24 -0
- chorusgraph-1.0.1/chorusgraph/compose/__init__.py +47 -0
- chorusgraph-1.0.1/chorusgraph/compose/adapters/__init__.py +13 -0
- chorusgraph-1.0.1/chorusgraph/compose/adapters/keyword_retrieval.py +51 -0
- chorusgraph-1.0.1/chorusgraph/compose/adapters/memory.py +47 -0
- chorusgraph-1.0.1/chorusgraph/compose/adapters/prism_cache.py +100 -0
- chorusgraph-1.0.1/chorusgraph/compose/adapters/prismrag_retrieval.py +228 -0
- chorusgraph-1.0.1/chorusgraph/compose/adapters/redis_cache.py +178 -0
- chorusgraph-1.0.1/chorusgraph/compose/defaults.py +58 -0
- chorusgraph-1.0.1/chorusgraph/compose/ports.py +129 -0
- chorusgraph-1.0.1/chorusgraph/compose/stack.py +172 -0
- chorusgraph-1.0.1/chorusgraph/core/__init__.py +22 -0
- chorusgraph-1.0.1/chorusgraph/core/bus.py +93 -0
- chorusgraph-1.0.1/chorusgraph/core/cache_interceptor.py +136 -0
- chorusgraph-1.0.1/chorusgraph/core/channels.py +255 -0
- chorusgraph-1.0.1/chorusgraph/core/constants.py +6 -0
- chorusgraph-1.0.1/chorusgraph/core/envelope.py +59 -0
- chorusgraph-1.0.1/chorusgraph/core/graph.py +261 -0
- chorusgraph-1.0.1/chorusgraph/core/ir.py +155 -0
- chorusgraph-1.0.1/chorusgraph/core/node.py +172 -0
- chorusgraph-1.0.1/chorusgraph/core/pending_writes.py +128 -0
- chorusgraph-1.0.1/chorusgraph/core/persistence.py +324 -0
- chorusgraph-1.0.1/chorusgraph/core/scheduler.py +1613 -0
- chorusgraph-1.0.1/chorusgraph/core/send.py +177 -0
- chorusgraph-1.0.1/chorusgraph/core/subgraph.py +180 -0
- chorusgraph-1.0.1/chorusgraph/core/subgraph_transport.py +208 -0
- chorusgraph-1.0.1/chorusgraph/core/trace.py +226 -0
- chorusgraph-1.0.1/chorusgraph/core/transport_router.py +140 -0
- chorusgraph-1.0.1/chorusgraph/embedders.py +51 -0
- chorusgraph-1.0.1/chorusgraph/examples/__init__.py +0 -0
- chorusgraph-1.0.1/chorusgraph/examples/demo_graph.py +129 -0
- chorusgraph-1.0.1/chorusgraph/examples/finance_agent/__init__.py +0 -0
- chorusgraph-1.0.1/chorusgraph/examples/finance_agent/gemini_client.py +108 -0
- chorusgraph-1.0.1/chorusgraph/examples/finance_agent/graph.py +98 -0
- chorusgraph-1.0.1/chorusgraph/examples/finance_agent/nodes.py +480 -0
- chorusgraph-1.0.1/chorusgraph/examples/finance_agent/pattern_nodes.py +194 -0
- chorusgraph-1.0.1/chorusgraph/examples/finance_agent/patterns_graph.py +201 -0
- chorusgraph-1.0.1/chorusgraph/examples/finance_agent/run.py +64 -0
- chorusgraph-1.0.1/chorusgraph/examples/finance_agent/run_memory_demo.py +193 -0
- chorusgraph-1.0.1/chorusgraph/examples/finance_agent/run_patterns_demo.py +92 -0
- chorusgraph-1.0.1/chorusgraph/examples/finance_agent/runtime.py +126 -0
- chorusgraph-1.0.1/chorusgraph/examples/multi_agent_graph.py +54 -0
- chorusgraph-1.0.1/chorusgraph/func.py +84 -0
- chorusgraph-1.0.1/chorusgraph/ledger/__init__.py +15 -0
- chorusgraph-1.0.1/chorusgraph/ledger/instrument.py +57 -0
- chorusgraph-1.0.1/chorusgraph/ledger/models.py +46 -0
- chorusgraph-1.0.1/chorusgraph/ledger/query.py +24 -0
- chorusgraph-1.0.1/chorusgraph/ledger/sink.py +267 -0
- chorusgraph-1.0.1/chorusgraph/memory/__init__.py +16 -0
- chorusgraph-1.0.1/chorusgraph/memory/async_digest.py +80 -0
- chorusgraph-1.0.1/chorusgraph/memory/cortex_compat.py +52 -0
- chorusgraph-1.0.1/chorusgraph/memory/cortex_service.py +195 -0
- chorusgraph-1.0.1/chorusgraph/memory/recall.py +28 -0
- chorusgraph-1.0.1/chorusgraph/memory/structured_recall.py +59 -0
- chorusgraph-1.0.1/chorusgraph/nodes/__init__.py +33 -0
- chorusgraph-1.0.1/chorusgraph/nodes/retrieve.py +110 -0
- chorusgraph-1.0.1/chorusgraph/nodes/roles.py +102 -0
- chorusgraph-1.0.1/chorusgraph/nodes/tool.py +207 -0
- chorusgraph-1.0.1/chorusgraph/observability/__init__.py +18 -0
- chorusgraph-1.0.1/chorusgraph/observability/health.py +60 -0
- chorusgraph-1.0.1/chorusgraph/observability/logging.py +58 -0
- chorusgraph-1.0.1/chorusgraph/observability/metrics.py +51 -0
- chorusgraph-1.0.1/chorusgraph/observability/otel.py +44 -0
- chorusgraph-1.0.1/chorusgraph/persistence/__init__.py +22 -0
- chorusgraph-1.0.1/chorusgraph/persistence/backup.py +63 -0
- chorusgraph-1.0.1/chorusgraph/persistence/cortex_factory.py +66 -0
- chorusgraph-1.0.1/chorusgraph/persistence/lifecycle.py +107 -0
- chorusgraph-1.0.1/chorusgraph/persistence/migrations.py +114 -0
- chorusgraph-1.0.1/chorusgraph/persistence/sqlite_graph_store.py +126 -0
- chorusgraph-1.0.1/chorusgraph/policy/__init__.py +5 -0
- chorusgraph-1.0.1/chorusgraph/policy/embedder_guard.py +74 -0
- chorusgraph-1.0.1/chorusgraph/public.py +62 -0
- chorusgraph-1.0.1/chorusgraph/resilience/__init__.py +23 -0
- chorusgraph-1.0.1/chorusgraph/resilience/circuit_breaker.py +104 -0
- chorusgraph-1.0.1/chorusgraph/resilience/errors.py +72 -0
- chorusgraph-1.0.1/chorusgraph/resilience/executor.py +71 -0
- chorusgraph-1.0.1/chorusgraph/resilience/idempotency.py +29 -0
- chorusgraph-1.0.1/chorusgraph/resilience/partial.py +34 -0
- chorusgraph-1.0.1/chorusgraph/resilience/policy.py +42 -0
- chorusgraph-1.0.1/chorusgraph/sections/__init__.py +5 -0
- chorusgraph-1.0.1/chorusgraph/sections/models.py +46 -0
- chorusgraph-1.0.1/chorusgraph/sections/profiles.py +46 -0
- chorusgraph-1.0.1/chorusgraph/security/__init__.py +21 -0
- chorusgraph-1.0.1/chorusgraph/security/auth.py +42 -0
- chorusgraph-1.0.1/chorusgraph/security/cache.py +47 -0
- chorusgraph-1.0.1/chorusgraph/security/pii.py +35 -0
- chorusgraph-1.0.1/chorusgraph/security/tools.py +71 -0
- chorusgraph-1.0.1/chorusgraph/security/transport.py +43 -0
- chorusgraph-1.0.1/chorusgraph/shadow/__init__.py +19 -0
- chorusgraph-1.0.1/chorusgraph/shadow/dataset/__init__.py +0 -0
- chorusgraph-1.0.1/chorusgraph/shadow/harness.py +182 -0
- chorusgraph-1.0.1/chorusgraph/shadow/replay/__init__.py +19 -0
- chorusgraph-1.0.1/chorusgraph/shadow/replay/cli.py +43 -0
- chorusgraph-1.0.1/chorusgraph/shadow/replay/ingest.py +30 -0
- chorusgraph-1.0.1/chorusgraph/shadow/replay/policies.py +18 -0
- chorusgraph-1.0.1/chorusgraph/shadow/replay/replay.py +166 -0
- chorusgraph-1.0.1/chorusgraph/shadow/replay/report.py +116 -0
- chorusgraph-1.0.1/chorusgraph/shadow/replay/schema.py +31 -0
- chorusgraph-1.0.1/chorusgraph/shadow/replay/stats.py +69 -0
- chorusgraph-1.0.1/chorusgraph/shadow/report.py +96 -0
- chorusgraph-1.0.1/chorusgraph/shadow/results_store.py +107 -0
- chorusgraph-1.0.1/chorusgraph/tenant/__init__.py +17 -0
- chorusgraph-1.0.1/chorusgraph/tenant/context.py +27 -0
- chorusgraph-1.0.1/chorusgraph/tenant/isolation.py +33 -0
- chorusgraph-1.0.1/chorusgraph/tenant/limits.py +59 -0
- chorusgraph-1.0.1/chorusgraph/transforms/__init__.py +17 -0
- chorusgraph-1.0.1/chorusgraph/transforms/cortex_projector.py +61 -0
- chorusgraph-1.0.1/chorusgraph/transforms/intent.py +59 -0
- chorusgraph-1.0.1/chorusgraph/transforms/projector.py +49 -0
- chorusgraph-1.0.1/chorusgraph/transforms/templates.py +129 -0
- chorusgraph-1.0.1/chorusgraph/transport/__init__.py +30 -0
- chorusgraph-1.0.1/chorusgraph/transport/chorus.py +222 -0
- chorusgraph-1.0.1/chorusgraph/transport/context.py +63 -0
- chorusgraph-1.0.1/chorusgraph/transport/envelope.py +79 -0
- chorusgraph-1.0.1/chorusgraph/transport/inproc.py +61 -0
- chorusgraph-1.0.1/chorusgraph/transport/modes.py +23 -0
- chorusgraph-1.0.1/chorusgraph/transport/prismapi.py +164 -0
- chorusgraph-1.0.1/chorusgraph/transport/spine.py +66 -0
- chorusgraph-1.0.1/chorusgraph.egg-info/PKG-INFO +283 -0
- chorusgraph-1.0.1/chorusgraph.egg-info/SOURCES.txt +229 -0
- chorusgraph-1.0.1/chorusgraph.egg-info/dependency_links.txt +1 -0
- chorusgraph-1.0.1/chorusgraph.egg-info/entry_points.txt +9 -0
- chorusgraph-1.0.1/chorusgraph.egg-info/requires.txt +48 -0
- chorusgraph-1.0.1/chorusgraph.egg-info/top_level.txt +1 -0
- chorusgraph-1.0.1/pyproject.toml +129 -0
- chorusgraph-1.0.1/setup.cfg +4 -0
- chorusgraph-1.0.1/tests/test_adapter.py +125 -0
- chorusgraph-1.0.1/tests/test_agent.py +185 -0
- chorusgraph-1.0.1/tests/test_agents.py +133 -0
- chorusgraph-1.0.1/tests/test_benchmark.py +412 -0
- chorusgraph-1.0.1/tests/test_benchmark_cache_flags.py +96 -0
- chorusgraph-1.0.1/tests/test_benchmark_fanout.py +23 -0
- chorusgraph-1.0.1/tests/test_benchmark_wiring.py +11 -0
- chorusgraph-1.0.1/tests/test_bus_redis.py +76 -0
- chorusgraph-1.0.1/tests/test_cache_gate.py +154 -0
- chorusgraph-1.0.1/tests/test_cache_gate_profile.py +145 -0
- chorusgraph-1.0.1/tests/test_cache_profiles.py +34 -0
- chorusgraph-1.0.1/tests/test_checkpoint.py +56 -0
- chorusgraph-1.0.1/tests/test_chorus_batch.py +46 -0
- chorusgraph-1.0.1/tests/test_clinical_fingerprint.py +85 -0
- chorusgraph-1.0.1/tests/test_command_interrupt.py +86 -0
- chorusgraph-1.0.1/tests/test_compare_scenarios.py +95 -0
- chorusgraph-1.0.1/tests/test_compose_stack.py +165 -0
- chorusgraph-1.0.1/tests/test_compound_rubric.py +125 -0
- chorusgraph-1.0.1/tests/test_container_a_graph.py +77 -0
- chorusgraph-1.0.1/tests/test_container_d_artifacts.py +124 -0
- chorusgraph-1.0.1/tests/test_core_dependencies.py +38 -0
- chorusgraph-1.0.1/tests/test_core_engine.py +278 -0
- chorusgraph-1.0.1/tests/test_corpus_seed.py +107 -0
- chorusgraph-1.0.1/tests/test_cortex_compat.py +27 -0
- chorusgraph-1.0.1/tests/test_cortex_projector.py +38 -0
- chorusgraph-1.0.1/tests/test_deterministic_tier.py +20 -0
- chorusgraph-1.0.1/tests/test_embed_equivalence.py +67 -0
- chorusgraph-1.0.1/tests/test_embed_once.py +76 -0
- chorusgraph-1.0.1/tests/test_engine_phases.py +302 -0
- chorusgraph-1.0.1/tests/test_fc_hc_no_langgraph.py +21 -0
- chorusgraph-1.0.1/tests/test_federation.py +190 -0
- chorusgraph-1.0.1/tests/test_finance_agent.py +203 -0
- chorusgraph-1.0.1/tests/test_finance_multiagent.py +146 -0
- chorusgraph-1.0.1/tests/test_func_api.py +56 -0
- chorusgraph-1.0.1/tests/test_hc1_cache_scope.py +174 -0
- chorusgraph-1.0.1/tests/test_hc2_cache_payload.py +49 -0
- chorusgraph-1.0.1/tests/test_hc2_cache_routing.py +103 -0
- chorusgraph-1.0.1/tests/test_healthcare_cache_gate.py +22 -0
- chorusgraph-1.0.1/tests/test_healthcare_envelope_runtime.py +40 -0
- chorusgraph-1.0.1/tests/test_healthcare_retrieval.py +32 -0
- chorusgraph-1.0.1/tests/test_kb_vector.py +25 -0
- chorusgraph-1.0.1/tests/test_ledger.py +60 -0
- chorusgraph-1.0.1/tests/test_load.py +38 -0
- chorusgraph-1.0.1/tests/test_memory.py +119 -0
- chorusgraph-1.0.1/tests/test_multiagent_pipeline.py +218 -0
- chorusgraph-1.0.1/tests/test_native_runtime.py +99 -0
- chorusgraph-1.0.1/tests/test_no_langgraph_core_dep.py +50 -0
- chorusgraph-1.0.1/tests/test_observability.py +77 -0
- chorusgraph-1.0.1/tests/test_patterns.py +75 -0
- chorusgraph-1.0.1/tests/test_pending_writes.py +197 -0
- chorusgraph-1.0.1/tests/test_persistence.py +119 -0
- chorusgraph-1.0.1/tests/test_postgres_checkpointer.py +33 -0
- chorusgraph-1.0.1/tests/test_prismrag_mapping.py +52 -0
- chorusgraph-1.0.1/tests/test_profiler.py +45 -0
- chorusgraph-1.0.1/tests/test_replay.py +137 -0
- chorusgraph-1.0.1/tests/test_resilience.py +145 -0
- chorusgraph-1.0.1/tests/test_sample_data.py +120 -0
- chorusgraph-1.0.1/tests/test_scenarios.py +18 -0
- chorusgraph-1.0.1/tests/test_sections.py +14 -0
- chorusgraph-1.0.1/tests/test_security.py +111 -0
- chorusgraph-1.0.1/tests/test_seed_policy.py +50 -0
- chorusgraph-1.0.1/tests/test_send.py +258 -0
- chorusgraph-1.0.1/tests/test_shadow.py +40 -0
- chorusgraph-1.0.1/tests/test_subgraph.py +164 -0
- chorusgraph-1.0.1/tests/test_subgraph_remote.py +63 -0
- chorusgraph-1.0.1/tests/test_tenant_isolation.py +60 -0
- chorusgraph-1.0.1/tests/test_tool.py +35 -0
- chorusgraph-1.0.1/tests/test_transforms.py +93 -0
- chorusgraph-1.0.1/tests/test_transport.py +82 -0
- 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
|
+
[](https://github.com/insightitsGit/ChorusGraph/actions/workflows/ci.yml)
|
|
66
|
+
[](https://www.python.org/downloads/)
|
|
67
|
+
[](LICENSE)
|
|
68
|
+
[](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
|
+
[](https://github.com/insightitsGit/ChorusGraph/actions/workflows/ci.yml)
|
|
4
|
+
[](https://www.python.org/downloads/)
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
[](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
|
+
]
|