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

# Interface ProjectCommandPrecondition

Producer-declared runtime readiness note for one project command. It is static, data-free, UNTRUSTED presentation copy — never authority, never a grant, never a consent input. Disclosed at describe time so a caller learns a runtime precondition (e.g. "a default voice must be configured, or pass an explicit engine") BEFORE the first invocation, and — when `requiresInput` names a top-level input the caller can supply — enforced pre-dispatch as an actionable not-ready signal instead of a post-dispatch worker error.

```typescript
interface ProjectCommandPrecondition {
    requiresInput?: string;
    summary: string;
}
```

Types: [requiresInput](#requiresinput), [summary](#summary)

##### Index

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

[requiresInput?](#requiresinput) [summary](#summary)

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

### <a id="requiresinput"></a>`Optional`requiresInput

```typescript
requiresInput?: string
```

Optional top-level input property whose presence satisfies this precondition. When declared and absent from the invocation input, the host surfaces `summary` as a pre-dispatch not-ready signal naming this input, rather than dispatching the worker and returning its runtime error.

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

```typescript
summary: string
```

Untrusted human-readable statement of what must be true, or what to supply, before this command is ready.
