- name
- agentdb-causal-link
- description
- Record a causal relationship between two memories in AgentDB — "X caused Y", "A supersedes B", "patch-foo depends-on patch-bar". Use when the user is documenting cause/effect, dependencies, supersessions, or after-action analysis.
# Link Causally
Add a typed edge between two memories so future queries can traverse cause→effect, supersedes, depends-on, etc.
## When to use
- User says "X caused Y", "this depends on that", "this supersedes the old one"
- Post-incident analysis — recording what led to what
- Building a knowledge graph from a sequence of episodes
- ADR housekeeping — `supersedes` / `amends` / `related-to` between architecture decisions
## API
```
agentdb_causal_edge(
fromMemoryId: <id>
fromMemoryType: 'episode' | 'pattern' | 'skill' | 'adr'
toMemoryId: <id>
toMemoryType: <same set>
relation: 'caused' | 'supersedes' | 'depends-on' | 'related-to' | <custom>
similarity?: 0..1
uplift?: -1..1 // signed reward delta
confidence?: 0..1
metadata?: { evidenceCount, sourceTimestamp, ... }
)
```
`uplift` is the secret sauce. Positive uplift = the causal link improved outcomes; negative = it hurt. The `agentdb-investigator` agent (this plugin) walks edges weighted by uplift × confidence to find root causes.
## Cascade-aware delete
The agentdb 3.0.0-alpha.13 release added `cascade: true` semantics:
- `agentdb_causal_edge_delete(edgeId)` — single edge
- `agentdb_causal_node_delete(nodeId, { cascade: true })` — node + all incident edges; returns deletedEdges count
- `agentdb_edges_by_endpoints(from, to, label?)` — bulk delete by tuple
Use cascade when removing an obsolete ADR or decommissioning an agent — leaving dangling edges in the graph poisons future traversals.
## Don't
- Don't link memories without confidence < 0.5 unless you mark them as conjectures. Low-confidence edges accumulate and degrade `agentdb_causal_explain` quality.
- Don't use `caused` for correlation — reserve it for genuinely causal evidence (controlled change, repeated observation, expert confirmation).
- Don't forget the inverse direction. "A supersedes B" implies B is no longer authoritative; tag B's hierarchical entry as deprecated in the same operation.
View on GitHub