#457

feat(chat): add portable layouts, choices, tasks, and feedback

Openmaxffarrellwants to merge intofrom

The chat catalog currently omits portable Chat SDK controls such as selects and radio groups, and cannot express grouped layouts, task snapshots, or response feedback.

Extends the existing shared catalog and toCard/streamCard APIs with Select, RadioSelect, Link, Columns, Carousel, TaskList, Task, and Feedback. All components produce portable Chat SDK elements and use thread.post(); there is no separate Slack catalog or native-payload posting path.

  • Select/radio props retain IDs, option values, initial selections, and adapter submission behavior. Validation rejects duplicate option values and invalid initial selections.
  • Columns/carousels contain Section or nested Card items and emit an optional Section layout hint. Existing adapters stack their items. Native adapter enhancements are proposed in https://github.com/vercel/chat/pull/1126 and remain dependent on that PR being merged and released; this package requires no unreleased dependency.
  • Task lists render status/details/output snapshots as portable text. Live plans continue to use Chat SDK's existing Plan API.
  • Feedback uses ordinary buttons with distinct <id>:positive / <id>:negative action IDs and matching values.
  • Nested Card images are retained, and empty/incomplete groups are pruned during streaming.

Updates the package README, API docs, skill, and affected documentation baseline. Platform-specific interaction support still applies: for example, Discord select controls require Components V2, and Teams follows its card submission flow.

Validation:

  • 31 chat tests passed against the released adapters
  • The same 31 tests passed against the proposed SDK adapter builds
  • Composed payload checks passed for Slack, Teams, and Google Chat native/fallback layouts
  • pnpm type-check: 64 tasks passed
  • Chat package and production docs builds passed
  • Documentation route and Markdown parity checks: 124 passed

The SDK contribution separately passed its full pnpm validate pipeline, including 8,774 tests across 28 test packages and fallback coverage across 15 additional adapter packages. No live provider API calls were made.

Activity

7
vercel[bot]5d ago

@maxffarrell is attempting to deploy a commit to the Vercel Labs Team on Vercel.

A member of the Team first needs to authorize it.

vercel[bot]reviewed5d ago
maxffarrellreviewed5d ago
maxffarrell5d ago

Reworked this around Chat SDK's shared card model in 06e73ac. The separate Slack catalog and native posting path have been removed. Selects, radios, inline links, feedback buttons, task snapshots, and grouped layouts now use the existing toCard / streamCard APIs.

The native layout enhancement is proposed upstream in https://github.com/vercel/chat/pull/1126. Released adapters stack the layout groups today; no unreleased SDK dependency is required here. The SDK proposal adds native layouts where supported and preserves existing vertical behavior elsewhere, with fallback coverage across 15 additional adapter packages.

Validation passed: 31 chat tests against both released and proposed SDK adapters, composed Slack/Teams/Google Chat payload checks, the workspace type check, package/docs builds, and 124 docs route/parity checks. The SDK proposal also passed its complete pnpm validate pipeline (8,774 tests) and package convention checks.