AI Memory & Providers
Errors from the memories: block (vector memory) and the providers: block (model backends).
13 error codes in this section.
AI Memory
VERR_MEMORY_MISSING_SOURCE_EVENTS
Memory missing source_events. A memories: entry has no source_events list — the compiler doesn’t know which events populate this memory.
Impact: Compilation aborts; the memory would never be written to.
memories:
customer_memory:
partition_by: user_idmemories:
customer_memory:
source_events: [SUPPORT_TICKET_RESOLVED]
partition_by: user_idVERR_MEMORY_EVENT_NOT_FOUND
Memory references unknown event. A memory’s source_events entry doesn’t match any key under the top-level events: block.
Impact: Compilation aborts — the memory would listen for an event that’s never emitted.
memories:
customer_memory:
source_events: [SUPPORT_TICKET_RESOLVD] # typomemories:
customer_memory:
source_events: [SUPPORT_TICKET_RESOLVED]VERR_MEMORY_MISSING_PARTITION_BY
Memory missing partition_by. A memories: entry has no partition_by field — the compiler doesn’t know which payload field scopes memories to a subject (e.g. per user, per account).
Impact: Compilation aborts; memory retrieval would have no way to scope results to the right subject.
memories:
customer_memory:
source_events: [SUPPORT_TICKET_RESOLVED]memories:
customer_memory:
source_events: [SUPPORT_TICKET_RESOLVED]
partition_by: user_idVERR_MEMORY_PARTITION_FIELD_MISSING
partition_by field not on event payload. The field named in partition_by doesn’t exist in the payload of one of the memory’s source_events.
Impact: Compilation aborts — the memory can’t be partitioned by a field the event doesn’t carry.
events:
SUPPORT_TICKET_RESOLVED:
payload:
ticket_id: string
memories:
customer_memory:
source_events: [SUPPORT_TICKET_RESOLVED]
partition_by: user_id # not in this event's payloadevents:
SUPPORT_TICKET_RESOLVED:
payload:
ticket_id: string
user_id: string
memories:
customer_memory:
partition_by: user_idVERR_MEMORY_MISSING_EMBEDDING
Memory missing embedding configuration. A memories: entry has no embedding: block, or the block is present but declares neither provider nor executor.
Impact: Compilation aborts; the memory has no model to generate vectors for semantic retrieval.
memories:
customer_memory:
source_events: [SUPPORT_TICKET_RESOLVED]
partition_by: user_id
# embedding missingmemories:
customer_memory:
source_events: [SUPPORT_TICKET_RESOLVED]
partition_by: user_id
embedding:
provider: embeddings
content: "Ticket {{ event.payload.ticket_id }} resolved"VERR_MEMORY_MISSING_CONTENT
Memory missing content template. A memories: entry has no content field — the compiler doesn’t know what text to embed and store for each source event.
Impact: Compilation aborts; there’s nothing to generate an embedding from.
memories:
customer_memory:
embedding:
provider: embeddings
# content missingmemories:
customer_memory:
embedding:
provider: embeddings
content: "Ticket {{ event.payload.ticket_id }} resolved for {{ event.entity_id }}"VERR_MEMORY_UNKNOWN_VARIABLE
Memory content references unknown variable. A {{ variable }} in a memory’s content template isn’t event.type, event.entity_id, event.ts, or an event.<field> / event.payload.<field> that exists on one of its source_events.
Impact: Compilation aborts — the placeholder could never resolve to a real value.
memories:
customer_memory:
source_events: [SUPPORT_TICKET_RESOLVED]
content: "{{ event.payload.ticket_number }}" # not on this event's payloadmemories:
customer_memory:
source_events: [SUPPORT_TICKET_RESOLVED]
content: "{{ event.payload.ticket_id }}"AI Providers
VERR_PROVIDER_DUPLICATE
Duplicate provider name. Two providers: entries share the same name. Since providers: parses as a YAML map, this is a defensive check — a hand-merged or generated spec is the most likely cause.
Impact: Compilation aborts to avoid ambiguous provider resolution.
# Two spec fragments merged into one providers: map
# both declaring 'reasoning'# Ensure provider names are unique across every merged DSL fragment.VERR_PROVIDER_MISSING_EXECUTOR
Provider missing executor. A providers: entry has no executor field — the compiler doesn’t know which model backend implementation to use.
Impact: Compilation aborts; no further checks run on this provider until executor is set.
providers:
reasoning:
model: gpt-4oproviders:
reasoning:
executor: openai
model: gpt-4oVERR_PROVIDER_UNKNOWN_EXECUTOR
Provider references unknown executor. A provider’s executor value isn’t one of the known executors: mock, openai, anthropic, or ollama.
Impact: Compilation aborts — the runtime has no client implementation for an unrecognized executor.
providers:
reasoning:
executor: azure_openai # not a known executorproviders:
reasoning:
executor: openaiVERR_PROVIDER_MISSING_MODEL
Provider missing model. A provider’s executor requires a model (openai, anthropic, ollama all do; mock does not), but model is blank.
Impact: Compilation aborts — the runtime has no model identifier to send in the API call.
providers:
reasoning:
executor: openai
# model missingproviders:
reasoning:
executor: openai
model: gpt-4oVERR_PROVIDER_INVALID_TIMEOUT
Provider has invalid timeout. A provider’s timeout value isn’t a recognized duration format — a bare integer (milliseconds), or a number suffixed with ms, s, or m.
Impact: Compilation aborts — the runtime can’t parse the timeout into a duration.
providers:
reasoning:
executor: openai
model: gpt-4o
timeout: 30 seconds # not a valid duration formatproviders:
reasoning:
executor: openai
model: gpt-4o
timeout: 30sVERR_PROVIDER_NOT_FOUND
Reference to unknown provider. A decision’s provider field, or a memory’s embedding.provider field, names a provider that doesn’t exist under the top-level providers: block.
Impact: Compilation aborts — the decision or memory has nothing to send its model call to.
decisions:
moderate_comment:
provider: reasonin # typo — not declared under providers:decisions:
moderate_comment:
provider: reasoning # matches providers.reasoning