---
title: EventSemantics
description: How the party that sends an event gets its answer.
---

# `EventSemantics`

Type, in `src/define-event.ts` of `@jr2/agent-protocol`, a dependency of `@jr2/orchestrator`. The signature of an export, or a type that it names, names this type. The [Authoring surface](../authoring-surface.md) page lists each export. This type is not an export of `@jr2/orchestrator`, so a workflow module does not import it by name.

```ts
type EventSemantics = "ack" | "poll";
```

How the party that sends an event gets its answer.

- `"ack"`, the default: jr2 delivers the event and answers the sender. When the event starts
  work inside the Agent's state, the answer comes when that work is done.
- `"poll"`: reserved. `createMachine` refuses it: ``machine "<id>": event "<name>" is `poll`,
  which is reserved but NOT IMPLEMENTED (ADR-0013). Only `ack` events can be delivered today;
  nothing drains a steer inbox, and degrading it to `ack` would hand the Agent a lying tool
  contract.``

**See also**

- [The Menu](../../concepts/the-menu.md)
- [ADR-0006: The agent picks from a Machine-defined, schema-backed menu; it does not drive the workflow](../decisions/0006-agent-control-surface.md)
