Feature: Agent Layer Custom Metadata Propagation
Summary
Extend MemAgent.run() to accept custom metadata and propagate it through the session layer.
Dependencies
Files to Modify
src/core/brain/memAgent/agent.ts
src/app/cli/cli.ts
Implementation Details
1. Update MemAgent.run() Method
File: src/core/brain/memAgent/agent.ts
public async run(
userInput: string,
imageDataInput?: { image: string; mimeType: string },
sessionId?: string,
stream: boolean = false,
options?: {
memoryMetadata?: Record<string, any>;
sessionOptions?: Record<string, any>;
}
): Promise<string | null>
2. Pass Metadata Through Session
File: src/core/brain/memAgent/agent.ts
const response = await session.run(
userInput,
imageDataInput,
stream,
{
memoryMetadata: options?.memoryMetadata,
contextOverrides: options?.sessionOptions
}
);
3. Update CLI Interface (Optional)
File: src/app/cli/cli.ts
Add support for metadata in CLI (for testing):
// Enhanced CLI with metadata support
if (trimmedInput.startsWith('!meta ')) {
// Parse metadata command: !meta key=value key2=value2 message
const [metaStr, ...messageParts] = trimmedInput.substring(6).split(' ');
const metadata = parseMetaString(metaStr);
const message = messageParts.join(' ');
const response = await agent.run(message, undefined, undefined, false, {
memoryMetadata: metadata
});
} else {
const response = await agent.run(trimmedInput);
}
Helper Functions
// Add utility for parsing metadata from CLI
function parseMetaString(metaStr: string): Record<string, any> {
const metadata: Record<string, any> = {};
const pairs = metaStr.split(',');
for (const pair of pairs) {
const [key, value] = pair.split('=');
if (key && value) {
metadata[key.trim()] = value.trim();
}
}
return metadata;
}
Acceptance Criteria
- MemAgent.run() accepts optional metadata parameter
- Metadata flows through to ConversationSession
- CLI supports metadata commands for testing
- Backward compatibility maintained
- Error handling for invalid metadata
Testing Requirements
- Unit tests for MemAgent metadata handling
- Integration tests end-to-end metadata flow
- CLI metadata command tests
- Error handling tests
## bring your own logics if it is necessary
Feature: Agent Layer Custom Metadata Propagation
Summary
Extend MemAgent.run() to accept custom metadata and propagate it through the session layer.
Dependencies
Files to Modify
src/core/brain/memAgent/agent.tssrc/app/cli/cli.tsImplementation Details
1. Update MemAgent.run() Method
File:
src/core/brain/memAgent/agent.ts