Skip to main content

executeRetrieval

codebolt.persistentMemory.executeRetrieval(memoryId: string, intent: PipelineExecutionIntent): Promise<PersistentMemoryExecuteResponse>

Executes a persistent memory retrieval pipeline with context and returns formatted results.

Parameters

  • memoryId (string): The ID of the persistent memory to execute.
  • intent (PipelineExecutionIntent): Execution intent with context and query information.

Returns

  • Promise<[PersistentMemoryExecuteResponse](/docs/reference/type-reference/codeboltjs/interfaces/PersistentMemoryExecuteResponse)>: A promise that resolves to retrieval results.

Examples

Basic Retrieval Execution

import codebolt from '@codebolt/codeboltjs';

// Wait for connection
await codebolt.waitForReady();

// Execute a simple retrieval
const result = await codebolt.persistentMemory.executeRetrieval(
'memory-123',
{
query: 'How do I implement authentication?'
}
);

if (result.success) {
console.log('✅ Retrieval successful');
console.log('Results:', result.data.result);
}

Execute with Context

import codebolt from '@codebolt/codeboltjs';

await codebolt.waitForReady();

// Execute with detailed context
const result = await codebolt.persistentMemory.executeRetrieval(
'memory-123',
{
query: 'Best practices for API design',
context: {
project: 'E-commerce Platform',
stack: ['Node.js', 'Express', 'MongoDB'],
stage: 'development'
},
action: 'code_review'
}
);

console.log('Retrieval with context:', result.data.result);

Execute with Keywords

import codebolt from '@codebolt/codeboltjs';

await codebolt.waitForReady();

// Execute with keywords for better matching
const result = await codebolt.persistentMemory.executeRetrieval(
'memory-123',
{
query: 'Database optimization techniques',
keywords: ['performance', 'mongodb', 'indexing', 'query']
}
);

console.log('Retrieval results:', result.data.result);

Execute for Code Context

import codebolt from '@codebolt/codeboltjs';

await codebolt.waitForReady();

// Retrieve code-related context
const result = await codebolt.persistentMemory.executeRetrieval(
'code-memory-123',
{
query: 'Error handling in async functions',
context: {
language: 'typescript',
framework: 'express',
file: 'auth.ts'
},
action: 'code_assist'
}
);

if (result.success) {
console.log('Code context retrieved');
// Use the result to provide intelligent assistance
}

Execute with Multiple Context Variables

import codebolt from '@codebolt/codeboltjs';

await codebolt.waitForReady();

// Complex execution with extensive context
const result = await codebolt.persistentMemory.executeRetrieval(
'memory-123',
{
query: 'User onboarding flow',
context: {
user_id: 'user-456',
current_step: 'verification',
previous_steps: ['signup', 'email_confirmation'],
user_segment: 'enterprise',
a_b_test_group: 'B'
},
action: 'user_guidance',
keywords: ['onboarding', 'verification', 'enterprise']
}
);

console.log('Guidance retrieved:', result.data.result);

Handle Retrieval Errors

import codebolt from '@codebolt/codeboltjs';

async function executeRetrievalWithErrorHandling(memoryId, intent) {
await codebolt.waitForReady();

try {
// Validate input
if (!memoryId) {
throw new Error('Memory ID is required');
}

if (!intent.query && !intent.keywords) {
throw new Error('Query or keywords are required');
}

const result = await codebolt.persistentMemory.executeRetrieval(
memoryId,
intent
);

if (!result.success) {
console.error('Retrieval failed:', result.error);
return null;
}

if (!result.data.result.success) {
console.error('Execution error:', result.data.result.error);
return null;
}

console.log(`✅ Retrieval completed in ${result.data.result.executionTime}ms`);
return result.data.result;

} catch (error) {
console.error('Error executing retrieval:', error.message);
return null;
}
}

// Usage
const result = await executeRetrievalWithErrorHandling(
'memory-123',
{
query: 'How to handle errors in TypeScript?',
context: { language: 'typescript' }
}
);

if (result) {
console.log('Retrieved data:', result.data);
}

Execute Multiple Retrievals in Parallel

import codebolt from '@codebolt/codeboltjs';

async function executeMultipleRetrievals(memoryId, queries) {
await codebolt.waitForReady();

const retrievals = queries.map(query =>
codebolt.persistentMemory.executeRetrieval(memoryId, { query })
);

const results = await Promise.all(retrievals);

return results.map((result, index) => ({
query: queries[index],
success: result.success,
data: result.data?.result
}));
}

// Usage
const results = await executeMultipleRetrievals(
'memory-123',
[
'How to implement caching?',
'Database connection pooling',
'API rate limiting strategies'
]
);

results.forEach(r => {
console.log(`${r.query}: ${r.success ? '✅' : '❌'}`);
});

Response Structure

{
type: 'persistentMemory.executeRetrieval',
success: boolean,
data?: {
result: {
success: boolean,
data?: any,
error?: string,
executionTime?: number
}
},
message?: string,
error?: string,
timestamp: string,
requestId: string
}

Common Use Cases

1. Context Provisioning Provide relevant context to agents for task completion.

2. Knowledge Retrieval Retrieve stored knowledge and information.

3. Decision Support Support decision-making with historical data.

4. User Assistance Provide intelligent assistance based on stored information.

5. Data Enrichment Enrich current context with relevant historical data.

Notes

  • Query and keywords are used for search relevance
  • Context variables are substituted into query templates
  • Action can influence how results are formatted
  • Execution time is reported in milliseconds
  • Results are formatted according to the contribution config
  • Empty results are possible if no matches are found
  • Consider cache frequently used queries for performance
  • The intent structure is flexible and extensible
  • Error handling should account for both API and execution errors