import { readFileSync } from 'node:fs'; import { resolve } from 'node:path'; import { describe, expect, it } from 'vitest'; const root = resolve(__dirname, '..'); describe('plugin API client wiring', () => { it('declares plugin API types', () => { const types = readFileSync(resolve(root, 'types/index.ts'), 'utf8'); expect(types).toContain('export interface PluginSkillBinding'); expect(types).toContain('export interface BeaverPlugin'); }); it('routes plugin API helpers to backend endpoints', () => { const api = readFileSync(resolve(root, 'lib/api.ts'), 'utf8'); expect(api).toContain('listPlugins'); expect(api).toContain('/api/plugins'); expect(api).toContain('/api/plugins/sync'); expect(api).toContain('/api/plugins/${encodeURIComponent(pluginId)}/enable'); expect(api).toContain('/api/plugins/${encodeURIComponent(pluginId)}/pause'); expect(api).toContain('/api/plugins/${encodeURIComponent(pluginId)}/resume'); expect(api).toContain('/api/plugins/${encodeURIComponent(pluginId)}/disable'); expect(api).toContain('/api/plugins/${encodeURIComponent(pluginId)}/skills/${encodeURIComponent(skillName)}/adopt'); expect(api).toContain('disable_linked_skills'); }); });