mirror of
https://github.com/anomalyco/opencode.git
synced 2026-07-23 10:45:33 -04:00
28 lines
1.2 KiB
TypeScript
28 lines
1.2 KiB
TypeScript
import { expect, test } from "bun:test"
|
|
import { Schema } from "effect"
|
|
import { Agent } from "@opencode-ai/schema/agent"
|
|
import { Model } from "@opencode-ai/schema/model"
|
|
import { Prompt } from "@opencode-ai/schema/prompt"
|
|
import { Session } from "@opencode-ai/schema/session"
|
|
import { SessionMessage } from "@opencode-ai/schema/session-message"
|
|
|
|
const Client = await import("../src/effect")
|
|
|
|
test("effect entrypoint exposes canonical Schema contracts", () => {
|
|
expect(Client.Agent).toBe(Agent)
|
|
expect(Client.Model).toBe(Model)
|
|
expect(Client.Session).toBe(Session)
|
|
})
|
|
|
|
test("shared DTO schemas construct and decode plain objects", () => {
|
|
const made = Prompt.make({ text: "hello" })
|
|
const decoded = Schema.decodeUnknownSync(Prompt)({ text: "hello" })
|
|
const content = Schema.decodeUnknownSync(SessionMessage.AssistantText)({ type: "text", id: "part_1", text: "hi" })
|
|
|
|
expect(Object.getPrototypeOf(made)).toBe(Object.prototype)
|
|
expect(Object.getPrototypeOf(decoded)).toBe(Object.prototype)
|
|
expect(Object.getPrototypeOf(content)).toBe(Object.prototype)
|
|
expect(Prompt.ast.annotations?.identifier).toBe("Prompt")
|
|
expect(SessionMessage.AssistantText.ast.annotations?.identifier).toBe("Session.Message.Assistant.Text")
|
|
})
|