contract-identity.test.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { expect, test } from "bun:test"
  2. import { Agent } from "@opencode-ai/schema/agent"
  3. import { Command } from "@opencode-ai/schema/command"
  4. import { Connection } from "@opencode-ai/schema/connection"
  5. import { Credential } from "@opencode-ai/schema/credential"
  6. import { Integration } from "@opencode-ai/schema/integration"
  7. import { Model } from "@opencode-ai/schema/model"
  8. import { Provider } from "@opencode-ai/schema/provider"
  9. import { Reference } from "@opencode-ai/schema/reference"
  10. import { Skill } from "@opencode-ai/schema/skill"
  11. const Plugin = await import("../src/v2/effect/index")
  12. const PromisePlugin = await import("../src/v2/promise/index")
  13. const TuiPlugin = await import("../src/v2/tui/index")
  14. test.each([
  15. ["effect", Plugin],
  16. ["promise", PromisePlugin],
  17. ])("%s entrypoint exposes its canonical Schema contracts", (name, entrypoint) => {
  18. expect(entrypoint.Agent).toBe(Agent)
  19. expect(entrypoint.Command).toBe(Command)
  20. expect(entrypoint.Connection).toBe(Connection)
  21. expect(entrypoint.Credential).toBe(Credential)
  22. expect(entrypoint.Integration).toBe(Integration)
  23. expect(entrypoint.Model).toBe(Model)
  24. expect(entrypoint.Provider).toBe(Provider)
  25. expect(entrypoint.Reference).toBe(Reference)
  26. expect(entrypoint.Skill).toBe(Skill)
  27. expect(Object.keys(entrypoint).sort()).toEqual([
  28. "Agent",
  29. "Command",
  30. "Connection",
  31. "Credential",
  32. "Integration",
  33. "Model",
  34. "Plugin",
  35. "Provider",
  36. "Reference",
  37. "Skill",
  38. ])
  39. })
  40. test("tui entrypoint exposes the V2 plugin definition", () => {
  41. const plugin = TuiPlugin.Plugin.define({ id: "demo", setup() {} })
  42. expect(plugin.id).toBe("demo")
  43. })