107 lines
3.3 KiB
TypeScript
107 lines
3.3 KiB
TypeScript
import { Type } from "@sinclair/typebox";
|
|
|
|
import { NonEmptyString, SessionLabelString } from "./primitives.js";
|
|
|
|
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: NonEmptyString,
|
|
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()),
|
|
/** Optional session key for mirroring delivered output back into the transcript. */
|
|
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 })),
|
|
durationHours: Type.Optional(Type.Integer({ minimum: 1 })),
|
|
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 })),
|
|
lane: Type.Optional(Type.String()),
|
|
extraSystemPrompt: Type.Optional(Type.String()),
|
|
idempotencyKey: NonEmptyString,
|
|
label: Type.Optional(SessionLabelString),
|
|
spawnedBy: Type.Optional(Type.String()),
|
|
},
|
|
{ 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),
|
|
},
|
|
{ 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 },
|
|
);
|