Download packages/client/test/contract-identity.test.ts from SaylorTwift/opencode: direct link, hf CLI and curl.
- Browser
- Download file 3.09 kB
-
https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/client/test/contract-identity.test.ts
- Command line
-
hf download hf://SaylorTwift/opencode/packages/client/test/contract-identity.test.ts
-
curl -L -o contract-identity.test.ts https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/client/test/contract-identity.test.ts
3.09 kB
| import { expect, test } from "bun:test" | |
| import { Schema } from "effect" | |
| import { AgentV2 } from "@opencode-ai/core/agent" | |
| import { Location as CoreLocation } from "@opencode-ai/core/location" | |
| import { ModelV2 } from "@opencode-ai/core/model" | |
| import { SessionV2 } from "@opencode-ai/core/session" | |
| import { SessionInput as CoreSessionInput } from "@opencode-ai/core/session/input" | |
| import { SessionMessage as CoreSessionMessage } from "@opencode-ai/core/session/message" | |
| import { Prompt as CorePrompt } from "@opencode-ai/core/session/prompt" | |
| import { Agent } from "@opencode-ai/schema/agent" | |
| import { Location } from "@opencode-ai/schema/location" | |
| import { Model } from "@opencode-ai/schema/model" | |
| import { Project } from "@opencode-ai/schema/project" | |
| import { Provider } from "@opencode-ai/schema/provider" | |
| import { Prompt } from "@opencode-ai/schema/prompt" | |
| import { Session } from "@opencode-ai/schema/session" | |
| import { SessionInput } from "@opencode-ai/schema/session-input" | |
| import { SessionMessage } from "@opencode-ai/schema/session-message" | |
| import { Workspace } from "@opencode-ai/schema/workspace" | |
| import { Api } from "@opencode-ai/server/api" | |
| import { compile, emitPromise } from "@opencode-ai/httpapi-codegen" | |
| import { ClientApi, endpointNames, groupNames, omitEndpoints } from "../src/contract" | |
| test("Core and Server reuse the authoritative Schema and Protocol values", () => { | |
| expect(AgentV2.ID).toBe(Agent.ID) | |
| expect(CoreLocation.Ref).toBe(Location.Ref) | |
| expect(ModelV2.Ref).toBe(Model.Ref) | |
| expect(SessionV2.Info).toBe(Session.Info) | |
| expect(CoreSessionInput.Admitted).toBe(SessionInput.Admitted) | |
| expect(CoreSessionMessage.Message).toBe(SessionMessage.Message) | |
| expect(CorePrompt).toBe(Prompt) | |
| expect(Api.groups["server.session"].identifier).toBe("server.session") | |
| expect(Object.keys(ClientApi.groups)).toEqual(Object.keys(Api.groups)) | |
| expect(Session.ID.create()).toStartWith("ses_") | |
| expect(Project.ID.global).toBe("global") | |
| expect(Provider.ID.anthropic).toBe("anthropic") | |
| expect(Workspace.ID.create()).toStartWith("wrk_") | |
| }) | |
| test("client and Server contracts generate identically", () => { | |
| const server = compile(Api, { groupNames, endpointNames, omitEndpoints }) | |
| const client = compile(ClientApi, { groupNames, endpointNames, omitEndpoints }) | |
| expect(emitPromise(client)).toEqual(emitPromise(server)) | |
| }) | |
| 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") | |
| expect(CoreSessionMessage.AssistantText).toBe(SessionMessage.AssistantText) | |
| }) | |