Purpose of this page: list every capability the application may ask for, and the injection rule that keeps implementations swappable.
Layer 7

services/ — interfaces

A capability behind an interface. The index.ts of a capability holds the interface only — no implementation, no re-export of one.

Persistence capabilities

storage

Owns the transaction context. A write command opens one transaction here.

event · lease · execution · plan · blob

Accept the storage transaction through their signatures, so a transition and its event append share one transaction.

Planning capabilities

revision · graph · document

Plan revisions, graph queries, YAML document reading.

readiness

Dependency readiness for node scheduling.

git

Clone, fetch, worktree and ref operations against repositories.

Effect capabilities

ids · clock · crypto · secret

ULID minting, time, AES-GCM encryption, secret material. Injected so the domain stays pure.

model-catalog · config · home-lock

Model providers, configuration loading, exclusive access to a home.

Declared, not yet implemented

agent† · verify†

Interfaces only. Their only implementation is not-implemented.

Outbound edges

FromToMeaning
interfacesimplementationsimplemented by, named only in main.ts

Rules

  1. An interface may name another service interface in its signature — for example event and lease name the storage transaction context.
  2. An implementation may never import another capability's implementation.
  3. No I prefix on an interface, no Impl suffix on an implementation.