> ISPO SDK documentation. [HTML](https://ispo.ai/docs/interfaces/core.CapabilityInvocationResult.html) · [Documentation index](https://ispo.ai/docs/llms.txt)

# Interface CapabilityInvocationResult

The blocking-RPC result the caller receives, host-validated.

```typescript
interface CapabilityInvocationResult {
    channel: CapabilityResultChannel;
    envelope?: CapabilityResultEnvelope;
    error?: string;
    errorCode?:
        | "outcome-unknown"
        | "cancelled"
        | "interrupted"
        | "schema-invalid"
        | "denied"
        | "no-descriptor"
        | "egress-blocked"
        | "worker-mismatch"
        | "worker-error"
        | "idempotency-conflict"
        | "integrity-failed"
        | "outside-reviewed-eligibility"
        | "apply-failed"
        | "consent-pending"
        | "consent-expired"
        | "policy-blocked"
        | "precondition-unmet";
    invocationId: string;
    ok: boolean;
    resourceArtifacts?: {
        byteLength: number;
        digest: string;
        kind: "files"
        | "assets";
        mediaType:
            | "image/png"
            | "image/jpeg"
            | "image/webp"
            | "text/plain"
            | "application/json"
            | "audio/wav";
        ref: string;
        revision: string;
    }[];
    reviewOpened: boolean;
}
```

Types: [channel](#channel), [CapabilityResultChannel](../types/core.CapabilityResultChannel.md), [envelope](#envelope), [CapabilityResultEnvelope](../types/core.CapabilityResultEnvelope.md), [error](#error), [errorCode](#errorcode), [invocationId](#invocationid), [ok](#ok), [resourceArtifacts](#resourceartifacts), [reviewOpened](#reviewopened)

##### Index

### <a id="properties"></a>Properties

[channel](#channel) [envelope?](#envelope) [error?](#error) [errorCode?](#errorcode) [invocationId](#invocationid) [ok](#ok) [resourceArtifacts?](#resourceartifacts) [reviewOpened](#reviewopened)

## <a id="properties-1"></a>Properties

### <a id="channel"></a>channel

```typescript
channel: CapabilityResultChannel
```

Types: [CapabilityResultChannel](../types/core.CapabilityResultChannel.md)

### <a id="envelope"></a>`Optional`envelope

```typescript
envelope?: CapabilityResultEnvelope
```

Types: [CapabilityResultEnvelope](../types/core.CapabilityResultEnvelope.md)

Present iff `ok`.

### <a id="error"></a>`Optional`error

```typescript
error?: string
```

### <a id="errorcode"></a>`Optional`errorCode

```typescript
errorCode?:
    | "outcome-unknown"
    | "cancelled"
    | "interrupted"
    | "schema-invalid"
    | "denied"
    | "no-descriptor"
    | "egress-blocked"
    | "worker-mismatch"
    | "worker-error"
    | "idempotency-conflict"
    | "integrity-failed"
    | "outside-reviewed-eligibility"
    | "apply-failed"
    | "consent-pending"
    | "consent-expired"
    | "policy-blocked"
    | "precondition-unmet"
```

### <a id="invocationid"></a>invocationId

```typescript
invocationId: string
```

### <a id="ok"></a>ok

```typescript
ok: boolean
```

### <a id="resourceartifacts"></a>`Optional`resourceArtifacts

```typescript
resourceArtifacts?: {
    byteLength: number;
    digest: string;
    kind: "files" | "assets";
    mediaType:
        | "image/png"
        | "image/jpeg"
        | "image/webp"
        | "text/plain"
        | "application/json"
        | "audio/wav";
    ref: string;
    revision: string;
}[]
```

Host-validated revisions of a resource command’s accepted artifacts.

### <a id="reviewopened"></a>reviewOpened

```typescript
reviewOpened: boolean
```

True only for `source-patch` — the caller-side review path was opened, not a write. Every other channel returns refs/data directly and leaves this false.
