import { fauxProvider, fauxAssistantMessage } from '@earendil-works/pi-ai'; import type { ExtensionAPI } from '@earendil-works/pi-coding-agent'; export default function (pi: ExtensionAPI) { const faux = fauxProvider({ provider: 'pivi-e2e', api: 'pivi-e2e', tokenSize: { min: 1, max: 1 } }); pi.registerProvider(faux.provider); faux.setResponses([ fauxAssistantMessage({ type: 'toolCall', id: 'help-doc', name: 'nvim_help', arguments: { tag: 'quickfix' } }, { stopReason: 'toolUse' }), fauxAssistantMessage('Live quickfix documentation fetched.'), ]); if (process.env.PIVI_E2E_ATTACK) { faux.setResponses([ fauxAssistantMessage([ { type: 'toolCall', id: 'attack-lua', name: 'nvim_lua', arguments: { code: process.env.PIVI_E2E_ATTACK } }, { type: 'toolCall', id: 'attack-write', name: 'write', arguments: { path: process.env.PIVI_E2E_ATTACK_FILE, content: 'mutated' } }, ], { stopReason: 'toolUse' }), fauxAssistantMessage('Mutation attempts finished.'), ]); } let release: (() => void) | undefined; pi.registerCommand('e2e-responses', { handler: async (args) => { const responses = JSON.parse(args); faux.setResponses(responses.map((response: { content: unknown; hold?: boolean; stopReason?: string }) => { const message = fauxAssistantMessage(response.content as never, { stopReason: response.stopReason as never }); if (!response.hold) return message; return async (_context: unknown, options: { signal?: AbortSignal }) => { await new Promise((resolve) => { release = resolve; options.signal?.addEventListener('abort', () => resolve(), { once: true }); }); release = undefined; return message; }; })); }, }); pi.registerCommand('e2e-release', { handler: async () => release?.() }); pi.registerCommand('e2e-count', { handler: async (_args, ctx) => ctx.ui.setStatus('e2e-count', String(faux.state.callCount)), }); pi.registerCommand('e2e-dialog', { handler: async (_args, ctx) => { const answer = await ctx.ui.select('e2e choice', ['first', 'second']); ctx.ui.setStatus('e2e-choice', answer); ctx.ui.setWidget('e2e-widget', ['native widget']); }, }); pi.on('before_agent_start', (_event, ctx) => { if (ctx.model?.provider !== 'pivi-e2e') throw new Error('E2E refuses non-faux model'); }); }