repositories / dotfiles
dotfiles
bugabingas dorkfiles
owned by admin
neovim/tests/e2e/provider.ts
Rawimport { 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<void>((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');
});
}