Files
Markus Ecker c2fca03ff7 refactor(core)!: rename subagentId to subagentRunId to match AG-UI
AG-UI renamed the subagent attribution field because the old name implied
a reusable subagent DEFINITION when the value identifies one INVOCATION --
two runs of the same subagent get two different values. See
ag-ui-protocol/ag-ui#2350.

  subagentId       -> subagentRunId
  parentSubagentId -> parentSubagentRunId

Applied to both sides of this package's surface:

- Reading the wire. SubagentRegistry consumes `event.subagentRunId` from
  SUBAGENT_STARTED / FINISHED / ERROR. This is the part that MUST move: the
  events are typed as SubagentStartedEvent etc. from @ag-ui/core, so
  against the renamed protocol the old field simply is not there and the
  registry would silently stay empty -- every subagent lookup returning
  undefined, with no error.
- CopilotKit's own API. `useSubagent({ subagentRunId })` and
  `SubagentState.subagentRunId`. Renaming these is what makes the API
  self-consistent: the hook already distinguishes `subagentRunId` (exact,
  one invocation) from `subagentName` (the declared `subagent_type`, not
  unique), which is precisely the definition-vs-invocation split the old
  name blurred.

This is a breaking change to `useSubagent`, taken now because the hook has
never shipped -- it exists only on this unmerged branch, so there is no
released consumer to migrate and no alias to maintain.

The @ag-ui override repin is in the same commit rather than a separate
`chore(deps)` one because the two are atomically coupled: the rename cannot
typecheck against the old canaries, and the repin alone would leave the
registry reading a field the stream no longer emits. Splitting them would
mean one commit that is definitely broken either way.

Verified: @copilotkit/core and @copilotkit/react-core typecheck against the
renamed protocol, and react-core's 1424 tests pass. The typecheck is
load-bearing here, not incidental -- injecting a deliberately wrong field
name produces 5 TS errors, so a green check really does prove the field
matches @ag-ui/core's types.

Note: the registry and hook still have no test coverage of their own; the
only subagent assertions live downstream in the AG-UI dojo demo.
2026-08-10 11:44:40 +02:00
..
2026-04-10 23:38:59 +00:00