Download packages/schema/src/session-message.ts from SaylorTwift/opencode: direct link, hf CLI and curl.
- Browser
- Download file 7.97 kB
-
https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/schema/src/session-message.ts
- Command line
-
hf download hf://SaylorTwift/opencode/packages/schema/src/session-message.ts
-
curl -L -o session-message.ts https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/schema/src/session-message.ts
7.97 kB
| export * as SessionMessage from "./session-message" | |
| import { Schema } from "effect" | |
| import { optional } from "./schema" | |
| import { ProviderMetadata, ToolContent } from "./llm" | |
| import { Model } from "./model" | |
| import { FileAttachment, Prompt } from "./prompt" | |
| import { DateTimeUtcFromMillis, RelativePath, statics } from "./schema" | |
| import { SessionID } from "./session-id" | |
| import { ascending } from "./identifier" | |
| export const ID = Schema.String.check(Schema.isStartsWith("msg_")).pipe( | |
| Schema.brand("Session.Message.ID"), | |
| statics((schema) => ({ create: () => schema.make("msg_" + ascending()) })), | |
| ) | |
| export type ID = typeof ID.Type | |
| export interface UnknownError extends Schema.Schema.Type<typeof UnknownError> {} | |
| export const UnknownError = Schema.Struct({ | |
| type: Schema.Literal("unknown"), | |
| message: Schema.String, | |
| }).annotate({ identifier: "Session.Error.Unknown" }) | |
| const Base = { | |
| id: ID, | |
| metadata: Schema.Record(Schema.String, Schema.Unknown).pipe(optional), | |
| time: Schema.Struct({ created: DateTimeUtcFromMillis }), | |
| } | |
| export interface AgentSwitched extends Schema.Schema.Type<typeof AgentSwitched> {} | |
| export const AgentSwitched = Schema.Struct({ | |
| ...Base, | |
| type: Schema.Literal("agent-switched"), | |
| agent: Schema.String, | |
| }).annotate({ identifier: "Session.Message.AgentSwitched" }) | |
| export interface ModelSwitched extends Schema.Schema.Type<typeof ModelSwitched> {} | |
| export const ModelSwitched = Schema.Struct({ | |
| ...Base, | |
| type: Schema.Literal("model-switched"), | |
| model: Model.Ref, | |
| }).annotate({ identifier: "Session.Message.ModelSwitched" }) | |
| export interface User extends Schema.Schema.Type<typeof User> {} | |
| export const User = Schema.Struct({ | |
| ...Base, | |
| text: Prompt.fields.text, | |
| files: Prompt.fields.files, | |
| agents: Prompt.fields.agents, | |
| type: Schema.Literal("user"), | |
| }).annotate({ identifier: "Session.Message.User" }) | |
| export interface Synthetic extends Schema.Schema.Type<typeof Synthetic> {} | |
| export const Synthetic = Schema.Struct({ | |
| ...Base, | |
| sessionID: SessionID, | |
| text: Schema.String, | |
| type: Schema.Literal("synthetic"), | |
| }).annotate({ identifier: "Session.Message.Synthetic" }) | |
| export interface System extends Schema.Schema.Type<typeof System> {} | |
| export const System = Schema.Struct({ | |
| ...Base, | |
| type: Schema.Literal("system"), | |
| text: Schema.String, | |
| }).annotate({ identifier: "Session.Message.System" }) | |
| export interface Shell extends Schema.Schema.Type<typeof Shell> {} | |
| export const Shell = Schema.Struct({ | |
| ...Base, | |
| type: Schema.Literal("shell"), | |
| callID: Schema.String, | |
| command: Schema.String, | |
| output: Schema.String, | |
| time: Schema.Struct({ | |
| created: DateTimeUtcFromMillis, | |
| completed: DateTimeUtcFromMillis.pipe(optional), | |
| }), | |
| }).annotate({ identifier: "Session.Message.Shell" }) | |
| export interface ToolStatePending extends Schema.Schema.Type<typeof ToolStatePending> {} | |
| export const ToolStatePending = Schema.Struct({ | |
| status: Schema.Literal("pending"), | |
| input: Schema.String, | |
| }).annotate({ identifier: "Session.Message.ToolState.Pending" }) | |
| export interface ToolStateRunning extends Schema.Schema.Type<typeof ToolStateRunning> {} | |
| export const ToolStateRunning = Schema.Struct({ | |
| status: Schema.Literal("running"), | |
| input: Schema.Record(Schema.String, Schema.Unknown), | |
| structured: Schema.Record(Schema.String, Schema.Unknown), | |
| content: ToolContent.pipe(Schema.Array), | |
| }).annotate({ identifier: "Session.Message.ToolState.Running" }) | |
| export interface ToolStateCompleted extends Schema.Schema.Type<typeof ToolStateCompleted> {} | |
| export const ToolStateCompleted = Schema.Struct({ | |
| status: Schema.Literal("completed"), | |
| input: Schema.Record(Schema.String, Schema.Unknown), | |
| attachments: FileAttachment.pipe(Schema.Array, optional), | |
| content: ToolContent.pipe(Schema.Array), | |
| outputPaths: Schema.Array(Schema.String).pipe(optional), | |
| structured: Schema.Record(Schema.String, Schema.Unknown), | |
| result: Schema.Unknown.pipe(optional), | |
| }).annotate({ identifier: "Session.Message.ToolState.Completed" }) | |
| export interface ToolStateError extends Schema.Schema.Type<typeof ToolStateError> {} | |
| export const ToolStateError = Schema.Struct({ | |
| status: Schema.Literal("error"), | |
| input: Schema.Record(Schema.String, Schema.Unknown), | |
| content: ToolContent.pipe(Schema.Array), | |
| structured: Schema.Record(Schema.String, Schema.Unknown), | |
| error: UnknownError, | |
| result: Schema.Unknown.pipe(optional), | |
| }).annotate({ identifier: "Session.Message.ToolState.Error" }) | |
| export const ToolState = Schema.Union([ToolStatePending, ToolStateRunning, ToolStateCompleted, ToolStateError]).pipe( | |
| Schema.toTaggedUnion("status"), | |
| ) | |
| export type ToolState = ToolStatePending | ToolStateRunning | ToolStateCompleted | ToolStateError | |
| export interface AssistantTool extends Schema.Schema.Type<typeof AssistantTool> {} | |
| export const AssistantTool = Schema.Struct({ | |
| type: Schema.Literal("tool"), | |
| id: Schema.String, | |
| name: Schema.String, | |
| provider: Schema.Struct({ | |
| executed: Schema.Boolean, | |
| metadata: ProviderMetadata.pipe(optional), | |
| resultMetadata: ProviderMetadata.pipe(optional), | |
| }).pipe(optional), | |
| state: ToolState, | |
| time: Schema.Struct({ | |
| created: DateTimeUtcFromMillis, | |
| ran: DateTimeUtcFromMillis.pipe(optional), | |
| completed: DateTimeUtcFromMillis.pipe(optional), | |
| pruned: DateTimeUtcFromMillis.pipe(optional), | |
| }), | |
| }).annotate({ identifier: "Session.Message.Assistant.Tool" }) | |
| export interface AssistantText extends Schema.Schema.Type<typeof AssistantText> {} | |
| export const AssistantText = Schema.Struct({ | |
| type: Schema.Literal("text"), | |
| id: Schema.String, | |
| text: Schema.String, | |
| }).annotate({ identifier: "Session.Message.Assistant.Text" }) | |
| export interface AssistantReasoning extends Schema.Schema.Type<typeof AssistantReasoning> {} | |
| export const AssistantReasoning = Schema.Struct({ | |
| type: Schema.Literal("reasoning"), | |
| id: Schema.String, | |
| text: Schema.String, | |
| providerMetadata: ProviderMetadata.pipe(optional), | |
| time: Schema.Struct({ | |
| created: DateTimeUtcFromMillis, | |
| completed: DateTimeUtcFromMillis.pipe(optional), | |
| }).pipe(optional), | |
| }).annotate({ identifier: "Session.Message.Assistant.Reasoning" }) | |
| export const AssistantContent = Schema.Union([AssistantText, AssistantReasoning, AssistantTool]).pipe( | |
| Schema.toTaggedUnion("type"), | |
| ) | |
| export type AssistantContent = AssistantText | AssistantReasoning | AssistantTool | |
| export interface Assistant extends Schema.Schema.Type<typeof Assistant> {} | |
| export const Assistant = Schema.Struct({ | |
| ...Base, | |
| type: Schema.Literal("assistant"), | |
| agent: Schema.String, | |
| model: Model.Ref, | |
| content: AssistantContent.pipe(Schema.Array), | |
| snapshot: Schema.Struct({ | |
| start: Schema.String.pipe(optional), | |
| end: Schema.String.pipe(optional), | |
| files: Schema.Array(RelativePath).pipe(optional), | |
| }).pipe(optional), | |
| finish: Schema.String.pipe(optional), | |
| cost: Schema.Finite.pipe(optional), | |
| tokens: Schema.Struct({ | |
| input: Schema.Finite, | |
| output: Schema.Finite, | |
| reasoning: Schema.Finite, | |
| cache: Schema.Struct({ read: Schema.Finite, write: Schema.Finite }), | |
| }).pipe(optional), | |
| error: UnknownError.pipe(optional), | |
| time: Schema.Struct({ | |
| created: DateTimeUtcFromMillis, | |
| completed: DateTimeUtcFromMillis.pipe(optional), | |
| }), | |
| }).annotate({ identifier: "Session.Message.Assistant" }) | |
| export interface Compaction extends Schema.Schema.Type<typeof Compaction> {} | |
| export const Compaction = Schema.Struct({ | |
| type: Schema.Literal("compaction"), | |
| reason: Schema.Literals(["auto", "manual"]), | |
| summary: Schema.String, | |
| recent: Schema.String, | |
| ...Base, | |
| }).annotate({ identifier: "Session.Message.Compaction" }) | |
| export const Message = Schema.Union([ | |
| AgentSwitched, | |
| ModelSwitched, | |
| User, | |
| Synthetic, | |
| System, | |
| Shell, | |
| Assistant, | |
| Compaction, | |
| ]) | |
| .pipe(Schema.toTaggedUnion("type")) | |
| .annotate({ identifier: "Session.Message" }) | |
| export type Message = AgentSwitched | ModelSwitched | User | Synthetic | System | Shell | Assistant | Compaction | |
| export type Type = Message["type"] | |