Files
paperclip/ui/src/adapters/metadata.test.ts
T
HenkDz 14d59da316 feat(adapters): external adapter plugin system with dynamic UI parser
- Plugin loader: install/reload/remove/reinstall external adapters
  from npm packages or local directories
- Plugin store persisted at ~/.paperclip/adapter-plugins.json
- Self-healing UI parser resolution with version caching
- UI: Adapter Manager page, dynamic loader, display registry
  with humanized names for unknown adapter types
- Dev watch: exclude adapter-plugins dir from tsx watcher
  to prevent mid-request server restarts during reinstall
- All consumer fallbacks use getAdapterLabel() for consistent display
- AdapterTypeDropdown uses controlled open state for proper close behavior
- Remove hermes-local from built-in UI (externalized to plugin)
- Add docs for external adapters and UI parser contract
2026-04-03 21:11:20 +01:00

33 lines
970 B
TypeScript

import { describe, expect, it } from "vitest";
import { isEnabledAdapterType, listAdapterOptions } from "./metadata";
import type { UIAdapterModule } from "./types";
const externalAdapter: UIAdapterModule = {
type: "external_test",
label: "External Test",
parseStdoutLine: () => [],
ConfigFields: () => null,
buildAdapterConfig: () => ({}),
};
describe("adapter metadata", () => {
it("treats registered external adapters as enabled by default", () => {
expect(isEnabledAdapterType("external_test")).toBe(true);
expect(
listAdapterOptions((type) => type, [externalAdapter]),
).toEqual([
{
value: "external_test",
label: "external_test",
comingSoon: false,
hidden: false,
},
]);
});
it("keeps intentionally withheld built-in adapters marked as coming soon", () => {
expect(isEnabledAdapterType("process")).toBe(false);
expect(isEnabledAdapterType("http")).toBe(false);
});
});