Communication configs: request templates, response maps, and variables
This document describes how VIBE models and resolves communication configs for External API agents.
Data model
- Global request templates:
request_templates- Core fields:
id,name,description,capability,body,created_at
- Core fields:
- Global response maps:
response_maps- Core fields:
id,name,description,capability,spec,created_at
- Core fields:
- Agent linkage tables:
agent_template_links(agent_id,template_id,is_default,linked_at)agent_response_map_links(agent_id,response_map_id,is_default,linked_at)
- Conversation fields used during execution:
default_request_template_idanddefault_response_map_id(legacy-compatible defaults)required_request_template_capabilities,required_response_map_capabilitiesvariables(JSON string)stop_on_failure
- Conversation message fields:
request_template_id,response_map_id,set_variables,metadata
- Execution session fields:
variables(JSON snapshot of accumulated variables after execution)
Selection logic
For each user message, template/map selection uses:
- Message override (
request_template_id/response_map_id) - Conversation default (
default_request_template_id/default_response_map_id) - Agent default link (
is_default = 1)
The resolver writes effective request_template and response_mapping into per-message metadata before execution.
Request templates
Template body is a JSON string with placeholders:
{{input}}- current user input (or full history in history-first mode){{conversation_history}}- formatted transcript history{{myVar}},{{a.b.c}},{{users[0].name}}- variable lookups
Response maps
spec is a JSON string. Common fields:
{
"output": "choices.0.message.content",
"intermediate_steps": "usage",
"variables": {
"responseId": "id"
},
"success_criteria": {
"type": "contains",
"value": "success"
}
}
- Path extraction supports dot and bracket notation.
variablesextracted from responses are accumulated across turns.success_criteriasupportscontains,exact_match, andjson_match.
Variable resolution behavior
Two stages are involved:
-
Script resolution stage
conversation.variablesand per-messageset_variablesare merged into message metadata (variablespayload). -
Execution stage
For each user turn, variable values beginning with$.are resolved against a context object (lastRequest,lastResponse,variables,conversation,message,request,transcript).
Final merge for each turn is:
- base: accumulated variables from prior turns
- overlay: resolved message variables
The resulting accumulated variable map is persisted to execution_sessions.variables.
Capability requirements
If a conversation declares required request/response capabilities, execution validates that the selected template/map capabilities satisfy those requirements before continuing.
Migration notes
Legacy agents.settings.request_template and agents.settings.response_mapping are migrated through database migrations into template/map tables and agent link tables, then removed from agent settings.
UI surface
- Agent detail communication section: manage and link templates/maps, set defaults, preview rendering.
- Conversation builder: define conversation variables and per-message overrides.
- Session views: include metadata showing template/map usage and resolved token/variable details.