openclaw/src/gateway/protocol/schema/agents-models-skills.ts
2026-01-20 09:24:01 +00:00

74 lines
1.9 KiB
TypeScript

import { Type } from "@sinclair/typebox";
import { NonEmptyString } from "./primitives.js";
export const ModelChoiceSchema = Type.Object(
{
id: NonEmptyString,
name: NonEmptyString,
provider: NonEmptyString,
contextWindow: Type.Optional(Type.Integer({ minimum: 1 })),
reasoning: Type.Optional(Type.Boolean()),
},
{ additionalProperties: false },
);
export const AgentSummarySchema = Type.Object(
{
id: NonEmptyString,
name: Type.Optional(NonEmptyString),
},
{ additionalProperties: false },
);
export const AgentsListParamsSchema = Type.Object({}, { additionalProperties: false });
export const AgentsListResultSchema = Type.Object(
{
defaultId: NonEmptyString,
mainKey: NonEmptyString,
scope: Type.Union([Type.Literal("per-sender"), Type.Literal("global")]),
agents: Type.Array(AgentSummarySchema),
},
{ additionalProperties: false },
);
export const ModelsListParamsSchema = Type.Object({}, { additionalProperties: false });
export const ModelsListResultSchema = Type.Object(
{
models: Type.Array(ModelChoiceSchema),
},
{ additionalProperties: false },
);
export const SkillsStatusParamsSchema = Type.Object({}, { additionalProperties: false });
export const SkillsBinsParamsSchema = Type.Object({}, { additionalProperties: false });
export const SkillsBinsResultSchema = Type.Object(
{
bins: Type.Array(NonEmptyString),
},
{ additionalProperties: false },
);
export const SkillsInstallParamsSchema = Type.Object(
{
name: NonEmptyString,
installId: NonEmptyString,
timeoutMs: Type.Optional(Type.Integer({ minimum: 1000 })),
},
{ additionalProperties: false },
);
export const SkillsUpdateParamsSchema = Type.Object(
{
skillKey: NonEmptyString,
enabled: Type.Optional(Type.Boolean()),
apiKey: Type.Optional(Type.String()),
env: Type.Optional(Type.Record(NonEmptyString, Type.String())),
},
{ additionalProperties: false },
);