diff options
| author | Dax Raad <[email protected]> | 2025-05-29 10:21:59 -0400 |
|---|---|---|
| committer | Dax Raad <[email protected]> | 2025-05-29 10:22:07 -0400 |
| commit | 33a831d2be1fd7bea60421287f118be0bd968650 (patch) | |
| tree | 9b82f8b958fa78c18b13284b9c7cd496dcec651e /js/src/server | |
| parent | d70201cd9365aec6c88f9794eb63f411f5040cb9 (diff) | |
| download | opencode-33a831d2be1fd7bea60421287f118be0bd968650.tar.gz opencode-33a831d2be1fd7bea60421287f118be0bd968650.zip | |
rework types
Diffstat (limited to 'js/src/server')
| -rw-r--r-- | js/src/server/message.ts | 135 | ||||
| -rw-r--r-- | js/src/server/server.ts | 10 |
2 files changed, 6 insertions, 139 deletions
diff --git a/js/src/server/message.ts b/js/src/server/message.ts deleted file mode 100644 index 4ad301a35..000000000 --- a/js/src/server/message.ts +++ /dev/null @@ -1,135 +0,0 @@ -import z from "zod"; - -const ToolCall = z - .object({ - state: z.literal("call"), - step: z.number().optional(), - toolCallId: z.string(), - toolName: z.string(), - args: z.record(z.string(), z.any()), - }) - .openapi({ - ref: "Session.Message.ToolInvocation.ToolCall", - }); - -const ToolPartialCall = z - .object({ - state: z.literal("partial-call"), - step: z.number().optional(), - toolCallId: z.string(), - toolName: z.string(), - args: z.record(z.string(), z.any()), - }) - .openapi({ - ref: "Session.Message.ToolInvocation.ToolPartialCall", - }); - -const ToolResult = z - .object({ - state: z.literal("result"), - step: z.number().optional(), - toolCallId: z.string(), - toolName: z.string(), - args: z.record(z.string(), z.any()), - result: z.string(), - }) - .openapi({ - ref: "Session.Message.ToolInvocation.ToolResult", - }); - -const ToolInvocation = z - .discriminatedUnion("state", [ToolCall, ToolPartialCall, ToolResult]) - .openapi({ - ref: "Session.Message.ToolInvocation", - }); -export type ToolInvocation = z.infer<typeof ToolInvocation>; - -const TextPart = z - .object({ - type: z.literal("text"), - text: z.string(), - }) - .openapi({ - ref: "Session.Message.Part.Text", - }); - -const ReasoningPart = z - .object({ - type: z.literal("reasoning"), - text: z.string(), - providerMetadata: z.record(z.any()).optional(), - }) - .openapi({ - ref: "Session.Message.Part.Reasoning", - }); - -const ToolInvocationPart = z - .object({ - type: z.literal("tool-invocation"), - toolInvocation: ToolInvocation, - }) - .openapi({ - ref: "Session.Message.Part.ToolInvocation", - }); - -const SourceUrlPart = z - .object({ - type: z.literal("source-url"), - sourceId: z.string(), - url: z.string(), - title: z.string().optional(), - providerMetadata: z.record(z.any()).optional(), - }) - .openapi({ - ref: "Session.Message.Part.SourceUrl", - }); - -const FilePart = z - .object({ - type: z.literal("file"), - mediaType: z.string(), - filename: z.string().optional(), - url: z.string(), - }) - .openapi({ - ref: "Session.Message.Part.File", - }); - -const StepStartPart = z - .object({ - type: z.literal("step-start"), - }) - .openapi({ - ref: "Session.Message.Part.StepStart", - }); - -const Part = z - .discriminatedUnion("type", [ - TextPart, - ReasoningPart, - ToolInvocationPart, - SourceUrlPart, - FilePart, - StepStartPart, - ]) - .openapi({ - ref: "Session.Message.Part", - }); - -export const SessionMessage = z - .object({ - id: z.string(), - role: z.enum(["system", "user", "assistant"]), - parts: z.array(Part), - metadata: z.object({ - time: z.object({ - created: z.number(), - completed: z.number().optional(), - }), - sessionID: z.string(), - tool: z.record(z.string(), z.any()), - }), - }) - .openapi({ - ref: "Session.Message", - }); diff --git a/js/src/server/server.ts b/js/src/server/server.ts index 5fb0dfe62..2f388a183 100644 --- a/js/src/server/server.ts +++ b/js/src/server/server.ts @@ -9,7 +9,7 @@ import { z } from "zod"; import "zod-openapi/extend"; import { Config } from "../app/config"; import { LLM } from "../llm/llm"; -import { SessionMessage } from "./message"; +import { Message } from "../session/message"; const SessionInfo = Session.Info.openapi({ ref: "Session.Info", @@ -40,6 +40,7 @@ export namespace Server { version: "1.0.0", description: "opencode api", }, + openapi: "3.0.0", }, }), ) @@ -120,7 +121,7 @@ export namespace Server { description: "Successfully created session", content: { "application/json": { - schema: resolver(SessionMessage.array()), + schema: resolver(Message.Info.array()), }, }, }, @@ -194,7 +195,7 @@ export namespace Server { description: "Chat with a model", content: { "application/json": { - schema: resolver(SessionMessage), + schema: resolver(Message.Info), }, }, }, @@ -206,7 +207,7 @@ export namespace Server { sessionID: z.string(), providerID: z.string(), modelID: z.string(), - parts: SessionMessage.shape.parts, + parts: Message.Part.array(), }), ), async (c) => { @@ -252,6 +253,7 @@ export namespace Server { version: "1.0.0", description: "opencode api", }, + openapi: "3.0.0", }, }); return result; |
