Skip to content

feat(cc): add AI summaries across Contact Center widgets - #747

Draft
rsarika wants to merge 67 commits into
webex:nextfrom
rsarika:ai-assistant-summary
Draft

rsarika wants to merge 67 commits into
webex:nextfrom
rsarika:ai-assistant-summary

Conversation

@rsarika

@rsarika rsarika commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

COMPLETES Issue link pending

This pull request addresses

AI summaries for voice interactions in the Contact Center widgets: the initiating agent's consult/transfer summary, the receiving agent's summary in the AI Assistant, and the post-call summary at wrap-up.

This branch carries the two feature commits from #744 plus simplification and scope cleanup. The changes keep the summary UI in the existing widget/helper/store flow over the Task SDK and preserve the existing consult and wrap-up behavior when summaries are disabled.

by making the following changes

  • Store: keeps one summary entry per interaction and role (aiSummaries[interactionId][role]) and calls the Task SDK methods for requests and responses. It requests a summary only when task.aiSummaryCapabilities enables that kind. Like Agent Desktop, the initiator's and the wrap-up feedback stay local and go out once with the consult/transfer or post-call response; the receiving agent's feedback is sent right away. It uses the SDK summary types directly (sections record, summaryText, resolution, adaptiveCard, thumbs_up/thumbs_down feedback, AISummaryAction) and defines only AISummaryRole, AISummaryEntry and AISummaryStatusDetail.
  • Task: getAISummaryProps builds the mid-call and wrap-up summary views for CallControl. Consult and transfer send the initiator's response as they start. wrapupCall resolves a boolean and sends the post-call response with the wrap-up reason name as wrapUpCode, without waiting for it.
  • cc-components: shared AISummary component; WrapUpSummary (searchable reason list plus summary); the summary in the consult/transfer popover; a "View summary" branch for the receiving agent in the AI Assistant.
  • cc-widgets: onAISummaryStatusChange on the call-control web component.
  • Build: until the SDK is released, the root resolutions points @webex/contact-center at vendor/contact-center-cc-summaries.tgz.
  • Scope cleanup: removed SDK transport/contract test scaffolding, duplicate summary documentation, unused fixtures and extra typecheck scaffolding; reverted publishing formatting, generic CallControl/wrap-up refactors and unrelated test/snapshot fixes. Summary layout and card recovery are scoped to the summary flow. The final diff contains 64 files, down from 76 before this cleanup.
  • Docs: summary-specific contracts and module sections describe the UI state, SDK calls, callback surface and call timing.
  • Removed compared with feat(cc): add AI summaries across Contact Center widgets #744: the SDK lock and release-verification tooling, the design and requirement artifacts, the Playwright visual/E2E harness, the sample-app fixtures and E2E bridge, widget-side copies of the SDK summary types, the Adaptive Card resource sanitizer and renderability check (Agent Desktop renders the card as received), and changes unrelated to summaries (callback type widenings, findMediaResourceId, test script excludes).

Before merge:

  • Release the SDK, then replace the vendored tarball and resolution with the published version.
  • Known SDK behavior: a CONSULT request superseded by TRANSFER never settles. The store applies a result only while its entry is still loading, so the newer request wins, but the SDK should still settle the superseded promise.
  • There is no AI summary E2E suite yet.

Change Type

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update
  • Tooling change
  • Internal code refactor

The following scenarios were tested

  • The testing is done with the amplify link
  • yarn test:cc-widgets on Node 24 passes for every workspace, including store, task, cc-components and ai-assistant.
  • yarn test:tooling and eslint (test:styles) pass; the pre-commit hook passed.
  • The React sample app typechecks and builds with webpack.
  • The committed yarn.lock resolves unchanged from a clean worktree.
  • Not run: Playwright E2E, and manual testing against a tenant with AI summaries enabled.

The GAI Coding Policy And Copyright Annotation Best Practices

  • GAI was not used (or, no additional notation is required)
  • Code was generated entirely by GAI
  • GAI was used to create a draft that was subsequently customized or modified
  • Coder created a draft manually that was non-substantively modified by GAI (e.g., refactoring was performed by GAI on manually written code)
  • Tool used for AI assistance (GitHub Copilot / Other - specify)
    • Github Copilot
    • Other - Codex / Artificer, Claude Code
  • This PR is related to
    • Feature
    • Defect fix
    • Tech Debt
    • Automation

Checklist before merging

  • I have not skipped any automated checks
  • All existing and new tests passed
  • I have updated the testing document
  • I have tested the functionality with amplify link

Make sure to have followed the contributing guidelines before submitting.

🤖 Generated with Claude Code

fsiyavud-cisco and others added 24 commits September 24, 2026 05:06
Keep one summary entry per interaction and role in the store. Requests are a
plain await, and a result applies only while its entry is still loading. The
SDK already owns task capabilities, request correlation and the 15s timeout.

- Remove ownership generations, pending-request records, the deadline fence,
  post-call freeze state, capability seeding and the status queue
- Follow Agent Desktop for responses: viewed once when received, edited as a
  flag, DEFAULT / NOT_RECEIVED / IGNORED states, fire-and-forget consult and
  transfer responses, and no wrap-up gating on summary generation
- Update the vendored SDK and its contract test to the new Task wiring
- Make the SDK lock tests independent of git hook env and the host Node version
@aws-amplify-us-east-2

Copy link
Copy Markdown

This pull request is automatically being deployed by Amplify Hosting (learn more).

Access this pull request here: https://pr-747.d1b38q61t1z947.amplifyapp.com

@rsarika
rsarika force-pushed the ai-assistant-summary branch 3 times, most recently from be8828a to 950dc67 Compare October 8, 2026 05:15
Keep only what the AI summary feature needs and follow Agent Desktop where
the widgets differed.

- Drop the AI-pipeline tooling (SDK lock, release verifier, publish boundary),
  design and requirement artifacts, the Playwright visual/E2E harness and the
  sample-app fixtures.
- Request mid-call and post-call summaries only when the task's SDK
  capabilities enable them.
- Keep the initiator's like/dislike local until the consult or transfer
  response instead of sending it twice.
- Send the post-call response with the wrap-up reason name and do not wait
  for it; wrapupCall resolves a boolean.
- Fold the task summary modules into helper.ts with one mid-call view, and
  derive the summary view types from the AISummary props.
- Make AISummary store-driven and WrapUpSummary a controlled component with
  an always-visible reason list; scope the wrap-up popover padding override.
- Use the SDK summary types directly: store entries keep the SDK summary
  fields (sections record, summaryText, resolution, adaptiveCard), feedback
  uses thumbs_up/thumbs_down and the action is AISummaryAction. The store
  defines only AISummaryRole, AISummaryEntry and AISummaryStatusDetail.
- Drop the Adaptive Card resource sanitizer and renderability check that
  Agent Desktop does not have; keep resetting the renderer error boundary
  when a replacement card arrives.
- Revert changes unrelated to summaries (type widenings, mediaResourceId,
  test script excludes, Real-time Assist typing) and trim the test fixtures.
@rsarika
rsarika force-pushed the ai-assistant-summary branch from 950dc67 to 1d3bc54 Compare October 8, 2026 07:07

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.

2 participants