← Capabilities

New capability

Agents learn—with boundaries

s-m-r-t agents can recall useful strategies, measure outcomes, develop tenant-specific personas, and propose better instructions without silently rewriting their own authority.

Agent run
RecallStrategyOutcomeMemoryHuman approval
Useful experience can be reinforced while instruction changes remain reviewable.

Recall before, capture after

LearningMemory stores scoped episodes with confidence, success and failure counts, expiry, and optional time decay. Memory is isolated by agent type, durable instance, and tenant.

InvoiceAgent.ts
typescript
class InvoiceAgent extends Agent {
  static override learning = {
    minConfidence: 0.8,
    scope: 'invoice-extraction'
  };

  async run() {
    const strategy = this.recalledMemories[0]?.value
      ?? await this.discoverStrategy();

    this.stageLearning({ key: this.documentId, value: strategy });
    if (!this.validated) this.reportLearningOutcome({ success: false });
  }
}

Personas make one agent class many durable workers

A tenant can create several AgentPersona records for one class. Each can have its own instructions, tool ceiling, principal, schedule, dispatch subscriber, and memory scope. The default persona preserves the old singleton identity for a non-destructive upgrade.

Adaptation stops at a human gate

Feedback reinforces memory automatically. A reflection runner may draft a DirectiveProposal, but it cannot activate the rewrite. A principal with personas.activate-directive must approve it, and the accepted text becomes a scoped prompt override.

Agents can delegate without widening authority

The invoke-agent tool carries an immutable principal through worker calls, intersects RBAC with agent and persona tool ceilings, limits delegation depth to three, and surfaces correlated completion events back to the conversation.