contract-identity.test.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. import { WebSearch } from "@opencode-ai/schema/websearch"
  12. const Plugin = await import("../src/effect/index")
  13. const PromisePlugin = await import("../src/promise/index")
  14. const TuiPlugin = await import("../src/tui/index")
  15. test.each([
  16. ["effect", Plugin],
  17. ["promise", PromisePlugin],
  18. ])("%s entrypoint exposes its canonical Schema contracts", (_name, entrypoint) => {
  19. expect(entrypoint.Agent).toBe(Agent)
  20. expect(entrypoint.Command).toBe(Command)
  21. expect(entrypoint.Connection).toBe(Connection)
  22. expect(entrypoint.Credential).toBe(Credential)
  23. expect(entrypoint.Integration).toBe(Integration)
  24. expect(entrypoint.Model).toBe(Model)
  25. expect(entrypoint.Provider).toBe(Provider)
  26. expect(entrypoint.Reference).toBe(Reference)
  27. expect(entrypoint.Skill).toBe(Skill)
  28. expect(entrypoint.WebSearch).toBe(WebSearch)
  29. expect(Object.keys(entrypoint).sort()).toEqual([
  30. "Agent",
  31. "Command",
  32. "Connection",
  33. "Credential",
  34. "Integration",
  35. "Model",
  36. "Plugin",
  37. "Provider",
  38. "Reference",
  39. "Skill",
  40. "WebSearch",
  41. ])
  42. })
  43. test("tui entrypoint exposes the plugin definition", () => {
  44. const plugin = TuiPlugin.Plugin.define({ id: "demo", setup() {} })
  45. expect(plugin.id).toBe("demo")
  46. })