ISPO SDK
    Preparing search index...

    Interface ProjectCapabilityDescriptor

    Markdown

    Durable, host-indexed cross-project capability metadata (§25). NOT ambient authority — the durable counterpart of an assistant.actions entry.

    interface ProjectCapabilityDescriptor {
        acceptsContext?: ("source-range" | "selection" | "chat-transcript")[];
        agent?: string;
        confirmation: CapabilityConfirmationClass;
        description: string;
        hostOp?: string;
        id: string;
        inputSchema: ProjectCommandSchema;
        invocationMode: CapabilityInvocationMode;
        label: string;
        preconditions?: ProjectCommandPrecondition[];
        promptExamples?: string[];
        resources?: {
            inputs: {
                format: {
                    maxBytes: number;
                    maxPixels?: number;
                    mediaTypes: (
                        | "image/png"
                        | "image/jpeg"
                        | "image/webp"
                        | "text/plain"
                        | "application/json"
                        | "audio/wav"
                    )[];
                };
                maxItems: number;
                minItems: number;
                name: string;
            }[];
            output: {
                channel: "files"
                | "assets";
                format: {
                    maxBytes: number;
                    maxPixels?: number;
                    mediaTypes: (
                        | "image/png"
                        | "image/jpeg"
                        | "image/webp"
                        | "text/plain"
                        | "application/json"
                        | "audio/wav"
                    )[];
                };
                maxItems: number;
                minItems: number;
            };
        };
        resultChannels: CapabilityResultChannel[];
        resultSchema: ProjectCommandSchema;
        usage?: string;
    }
    Index
    acceptsContext?: ("source-range" | "selection" | "chat-transcript")[]

    Context slots accepted by the worker command. The host validates every supplied claim and copies its inline snapshot; this declaration grants no ambient access.

    agent?: string

    agent-task mode only: the agent kind spawned INTO the worker target through agent.spawn (internal spec §10.22). Required iff invocationMode === 'agent-task'.

    description: string
    hostOp?: string

    host-op mode only: the §7.9 host operation the capability lowers to (internal spec §7.9). Required iff invocationMode === 'host-op'.

    id: string

    Namespaced ${ownerProjectId}:${capabilityName}. The host rejects a foreign owner segment. The local name may be reused by other projects; the full owner-qualified id is re-derived and verified before routing.

    invocationMode: CapabilityInvocationMode

    Slice: 'iframe-action', 'agent-task', and 'host-op' are parse-accepted ('runtime-job' stays out of slice).

    label: string

    Display only; NEVER a routing or trust key.

    preconditions?: ProjectCommandPrecondition[]

    Producer-declared runtime readiness notes disclosed after exact selection. Untrusted copy, never authorization input; a note with requiresInput is additionally enforced pre-dispatch as an actionable not-ready signal.

    promptExamples?: string[]

    Short project-authored composer examples. Presentation-only and untrusted.

    resources?: {
        inputs: {
            format: {
                maxBytes: number;
                maxPixels?: number;
                mediaTypes: (
                    | "image/png"
                    | "image/jpeg"
                    | "image/webp"
                    | "text/plain"
                    | "application/json"
                    | "audio/wav"
                )[];
            };
            maxItems: number;
            minItems: number;
            name: string;
        }[];
        output: {
            channel: "files"
            | "assets";
            format: {
                maxBytes: number;
                maxPixels?: number;
                mediaTypes: (
                    | "image/png"
                    | "image/jpeg"
                    | "image/webp"
                    | "text/plain"
                    | "application/json"
                    | "audio/wav"
                )[];
            };
            maxItems: number;
            minItems: number;
        };
    }

    Named byte inputs and a validated artifact result; never a grant.

    resultChannels: CapabilityResultChannel[]

    All channels — json, files, assets, entities, edit-session, source-patch, agent-run — are parse-accepted and host-routable.

    resultSchema: ProjectCommandSchema
    usage?: string

    Bounded project-authored playbook disclosed only after exact selection. It is untrusted copy and never an authorization input.