getRequiredVariables
codebolt.contextAssembly.getRequiredVariables(memoryNames: undefined): Promise<RequiredVariablesResponse>
Gets required variables for specific memory types.
Parameters
memoryNames(unknown): Array of memory type names to get variables for.
Returns
Promise<[RequiredVariablesResponse](/docs/reference/type-reference/codeboltjs/interfaces/RequiredVariablesResponse)>: A promise that resolves with required variable information.
Response Structure
{
type: 'contextAssembly.getRequiredVariables',
success: boolean,
data?: {
scope_variables: string[];
additional_variables: Record<string, {
type: string;
required: boolean;
from_memory: string;
}>;
}
}
Examples
Example 1: Get Variables for Memory Types
import codebolt from '@codebolt/codeboltjs';
await codebolt.waitForReady();
const result = await codebolt.contextAssembly.getRequiredVariables([
'episodic',
'semantic',
'procedural'
]);
console.log('Scope variables required:', result.data.scope_variables);
console.log('Additional variables:', result.data.additional_variables);
Example 2: Validate Variable Availability
async function haveAllVariables(memoryIds, availableVars) {
const result = await codebolt.contextAssembly.getRequiredVariables(memoryIds);
const requiredScope = result.data.scope_variables;
const missing = requiredScope.filter(v => !availableVars[v]);
if (missing.length > 0) {
console.error('Missing required scope variables:', missing);
return false;
}
return true;
}
const ready = await haveAllVariables(
['episodic', 'semantic'],
{ input: 'test', userId: 'user-123' }
);
if (!ready) {
console.log('Cannot assemble context - missing variables');
}
Example 3: Build Variable Requirements
async function getVariableRequirements(memoryIds) {
const result = await codebolt.contextAssembly.getRequiredVariables(memoryIds);
const requirements = {
required: result.data.scope_variables,
optional: {}
};
// Group additional variables by memory
Object.entries(result.data.additional_variables).forEach(([varName, info]) => {
requirements.optional[varName] = {
type: info.type,
required: info.required,
from: info.from_memory
};
});
return requirements;
}
const reqs = await getVariableRequirements(['episodic', 'semantic']);
console.log('Required:', reqs.required);
console.log('Optional:', reqs.optional);
Example 4: Generate Variable Template
async function generateVariableTemplate(memoryIds) {
const result = await codebolt.contextAssembly.getRequiredVariables(memoryIds);
const template = {
scope_variables: {},
additional_variables: {}
};
// Create template for scope variables
result.data.scope_variables.forEach(varName => {
template.scope_variables[varName] = `<${varName}>`;
});
// Create template for additional variables
Object.entries(result.data.additional_variables).forEach(([varName, info]) => {
template.additional_variables[varName] = {
type: info.type,
value: info.required ? `<${varName}>` : undefined,
optional: !info.required
};
});
return template;
}
const template = await generateVariableTemplate(['episodic']);
console.log('Variable template:', JSON.stringify(template, null, 2));
Example 5: Check Before Assembly
async function prepareContextAssembly(memoryIds, availableVars) {
// Get requirements
const result = await codebolt.contextAssembly.getRequiredVariables(memoryIds);
// Check scope variables
const missingScope = result.data.scope_variables.filter(
v => !availableVars[v]
);
if (missingScope.length > 0) {
throw new Error(`Missing required variables: ${missingScope.join(', ')}`);
}
// Check optional variables
const optionalVars = Object.entries(result.data.additional_variables)
.filter(([_, info]) => info.required)
.map(([varName, _]) => varName);
const missingOptional = optionalVars.filter(
v => !availableVars[v]
);
if (missingOptional.length > 0) {
console.warn('Missing optional variables:', missingOptional);
}
// Return prepared request
return {
scope_variables: availableVars,
explicit_memory: memoryIds
};
}
const request = await prepareContextAssembly(
['episodic', 'semantic'],
{ input: 'test', userId: 'user-123' }
);
// Now use the request
const context = await codebolt.contextAssembly.getContext(request);
Common Use Cases
Preparation: Gather required variables before assembly. Validation: Check if all required variables are available. Documentation: Understand what variables each memory type needs. Template Generation: Create variable templates for requests.
Notes
- Returns variables for all specified memory types combined
scope_variablesare required in the main scopeadditional_variablesmay be specific to certain memory types- Use to prepare requests before calling
getContext