UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

48 lines (47 loc) 1.99 kB
/** * MockProvider — Smart Mock AI 提供商 * * 不发网络请求,但根据 prompt 内容智能匹配场景,返回符合格式的仿真响应。 * 用于让用户在没有 API Key 的情况下体验 AutoSnippet 完整工作流。 * * 智能匹配场景: * 1. probe / ping → "pong" * 2. 重复度检测 (DUPLICATE/SIMILAR/UNIQUE) → "UNIQUE" * 3. 对话压缩总结 → 从消息中提取关键词 * 4. 代码上下文化 (<chunk>) → 从代码提取函数/类名 * 5. 候选润色 (JSON 9字段) → 原样回传输入字段 * 6. 维度摘要 (dimensionDigest) → 模板化 JSON * 7. 风格检查建议 → 空数组 * 8. Agent 路由分类 → functionCall classify_intent * 9. 通用 fallback → 语义化占位文本 * * 模拟延迟: 50-200ms 随机延迟,营造 "AI 思考" 体验 */ import { AiProvider, type AiProviderConfig, type ChatContext, type ChatWithToolsOptions, type ChatWithToolsResult, type StructuredOutputOptions } from '../AiProvider.js'; interface MockResponses { chat?: string; summarize?: Record<string, unknown>; [key: string]: unknown; } interface CallLogEntry { method: string; [key: string]: unknown; } export declare class MockProvider extends AiProvider { callLog: CallLogEntry[]; responses: MockResponses; constructor(config?: AiProviderConfig & { responses?: MockResponses; }); chat(prompt: string, context?: ChatContext): Promise<string>; chatWithTools(prompt: string, opts?: ChatWithToolsOptions): Promise<ChatWithToolsResult>; chatWithStructuredOutput(prompt: string, opts?: StructuredOutputOptions): Promise<unknown>; summarize(code: string): Promise<Record<string, unknown>>; embed(text: string | string[]): Promise<number[] | number[][]>; probe(): Promise<boolean>; /** 获取调用日志(测试断言用) */ getCalls(): CallLogEntry[]; /** 重置调用记录 */ reset(): void; } export default MockProvider;