Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/features/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
| **feat-009** | Observability — structured logging (JSON) + distributed tracing (OTel) + hook fan-out; vendor backends (Langfuse / Phoenix / Evidently / StatsD) slated for v0.2 | shipped (Python, OTel only) | 0.1 (framework + OTel — shipped), 0.2 (vendor backends) | both | `agentforge`, `agentforge-otel`, future `agentforge-langfuse`, `agentforge-phoenix`, `agentforge-evidently`, `agentforge-statsd` |
| **feat-026** | Application config extension — reserved `app:` namespace + typed `app_as()` accessor (Phase 1), registered typed sections validated via the module-schema engine + entry points (Phase 2), pluggable config sources / separate files via `imports:` (Phase 3). Lets agents built on AgentForge reuse the config machinery (interpolation, layering, `--resolved`, uniform validation). Reported via #86 | shipped (all 3 phases → 0.3.0) | 0.3.0 | both | `agentforge-core`, `agentforge` |
| **feat-027** | Embedded `GraphStore` — `KuzuGraphStore`, a zero-ops, file-backed, in-process graph driver (the graph analogue of the SQLite `MemoryStore`). Implements the locked `GraphStore` ABC and passes `run_graph_conformance`, so it is swap-compatible with Neo4j/SurrealDB; `path: .ckg` and the store exists — no server. Makes the whole graph + GraphRAG path testable offline. Drives the `agentforge-graph` code-graph dogfood | implemented (0.4) | 0.4 | python (TS deferred) | new `agentforge-memory-kuzu` |
| **feat-028** | Durable execution + human-in-the-loop — checkpoint-and-resume so a run survives process death (resumes at the failed step, no double-spend / double-fire), plus approval gates that suspend before irreversible tool calls and resume on human approve/deny/edit. Promotes the feat-017 record/replay seam into a checkpoint seam (`__checkpoint` claims on a `MemoryStore`); budget snapshot + idempotency-seed restore for correctness; `execution:` / `human_in_the_loop:` config blocks; additive `Agent` kwargs. The control-plane capability clouds charge for, open + vendor-neutral | proposed | 0.5 | python (TS deferred) | `agentforge-core`, `agentforge`, checkpoint driver pkg(s) |
| **feat-028** | Durable execution + human-in-the-loop — checkpoint-and-resume so a run survives process death (resumes at the failed step, no double-spend / double-fire), plus approval gates that suspend before irreversible tool calls and resume on human approve/deny/edit. Promotes the feat-017 record/replay seam into a checkpoint seam (`__checkpoint` claims on a `MemoryStore`); budget snapshot + idempotency-seed restore for correctness; `execution:` / `human_in_the_loop:` config blocks; additive `Agent` kwargs. Foundational execution infrastructure every production agent eventually needs | proposed | 0.5 | python (TS deferred) | `agentforge-core`, `agentforge`, checkpoint driver pkg(s) |

### Safety & security

Expand Down
8 changes: 5 additions & 3 deletions docs/features/feat-028-durable-execution-and-hitl.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,11 @@ durable state. Today `Agent.run` executes the entire reasoning loop inside a
single `await self._strategy.run(state)` — if that coroutine dies, the run is
gone, and there is no interception point to pause it for approval.

This is precisely the control-plane capability the managed platforms charge
for (Bedrock AgentCore, Temporal Cloud, Step Functions). Building it **open and
vendor-neutral** is the strategic white space.
It is foundational execution infrastructure: hard to implement correctly
(checkpoint consistency, exactly-once side effects, budget-correct resume,
suspend/resume control flow) and needed by essentially every production agent
— which is exactly why it belongs in the framework rather than in each agent
(see §2.5).

## 2. Why it must ship as framework

Expand Down