Skip to content

[AGENT] Add metadata support to MemAgent interface #19

@ngduyanhece

Description

@ngduyanhece

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

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions