import { describe, expect, it } from 'vitest' import { describeExtensionCompatibility } from './piagentui-extension-compat.js' describe('extension compatibility adapter', () => { it('marks Pi packages with pi.extensions as supported', () => { expect( describeExtensionCompatibility({ name: 'pi-hud', pi: { extensions: ['./extensions/hud.ts'] }, }), ).toEqual({ kind: 'pi', status: 'supported', reason: 'Package declares Pi extension entrypoints.', capabilities: ['extensions'], }) }) it('marks OpenCode-style manifests as partial without executing them', () => { expect( describeExtensionCompatibility({ name: 'opencode-toolkit', opencode: { extensions: ['./plugin.ts'], commands: ['./commands.ts'] }, }), ).toEqual({ kind: 'opencode', status: 'partial', reason: 'OpenCode manifest detected; execution is disabled until sandbox permissions are implemented.', capabilities: ['extensions', 'commands'], }) }) it('marks packages without recognized manifests as unsupported', () => { expect(describeExtensionCompatibility({ name: 'plain-package' })).toEqual({ kind: 'unknown', status: 'unsupported', reason: 'No Pi or OpenCode extension manifest was detected.', capabilities: [], }) }) })