agentflow-runtime 1.1.0__tar.gz → 1.3.0__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.
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/.gitignore +4 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/CHANGELOG.md +152 -2
- agentflow_runtime-1.3.0/PKG-INFO +255 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/README.md +37 -21
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/pyproject.toml +40 -6
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/processing/outbox.py +2 -1
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/quality/monitors/freshness_monitor.py +1 -1
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/quality/validators/schema_validator.py +3 -3
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/analytics.py +9 -7
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/auth/key_rotation.py +3 -2
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/auth/manager.py +3 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/auth/middleware.py +14 -4
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/routers/admin_ui.py +2 -1
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/routers/lineage.py +9 -3
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/routers/stream.py +4 -1
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/security.py +13 -2
- agentflow_runtime-1.3.0/src/serving/audit_publisher.py +80 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/backends/duckdb_backend.py +2 -1
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/cache.py +10 -1
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/db_pool.py +3 -1
- agentflow_runtime-1.3.0/src/serving/duckdb_connection.py +72 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/semantic_layer/entity_type_registry.py +3 -1
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/semantic_layer/query/engine.py +2 -1
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/semantic_layer/search_index.py +2 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/semantic_layer/sql_guard.py +25 -0
- agentflow_runtime-1.1.0/PKG-INFO +0 -55
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/LICENSE +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/requirements.txt +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/__init__.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/constants.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/ingestion/__init__.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/ingestion/cdc/__init__.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/ingestion/cdc/normalizer.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/ingestion/connectors/__init__.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/ingestion/connectors/mysql_cdc.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/ingestion/connectors/postgres_cdc.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/ingestion/producers/__init__.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/ingestion/producers/event_producer.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/ingestion/schemas/__init__.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/ingestion/schemas/events.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/ingestion/tenant_router.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/logger.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/orchestration/__init__.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/orchestration/dags/__init__.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/orchestration/dags/daily_batch.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/processing/__init__.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/processing/event_replayer.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/processing/flink_jobs/Dockerfile +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/processing/flink_jobs/__init__.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/processing/flink_jobs/checkpointing.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/processing/flink_jobs/session_aggregation.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/processing/flink_jobs/session_aggregator.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/processing/flink_jobs/stream_processor.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/processing/iceberg_sink.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/processing/local_pipeline.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/processing/tracing.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/processing/transformations/__init__.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/processing/transformations/enrichment.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/quality/__init__.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/quality/monitors/__init__.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/quality/monitors/metrics_collector.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/quality/validators/__init__.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/quality/validators/semantic_validator.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/__init__.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/__init__.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/alert_dispatcher.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/alerts/__init__.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/alerts/dispatcher.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/alerts/escalation.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/alerts/evaluator.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/alerts/history.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/auth/__init__.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/main.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/middleware/logging.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/middleware/tracing.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/rate_limiter.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/routers/__init__.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/routers/admin.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/routers/agent_query.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/routers/alerts.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/routers/batch.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/routers/contracts.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/routers/deadletter.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/routers/search.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/routers/slo.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/routers/webhooks.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/telemetry.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/templates/admin.html +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/versioning.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/api/webhook_dispatcher.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/backends/__init__.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/backends/clickhouse_backend.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/masking.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/semantic_layer/__init__.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/semantic_layer/catalog.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/semantic_layer/contract_registry.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/semantic_layer/nl_engine.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/semantic_layer/query/__init__.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/semantic_layer/query/contracts.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/semantic_layer/query/entity_queries.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/semantic_layer/query/metric_queries.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/semantic_layer/query/nl_queries.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/semantic_layer/query/sql_builder.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/semantic_layer/query/sql_guard.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/semantic_layer/query_engine.py +0 -0
- {agentflow_runtime-1.1.0 → agentflow_runtime-1.3.0}/src/serving/semantic_layer/schema_evolution.py +0 -0
|
@@ -72,6 +72,7 @@ mutants/
|
|
|
72
72
|
/rep.md
|
|
73
73
|
/more_help.md
|
|
74
74
|
/About_DE_project.md
|
|
75
|
+
/audit_*.md
|
|
75
76
|
/RELEASING.md
|
|
76
77
|
sdk/agentflow/**/__pycache__/
|
|
77
78
|
sdk/agentflow/**/*.py[cod]
|
|
@@ -84,5 +85,8 @@ integrations/agentflow_integrations/**/*.py[cod]
|
|
|
84
85
|
agentflow_bench_debug*.duckdb*
|
|
85
86
|
agentflow_demo_api.duckdb*
|
|
86
87
|
|
|
88
|
+
# Local autopilot runtime state.
|
|
89
|
+
.autopilot/
|
|
90
|
+
|
|
87
91
|
# Security scan workdir (generated by .github/workflows/security.yml safety job)
|
|
88
92
|
.tmp-security/
|
|
@@ -4,6 +4,122 @@ All notable changes to AgentFlow are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [1.3.0] - 2026-05-24
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- A04 chart hardening: `helm/kafka-connect/` now ships NetworkPolicy +
|
|
12
|
+
PodDisruptionBudget + pod/container securityContext + `/tmp` memory
|
|
13
|
+
emptyDir (parity with `helm/agentflow`). All five primitives are
|
|
14
|
+
required by `values.schema.json` and off-by-default for backwards
|
|
15
|
+
compatibility on existing clusters; production switches them on via
|
|
16
|
+
`values-staging.yaml`-style overlays. See
|
|
17
|
+
`docs/operations/cdc-production-onboarding.md` § Chart hardening
|
|
18
|
+
baseline for the production switch-on recommendations.
|
|
19
|
+
- A05 live-validation coverage extended: the
|
|
20
|
+
`tests/integration/test_helm_values_live_validation.py` suite is
|
|
21
|
+
now parametrized across both `helm/agentflow` and `helm/kafka-connect`
|
|
22
|
+
charts, running lint + install --dry-run against the live kind
|
|
23
|
+
cluster with valid + invalid value fixtures each.
|
|
24
|
+
- A05 reuse-cluster mode: `conftest.kind_cluster` honours
|
|
25
|
+
`AGENTFLOW_LIVE_REUSE_CLUSTER=1` to skip the kind create/delete cycle
|
|
26
|
+
and validate against an active `KUBECONFIG` context. Lets the
|
|
27
|
+
schema gates run against managed staging clusters (EKS/GKE/AKS)
|
|
28
|
+
without provisioning a throwaway kind cluster.
|
|
29
|
+
|
|
30
|
+
### Changed
|
|
31
|
+
|
|
32
|
+
- A03 CI hardware-gap acceptance: Load Test gates raised to 1.3x the
|
|
33
|
+
2026-04-25 CI baseline (entity p99 750 → 900 ms, query/batch
|
|
34
|
+
1000 → 1200 ms). Local SLO p99 < 200 ms unchanged. Decision record
|
|
35
|
+
+ alternatives considered: `docs/perf/ci-hardware-gap-2026-05-24.md`.
|
|
36
|
+
|
|
37
|
+
### Documentation
|
|
38
|
+
|
|
39
|
+
- DV2 web-UI screencast (`docs/dv2-multi-branch/demo_webui.mp4`,
|
|
40
|
+
~60 s, 1.6 MB) — Playwright run through Argo workflow archive
|
|
41
|
+
(4× successful `dv2-refresh` runs + DAG drill-in on the latest) and
|
|
42
|
+
the MinIO `cold-tier` bucket browser (5 per-branch prefixes), with
|
|
43
|
+
a Russian TTS voice-over. Reproducer:
|
|
44
|
+
`docs/dv2-multi-branch/demo_webui.capture.py` plus the same
|
|
45
|
+
edge-tts + ffmpeg pipeline as the terminal cast.
|
|
46
|
+
- DV2 dbt docs screencast (`docs/dv2-multi-branch/demo_dbt_docs.mp4`,
|
|
47
|
+
~55 s, 1.7 MB) — Playwright walk-through of the auto-generated dbt
|
|
48
|
+
docs site: project tree → `customer_360` columns/description →
|
|
49
|
+
`branch_pnl` with the `rv.bv_order_canonical → branch_pnl` lineage
|
|
50
|
+
graph → `returns_velocity` with lineage. Companion Pod manifest
|
|
51
|
+
`infrastructure/dv2/dbt/dbt-docs-pod.yaml` runs `dbt docs generate`
|
|
52
|
+
+ `dbt docs serve --port 8080 --host 0.0.0.0` against the in-cluster
|
|
53
|
+
ClickHouse. Reproducer: `demo_dbt_docs.capture.py` plus the same
|
|
54
|
+
TTS pipeline.
|
|
55
|
+
- Cross-link `docs/plans/2026-04-debezium-kafka-connect-deployment-plan.md`
|
|
56
|
+
to `docs/operations/cdc-production-onboarding.md` (production source
|
|
57
|
+
onboarding still blocked on decision-record fill-in) and note that
|
|
58
|
+
the DV2 demo uses ClickHouse `MaterializedPostgreSQL` as a
|
|
59
|
+
single-node alternative, not a production replacement for
|
|
60
|
+
Debezium/Kafka Connect.
|
|
61
|
+
- Exploration archive: `docs/exploration/2026-05/` collects three
|
|
62
|
+
stale May-6/7 docs-site drafts (`astro_prompt.md`, `kimi.md`,
|
|
63
|
+
`research.md`) that had been sitting untracked in the repo root.
|
|
64
|
+
|
|
65
|
+
### Fixed
|
|
66
|
+
|
|
67
|
+
- Typed `RetryPolicy.compute_delay()` intermediate `base` in
|
|
68
|
+
`sdk/agentflow/retry.py` so the function no longer returns
|
|
69
|
+
`Any`; SDK mypy is now strict-clean.
|
|
70
|
+
- CI / release / packaging lessons-learned document
|
|
71
|
+
(`docs/lessons/ci-repair-sprint-2026-04.md`) — seven concrete
|
|
72
|
+
Lesson / Apply / Concrete-trace entries covering A06 dependency
|
|
73
|
+
profiles, single-run baseline anti-pattern, FastAPI version drift,
|
|
74
|
+
PyPI namespace pre-claim, required-check self-reference deadlock,
|
|
75
|
+
fail-closed auth + `/v1/health` exemption, and the DV2 voice-over
|
|
76
|
+
pipeline.
|
|
77
|
+
|
|
78
|
+
## [1.2.0] - 2026-05-23
|
|
79
|
+
|
|
80
|
+
### Documentation
|
|
81
|
+
|
|
82
|
+
- Documented the demo-key requirement, current DuckDB/ClickHouse serving
|
|
83
|
+
story, Docker Redis dependency for the local demo, example-agent dry-run
|
|
84
|
+
flow, and local compose environment placeholders.
|
|
85
|
+
- Refreshed release, SDK, and integrations docs after the live v1.1.0
|
|
86
|
+
registry publish: README status, release-readiness handoff, SDK README,
|
|
87
|
+
integrations local-install note, and the T31 task closeout now match the
|
|
88
|
+
current post-release state.
|
|
89
|
+
- Prepared npm publishing for Trusted Publishing through GitHub Actions OIDC:
|
|
90
|
+
the TypeScript SDK publish workflow now requires npm CLI 11.5.1+ and no
|
|
91
|
+
longer passes `NPM_TOKEN` to the production `npm publish` step.
|
|
92
|
+
- Recorded the npm Trusted Publishing handoff: the new package was first
|
|
93
|
+
published as `@yuliaedomskikh/agentflow-client@1.1.0`, Trusted Publisher
|
|
94
|
+
setup succeeded for `brownjuly2003-code/agentflow` with workflow
|
|
95
|
+
`publish-npm.yml`, CLI `npm trust list` readback is complete, and future
|
|
96
|
+
recovery-code use must keep a two-code reserve through the
|
|
97
|
+
`npm-recovery-codes` skill.
|
|
98
|
+
- Documented the completed replacement npm account bootstrap for
|
|
99
|
+
`yulia.edomskikh@gmail.com`, the saved 2FA recovery-code reserve, and the
|
|
100
|
+
switch of future TypeScript SDK publishing to
|
|
101
|
+
`@yuliaedomskikh/agentflow-client`.
|
|
102
|
+
- Clarified that legacy `NPM_TOKEN` revocation remains blocked until a
|
|
103
|
+
successful trusted-publish workflow run for `@yuliaedomskikh/agentflow-client`
|
|
104
|
+
and accepted external-gate intake evidence exist.
|
|
105
|
+
- Added a project-local Pi skill at `.pi/skills/external-gate-evidence-intake`
|
|
106
|
+
for external release-gate evidence intake without adding runtime dependencies.
|
|
107
|
+
- Added a production CDC onboarding runbook that blocks real source attachment
|
|
108
|
+
until source ownership, table scope, network path, credential ownership,
|
|
109
|
+
monitoring, and rollback decisions are recorded.
|
|
110
|
+
|
|
111
|
+
### Fixed
|
|
112
|
+
|
|
113
|
+
- Treated corrupt Redis cache payloads as cache misses instead of surfacing
|
|
114
|
+
JSON decode failures to API requests.
|
|
115
|
+
- Fixed TypeScript SDK SSE parsing so a final frame with `id:` or `event:`
|
|
116
|
+
metadata before `data:` is still emitted.
|
|
117
|
+
- Made the TypeScript SDK unit-test script include all `sdk-ts/tests` files and
|
|
118
|
+
included `CHANGELOG.md` in the npm dry-run package contents.
|
|
119
|
+
- Allowed packaged SDK starter templates to include placeholder
|
|
120
|
+
`.env.example.tmpl` files while keeping the release artifact checker strict
|
|
121
|
+
for real `.env` files, API-key configs, webhook configs, and secret paths.
|
|
122
|
+
|
|
7
123
|
### Security (audit follow-up sprint 2026-04-27/28)
|
|
8
124
|
|
|
9
125
|
Two external audits delivered against `4a13d36` (Claude Opus + Codex p1–p9,
|
|
@@ -78,7 +194,10 @@ off by default (enable per cluster).
|
|
|
78
194
|
`npm ci` + `npm test` + `npm audit` before publish. New `npm-audit` job
|
|
79
195
|
added to `security.yml`. `aquasecurity/trivy-action` pinned from
|
|
80
196
|
`@master` to `0.28.0`. Safety scope now includes
|
|
81
|
-
`integrations/pyproject.toml` resolved requirements.
|
|
197
|
+
`integrations/pyproject.toml` resolved requirements. TypeScript SDK npm
|
|
198
|
+
publishing now targets `@yuliaedomskikh/agentflow-client` because npm org scope
|
|
199
|
+
`@agentflow` is already owned by another project and the previous user scope is
|
|
200
|
+
legacy.
|
|
82
201
|
|
|
83
202
|
**Vulnerable dep bumps:** `dagster>=1.13.1` (GHSA-mjw2-v2hm-wj34
|
|
84
203
|
SQL injection via dynamic partition keys), `langchain-core>=1.2.22`
|
|
@@ -147,7 +266,7 @@ so the test bypass flag does not leak across `TestClient` instances
|
|
|
147
266
|
(closes Codex review P2 on auth/middleware persistence).
|
|
148
267
|
|
|
149
268
|
**Documentation hygiene (Codex p6):** TypeScript SDK examples now
|
|
150
|
-
import from `"@agentflow
|
|
269
|
+
import from `"@yuliaedomskikh/agentflow-client"` (was `"agentflow"`); placeholder
|
|
151
270
|
`https://api.agentflow.dev` examples replaced with
|
|
152
271
|
`http://localhost:8000`; clone URL points at
|
|
153
272
|
`brownjuly2003-code/agentflow`; `docs/quality.md` marked stale;
|
|
@@ -172,6 +291,37 @@ README that maps findings to the six closing commits.
|
|
|
172
291
|
|
|
173
292
|
### Added
|
|
174
293
|
|
|
294
|
+
- **DV2.0 multi-branch demo** (merged via `ddfb863` from
|
|
295
|
+
`feat/dv2-multi-branch`, sessions 1-5). Live Data Vault 2.0
|
|
296
|
+
warehouse on a self-hosted kind cluster with ClickHouse 25.5,
|
|
297
|
+
Postgres 17, and MinIO. Five branches (MSK / SPB / EKB / DXB / ALA),
|
|
298
|
+
three source systems (1C + Bitrix24 + WMS Excel), three jurisdictions
|
|
299
|
+
(RU / UAE / KZ). Artifacts:
|
|
300
|
+
- `warehouse/agentflow/dv2/raw_vault/` — 8 hubs + 8 links + 39
|
|
301
|
+
satellites (generator + jinja template + spec.yaml).
|
|
302
|
+
- `warehouse/agentflow/dv2/business_vault/` — 5 per-branch MDM views
|
|
303
|
+
plus `bv_order_canonical` with `*_source` audit columns.
|
|
304
|
+
- `infrastructure/dv2/` — kind topology, ClickHouse / Postgres / MinIO
|
|
305
|
+
StatefulSets, dbt mart runner, Argo Workflows installer and
|
|
306
|
+
`dv2-refresh` WorkflowTemplate, cold-offload CronJob fanout (5).
|
|
307
|
+
- `warehouse/agentflow/dv2/postgres_oltp/` — pull-based PostgreSQL()
|
|
308
|
+
bridge + push-based MaterializedPostgreSQL CDC (single-DB pattern).
|
|
309
|
+
- `warehouse/agentflow/dv2/postgres_oltp/fanout/` — per-branch CDC
|
|
310
|
+
fan-out via per-database split (`ops_msk_db`, `ops_dxb_db` →
|
|
311
|
+
`oltp_cdc_msk`, `oltp_cdc_dxb`). Native workaround for the
|
|
312
|
+
`materialized_postgresql_publication_name` setting being unsupported
|
|
313
|
+
in ClickHouse 25.5; PeerDB OSS was the originally-planned route but
|
|
314
|
+
does not fit on the 8 GB demo iMac alongside kind + CH + PG + MinIO.
|
|
315
|
+
- `warehouse/agentflow/dv2/dbt/` — three mart models
|
|
316
|
+
(`customer_360`, `branch_pnl`, `returns_velocity`) with 12 data
|
|
317
|
+
tests and a k8s Job runner.
|
|
318
|
+
- `docs/dv2-multi-branch/` — architecture diagram, demo evidence
|
|
319
|
+
(15 sections), 2-minute pitch script, recording-day runbook,
|
|
320
|
+
asciinema cast (`demo.cast`, 42 s, 130×35) plus runner, plain-text
|
|
321
|
+
transcript, self-contained HTML player embed, and a voice-over
|
|
322
|
+
MP4 (`demo_voiced.mp4`, ~92 s) — cast slowed to match a Russian
|
|
323
|
+
TTS narration of the pitch (reproducible via
|
|
324
|
+
`docs/dv2-multi-branch/build/build_voiced_demo.sh`).
|
|
175
325
|
- **Debezium/Kafka Connect CDC operationalization**: local compose now
|
|
176
326
|
brings up Postgres/MySQL source databases, Kafka Connect, Debezium
|
|
177
327
|
connector registration, and raw CDC topic bootstrap for the AgentFlow
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: agentflow-runtime
|
|
3
|
+
Version: 1.3.0
|
|
4
|
+
Summary: Real-time data platform serving context to AI agents
|
|
5
|
+
License: MIT
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
Requires-Python: >=3.11
|
|
8
|
+
Requires-Dist: bcrypt<6,>=5
|
|
9
|
+
Requires-Dist: confluent-kafka<3,>=2.5
|
|
10
|
+
Requires-Dist: dagster<2,>=1.13.1
|
|
11
|
+
Requires-Dist: duckdb<2,>=1.1
|
|
12
|
+
Requires-Dist: fastapi<1,>=0.111
|
|
13
|
+
Requires-Dist: httpx<1,>=0.27
|
|
14
|
+
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc<2,>=1.41
|
|
15
|
+
Requires-Dist: opentelemetry-instrumentation-fastapi<1,>=0.62b0
|
|
16
|
+
Requires-Dist: opentelemetry-instrumentation-httpx<1,>=0.62b0
|
|
17
|
+
Requires-Dist: opentelemetry-sdk<2,>=1.41
|
|
18
|
+
Requires-Dist: pandera<1,>=0.20
|
|
19
|
+
Requires-Dist: prometheus-client<1,>=0.21
|
|
20
|
+
Requires-Dist: pyarrow<19,>=17
|
|
21
|
+
Requires-Dist: pydantic-settings<3,>=2.5
|
|
22
|
+
Requires-Dist: pydantic<3,>=2.9
|
|
23
|
+
Requires-Dist: pyyaml<7,>=6
|
|
24
|
+
Requires-Dist: sqlglot<31,>=30
|
|
25
|
+
Requires-Dist: structlog<26,>=24.4
|
|
26
|
+
Requires-Dist: uvicorn[standard]<1,>=0.30
|
|
27
|
+
Provides-Extra: cloud
|
|
28
|
+
Requires-Dist: boto3<2,>=1.35; extra == 'cloud'
|
|
29
|
+
Requires-Dist: pyiceberg[pyiceberg-core]<1,>=0.7; extra == 'cloud'
|
|
30
|
+
Provides-Extra: contract
|
|
31
|
+
Requires-Dist: schemathesis==4.10.2; extra == 'contract'
|
|
32
|
+
Provides-Extra: dev
|
|
33
|
+
Requires-Dist: bandit<2,>=1.9; extra == 'dev'
|
|
34
|
+
Requires-Dist: build<2,>=1.2; extra == 'dev'
|
|
35
|
+
Requires-Dist: hatchling<2,>=1.25; extra == 'dev'
|
|
36
|
+
Requires-Dist: hypothesis<7,>=6; extra == 'dev'
|
|
37
|
+
Requires-Dist: jsonschema<5,>=4; extra == 'dev'
|
|
38
|
+
Requires-Dist: mypy<2,>=1.11; extra == 'dev'
|
|
39
|
+
Requires-Dist: pytest-asyncio<1,>=0.24; extra == 'dev'
|
|
40
|
+
Requires-Dist: pytest-cov<6,>=5; extra == 'dev'
|
|
41
|
+
Requires-Dist: pytest<9,>=8.3; extra == 'dev'
|
|
42
|
+
Requires-Dist: ruff<1,>=0.6; extra == 'dev'
|
|
43
|
+
Requires-Dist: testcontainers[kafka]<5,>=4.9; extra == 'dev'
|
|
44
|
+
Provides-Extra: flink
|
|
45
|
+
Requires-Dist: apache-flink==1.19.1; extra == 'flink'
|
|
46
|
+
Provides-Extra: integrations
|
|
47
|
+
Requires-Dist: langchain-core<2,>=1.2.22; extra == 'integrations'
|
|
48
|
+
Requires-Dist: langchain-text-splitters<2,>=1.1.2; extra == 'integrations'
|
|
49
|
+
Requires-Dist: langchain<2,>=0.3.30; extra == 'integrations'
|
|
50
|
+
Requires-Dist: langsmith<1,>=0.7.31; extra == 'integrations'
|
|
51
|
+
Requires-Dist: llama-index-core<1,>=0.12; extra == 'integrations'
|
|
52
|
+
Provides-Extra: llm
|
|
53
|
+
Requires-Dist: anthropic<1,>=0.39; extra == 'llm'
|
|
54
|
+
Provides-Extra: load
|
|
55
|
+
Requires-Dist: locust<3,>=2.29; extra == 'load'
|
|
56
|
+
Description-Content-Type: text/markdown
|
|
57
|
+
|
|
58
|
+
# AgentFlow
|
|
59
|
+
|
|
60
|
+
> Real-time data platform for AI agents. Live entity lookups, typed contracts, dual-language SDKs, and release-gated delivery.
|
|
61
|
+
|
|
62
|
+
[](docs/release-readiness.md)
|
|
63
|
+
[](https://codecov.io/gh/brownjuly2003-code/agentflow)
|
|
64
|
+
[](pyproject.toml)
|
|
65
|
+
[](LICENSE)
|
|
66
|
+
|
|
67
|
+
## Why this exists
|
|
68
|
+
|
|
69
|
+
Most agent demos work until they have to answer from live business state. Support, ops, and merch workflows need current orders, metrics, and health signals while the conversation is happening, not a stale warehouse snapshot and not a pile of one-off service adapters.
|
|
70
|
+
|
|
71
|
+
AgentFlow turns that problem into one serving boundary:
|
|
72
|
+
|
|
73
|
+
- streaming ingestion for operational events
|
|
74
|
+
- a semantic layer that exposes entities, metrics, and query endpoints
|
|
75
|
+
- typed contracts so SDKs and callers know what shape to expect
|
|
76
|
+
- Python and TypeScript clients that speak the same API surface
|
|
77
|
+
|
|
78
|
+
## Highlights
|
|
79
|
+
|
|
80
|
+
- **Release-line gate:** 752 passed, 4 skipped on 2026-05-04; GitHub environments `staging` and `production` have required reviewers. The 2026-04-27 audit closure sprint (Codex p1–p9 + Opus) shipped six commits closing all P0/P1/P2 findings — see [docs/audits/2026-04-27/README.md](docs/audits/2026-04-27/README.md) and Release Readiness for the live status
|
|
81
|
+
- **Sub-second entity lookups in the checked-in baseline**: entity p50 `38-55 ms`, entity p99 `290-320 ms`, aggregate p50 `56 ms` at `50` users for `60s`
|
|
82
|
+
- **Historical performance remediation is documented**: the serving path moved from an original ~`26,000 ms` baseline to the current `43-55 ms` release range
|
|
83
|
+
- **Dual SDK parity** for Python and TypeScript, including retry policies, circuit breakers, batching, pagination, and contract pinning
|
|
84
|
+
- **Postgres/MySQL CDC path** through Debezium and Kafka Connect, with local compose, Helm manifests, and canonical CDC normalization
|
|
85
|
+
- **Security hardening in the hot path**: parameterized queries, `sqlglot` AST validation for NL-to-SQL, and a Bandit baseline gate for new findings only
|
|
86
|
+
- **Release workflow coverage**: chaos smoke on PRs, performance regression gate, contract drift checks, and a Terraform apply workflow with OIDC-ready auth
|
|
87
|
+
|
|
88
|
+
## Quick start
|
|
89
|
+
|
|
90
|
+
> **Upgrading from v1.0.x?** See the [v1.1 migration guide](docs/migration/v1.1.md) before installing.
|
|
91
|
+
|
|
92
|
+
Prerequisites:
|
|
93
|
+
|
|
94
|
+
- Python `3.11+`
|
|
95
|
+
- `make`
|
|
96
|
+
- Docker Compose (`make demo` starts Redis)
|
|
97
|
+
|
|
98
|
+
PowerShell 7+:
|
|
99
|
+
|
|
100
|
+
```powershell
|
|
101
|
+
git clone https://github.com/brownjuly2003-code/agentflow.git
|
|
102
|
+
cd agentflow
|
|
103
|
+
. .\scripts\setup.ps1
|
|
104
|
+
make demo
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
macOS / Linux:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
git clone https://github.com/brownjuly2003-code/agentflow.git
|
|
111
|
+
cd agentflow
|
|
112
|
+
source ./scripts/setup.sh
|
|
113
|
+
make demo
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
`make demo` seeds local data, starts Redis, and serves the API on `http://localhost:8000`. Swagger UI is available at `http://localhost:8000/docs`.
|
|
117
|
+
|
|
118
|
+
Try it:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
curl http://localhost:8000/v1/entity/order/ORD-20260404-1001
|
|
122
|
+
|
|
123
|
+
curl -X POST http://localhost:8000/v1/query \
|
|
124
|
+
-H "Content-Type: application/json" \
|
|
125
|
+
-d '{"question":"Show me top 3 products"}'
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Local demo runs without API-key enforcement unless you explicitly configure `AGENTFLOW_API_KEYS_FILE`.
|
|
129
|
+
|
|
130
|
+
## Architecture
|
|
131
|
+
|
|
132
|
+
```text
|
|
133
|
+
Event sources -> Kafka -> Flink -> Iceberg ----\
|
|
134
|
+
-> Semantic layer -> FastAPI -> Agent / SDK
|
|
135
|
+
Local demo -> local_pipeline -> DuckDB ------/
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Stack:
|
|
139
|
+
|
|
140
|
+
- **Ingestion**: Kafka producers, Debezium/Kafka Connect CDC, and a local synthetic pipeline
|
|
141
|
+
- **Processing**: Flink plus validation and enrichment stages
|
|
142
|
+
- **Storage**: Iceberg for production-shaped tables, DuckDB for the local serving path
|
|
143
|
+
- **Serving**: FastAPI, contract registry, lineage, search, and operational endpoints
|
|
144
|
+
- **Orchestration**: Dagster
|
|
145
|
+
- **IaC**: Terraform, Helm, Docker Compose, and a Fly.io demo config
|
|
146
|
+
|
|
147
|
+
See [docs/architecture.md](docs/architecture.md) for the detailed design, trade-offs, and deployment topologies.
|
|
148
|
+
|
|
149
|
+
CDC source capture is standardized on Debezium/Kafka Connect; downstream consumers use the canonical AgentFlow CDC contract defined in [ADR 0005](docs/decisions/0005-cdc-ingestion-strategy.md).
|
|
150
|
+
|
|
151
|
+
## What's inside
|
|
152
|
+
|
|
153
|
+
| Area | Files |
|
|
154
|
+
|------|-------|
|
|
155
|
+
| API core | `src/serving/api/` |
|
|
156
|
+
| Semantic layer | `src/serving/semantic_layer/` |
|
|
157
|
+
| Python SDK | `sdk/agentflow/` |
|
|
158
|
+
| TypeScript SDK | `sdk-ts/src/` |
|
|
159
|
+
| Agent integrations | `integrations/agentflow_integrations/` (LangChain, LlamaIndex, CrewAI, MCP) |
|
|
160
|
+
| Flink jobs | `src/processing/flink_jobs/` |
|
|
161
|
+
| Test suites | `tests/` |
|
|
162
|
+
| Planning trail | `docs/plans/` |
|
|
163
|
+
| Public site | `site/` |
|
|
164
|
+
| IaC | `infrastructure/terraform/`, `infrastructure/dv2/`, `helm/`, `k8s/` |
|
|
165
|
+
| DV2.0 warehouse | `warehouse/agentflow/dv2/` (hubs / links / satellites + X5 loader) |
|
|
166
|
+
|
|
167
|
+
## Documentation
|
|
168
|
+
|
|
169
|
+
- [Interactive Technical Walkthrough](docs/index.md) - MkDocs Material guide with Mermaid architecture, API, SDK, deployment, observability, and troubleshooting pages
|
|
170
|
+
- [Architecture](docs/architecture.md) - system context, data flow, failure modes
|
|
171
|
+
- [Operational Runbook](docs/runbook.md) - local stack, CDC capture, incident response, and maintenance commands
|
|
172
|
+
- [API Reference](docs/api-reference.md) - endpoint-by-endpoint examples for curl, Python, and TypeScript
|
|
173
|
+
- [Security Audit](docs/security-audit.md) - threat model, controls, and evidence
|
|
174
|
+
- [Competitive Analysis](docs/competitive-analysis.md) - positioning and trade-offs
|
|
175
|
+
- [CDC Deployment Plan](docs/plans/2026-04-debezium-kafka-connect-deployment-plan.md) - Debezium/Kafka Connect rollout decisions and implementation trail
|
|
176
|
+
- [Glossary](docs/glossary.md) - interview-ready explanations of the core technical terms
|
|
177
|
+
- [Release Readiness](docs/release-readiness.md) - checked release evidence through `v1.1.0` and current external-gate handoffs
|
|
178
|
+
- [Customer Discovery Tracker](docs/customer-discovery-tracker.md) - synthetic/modelled PMF planning surface and real-evidence gap
|
|
179
|
+
- [Pricing Validation Plan](docs/pricing-validation-plan.md) - pricing/WTP questions, evidence gates, and current real-evidence gap
|
|
180
|
+
- [AWS OIDC Setup](docs/operations/aws-oidc-setup.md) - Terraform apply readiness handoff
|
|
181
|
+
- [Immutable Retention Evidence Handoff](docs/operations/immutable-retention-evidence-handoff.md) - external audit-retention evidence checklist
|
|
182
|
+
- [Production CDC Source Onboarding](docs/operations/cdc-production-onboarding.md) - production CDC decision record and no-go gates
|
|
183
|
+
- [External Gate Evidence Intake Checklist](docs/operations/external-gate-evidence-intake.md) - required owner evidence before blocked external gates can close
|
|
184
|
+
- [Public Production-Hardware Benchmark Plan](docs/perf/public-production-hardware-benchmark-plan.md) - benchmark evidence plan for `c8g.4xlarge+`
|
|
185
|
+
- [External Pen-Test Attestation Handoff](docs/operations/external-pen-test-attestation-handoff.md) - third-party pen-test evidence checklist
|
|
186
|
+
- [Audit History](docs/audit-history.md) - baseline-to-release remediation trail
|
|
187
|
+
- [Publication Checklist](docs/publication-checklist.md) - final GitHub publishing checklist
|
|
188
|
+
- [Fly.io Demo Deploy](deploy/fly/README.md) - minimal hosted demo instructions
|
|
189
|
+
- [DV2.0 Multi-Branch Extension](docs/dv2-multi-branch/SESSION_HANDOFF.md) - Data Vault 2.0 model for mid-market e-com with 5 locations / 3 jurisdictions; [schema](docs/dv2-multi-branch/schema_dv2.md), [end-to-end flow](docs/dv2-multi-branch/architecture.md), [live demo evidence](docs/dv2-multi-branch/demo_evidence.md), [k8s manifests](infrastructure/dv2/README.md)
|
|
190
|
+
- [Contributing](CONTRIBUTING.md) - development and PR expectations
|
|
191
|
+
- [Changelog](CHANGELOG.md) - project release notes
|
|
192
|
+
|
|
193
|
+
## Development
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
# verified release slice
|
|
197
|
+
python -m pytest tests/unit tests/integration tests/sdk -q
|
|
198
|
+
|
|
199
|
+
# benchmark and regression gate
|
|
200
|
+
python scripts/run_benchmark.py
|
|
201
|
+
python scripts/check_performance.py --baseline docs/benchmark-baseline.json --current .artifacts/load/results.json --max-regress 20
|
|
202
|
+
|
|
203
|
+
# benchmark trend: [.github/perf-history.json](.github/perf-history.json) is appended on every main push;
|
|
204
|
+
# render the history locally with `make perf-plot` (writes docs/perf/history.html).
|
|
205
|
+
|
|
206
|
+
# contracts and security
|
|
207
|
+
python scripts/generate_contracts.py --check
|
|
208
|
+
bandit -r src sdk --ini .bandit --severity-level medium -f json -o .tmp/bandit-current.json
|
|
209
|
+
python scripts/bandit_diff.py .bandit-baseline.json .tmp/bandit-current.json
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## Status
|
|
213
|
+
|
|
214
|
+
**v1.1.0** is published to PyPI, npm, and GitHub.
|
|
215
|
+
The 2026-04-27 audit closure sprint landed six commits on `main`
|
|
216
|
+
that close all P0/P1/P2 findings from the Claude
|
|
217
|
+
Opus + Codex p1–p9 audits: tenant isolation across the control plane,
|
|
218
|
+
SQL guard centralization, entity allowlist enforcement on every read
|
|
219
|
+
surface, secrets scrubbed and rotated, helm `runAsNonRoot` /
|
|
220
|
+
NetworkPolicy / PodDisruptionBudget, npm lockfile + `npm audit` clean,
|
|
221
|
+
vulnerable dep bumps (`dagster>=1.13.1`, `langchain-core>=1.2.22`),
|
|
222
|
+
trivy pinned, OpenAPI drift gate, branch protection with 12 required
|
|
223
|
+
status checks, GitHub Actions environment reviewers, and Python SDK
|
|
224
|
+
alignment with the server v1 contract (F1–F10). Recent local full-suite
|
|
225
|
+
verification: `752 passed, 4 skipped` on 2026-05-04 after clarifying the
|
|
226
|
+
external-gate handoff. The post-v1.1 CDC operationalization
|
|
227
|
+
for Debezium / Kafka Connect is checked in, while production source
|
|
228
|
+
onboarding remains pending; see [docs/release-readiness.md](docs/release-readiness.md).
|
|
229
|
+
Remaining external gates are AWS OIDC role setup for real Terraform apply,
|
|
230
|
+
external immutable audit retention if claimed beyond local hash-chain evidence,
|
|
231
|
+
production CDC source onboarding, real PMF/pricing evidence, public benchmark
|
|
232
|
+
publication on production hardware, external pen-test attestation, and legacy
|
|
233
|
+
npm `NPM_TOKEN` revocation after a successful new-package trusted-publish run.
|
|
234
|
+
npm Trusted Publishing readback for the new package is complete. A project-local
|
|
235
|
+
Pi skill for evidence intake lives at `.pi/skills/external-gate-evidence-intake`.
|
|
236
|
+
|
|
237
|
+
## Screenshots
|
|
238
|
+
|
|
239
|
+
| Admin UI | API docs |
|
|
240
|
+
|----------|----------|
|
|
241
|
+
| <img src="docs/screenshots/admin-ui.png" alt="AgentFlow admin UI" width="420"> | <img src="docs/screenshots/swagger-docs.png" alt="AgentFlow API docs" width="420"> |
|
|
242
|
+
|
|
243
|
+
| Landing page | Benchmark run |
|
|
244
|
+
|--------------|---------------|
|
|
245
|
+
| <img src="docs/screenshots/landing-page.png" alt="AgentFlow landing page" width="420"> | <img src="docs/screenshots/benchmark-terminal.png" alt="AgentFlow benchmark terminal" width="420"> |
|
|
246
|
+
|
|
247
|
+
Capture notes and publish-time checks are listed in [docs/publication-checklist.md](docs/publication-checklist.md).
|
|
248
|
+
|
|
249
|
+
## License
|
|
250
|
+
|
|
251
|
+
MIT. See [LICENSE](LICENSE).
|
|
252
|
+
|
|
253
|
+
## Credits
|
|
254
|
+
|
|
255
|
+
Built as a data-engineering reference project during the `2026-04-10` -> `2026-04-20` release cycle, with the full implementation trail preserved in `docs/plans/`.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> Real-time data platform for AI agents. Live entity lookups, typed contracts, dual-language SDKs, and release-gated delivery.
|
|
4
4
|
|
|
5
|
-
[](docs/release-readiness.md)
|
|
6
6
|
[](https://codecov.io/gh/brownjuly2003-code/agentflow)
|
|
7
7
|
[](pyproject.toml)
|
|
8
8
|
[](LICENSE)
|
|
@@ -20,7 +20,7 @@ AgentFlow turns that problem into one serving boundary:
|
|
|
20
20
|
|
|
21
21
|
## Highlights
|
|
22
22
|
|
|
23
|
-
- **
|
|
23
|
+
- **Release-line gate:** 752 passed, 4 skipped on 2026-05-04; GitHub environments `staging` and `production` have required reviewers. The 2026-04-27 audit closure sprint (Codex p1–p9 + Opus) shipped six commits closing all P0/P1/P2 findings — see [docs/audits/2026-04-27/README.md](docs/audits/2026-04-27/README.md) and Release Readiness for the live status
|
|
24
24
|
- **Sub-second entity lookups in the checked-in baseline**: entity p50 `38-55 ms`, entity p99 `290-320 ms`, aggregate p50 `56 ms` at `50` users for `60s`
|
|
25
25
|
- **Historical performance remediation is documented**: the serving path moved from an original ~`26,000 ms` baseline to the current `43-55 ms` release range
|
|
26
26
|
- **Dual SDK parity** for Python and TypeScript, including retry policies, circuit breakers, batching, pagination, and contract pinning
|
|
@@ -104,10 +104,12 @@ CDC source capture is standardized on Debezium/Kafka Connect; downstream consume
|
|
|
104
104
|
| Test suites | `tests/` |
|
|
105
105
|
| Planning trail | `docs/plans/` |
|
|
106
106
|
| Public site | `site/` |
|
|
107
|
-
| IaC | `infrastructure/terraform/`, `helm/`, `k8s/` |
|
|
107
|
+
| IaC | `infrastructure/terraform/`, `infrastructure/dv2/`, `helm/`, `k8s/` |
|
|
108
|
+
| DV2.0 warehouse | `warehouse/agentflow/dv2/` (hubs / links / satellites + X5 loader) |
|
|
108
109
|
|
|
109
110
|
## Documentation
|
|
110
111
|
|
|
112
|
+
- [Interactive Technical Walkthrough](docs/index.md) - MkDocs Material guide with Mermaid architecture, API, SDK, deployment, observability, and troubleshooting pages
|
|
111
113
|
- [Architecture](docs/architecture.md) - system context, data flow, failure modes
|
|
112
114
|
- [Operational Runbook](docs/runbook.md) - local stack, CDC capture, incident response, and maintenance commands
|
|
113
115
|
- [API Reference](docs/api-reference.md) - endpoint-by-endpoint examples for curl, Python, and TypeScript
|
|
@@ -115,10 +117,19 @@ CDC source capture is standardized on Debezium/Kafka Connect; downstream consume
|
|
|
115
117
|
- [Competitive Analysis](docs/competitive-analysis.md) - positioning and trade-offs
|
|
116
118
|
- [CDC Deployment Plan](docs/plans/2026-04-debezium-kafka-connect-deployment-plan.md) - Debezium/Kafka Connect rollout decisions and implementation trail
|
|
117
119
|
- [Glossary](docs/glossary.md) - interview-ready explanations of the core technical terms
|
|
118
|
-
- [Release Readiness](docs/release-readiness.md) - checked release evidence through `v1.1.0` and current
|
|
120
|
+
- [Release Readiness](docs/release-readiness.md) - checked release evidence through `v1.1.0` and current external-gate handoffs
|
|
121
|
+
- [Customer Discovery Tracker](docs/customer-discovery-tracker.md) - synthetic/modelled PMF planning surface and real-evidence gap
|
|
122
|
+
- [Pricing Validation Plan](docs/pricing-validation-plan.md) - pricing/WTP questions, evidence gates, and current real-evidence gap
|
|
123
|
+
- [AWS OIDC Setup](docs/operations/aws-oidc-setup.md) - Terraform apply readiness handoff
|
|
124
|
+
- [Immutable Retention Evidence Handoff](docs/operations/immutable-retention-evidence-handoff.md) - external audit-retention evidence checklist
|
|
125
|
+
- [Production CDC Source Onboarding](docs/operations/cdc-production-onboarding.md) - production CDC decision record and no-go gates
|
|
126
|
+
- [External Gate Evidence Intake Checklist](docs/operations/external-gate-evidence-intake.md) - required owner evidence before blocked external gates can close
|
|
127
|
+
- [Public Production-Hardware Benchmark Plan](docs/perf/public-production-hardware-benchmark-plan.md) - benchmark evidence plan for `c8g.4xlarge+`
|
|
128
|
+
- [External Pen-Test Attestation Handoff](docs/operations/external-pen-test-attestation-handoff.md) - third-party pen-test evidence checklist
|
|
119
129
|
- [Audit History](docs/audit-history.md) - baseline-to-release remediation trail
|
|
120
130
|
- [Publication Checklist](docs/publication-checklist.md) - final GitHub publishing checklist
|
|
121
131
|
- [Fly.io Demo Deploy](deploy/fly/README.md) - minimal hosted demo instructions
|
|
132
|
+
- [DV2.0 Multi-Branch Extension](docs/dv2-multi-branch/SESSION_HANDOFF.md) - Data Vault 2.0 model for mid-market e-com with 5 locations / 3 jurisdictions; [schema](docs/dv2-multi-branch/schema_dv2.md), [end-to-end flow](docs/dv2-multi-branch/architecture.md), [live demo evidence](docs/dv2-multi-branch/demo_evidence.md), [k8s manifests](infrastructure/dv2/README.md)
|
|
122
133
|
- [Contributing](CONTRIBUTING.md) - development and PR expectations
|
|
123
134
|
- [Changelog](CHANGELOG.md) - project release notes
|
|
124
135
|
|
|
@@ -143,33 +154,38 @@ python scripts/bandit_diff.py .bandit-baseline.json .tmp/bandit-current.json
|
|
|
143
154
|
|
|
144
155
|
## Status
|
|
145
156
|
|
|
146
|
-
**v1.1.0** is
|
|
147
|
-
The 2026-04-27 audit closure sprint landed six commits on
|
|
148
|
-
|
|
157
|
+
**v1.1.0** is published to PyPI, npm, and GitHub.
|
|
158
|
+
The 2026-04-27 audit closure sprint landed six commits on `main`
|
|
159
|
+
that close all P0/P1/P2 findings from the Claude
|
|
149
160
|
Opus + Codex p1–p9 audits: tenant isolation across the control plane,
|
|
150
161
|
SQL guard centralization, entity allowlist enforcement on every read
|
|
151
162
|
surface, secrets scrubbed and rotated, helm `runAsNonRoot` /
|
|
152
163
|
NetworkPolicy / PodDisruptionBudget, npm lockfile + `npm audit` clean,
|
|
153
164
|
vulnerable dep bumps (`dagster>=1.13.1`, `langchain-core>=1.2.22`),
|
|
154
165
|
trivy pinned, OpenAPI drift gate, branch protection with 12 required
|
|
155
|
-
status checks,
|
|
156
|
-
(F1–F10).
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
[docs/release-readiness.md](docs/release-readiness.md).
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
166
|
+
status checks, GitHub Actions environment reviewers, and Python SDK
|
|
167
|
+
alignment with the server v1 contract (F1–F10). Recent local full-suite
|
|
168
|
+
verification: `752 passed, 4 skipped` on 2026-05-04 after clarifying the
|
|
169
|
+
external-gate handoff. The post-v1.1 CDC operationalization
|
|
170
|
+
for Debezium / Kafka Connect is checked in, while production source
|
|
171
|
+
onboarding remains pending; see [docs/release-readiness.md](docs/release-readiness.md).
|
|
172
|
+
Remaining external gates are AWS OIDC role setup for real Terraform apply,
|
|
173
|
+
external immutable audit retention if claimed beyond local hash-chain evidence,
|
|
174
|
+
production CDC source onboarding, real PMF/pricing evidence, public benchmark
|
|
175
|
+
publication on production hardware, external pen-test attestation, and legacy
|
|
176
|
+
npm `NPM_TOKEN` revocation after a successful new-package trusted-publish run.
|
|
177
|
+
npm Trusted Publishing readback for the new package is complete. A project-local
|
|
178
|
+
Pi skill for evidence intake lives at `.pi/skills/external-gate-evidence-intake`.
|
|
164
179
|
|
|
165
180
|
## Screenshots
|
|
166
181
|
|
|
167
|
-
|
|
182
|
+
| Admin UI | API docs |
|
|
183
|
+
|----------|----------|
|
|
184
|
+
| <img src="docs/screenshots/admin-ui.png" alt="AgentFlow admin UI" width="420"> | <img src="docs/screenshots/swagger-docs.png" alt="AgentFlow API docs" width="420"> |
|
|
168
185
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
- `benchmark-terminal.png`
|
|
186
|
+
| Landing page | Benchmark run |
|
|
187
|
+
|--------------|---------------|
|
|
188
|
+
| <img src="docs/screenshots/landing-page.png" alt="AgentFlow landing page" width="420"> | <img src="docs/screenshots/benchmark-terminal.png" alt="AgentFlow benchmark terminal" width="420"> |
|
|
173
189
|
|
|
174
190
|
Capture notes and publish-time checks are listed in [docs/publication-checklist.md](docs/publication-checklist.md).
|
|
175
191
|
|