| import { Type } from "@sinclair/typebox"; |
| import { InputProvenanceSchema, NonEmptyString, SessionLabelString } from "./primitives.js"; |
|
|
| export const AgentInternalEventSchema = Type.Object( |
| { |
| type: Type.Literal("task_completion"), |
| source: Type.String({ enum: ["subagent", "cron"] }), |
| childSessionKey: Type.String(), |
| childSessionId: Type.Optional(Type.String()), |
| announceType: Type.String(), |
| taskLabel: Type.String(), |
| status: Type.String({ enum: ["ok", "timeout", "error", "unknown"] }), |
| statusLabel: Type.String(), |
| result: Type.String(), |
| statsLine: Type.Optional(Type.String()), |
| replyInstruction: Type.String(), |
| }, |
| { additionalProperties: false }, |
| ); |
|
|
| export const AgentEventSchema = Type.Object( |
| { |
| runId: NonEmptyString, |
| seq: Type.Integer({ minimum: 0 }), |
| stream: NonEmptyString, |
| ts: Type.Integer({ minimum: 0 }), |
| data: Type.Record(Type.String(), Type.Unknown()), |
| }, |
| { additionalProperties: false }, |
| ); |
|
|
| export const SendParamsSchema = Type.Object( |
| { |
| to: NonEmptyString, |
| message: Type.Optional(Type.String()), |
| mediaUrl: Type.Optional(Type.String()), |
| mediaUrls: Type.Optional(Type.Array(Type.String())), |
| gifPlayback: Type.Optional(Type.Boolean()), |
| channel: Type.Optional(Type.String()), |
| accountId: Type.Optional(Type.String()), |
| |
| agentId: Type.Optional(Type.String()), |
| |
| threadId: Type.Optional(Type.String()), |
| |
| sessionKey: Type.Optional(Type.String()), |
| idempotencyKey: NonEmptyString, |
| }, |
| { additionalProperties: false }, |
| ); |
|
|
| export const PollParamsSchema = Type.Object( |
| { |
| to: NonEmptyString, |
| question: NonEmptyString, |
| options: Type.Array(NonEmptyString, { minItems: 2, maxItems: 12 }), |
| maxSelections: Type.Optional(Type.Integer({ minimum: 1, maximum: 12 })), |
| |
| durationSeconds: Type.Optional(Type.Integer({ minimum: 1, maximum: 604_800 })), |
| durationHours: Type.Optional(Type.Integer({ minimum: 1 })), |
| |
| silent: Type.Optional(Type.Boolean()), |
| |
| isAnonymous: Type.Optional(Type.Boolean()), |
| |
| threadId: Type.Optional(Type.String()), |
| channel: Type.Optional(Type.String()), |
| accountId: Type.Optional(Type.String()), |
| idempotencyKey: NonEmptyString, |
| }, |
| { additionalProperties: false }, |
| ); |
|
|
| export const AgentParamsSchema = Type.Object( |
| { |
| message: NonEmptyString, |
| agentId: Type.Optional(NonEmptyString), |
| to: Type.Optional(Type.String()), |
| replyTo: Type.Optional(Type.String()), |
| sessionId: Type.Optional(Type.String()), |
| sessionKey: Type.Optional(Type.String()), |
| thinking: Type.Optional(Type.String()), |
| deliver: Type.Optional(Type.Boolean()), |
| attachments: Type.Optional(Type.Array(Type.Unknown())), |
| channel: Type.Optional(Type.String()), |
| replyChannel: Type.Optional(Type.String()), |
| accountId: Type.Optional(Type.String()), |
| replyAccountId: Type.Optional(Type.String()), |
| threadId: Type.Optional(Type.String()), |
| groupId: Type.Optional(Type.String()), |
| groupChannel: Type.Optional(Type.String()), |
| groupSpace: Type.Optional(Type.String()), |
| timeout: Type.Optional(Type.Integer({ minimum: 0 })), |
| bestEffortDeliver: Type.Optional(Type.Boolean()), |
| lane: Type.Optional(Type.String()), |
| extraSystemPrompt: Type.Optional(Type.String()), |
| internalEvents: Type.Optional(Type.Array(AgentInternalEventSchema)), |
| inputProvenance: Type.Optional(InputProvenanceSchema), |
| idempotencyKey: NonEmptyString, |
| label: Type.Optional(SessionLabelString), |
| }, |
| { additionalProperties: false }, |
| ); |
|
|
| export const AgentIdentityParamsSchema = Type.Object( |
| { |
| agentId: Type.Optional(NonEmptyString), |
| sessionKey: Type.Optional(Type.String()), |
| }, |
| { additionalProperties: false }, |
| ); |
|
|
| export const AgentIdentityResultSchema = Type.Object( |
| { |
| agentId: NonEmptyString, |
| name: Type.Optional(NonEmptyString), |
| avatar: Type.Optional(NonEmptyString), |
| emoji: Type.Optional(NonEmptyString), |
| }, |
| { additionalProperties: false }, |
| ); |
|
|
| export const AgentWaitParamsSchema = Type.Object( |
| { |
| runId: NonEmptyString, |
| timeoutMs: Type.Optional(Type.Integer({ minimum: 0 })), |
| }, |
| { additionalProperties: false }, |
| ); |
|
|
| export const WakeParamsSchema = Type.Object( |
| { |
| mode: Type.Union([Type.Literal("now"), Type.Literal("next-heartbeat")]), |
| text: NonEmptyString, |
| }, |
| { additionalProperties: false }, |
| ); |
|
|