aiwg
Version:
Deployment tool and support utility for AI context. Copies agents, skills, commands, rules, and behaviors into the paths each AI platform reads (Claude Code, Codex, Copilot, Cursor, Warp, OpenClaw, and 6 more) so one source of truth works across 10 platfo
1,344 lines • 154 kB
TypeScript
/**
* Zod Validation Schemas for Extension Types
*
* Provides strict runtime validation for all extension types with helpful
* error messages. Ensures extension manifests conform to the unified schema.
*
* @implements @.aiwg/requirements/use-cases/UC-003-extension-validation.md
* @architecture @.aiwg/architecture/unified-extension-schema.md
* @tests @test/unit/extensions/validation.test.ts
* @version 1.0.0
*/
import { z } from 'zod';
import type { ExtensionType } from './types.js';
/**
* Extension type discriminator
*/
export declare const ExtensionTypeSchema: z.ZodEnum<["agent", "command", "skill", "hook", "tool", "mcp-server", "framework", "addon", "template", "prompt"]>;
/**
* Extension lifecycle status
*/
export declare const ExtensionStatusSchema: z.ZodEnum<["stable", "beta", "experimental", "deprecated", "archived"]>;
/**
* Platform support level
*/
export declare const PlatformSupportSchema: z.ZodEnum<["full", "partial", "experimental", "none"]>;
/**
* Hook lifecycle events
*/
export declare const HookEventSchema: z.ZodEnum<["pre-session", "post-session", "pre-command", "post-command", "pre-agent", "post-agent", "pre-write", "post-write", "pre-bash", "post-bash"]>;
/**
* Platform compatibility matrix
*/
export declare const PlatformCompatibilitySchema: z.ZodEffects<z.ZodObject<{
claude: z.ZodOptional<z.ZodEnum<["full", "partial", "experimental", "none"]>>;
factory: z.ZodOptional<z.ZodEnum<["full", "partial", "experimental", "none"]>>;
cursor: z.ZodOptional<z.ZodEnum<["full", "partial", "experimental", "none"]>>;
copilot: z.ZodOptional<z.ZodEnum<["full", "partial", "experimental", "none"]>>;
windsurf: z.ZodOptional<z.ZodEnum<["full", "partial", "experimental", "none"]>>;
codex: z.ZodOptional<z.ZodEnum<["full", "partial", "experimental", "none"]>>;
opencode: z.ZodOptional<z.ZodEnum<["full", "partial", "experimental", "none"]>>;
generic: z.ZodOptional<z.ZodEnum<["full", "partial", "experimental", "none"]>>;
}, "strip", z.ZodTypeAny, {
claude?: "experimental" | "full" | "partial" | "none" | undefined;
cursor?: "experimental" | "full" | "partial" | "none" | undefined;
factory?: "experimental" | "full" | "partial" | "none" | undefined;
codex?: "experimental" | "full" | "partial" | "none" | undefined;
opencode?: "experimental" | "full" | "partial" | "none" | undefined;
windsurf?: "experimental" | "full" | "partial" | "none" | undefined;
copilot?: "experimental" | "full" | "partial" | "none" | undefined;
generic?: "experimental" | "full" | "partial" | "none" | undefined;
}, {
claude?: "experimental" | "full" | "partial" | "none" | undefined;
cursor?: "experimental" | "full" | "partial" | "none" | undefined;
factory?: "experimental" | "full" | "partial" | "none" | undefined;
codex?: "experimental" | "full" | "partial" | "none" | undefined;
opencode?: "experimental" | "full" | "partial" | "none" | undefined;
windsurf?: "experimental" | "full" | "partial" | "none" | undefined;
copilot?: "experimental" | "full" | "partial" | "none" | undefined;
generic?: "experimental" | "full" | "partial" | "none" | undefined;
}>, {
claude?: "experimental" | "full" | "partial" | "none" | undefined;
cursor?: "experimental" | "full" | "partial" | "none" | undefined;
factory?: "experimental" | "full" | "partial" | "none" | undefined;
codex?: "experimental" | "full" | "partial" | "none" | undefined;
opencode?: "experimental" | "full" | "partial" | "none" | undefined;
windsurf?: "experimental" | "full" | "partial" | "none" | undefined;
copilot?: "experimental" | "full" | "partial" | "none" | undefined;
generic?: "experimental" | "full" | "partial" | "none" | undefined;
}, {
claude?: "experimental" | "full" | "partial" | "none" | undefined;
cursor?: "experimental" | "full" | "partial" | "none" | undefined;
factory?: "experimental" | "full" | "partial" | "none" | undefined;
codex?: "experimental" | "full" | "partial" | "none" | undefined;
opencode?: "experimental" | "full" | "partial" | "none" | undefined;
windsurf?: "experimental" | "full" | "partial" | "none" | undefined;
copilot?: "experimental" | "full" | "partial" | "none" | undefined;
generic?: "experimental" | "full" | "partial" | "none" | undefined;
}>;
/**
* Deployment configuration
*/
export declare const DeploymentConfigSchema: z.ZodObject<{
pathTemplate: z.ZodString;
pathOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
additionalFiles: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
autoInstall: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
core: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
}, "strip", z.ZodTypeAny, {
core: boolean;
pathTemplate: string;
autoInstall: boolean;
pathOverrides?: Record<string, string> | undefined;
additionalFiles?: string[] | undefined;
}, {
pathTemplate: string;
core?: boolean | undefined;
pathOverrides?: Record<string, string> | undefined;
additionalFiles?: string[] | undefined;
autoInstall?: boolean | undefined;
}>;
/**
* A single .aiwg/ path entry in a memory footprint
*/
export declare const MemoryPathSchema: z.ZodObject<{
path: z.ZodString;
description: z.ZodString;
}, "strip", z.ZodTypeAny, {
path: string;
description: string;
}, {
path: string;
description: string;
}>;
/**
* .aiwg/ memory footprint declaration
*/
export declare const MemoryFootprintSchema: z.ZodObject<{
creates: z.ZodOptional<z.ZodArray<z.ZodObject<{
path: z.ZodString;
description: z.ZodString;
}, "strip", z.ZodTypeAny, {
path: string;
description: string;
}, {
path: string;
description: string;
}>, "many">>;
normalizedFiles: z.ZodOptional<z.ZodArray<z.ZodObject<{
path: z.ZodString;
description: z.ZodString;
}, "strip", z.ZodTypeAny, {
path: string;
description: string;
}, {
path: string;
description: string;
}>, "many">>;
}, "strip", z.ZodTypeAny, {
creates?: {
path: string;
description: string;
}[] | undefined;
normalizedFiles?: {
path: string;
description: string;
}[] | undefined;
}, {
creates?: {
path: string;
description: string;
}[] | undefined;
normalizedFiles?: {
path: string;
description: string;
}[] | undefined;
}>;
/**
* Deprecation information
*/
export declare const DeprecationSchema: z.ZodObject<{
date: z.ZodString;
successor: z.ZodOptional<z.ZodString>;
reason: z.ZodString;
}, "strip", z.ZodTypeAny, {
reason: string;
date: string;
successor?: string | undefined;
}, {
reason: string;
date: string;
successor?: string | undefined;
}>;
/**
* Installation state
*/
export declare const InstallationSchema: z.ZodObject<{
installedAt: z.ZodString;
installedFrom: z.ZodEnum<["builtin", "registry", "local", "git"]>;
installedPath: z.ZodString;
enabled: z.ZodBoolean;
}, "strip", z.ZodTypeAny, {
installedFrom: "local" | "builtin" | "registry" | "git";
installedPath: string;
enabled: boolean;
installedAt: string;
}, {
installedFrom: "local" | "builtin" | "registry" | "git";
installedPath: string;
enabled: boolean;
installedAt: string;
}>;
/**
* Signature verification
*/
export declare const SignatureSchema: z.ZodObject<{
algorithm: z.ZodEnum<["pgp", "ed25519"]>;
value: z.ZodString;
publicKey: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
value: string;
algorithm: "ed25519" | "pgp";
publicKey?: string | undefined;
}, {
value: string;
algorithm: "ed25519" | "pgp";
publicKey?: string | undefined;
}>;
/**
* Agent-specific metadata
*/
export declare const AgentMetadataSchema: z.ZodObject<{
type: z.ZodLiteral<"agent">;
role: z.ZodString;
model: z.ZodObject<{
tier: z.ZodEnum<["haiku", "sonnet", "opus"]>;
override: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
tier: "sonnet" | "opus" | "haiku";
override?: string | undefined;
}, {
tier: "sonnet" | "opus" | "haiku";
override?: string | undefined;
}>;
tools: z.ZodArray<z.ZodString, "many">;
template: z.ZodOptional<z.ZodString>;
maxTools: z.ZodOptional<z.ZodNumber>;
canDelegate: z.ZodOptional<z.ZodBoolean>;
readOnly: z.ZodOptional<z.ZodBoolean>;
workflow: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
expertise: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
responsibilities: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, "strip", z.ZodTypeAny, {
type: "agent";
role: string;
tools: string[];
model: {
tier: "sonnet" | "opus" | "haiku";
override?: string | undefined;
};
readOnly?: boolean | undefined;
template?: string | undefined;
workflow?: string[] | undefined;
maxTools?: number | undefined;
canDelegate?: boolean | undefined;
expertise?: string[] | undefined;
responsibilities?: string[] | undefined;
}, {
type: "agent";
role: string;
tools: string[];
model: {
tier: "sonnet" | "opus" | "haiku";
override?: string | undefined;
};
readOnly?: boolean | undefined;
template?: string | undefined;
workflow?: string[] | undefined;
maxTools?: number | undefined;
canDelegate?: boolean | undefined;
expertise?: string[] | undefined;
responsibilities?: string[] | undefined;
}>;
/**
* Command argument definition
*/
export declare const CommandArgumentSchema: z.ZodObject<{
name: z.ZodString;
description: z.ZodString;
required: z.ZodBoolean;
type: z.ZodEnum<["string", "number", "boolean"]>;
default: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
position: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
type: "string" | "number" | "boolean";
required: boolean;
name: string;
description: string;
default?: string | number | boolean | undefined;
position?: number | undefined;
}, {
type: "string" | "number" | "boolean";
required: boolean;
name: string;
description: string;
default?: string | number | boolean | undefined;
position?: number | undefined;
}>;
/**
* Command option definition
*/
export declare const CommandOptionSchema: z.ZodObject<{
name: z.ZodString;
description: z.ZodString;
type: z.ZodEnum<["string", "boolean", "number", "array"]>;
default: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean, z.ZodNumber]>>;
short: z.ZodOptional<z.ZodString>;
long: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
type: "string" | "number" | "boolean" | "array";
name: string;
description: string;
default?: string | number | boolean | undefined;
short?: string | undefined;
long?: string | undefined;
}, {
type: "string" | "number" | "boolean" | "array";
name: string;
description: string;
default?: string | number | boolean | undefined;
short?: string | undefined;
long?: string | undefined;
}>;
/**
* Command-specific metadata
*
* @deprecated As a source format — commands are generated from skills at deploy time.
*/
export declare const CommandMetadataSchema: z.ZodObject<{
type: z.ZodLiteral<"command">;
template: z.ZodEnum<["utility", "transformation", "orchestration"]>;
arguments: z.ZodOptional<z.ZodArray<z.ZodObject<{
name: z.ZodString;
description: z.ZodString;
required: z.ZodBoolean;
type: z.ZodEnum<["string", "number", "boolean"]>;
default: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
position: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
type: "string" | "number" | "boolean";
required: boolean;
name: string;
description: string;
default?: string | number | boolean | undefined;
position?: number | undefined;
}, {
type: "string" | "number" | "boolean";
required: boolean;
name: string;
description: string;
default?: string | number | boolean | undefined;
position?: number | undefined;
}>, "many">>;
options: z.ZodOptional<z.ZodArray<z.ZodObject<{
name: z.ZodString;
description: z.ZodString;
type: z.ZodEnum<["string", "boolean", "number", "array"]>;
default: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean, z.ZodNumber]>>;
short: z.ZodOptional<z.ZodString>;
long: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
type: "string" | "number" | "boolean" | "array";
name: string;
description: string;
default?: string | number | boolean | undefined;
short?: string | undefined;
long?: string | undefined;
}, {
type: "string" | "number" | "boolean" | "array";
name: string;
description: string;
default?: string | number | boolean | undefined;
short?: string | undefined;
long?: string | undefined;
}>, "many">>;
argumentHint: z.ZodOptional<z.ZodString>;
allowedTools: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
model: z.ZodOptional<z.ZodString>;
executionSteps: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
successCriteria: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
cliDisabled: z.ZodOptional<z.ZodBoolean>;
executedViaSkillRunner: z.ZodOptional<z.ZodBoolean>;
generatedFrom: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
type: "command";
template: "utility" | "transformation" | "orchestration";
model?: string | undefined;
arguments?: {
type: "string" | "number" | "boolean";
required: boolean;
name: string;
description: string;
default?: string | number | boolean | undefined;
position?: number | undefined;
}[] | undefined;
argumentHint?: string | undefined;
cliDisabled?: boolean | undefined;
executedViaSkillRunner?: boolean | undefined;
options?: {
type: "string" | "number" | "boolean" | "array";
name: string;
description: string;
default?: string | number | boolean | undefined;
short?: string | undefined;
long?: string | undefined;
}[] | undefined;
allowedTools?: string[] | undefined;
executionSteps?: string[] | undefined;
successCriteria?: string[] | undefined;
generatedFrom?: string | undefined;
}, {
type: "command";
template: "utility" | "transformation" | "orchestration";
model?: string | undefined;
arguments?: {
type: "string" | "number" | "boolean";
required: boolean;
name: string;
description: string;
default?: string | number | boolean | undefined;
position?: number | undefined;
}[] | undefined;
argumentHint?: string | undefined;
cliDisabled?: boolean | undefined;
executedViaSkillRunner?: boolean | undefined;
options?: {
type: "string" | "number" | "boolean" | "array";
name: string;
description: string;
default?: string | number | boolean | undefined;
short?: string | undefined;
long?: string | undefined;
}[] | undefined;
allowedTools?: string[] | undefined;
executionSteps?: string[] | undefined;
successCriteria?: string[] | undefined;
generatedFrom?: string | undefined;
}>;
/**
* Command translation hints for skill→command generation
*/
export declare const CommandHintSchema: z.ZodObject<{
argumentHint: z.ZodOptional<z.ZodString>;
allowedTools: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
template: z.ZodOptional<z.ZodEnum<["utility", "transformation", "orchestration"]>>;
arguments: z.ZodOptional<z.ZodArray<z.ZodObject<{
name: z.ZodString;
description: z.ZodString;
required: z.ZodBoolean;
type: z.ZodEnum<["string", "number", "boolean"]>;
default: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
position: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
type: "string" | "number" | "boolean";
required: boolean;
name: string;
description: string;
default?: string | number | boolean | undefined;
position?: number | undefined;
}, {
type: "string" | "number" | "boolean";
required: boolean;
name: string;
description: string;
default?: string | number | boolean | undefined;
position?: number | undefined;
}>, "many">>;
options: z.ZodOptional<z.ZodArray<z.ZodObject<{
name: z.ZodString;
description: z.ZodString;
type: z.ZodEnum<["string", "boolean", "number", "array"]>;
default: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean, z.ZodNumber]>>;
short: z.ZodOptional<z.ZodString>;
long: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
type: "string" | "number" | "boolean" | "array";
name: string;
description: string;
default?: string | number | boolean | undefined;
short?: string | undefined;
long?: string | undefined;
}, {
type: "string" | "number" | "boolean" | "array";
name: string;
description: string;
default?: string | number | boolean | undefined;
short?: string | undefined;
long?: string | undefined;
}>, "many">>;
executionSteps: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
successCriteria: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
model: z.ZodOptional<z.ZodString>;
cliDisabled: z.ZodOptional<z.ZodBoolean>;
executedViaSkillRunner: z.ZodOptional<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
model?: string | undefined;
arguments?: {
type: "string" | "number" | "boolean";
required: boolean;
name: string;
description: string;
default?: string | number | boolean | undefined;
position?: number | undefined;
}[] | undefined;
template?: "utility" | "transformation" | "orchestration" | undefined;
argumentHint?: string | undefined;
cliDisabled?: boolean | undefined;
executedViaSkillRunner?: boolean | undefined;
options?: {
type: "string" | "number" | "boolean" | "array";
name: string;
description: string;
default?: string | number | boolean | undefined;
short?: string | undefined;
long?: string | undefined;
}[] | undefined;
allowedTools?: string[] | undefined;
executionSteps?: string[] | undefined;
successCriteria?: string[] | undefined;
}, {
model?: string | undefined;
arguments?: {
type: "string" | "number" | "boolean";
required: boolean;
name: string;
description: string;
default?: string | number | boolean | undefined;
position?: number | undefined;
}[] | undefined;
template?: "utility" | "transformation" | "orchestration" | undefined;
argumentHint?: string | undefined;
cliDisabled?: boolean | undefined;
executedViaSkillRunner?: boolean | undefined;
options?: {
type: "string" | "number" | "boolean" | "array";
name: string;
description: string;
default?: string | number | boolean | undefined;
short?: string | undefined;
long?: string | undefined;
}[] | undefined;
allowedTools?: string[] | undefined;
executionSteps?: string[] | undefined;
successCriteria?: string[] | undefined;
}>;
/**
* Skill reference material
*/
export declare const SkillReferenceSchema: z.ZodObject<{
filename: z.ZodString;
description: z.ZodString;
path: z.ZodString;
}, "strip", z.ZodTypeAny, {
path: string;
description: string;
filename: string;
}, {
path: string;
description: string;
filename: string;
}>;
/**
* SKILL.md frontmatter schema
*
* Validates the YAML frontmatter block at the top of a SKILL.md file.
* This is distinct from {@link SkillMetadataSchema}, which validates the
* `metadata` field of an Extension manifest.
*
* `description` is REQUIRED and must be non-empty. Codex rejects SKILL.md
* files that lack a description; Claude Code uses this field for
* natural-language invocation. Do NOT relax this rule — a blank description
* is what caused the 107-file regression we are guarding against.
*/
export declare const SkillFrontmatterSchema: z.ZodObject<{
name: z.ZodString;
description: z.ZodString;
version: z.ZodOptional<z.ZodString>;
namespace: z.ZodOptional<z.ZodString>;
platforms: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
triggers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
deprecated_names: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
tools: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
'allowed-tools': z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
allowedTools: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
effort: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>]>>;
'user-invocable': z.ZodOptional<z.ZodBoolean>;
userInvocable: z.ZodOptional<z.ZodBoolean>;
'disable-model-invocation': z.ZodOptional<z.ZodBoolean>;
disableModelInvocation: z.ZodOptional<z.ZodBoolean>;
context: z.ZodOptional<z.ZodEnum<["fork", "inherit"]>>;
author: z.ZodOptional<z.ZodString>;
license: z.ZodOptional<z.ZodString>;
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
name: z.ZodString;
description: z.ZodString;
version: z.ZodOptional<z.ZodString>;
namespace: z.ZodOptional<z.ZodString>;
platforms: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
triggers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
deprecated_names: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
tools: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
'allowed-tools': z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
allowedTools: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
effort: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>]>>;
'user-invocable': z.ZodOptional<z.ZodBoolean>;
userInvocable: z.ZodOptional<z.ZodBoolean>;
'disable-model-invocation': z.ZodOptional<z.ZodBoolean>;
disableModelInvocation: z.ZodOptional<z.ZodBoolean>;
context: z.ZodOptional<z.ZodEnum<["fork", "inherit"]>>;
author: z.ZodOptional<z.ZodString>;
license: z.ZodOptional<z.ZodString>;
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
name: z.ZodString;
description: z.ZodString;
version: z.ZodOptional<z.ZodString>;
namespace: z.ZodOptional<z.ZodString>;
platforms: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
triggers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
deprecated_names: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
tools: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
'allowed-tools': z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
allowedTools: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
effort: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>]>>;
'user-invocable': z.ZodOptional<z.ZodBoolean>;
userInvocable: z.ZodOptional<z.ZodBoolean>;
'disable-model-invocation': z.ZodOptional<z.ZodBoolean>;
disableModelInvocation: z.ZodOptional<z.ZodBoolean>;
context: z.ZodOptional<z.ZodEnum<["fork", "inherit"]>>;
author: z.ZodOptional<z.ZodString>;
license: z.ZodOptional<z.ZodString>;
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, z.ZodTypeAny, "passthrough">>;
/**
* Inferred SKILL.md frontmatter type
*/
export type ValidatedSkillFrontmatter = z.infer<typeof SkillFrontmatterSchema>;
/**
* Validate SKILL.md frontmatter.
*
* Use this when parsing the YAML frontmatter block of a SKILL.md file to
* catch missing or empty `description` fields before deployment.
*
* @example
* ```typescript
* const result = validateSkillFrontmatter(parsedYaml);
* if (!result.success) {
* throw new Error('Invalid SKILL.md frontmatter: ' +
* formatValidationErrors(result.errors).join(', '));
* }
* ```
*/
export declare function validateSkillFrontmatter(data: unknown): {
success: true;
data: ValidatedSkillFrontmatter;
} | {
success: false;
errors: z.ZodError;
};
/**
* Skill-specific metadata
*/
export declare const SkillMetadataSchema: z.ZodObject<{
type: z.ZodLiteral<"skill">;
triggerPhrases: z.ZodArray<z.ZodString, "many">;
autoTrigger: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
autoTriggerConditions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
tools: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
references: z.ZodOptional<z.ZodArray<z.ZodObject<{
filename: z.ZodString;
description: z.ZodString;
path: z.ZodString;
}, "strip", z.ZodTypeAny, {
path: string;
description: string;
filename: string;
}, {
path: string;
description: string;
filename: string;
}>, "many">>;
inputRequirements: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
outputFormat: z.ZodOptional<z.ZodString>;
effort: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>]>>;
userInvocable: z.ZodOptional<z.ZodBoolean>;
disableModelInvocation: z.ZodOptional<z.ZodBoolean>;
context: z.ZodOptional<z.ZodEnum<["fork", "inherit"]>>;
allowedTools: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
commandHint: z.ZodOptional<z.ZodObject<{
argumentHint: z.ZodOptional<z.ZodString>;
allowedTools: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
template: z.ZodOptional<z.ZodEnum<["utility", "transformation", "orchestration"]>>;
arguments: z.ZodOptional<z.ZodArray<z.ZodObject<{
name: z.ZodString;
description: z.ZodString;
required: z.ZodBoolean;
type: z.ZodEnum<["string", "number", "boolean"]>;
default: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
position: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
type: "string" | "number" | "boolean";
required: boolean;
name: string;
description: string;
default?: string | number | boolean | undefined;
position?: number | undefined;
}, {
type: "string" | "number" | "boolean";
required: boolean;
name: string;
description: string;
default?: string | number | boolean | undefined;
position?: number | undefined;
}>, "many">>;
options: z.ZodOptional<z.ZodArray<z.ZodObject<{
name: z.ZodString;
description: z.ZodString;
type: z.ZodEnum<["string", "boolean", "number", "array"]>;
default: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodBoolean, z.ZodNumber]>>;
short: z.ZodOptional<z.ZodString>;
long: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
type: "string" | "number" | "boolean" | "array";
name: string;
description: string;
default?: string | number | boolean | undefined;
short?: string | undefined;
long?: string | undefined;
}, {
type: "string" | "number" | "boolean" | "array";
name: string;
description: string;
default?: string | number | boolean | undefined;
short?: string | undefined;
long?: string | undefined;
}>, "many">>;
executionSteps: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
successCriteria: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
model: z.ZodOptional<z.ZodString>;
cliDisabled: z.ZodOptional<z.ZodBoolean>;
executedViaSkillRunner: z.ZodOptional<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
model?: string | undefined;
arguments?: {
type: "string" | "number" | "boolean";
required: boolean;
name: string;
description: string;
default?: string | number | boolean | undefined;
position?: number | undefined;
}[] | undefined;
template?: "utility" | "transformation" | "orchestration" | undefined;
argumentHint?: string | undefined;
cliDisabled?: boolean | undefined;
executedViaSkillRunner?: boolean | undefined;
options?: {
type: "string" | "number" | "boolean" | "array";
name: string;
description: string;
default?: string | number | boolean | undefined;
short?: string | undefined;
long?: string | undefined;
}[] | undefined;
allowedTools?: string[] | undefined;
executionSteps?: string[] | undefined;
successCriteria?: string[] | undefined;
}, {
model?: string | undefined;
arguments?: {
type: "string" | "number" | "boolean";
required: boolean;
name: string;
description: string;
default?: string | number | boolean | undefined;
position?: number | undefined;
}[] | undefined;
template?: "utility" | "transformation" | "orchestration" | undefined;
argumentHint?: string | undefined;
cliDisabled?: boolean | undefined;
executedViaSkillRunner?: boolean | undefined;
options?: {
type: "string" | "number" | "boolean" | "array";
name: string;
description: string;
default?: string | number | boolean | undefined;
short?: string | undefined;
long?: string | undefined;
}[] | undefined;
allowedTools?: string[] | undefined;
executionSteps?: string[] | undefined;
successCriteria?: string[] | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
type: "skill";
triggerPhrases: string[];
autoTrigger: boolean;
context?: "inherit" | "fork" | undefined;
tools?: string[] | undefined;
outputFormat?: string | undefined;
commandHint?: {
model?: string | undefined;
arguments?: {
type: "string" | "number" | "boolean";
required: boolean;
name: string;
description: string;
default?: string | number | boolean | undefined;
position?: number | undefined;
}[] | undefined;
template?: "utility" | "transformation" | "orchestration" | undefined;
argumentHint?: string | undefined;
cliDisabled?: boolean | undefined;
executedViaSkillRunner?: boolean | undefined;
options?: {
type: "string" | "number" | "boolean" | "array";
name: string;
description: string;
default?: string | number | boolean | undefined;
short?: string | undefined;
long?: string | undefined;
}[] | undefined;
allowedTools?: string[] | undefined;
executionSteps?: string[] | undefined;
successCriteria?: string[] | undefined;
} | undefined;
allowedTools?: string[] | undefined;
effort?: 2 | 1 | 3 | undefined;
userInvocable?: boolean | undefined;
disableModelInvocation?: boolean | undefined;
autoTriggerConditions?: string[] | undefined;
references?: {
path: string;
description: string;
filename: string;
}[] | undefined;
inputRequirements?: string[] | undefined;
}, {
type: "skill";
triggerPhrases: string[];
context?: "inherit" | "fork" | undefined;
tools?: string[] | undefined;
outputFormat?: string | undefined;
commandHint?: {
model?: string | undefined;
arguments?: {
type: "string" | "number" | "boolean";
required: boolean;
name: string;
description: string;
default?: string | number | boolean | undefined;
position?: number | undefined;
}[] | undefined;
template?: "utility" | "transformation" | "orchestration" | undefined;
argumentHint?: string | undefined;
cliDisabled?: boolean | undefined;
executedViaSkillRunner?: boolean | undefined;
options?: {
type: "string" | "number" | "boolean" | "array";
name: string;
description: string;
default?: string | number | boolean | undefined;
short?: string | undefined;
long?: string | undefined;
}[] | undefined;
allowedTools?: string[] | undefined;
executionSteps?: string[] | undefined;
successCriteria?: string[] | undefined;
} | undefined;
allowedTools?: string[] | undefined;
effort?: 2 | 1 | 3 | undefined;
userInvocable?: boolean | undefined;
disableModelInvocation?: boolean | undefined;
autoTrigger?: boolean | undefined;
autoTriggerConditions?: string[] | undefined;
references?: {
path: string;
description: string;
filename: string;
}[] | undefined;
inputRequirements?: string[] | undefined;
}>;
/**
* Hook-specific metadata
*/
export declare const HookMetadataSchema: z.ZodObject<{
type: z.ZodLiteral<"hook">;
event: z.ZodEnum<["pre-session", "post-session", "pre-command", "post-command", "pre-agent", "post-agent", "pre-write", "post-write", "pre-bash", "post-bash"]>;
priority: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
canModify: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
canBlock: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
configSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, "strip", z.ZodTypeAny, {
type: "hook";
event: "pre-session" | "post-session" | "pre-command" | "post-command" | "pre-agent" | "post-agent" | "pre-write" | "post-write" | "pre-bash" | "post-bash";
priority: number;
canModify: boolean;
canBlock: boolean;
configSchema?: Record<string, unknown> | undefined;
}, {
type: "hook";
event: "pre-session" | "post-session" | "pre-command" | "post-command" | "pre-agent" | "post-agent" | "pre-write" | "post-write" | "pre-bash" | "post-bash";
priority?: number | undefined;
canModify?: boolean | undefined;
canBlock?: boolean | undefined;
configSchema?: Record<string, unknown> | undefined;
}>;
/**
* Tool-specific metadata
*/
export declare const ToolMetadataSchema: z.ZodObject<{
type: z.ZodLiteral<"tool">;
category: z.ZodEnum<["core", "languages", "utilities", "custom"]>;
executable: z.ZodString;
verificationStatus: z.ZodOptional<z.ZodEnum<["verified", "unverified"]>>;
lastVerified: z.ZodOptional<z.ZodString>;
manPage: z.ZodOptional<z.ZodString>;
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
relatedTools: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
platformNotes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
installHint: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
type: "tool";
category: "custom" | "core" | "languages" | "utilities";
executable: string;
aliases?: string[] | undefined;
verificationStatus?: "verified" | "unverified" | undefined;
lastVerified?: string | undefined;
manPage?: string | undefined;
relatedTools?: string[] | undefined;
platformNotes?: Record<string, string> | undefined;
installHint?: string | undefined;
}, {
type: "tool";
category: "custom" | "core" | "languages" | "utilities";
executable: string;
aliases?: string[] | undefined;
verificationStatus?: "verified" | "unverified" | undefined;
lastVerified?: string | undefined;
manPage?: string | undefined;
relatedTools?: string[] | undefined;
platformNotes?: Record<string, string> | undefined;
installHint?: string | undefined;
}>;
/**
* MCP tool summary
*/
export declare const MCPToolSummarySchema: z.ZodObject<{
name: z.ZodString;
description: z.ZodString;
dangerous: z.ZodBoolean;
}, "strip", z.ZodTypeAny, {
name: string;
description: string;
dangerous: boolean;
}, {
name: string;
description: string;
dangerous: boolean;
}>;
/**
* MCP Server-specific metadata
*/
export declare const MCPServerMetadataSchema: z.ZodObject<{
type: z.ZodLiteral<"mcp-server">;
mcpVersion: z.ZodString;
transport: z.ZodEnum<["stdio", "http"]>;
port: z.ZodOptional<z.ZodNumber>;
capabilities: z.ZodObject<{
tools: z.ZodBoolean;
resources: z.ZodBoolean;
prompts: z.ZodBoolean;
sampling: z.ZodBoolean;
logging: z.ZodBoolean;
}, "strip", z.ZodTypeAny, {
sampling: boolean;
tools: boolean;
prompts: boolean;
resources: boolean;
logging: boolean;
}, {
sampling: boolean;
tools: boolean;
prompts: boolean;
resources: boolean;
logging: boolean;
}>;
sourceType: z.ZodEnum<["cli", "api", "catalog", "nl", "extension"]>;
sourceCommand: z.ZodOptional<z.ZodString>;
sourceBaseUrl: z.ZodOptional<z.ZodString>;
workingDirectory: z.ZodOptional<z.ZodString>;
environment: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
tools: z.ZodOptional<z.ZodArray<z.ZodObject<{
name: z.ZodString;
description: z.ZodString;
dangerous: z.ZodBoolean;
}, "strip", z.ZodTypeAny, {
name: string;
description: string;
dangerous: boolean;
}, {
name: string;
description: string;
dangerous: boolean;
}>, "many">>;
resources: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
prompts: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, "strip", z.ZodTypeAny, {
type: "mcp-server";
capabilities: {
sampling: boolean;
tools: boolean;
prompts: boolean;
resources: boolean;
logging: boolean;
};
mcpVersion: string;
transport: "http" | "stdio";
sourceType: "cli" | "extension" | "api" | "catalog" | "nl";
tools?: {
name: string;
description: string;
dangerous: boolean;
}[] | undefined;
prompts?: string[] | undefined;
port?: number | undefined;
resources?: string[] | undefined;
sourceCommand?: string | undefined;
sourceBaseUrl?: string | undefined;
workingDirectory?: string | undefined;
environment?: Record<string, string> | undefined;
}, {
type: "mcp-server";
capabilities: {
sampling: boolean;
tools: boolean;
prompts: boolean;
resources: boolean;
logging: boolean;
};
mcpVersion: string;
transport: "http" | "stdio";
sourceType: "cli" | "extension" | "api" | "catalog" | "nl";
tools?: {
name: string;
description: string;
dangerous: boolean;
}[] | undefined;
prompts?: string[] | undefined;
port?: number | undefined;
resources?: string[] | undefined;
sourceCommand?: string | undefined;
sourceBaseUrl?: string | undefined;
workingDirectory?: string | undefined;
environment?: Record<string, string> | undefined;
}>;
/**
* Framework-specific metadata
*/
export declare const FrameworkMetadataSchema: z.ZodObject<{
type: z.ZodLiteral<"framework">;
domain: z.ZodString;
includes: z.ZodObject<{
agents: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
commands: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
skills: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
hooks: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
templates: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
prompts: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, "strip", z.ZodTypeAny, {
agents?: string[] | undefined;
skills?: string[] | undefined;
commands?: string[] | undefined;
templates?: string[] | undefined;
hooks?: string[] | undefined;
prompts?: string[] | undefined;
}, {
agents?: string[] | undefined;
skills?: string[] | undefined;
commands?: string[] | undefined;
templates?: string[] | undefined;
hooks?: string[] | undefined;
prompts?: string[] | undefined;
}>;
configSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
defaultConfig: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, "strip", z.ZodTypeAny, {
type: "framework";
includes: {
agents?: string[] | undefined;
skills?: string[] | undefined;
commands?: string[] | undefined;
templates?: string[] | undefined;
hooks?: string[] | undefined;
prompts?: string[] | undefined;
};
domain: string;
configSchema?: Record<string, unknown> | undefined;
defaultConfig?: Record<string, unknown> | undefined;
}, {
type: "framework";
includes: {
agents?: string[] | undefined;
skills?: string[] | undefined;
commands?: string[] | undefined;
templates?: string[] | undefined;
hooks?: string[] | undefined;
prompts?: string[] | undefined;
};
domain: string;
configSchema?: Record<string, unknown> | undefined;
defaultConfig?: Record<string, unknown> | undefined;
}>;
/**
* Addon-specific metadata
*/
export declare const AddonMetadataSchema: z.ZodObject<{
type: z.ZodLiteral<"addon">;
entry: z.ZodObject<{
agents: z.ZodOptional<z.ZodString>;
commands: z.ZodOptional<z.ZodString>;
skills: z.ZodOptional<z.ZodString>;
hooks: z.ZodOptional<z.ZodString>;
templates: z.ZodOptional<z.ZodString>;
prompts: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
agents?: string | undefined;
skills?: string | undefined;
commands?: string | undefined;
templates?: string | undefined;
hooks?: string | undefined;
prompts?: string | undefined;
}, {
agents?: string | undefined;
skills?: string | undefined;
commands?: string | undefined;
templates?: string | undefined;
hooks?: string | undefined;
prompts?: string | undefined;
}>;
provides: z.ZodObject<{
agents: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
commands: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
skills: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
hooks: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
templates: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
prompts: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, "strip", z.ZodTypeAny, {
agents?: string[] | undefined;
skills?: string[] | undefined;
commands?: string[] | undefined;
templates?: string[] | undefined;
hooks?: string[] | undefined;
prompts?: string[] | undefined;
}, {
agents?: string[] | undefined;
skills?: string[] | undefined;
commands?: string[] | undefined;
templates?: string[] | undefined;
hooks?: string[] | undefined;
prompts?: string[] | undefined;
}>;
}, "strip", z.ZodTypeAny, {
type: "addon";
entry: {
agents?: string | undefined;
skills?: string | undefined;
commands?: string | undefined;
templates?: string | undefined;
hooks?: string | undefined;
prompts?: string | undefined;
};
provides: {
agents?: string[] | undefined;
skills?: string[] | undefined;
commands?: string[] | undefined;
templates?: string[] | undefined;
hooks?: string[] | undefined;
prompts?: string[] | undefined;
};
}, {
type: "addon";
entry: {
agents?: string | undefined;
skills?: string | undefined;
commands?: string | undefined;
templates?: string | undefined;
hooks?: string | undefined;
prompts?: string | undefined;
};
provides: {
agents?: string[] | undefined;
skills?: string[] | undefined;
commands?: string[] | undefined;
templates?: string[] | undefined;
hooks?: string[] | undefined;
prompts?: string[] | undefined;
};
}>;
/**
* Template variable definition
*/
export declare const TemplateVariableSchema: z.ZodObject<{
name: z.ZodString;
description: z.ZodString;
type: z.ZodEnum<["string", "number", "boolean", "array", "object"]>;
required: z.ZodBoolean;
default: z.ZodOptional<z.ZodUnknown>;
}, "strip", z.ZodTypeAny, {
type: "string" | "number" | "boolean" | "object" | "array";
required: boolean;
name: string;
description: string;
default?: unknown;
}, {
type: "string" | "number" | "boolean" | "object" | "array";
required: boolean;
name: string;
description: string;
default?: unknown;
}>;
/**
* Template-specific metadata
*/
export declare const TemplateMetadataSchema: z.ZodObject<{
type: z.ZodLiteral<"template">;
format: z.ZodString;
variables: z.ZodOptional<z.ZodArray<z.ZodObject<{
name: z.ZodString;
description: z.ZodString;
type: z.ZodEnum<["string", "number", "boolean", "array", "object"]>;
required: z.ZodBoolean;
default: z.ZodOptional<z.ZodUnknown>;
}, "strip", z.ZodTypeAny, {
type: "string" | "number" | "boolean" | "object" | "array";
required: boolean;
name: string;
description: string;
default?: unknown;
}, {
type: "string" | "number" | "boolean" | "object" | "array";
required: boolean;
name: string;
description: string;
default?: unknown;
}>, "many">>;
sections: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
targetArtifact: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
format: string;
type: "template";
variables?: {
type: "string" | "number" | "boolean" | "object" | "array";
required: boolean;
name: string;
description: string;
default?: unknown;
}[] | undefined;
sections?: string[] | undefined;
targetArtifact?: string | undefined;
}, {
format: string;
type: "template";
variables?: {
type: "string" | "number" | "boolean" | "object" | "array";
required: boolean;
name: string;
description: string;
default?: unknown;
}[] | undefined;
sections?: string[] | undefined;
targetArtifact?: string | undefined;
}>;
/**
* Prompt-specific metadata
*/
export declare const PromptMetadataSchema: z.ZodObject<{
type: z.ZodLiteral<"prompt">;
category: z.ZodString;
purpose: z.ZodString;
useWhen: z.ZodArray<z.ZodString, "many">;
variables: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
requiredContext: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, "strip", z.ZodTypeAny, {
type: "prompt";
category: string;
purpose: string;
useWhen: string[];
variables?: string[] | undefined;
requiredContext?: string[] | undefined;
}, {
type: "prompt";
category: string;
purpose: string;
useWhen: string[];
variables?: string[] | undefined;
requiredContext?: string[] | undefined;
}>;
/**
* Union of all type-specific metadata schemas
*/
export declare const ExtensionMetadataSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
type: z.ZodLiteral<"agent">;
role: z.ZodString;
model: z.ZodObject<{
tier: z.ZodEnum<["haiku", "sonnet", "opus"]>;
override: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
tier: "sonnet" | "opus" | "haiku";
override?: string | undefined;
}, {
tier: "sonnet" | "opus" | "haiku";
override?: string | undefined;
}>;
tools: z.ZodArray<z.ZodString, "many">;
template: z.ZodOptional<z.ZodString>;
maxTools: z.ZodOptional<z.ZodNumber>;
canDelegate: z.ZodOptional<z.ZodBoolean>;
readOnly: z.ZodOptional<z.ZodBoolean>;
workflow: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
expertise: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
responsibilities: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, "strip", z.ZodTypeAny, {
type: "agent";
role: string;
tools: string[];
model: {
tier: "sonnet" | "opus" | "haiku";
override?: string | undefined;
};
readOnly?: boolean | undefined;
template?: string | undefined;
workflow?: string[] | undefined;
maxTools?: number | undefined;
canDelegate?: boolean | undefined;
expertise?: string[] | undefined;
responsibilities?: string[] | undefined;
}, {
type: "agent";
role: string;
tools: string[];
model: {
tier: "sonnet" | "opus" | "haiku";
override?: string | undefined;
};
readOnly?: boolean | undefined;
template?: string | undefined;
workflow?: string[] | undefined;
maxTools?: number | undefined;
canDelegate?: boolean | undefined;
expertise?: string[] | undefined;
responsibilities?: strin