import type { AgentEffect, AgentGrantTemplate, ProjectAction } from './permissions.js'; export type ModelClass = 'judgment' | 'breadth' | 'execution'; export type Invocation = 'direct' | 'internal'; export type AuthorizationScope = 'project' | 'studio'; export interface ResponsePolicy { readonly chatLocale: string; readonly artifactLocale: string; readonly internalHandles: 'diagnostic-only'; } export interface CanonicalAgent { readonly id: string; readonly name: string; readonly description: string; readonly model: 'opus' | 'fable' | 'sonnet'; readonly modelClass: ModelClass; readonly invocation: Invocation; readonly authorizationScope: AuthorizationScope; readonly ownerAgentId?: string; readonly capabilities: readonly string[]; readonly projectAction: ProjectAction; readonly effects: readonly AgentEffect[]; readonly grants: readonly AgentGrantTemplate[]; readonly spawnTargets: readonly string[]; readonly queryProfileId: string; readonly queryProfileSha256: string; readonly permissionDigest: string; readonly prompt: string; readonly sourcePath: string; } interface CanonicalCommandBase { readonly id: string; readonly name: `/humble:${string}`; readonly capability: string; } export interface CanonicalLifecycleCommand extends CanonicalCommandBase { readonly kind: 'lifecycle'; } export interface CanonicalAgentCommand extends CanonicalCommandBase { readonly kind: 'agent-dispatch'; readonly targetAgentId: string; readonly invocation: Invocation; readonly ownerAgentId?: string; } export type CanonicalCommand = CanonicalLifecycleCommand | CanonicalAgentCommand; export interface CanonicalBundle { readonly schemaVersion: '1.0.0'; readonly productVersion: string; readonly responsePolicy: ResponsePolicy; readonly commands: readonly CanonicalCommand[]; readonly agents: readonly CanonicalAgent[]; readonly sourceArtifacts: readonly { readonly kind: 'claude-agent-card'; readonly path: string; readonly sha256: string; }[]; } export {};