---
url: >-
  https://adk.nht.io/api/@nhtio/adk/batteries/orchestration/plan/functions/handleAppliesTo.md
---

# Function: handleAppliesTo()

```ts
function handleAppliesTo(kind: PlanNodeKind, handle: EdgeHandle): boolean;
```

Defined in: [src/batteries/orchestration/plan.ts:448](https://github.com/NHTIO/ADK/blob/v1.20260906.0/src/src/batteries/orchestration/plan.ts#L448)

Whether an edge handle may be used on an edge leaving a node of a given kind.

## Parameters

| Parameter | Type                                                       | Description              |
| --------- | ---------------------------------------------------------- | ------------------------ |
| `kind`    | [`PlanNodeKind`](../../types/type-aliases/PlanNodeKind.md) | The source node's kind.  |
| `handle`  | [`EdgeHandle`](../../types/type-aliases/EdgeHandle.md)     | The edge handle to test. |

## Returns

`boolean`

True when the handle is legal for that node kind.

## Remarks

The applicability table, exactly:

* `entry` → `'always'`
* `call` | `reason` | `transform` → `'always'` | `'error'`
* `branch` → `'match'` | `'no_match'` | `'default'` | `'error'`
* `select` → `case_${string}` | `'default'` | `'error'`
* `join` → `'always'` | `'error'`

This is a pure question about the graph; the freeze validator enforces it as policy. The
executor uses it to decide which handles may fire for a settled node's outcome.
