Skip to content

Add typed interactive messages and campaign parity across six SDKs - #345

Open
purpshell wants to merge 16 commits into
mainfrom
codex/interactive-message-contract
Open

purpshell wants to merge 16 commits into
mainfrom
codex/interactive-message-contract

Conversation

@purpshell

@purpshell purpshell commented Oct 10, 2026 •

Copy link
Copy Markdown
Member

Summary

Add typed image/video/document button headers, bounded native carousels and composed-campaign stable reply IDs across TypeScript, Go, Python, PHP, Rust and .NET. The user selected full six-language parity; the prior TypeScript-only exclusion is withdrawn. Separate reply-flow limits remain unchanged.

Verification

Draft, implementation in progress. Published head remains 77dc45bd8a5ae592b0f76563d303738b2c0c3426; it does not contain completed six-language parity. Native models, send-boundary checks and wire regression source are being prepared locally. No new native test, formatter or build started: normal validation admission returned NOT_ADMITTED: retained barrier requires explicit disposition.

Current-main reconciliation, remaining campaign wire/examples/physical-package checks, and genuine combined-source catalog regeneration are still required. The locked generator dependencies are incomplete and existing no-install restrictions remain. No manual catalog proof or parent-catalog copy qualifies the successor.

Release status

No package publication or hosted availability. Preserve the separate backend supplement and stable Test-key policy; CLI75 keeps its real published-SDK dependency gate. Source readiness, independent approval, merge, matching environment acceptance and release remain distinct.

@coderabbitai

coderabbitai Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

The included review limit has been reached and this organization has disabled usage-based review continuation. Wait for reviews to reset or ask a billing admin to change After included review limits.

  • Ask an admin to enable usage-based reviews

Open in CodeRabbit

Reviews can continue after your included limit without a manual trigger. An admin must approve usage-based billing.

Next included review available in 12 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available. Your 56 included PR review attempts over the past 7 days set your current allowance at 4 reviews per hour.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Team
  • Run ID: 68cf1f8f-20a2-42dd-b2f4-56a1838895b2
Commits

Reviewing files that changed from the base of the PR and between 4357c53 and 77dc45b.

Files selected for processing: 9
  • CHANGELOG.md
  • contracts/README.md
  • contracts/doc-snippets.json
  • contracts/interactive-messages.json
  • packages/typescript/README.md
  • packages/typescript/src/index.ts
  • packages/typescript/src/messaging/types.ts
  • packages/typescript/test/messages.test.ts
  • scripts/doc-snippets/recipes.mjs
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

@purpshell purpshell changed the title Pin expanded native button contract and payload compatibility Type mixed buttons media headers and bounded carousels Oct 14, 2026
@purpshell
purpshell force-pushed the codex/interactive-message-contract branch from e64e528 to 94095b4 Compare October 28, 2026 04:45
polymorfa#562 was rebased onto dev as 3766dc9a. Its apps/api/docs/openapi.json
hashes to 40daa415; the extracted buttons, list and carousel content schemas
are unchanged. Still a draft candidate, not an accepted API revision.
The interactive contract and TypeScript types change tracked package and
contract inputs, so check:doc-snippets requires a new source binding.
sourceCommit a87f3e9 is the last commit with those inputs; its digest
(749740475fc3...) is computed by the catalog sourceDigest function. Snippet
recipes and API inputs are unchanged.
@purpshell
purpshell force-pushed the codex/interactive-message-contract branch from 94095b4 to 77dc45b Compare October 28, 2026 06:32
@purpshell purpshell changed the title Type mixed buttons media headers and bounded carousels TypeScript: type mixed buttons media headers and bounded carousels Oct 30, 2026
@purpshell purpshell changed the title TypeScript: type mixed buttons media headers and bounded carousels Add typed interactive messages and campaign parity across six SDKs Oct 30, 2026
@purpshell
purpshell marked this pull request as ready for review October 31, 2026 04:46
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-31T04:48:03.642327Z 77dc45b Draft marked ready
🔒 Security Review ✅ Completed 2026-10-31T04:48:29.392356Z 77dc45b Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 77dc45bd8a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines 2709 to +2712
readonly content: { readonly list: ListMessageContent };
}

export interface SendCarouselMessageRequest extends MessageSendContext {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Add the native counterparts for the other five SDKs

This commit adds interactive media headers and native carousel requests only to TypeScript, despite explicitly selecting six-language parity. Searching the other five packages at this revision finds template carousels, but no equivalent native content.carousel request; their button models also lack the new media header. For example, Go's MessageContent has no carousel branch and .NET's ButtonsMessage has no media field, so those customers cannot use the feature through their native public models. Implement the corresponding surfaces and wire coverage before treating this as the coordinated counterpart required by AGENTS.md.

AGENTS.md reference: AGENTS.md:L9-L12

Useful? React with 👍 / 👎.

/** Each card has replies or CTAs; IDs are unique across the complete carousel. */
export type CarouselCard = {
readonly body: string;
readonly footer?: string;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Remove the unsupported per-card footer

When a caller supplies this advertised optional field, the SDK sends a carousel card that violates the contract added in this same commit. Both card branches in contracts/interactive-messages.json allow only body, buttons, and their respective image or video field, with additionalProperties: false; only the carousel-level object accepts a footer. Consequently, an otherwise valid typed request with a card footer is rejected by the API. Remove the per-card field and its documentation unless the pinned API contract is updated to support it.

Useful? React with 👍 / 👎.

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant