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

# Type Alias ProjectCommandCatalogEntry

```typescript
ProjectCommandCatalogEntry: ProjectCommandCatalogEntryBase & (
    | {
        agent?: never;
        invocationMode: "iframe-action";
        resultChannels: ProjectCommandIframeActionResultChannel[];
    }
    | {
        agent: AgentId;
        invocationMode: "agent-task";
        resultChannels: ProjectCommandAgentTaskResultChannel[];
    }
)
```

Types: [ProjectCommandCatalogEntryBase](../interfaces/core.Supporting_types.ProjectCommandCatalogEntryBase.md), [ProjectCommandIframeActionResultChannel](core.Supporting_types.ProjectCommandIframeActionResultChannel.md), [AgentId](core.AgentId.md), [ProjectCommandAgentTaskResultChannel](core.Supporting_types.ProjectCommandAgentTaskResultChannel.md)

Static, data-free metadata derived from one code-first command export. `agent-task` is the sole non-iframe declaration mode in this slice: it names the agent spawned into the worker project and returns one durable `agent-run`; Files/Assets/entities are nested run artifacts, not direct result channels. Runtime jobs and host ops remain intentionally absent.
