Skip to content

Update types to @ag-ui/core 1.0 #1460

Description

@tombeckenham

Task

Bump @ag-ui/core in packages/ai from 0.1.1-canary.beta.0 to 1.0.0 and source the AG-UI event types from the package instead of hand-written copies.

Why

  • packages/ai/src/types.ts already imports every AG-UI event type from @ag-ui/core and declares the local events with extends. The three subagent events in PR feat: add AG-UI subagents to chat() and useChat #1438 are the exception because the pinned canary predates them.
  • @ag-ui/core@1.0.0 (published 2026-09-17) ships SubagentStartedEvent, SubagentFinishedEvent, SubagentErrorEvent, SubagentInfo, SubagentRunId, the Attributable (subagentRunId) mixin, and SUBAGENT_* members on EventType.
  • The Zod reason for avoiding the package is gone: 1.0.0 has no dependencies, zod is an optional peer at ^3.25.18 || ^4.0.0, and the main entry does not import zod. Only the /schemas subpath does, and we do not use it. This is the layout PR refactor(ai): remove zod from the dependency graph #1038 adopted via the canary.
  • Renovate will not offer this bump because the pin is a prerelease.

Scope

  1. Bump the pin in packages/ai/package.json and regenerate pnpm-lock.yaml.
  2. Fix any type errors from event shapes that changed between the canary and 1.0.0. Keep the repo's own event interfaces as extends of the imported ones, with the same optionality as the spec (never stricter).
  3. Add SubagentStartedEvent, SubagentFinishedEvent, SubagentErrorEvent to the AGUIEvent union in packages/ai/src/types.ts as extends of the package types, and add the SUBAGENT_* entries to the EventType re-export in packages/ai/src/client.ts.
  4. Add the three event types and their spec keys (subagentRunId, name, description, parentSubagentRunId, parentToolCallId, parentMessageId, result, outcome, message, code) to packages/ai/src/utilities/spec-event-keys.ts, and subagentRunId to every attributable event, so toWireChunk does not move them into metadata.tanstack.
  5. Changeset for @tanstack/ai (patch or minor, your call; the public StreamChunk union gains three members).
  6. pnpm test:pr green.

Out of scope: the subagent runtime (spawn, router, processor, client handles). That stays in #1438, which should rebase onto this once merged and delete its duplicate interfaces in spawn.ts and types.ts.

Verification

  • pnpm test:types and pnpm test:build pass.
  • A unit test pushes a SUBAGENT_STARTED event and an attributed TEXT_MESSAGE_CONTENT through toWireChunk and asserts the fields stay top-level.
  • Confirm pnpm why zod shows no new zod path from packages/ai.

Related: #520 (Zod 3 conflict, resolved by #1038 and can be closed), #1438 (subagents).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions