Skip to content

Graphorin API reference v0.15.1


Graphorin API reference / @graphorin/memory / / ProceduralMemory

Class: ProceduralMemory

Defined in: packages/memory/src/tiers/procedural-memory.ts:101

Stable

ProceduralMemory - standing orders activated when the agent's current context matches the rule's predicate. The activation rules are deterministic so the agent runtime + ContextEngine can render the active set into the system prompt every step.

ProceduralMemory.induce distils a reusable workflow from a successful agent trajectory and stores it quarantined (it must not drive actions until validated). Quarantined procedures are excluded from ProceduralMemory.activate but remain visible to ProceduralMemory.list.

Constructors

Constructor

ts
new ProceduralMemory(args): ProceduralMemory;

Defined in: packages/memory/src/tiers/procedural-memory.ts:112

Parameters

ParameterType
args{ inducer?: | WorkflowInducer | null; promoteAfterSuccesses?: number | null; store: MemoryStoreAdapter; tracer: Tracer; }
args.inducer?| WorkflowInducer | null
args.promoteAfterSuccesses?number | null
args.storeMemoryStoreAdapter
args.tracerTracer

Returns

ProceduralMemory

Methods

activate()

ts
activate(scope, context?): Promise<readonly Rule[]>;

Defined in: packages/memory/src/tiers/procedural-memory.ts:334

Return the rules active under context. Rules without a condition are always active; the bundled predicate vocabulary supports the literals 'always', 'topic=<topic>', and 'tag=<tag>'. Anything outside that grammar is treated as always-active so callers do not silently lose rules.

Quarantined procedures are excluded: an induced procedure must not drive actions until validated, so activation - which feeds the system prompt - never surfaces it.

Parameters

ParameterType
scopeSessionScope
contextRuleActivationContext

Returns

Promise&lt;readonly Rule[]&gt;


define()

ts
define(scope, input): Promise<Rule>;

Defined in: packages/memory/src/tiers/procedural-memory.ts:192

Persist a rule. Returns the stored record.

Parameters

ParameterType
scopeSessionScope
inputRuleInput

Returns

Promise&lt;Rule&gt;


induce()

ts
induce(
   scope, 
   trajectory, 
opts?): Promise<Rule | null>;

Defined in: packages/memory/src/tiers/procedural-memory.ts:235

Induce a reusable procedure from a successful agent trajectory and store it quarantined + provenance: 'induction'. Returns the stored Rule, or null when the trajectory was unsuccessful / empty or the inducer produced nothing inducible.

Throws ProcedureInductionNotConfiguredError when no inducer was configured (createMemory({ procedureInduction: { provider } })).

Parameters

ParameterType
scopeSessionScope
trajectoryTrajectory
optsInduceOptions

Returns

Promise&lt;Rule | null&gt;


induceFromRun()

ts
induceFromRun(
   scope, 
   run, 
opts?): Promise<Rule | null>;

Defined in: packages/memory/src/tiers/procedural-memory.ts:293

Convenience over induce: distil the Trajectory from a completed RunState (the agent's already-emitted run state) and induce a procedure. The success signal is status === 'completed'.

Parameters

ParameterType
scopeSessionScope
runRunState
optsInduceOptions

Returns

Promise&lt;Rule | null&gt;


list()

ts
list(scope): Promise<readonly Rule[]>;

Defined in: packages/memory/src/tiers/procedural-memory.ts:315

List every active (non-deleted) rule for the supplied scope.

Parameters

ParameterType
scopeSessionScope

Returns

Promise&lt;readonly Rule[]&gt;


recordOutcome()

ts
recordOutcome(
   scope, 
   ruleId, 
   succeeded): Promise<{
  promoted: boolean;
  refused: boolean;
  successCount: number;
}>;

Defined in: packages/memory/src/tiers/procedural-memory.ts:142

Stable

Record the outcome of one demonstrated reuse of a procedure. A success increments the rule's persistent successCount; when procedurePromotion.afterSuccesses is configured and a QUARANTINED procedure reaches the threshold it is promoted through validate - the injection gate still applies, so a flagged text refuses promotion (surfaced as refused: true) no matter how many successes accumulate. Failures are observed but not persisted (no negative counter yet).

Callers decide what "success" means - typically checkSuccessCriteria(...) over the procedure's stored successCriteria, or an operator's judgement.

Parameters

ParameterType
scopeSessionScope
ruleIdstring
succeededboolean

Returns

Promise<{ promoted: boolean; refused: boolean; successCount: number; }>


remove()

ts
remove(
   scope, 
   ruleId, 
reason?): Promise<void>;

Defined in: packages/memory/src/tiers/procedural-memory.ts:302

Soft-delete a rule.

Parameters

ParameterType
scopeSessionScope
ruleIdstring
reason?string

Returns

Promise&lt;void&gt;


ts
search(
   scope, 
   query, 
opts?): Promise<readonly MemoryHit<Rule>[]>;

Defined in: packages/memory/src/tiers/procedural-memory.ts:360

Runbook content search: "find the procedure for this task" - lexical recall over rule text, as opposed to predicate activate. Returns whole validated procedures (the full Rule incl. steps / variables / success criteria) so a match can be followed file-style rather than re-synthesized from fragments. Quarantined (unvalidated induced) procedures are excluded - they must not drive actions - unless the inspector opts in via includeQuarantined.

Uses the storage adapter's FTS surface when available (procedural.search, the default @graphorin/store-sqlite adapter implements it via migration 028); otherwise degrades to an offline in-memory token-overlap scan over list, so custom adapters keep working without the index.

Parameters

ParameterType
scopeSessionScope
querystring
opts{ includeQuarantined?: boolean; topK?: number; }
opts.includeQuarantined?boolean
opts.topK?number

Returns

Promise<readonly MemoryHit&lt;Rule&gt;[]>


validate()

ts
validate(
   scope, 
   ruleId, 
   reason?, 
options?): Promise<void>;

Defined in: packages/memory/src/tiers/procedural-memory.ts:421

Promote a quarantined (induced) procedure into activate(). Mirrors SemanticMemory.validate: re-derives the injection verdict from the stored rule text and refuses promotion of an injection-flagged procedure unless an operator passes { force: true }. Induced procedures drive actions, so this gate matters most for them.

Parameters

ParameterType
scopeSessionScope
ruleIdstring
reason?string
options?{ force?: boolean; }
options.force?boolean

Returns

Promise&lt;void&gt;