97 lines
3.5 KiB
TypeScript
97 lines
3.5 KiB
TypeScript
import { Type } from "@sinclair/typebox";
|
|
|
|
import { NonEmptyString } from "./primitives.js";
|
|
|
|
export const TalkModeParamsSchema = Type.Object(
|
|
{
|
|
enabled: Type.Boolean(),
|
|
phase: Type.Optional(Type.String()),
|
|
},
|
|
{ additionalProperties: false },
|
|
);
|
|
|
|
export const ChannelsStatusParamsSchema = Type.Object(
|
|
{
|
|
probe: Type.Optional(Type.Boolean()),
|
|
timeoutMs: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
},
|
|
{ additionalProperties: false },
|
|
);
|
|
|
|
// Channel docking: channels.status is intentionally schema-light so new
|
|
// channels can ship without protocol updates.
|
|
export const ChannelAccountSnapshotSchema = Type.Object(
|
|
{
|
|
accountId: NonEmptyString,
|
|
name: Type.Optional(Type.String()),
|
|
enabled: Type.Optional(Type.Boolean()),
|
|
configured: Type.Optional(Type.Boolean()),
|
|
linked: Type.Optional(Type.Boolean()),
|
|
running: Type.Optional(Type.Boolean()),
|
|
connected: Type.Optional(Type.Boolean()),
|
|
reconnectAttempts: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
lastConnectedAt: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
lastError: Type.Optional(Type.String()),
|
|
lastStartAt: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
lastStopAt: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
lastInboundAt: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
lastOutboundAt: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
lastProbeAt: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
mode: Type.Optional(Type.String()),
|
|
dmPolicy: Type.Optional(Type.String()),
|
|
allowFrom: Type.Optional(Type.Array(Type.String())),
|
|
tokenSource: Type.Optional(Type.String()),
|
|
botTokenSource: Type.Optional(Type.String()),
|
|
appTokenSource: Type.Optional(Type.String()),
|
|
baseUrl: Type.Optional(Type.String()),
|
|
allowUnmentionedGroups: Type.Optional(Type.Boolean()),
|
|
cliPath: Type.Optional(Type.Union([Type.String(), Type.Null()])),
|
|
dbPath: Type.Optional(Type.Union([Type.String(), Type.Null()])),
|
|
port: Type.Optional(Type.Union([Type.Integer({ minimum: 0 }), Type.Null()])),
|
|
probe: Type.Optional(Type.Unknown()),
|
|
audit: Type.Optional(Type.Unknown()),
|
|
application: Type.Optional(Type.Unknown()),
|
|
},
|
|
{ additionalProperties: true },
|
|
);
|
|
|
|
export const ChannelsStatusResultSchema = Type.Object(
|
|
{
|
|
ts: Type.Integer({ minimum: 0 }),
|
|
channelOrder: Type.Array(NonEmptyString),
|
|
channelLabels: Type.Record(NonEmptyString, NonEmptyString),
|
|
channelDetailLabels: Type.Optional(Type.Record(NonEmptyString, NonEmptyString)),
|
|
channelSystemImages: Type.Optional(Type.Record(NonEmptyString, NonEmptyString)),
|
|
channels: Type.Record(NonEmptyString, Type.Unknown()),
|
|
channelAccounts: Type.Record(NonEmptyString, Type.Array(ChannelAccountSnapshotSchema)),
|
|
channelDefaultAccountId: Type.Record(NonEmptyString, NonEmptyString),
|
|
},
|
|
{ additionalProperties: false },
|
|
);
|
|
|
|
export const ChannelsLogoutParamsSchema = Type.Object(
|
|
{
|
|
channel: NonEmptyString,
|
|
accountId: Type.Optional(Type.String()),
|
|
},
|
|
{ additionalProperties: false },
|
|
);
|
|
|
|
export const WebLoginStartParamsSchema = Type.Object(
|
|
{
|
|
force: Type.Optional(Type.Boolean()),
|
|
timeoutMs: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
verbose: Type.Optional(Type.Boolean()),
|
|
accountId: Type.Optional(Type.String()),
|
|
},
|
|
{ additionalProperties: false },
|
|
);
|
|
|
|
export const WebLoginWaitParamsSchema = Type.Object(
|
|
{
|
|
timeoutMs: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
accountId: Type.Optional(Type.String()),
|
|
},
|
|
{ additionalProperties: false },
|
|
);
|