---
title: EventFrom
description: A type that the Authoring surface names.
---

# `EventFrom`

Type, in `src/define-event.ts` of `@jr2/agent-protocol`, a dependency of `@jr2/orchestrator`. It is type plumbing: it computes a type from the types of a Machine or of its parts, and a workflow module does not write it. The signature of an export, or a type that it names, names this type, so its declaration is here. The [Authoring surface](../authoring-surface.md) page lists each export.

```ts
type EventFrom<D extends EventDef> =
  D extends EventDef<infer N, infer I>
    ?
      { type: N } & (z.infer<I> extends Record<string, never> ? unknown : z.infer<I>)
    : never;
```
