37 lines
1.0 KiB
TypeScript
37 lines
1.0 KiB
TypeScript
import { BaseExtension, ExtensionTypeEnum } from '../extension'
|
|
import type { MCPTool, MCPToolCallResult } from '../../types'
|
|
import type { AttachmentFileInfo } from './vector-db'
|
|
|
|
export interface AttachmentInput {
|
|
path: string
|
|
name?: string
|
|
type?: string
|
|
size?: number
|
|
}
|
|
|
|
export interface IngestAttachmentsResult {
|
|
filesProcessed: number
|
|
chunksInserted: number
|
|
files: AttachmentFileInfo[]
|
|
}
|
|
|
|
export const RAG_INTERNAL_SERVER = 'rag-internal'
|
|
|
|
/**
|
|
* RAG extension base: exposes RAG tools and orchestration API.
|
|
*/
|
|
export abstract class RAGExtension extends BaseExtension {
|
|
type(): ExtensionTypeEnum | undefined {
|
|
return ExtensionTypeEnum.RAG
|
|
}
|
|
|
|
abstract getTools(): Promise<MCPTool[]>
|
|
/**
|
|
* Lightweight list of tool names for quick routing/lookup.
|
|
*/
|
|
abstract getToolNames(): Promise<string[]>
|
|
abstract callTool(toolName: string, args: Record<string, unknown>): Promise<MCPToolCallResult>
|
|
|
|
abstract ingestAttachments(threadId: string, files: AttachmentInput[]): Promise<IngestAttachmentsResult>
|
|
}
|