Skip to content

Multi session tests - #5099

Open
rsarika wants to merge 53 commits into
webex:nextfrom
lego0110:multiSessionTests
Open

Multi session tests#5099
rsarika wants to merge 53 commits into
webex:nextfrom
lego0110:multiSessionTests

Conversation

@rsarika

@rsarika rsarika commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

COMPLETES #< INSERT LINK TO ISSUE >

This pull request addresses

< DESCRIBE THE CONTEXT OF THE ISSUE >

by making the following changes

< DESCRIBE YOUR CHANGES >

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

< ENUMERATE TESTS PERFORMED, WHETHER MANUAL OR AUTOMATED >

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 - Please Specify
  • This PR is related to
    • Feature
    • Defect fix
    • Tech Debt
    • Automation

I certified that

  • I have read and followed contributing guidelines
  • I discussed changes with code owners prior to submitting this pull request
  • I have not skipped any automated checks
  • All existing and new tests passed
  • I have updated the documentation accordingly

Make sure to have followed the contributing guidelines before submitting.

adhmenon and others added 30 commits May 21, 2025 19:53
Co-authored-by: robstax <robert.stachofsky@gmail.com>
Co-authored-by: rstachof <rstachof@cisco.com>
Co-authored-by: Coread <coread@cisco.com>
Co-authored-by: László Vadász <maxinteger@gmail.com>
Co-authored-by: chrisadubois <chdubois@cisco.com>
Co-authored-by: Kesava Krishnan Madavan <mkesavan13@gmail.com>
Co-authored-by: Kacper Waśniowski <kacp.was@gmail.com>
Co-authored-by: Edmond Vujići <67634227+edvujic@users.noreply.github.com>
Co-authored-by: Sreekanth Narayanan <131740035+sreenara@users.noreply.github.com>
Co-authored-by: Peter Cole <55573154+peter7cole@users.noreply.github.com>
Co-authored-by: rsarika <95286093+rsarika@users.noreply.github.com>
Co-authored-by: akulakum <74420487+akulakum@users.noreply.github.com>
Co-authored-by: Kesari3008 <65543166+Kesari3008@users.noreply.github.com>
Co-authored-by: Bharath Balan <62698609+bhabalan@users.noreply.github.com>
Co-authored-by: Marcin <marcin.bazyl@gmail.com>
Co-authored-by: Bryce Tham <brycetham@users.noreply.github.com>
Co-authored-by: shivani1211 <shivaniyadav1211@gmail.com>
Co-authored-by: mickelr <121160648+mickelr@users.noreply.github.com>
Co-authored-by: Priya <pkesari@cisco.com>
Co-authored-by: robstax <robert.stachofsky@gmail.com>
Co-authored-by: rstachof <rstachof@cisco.com>
Co-authored-by: Coread <coread@cisco.com>
Co-authored-by: László Vadász <maxinteger@gmail.com>
Co-authored-by: chrisadubois <chdubois@cisco.com>
Co-authored-by: Kesava Krishnan Madavan <mkesavan13@gmail.com>
Co-authored-by: Kacper Waśniowski <kacp.was@gmail.com>
Co-authored-by: Edmond Vujići <67634227+edvujic@users.noreply.github.com>
Co-authored-by: Sreekanth Narayanan <131740035+sreenara@users.noreply.github.com>
Co-authored-by: Peter Cole <55573154+peter7cole@users.noreply.github.com>
Co-authored-by: rsarika <95286093+rsarika@users.noreply.github.com>
Co-authored-by: akulakum <74420487+akulakum@users.noreply.github.com>
Co-authored-by: Kesari3008 <65543166+Kesari3008@users.noreply.github.com>
Co-authored-by: Bharath Balan <62698609+bhabalan@users.noreply.github.com>
Co-authored-by: Marcin <marcin.bazyl@gmail.com>
Co-authored-by: Bryce Tham <brycetham@users.noreply.github.com>
Co-authored-by: shivani1211 <shivaniyadav1211@gmail.com>
Co-authored-by: mickelr <121160648+mickelr@users.noreply.github.com>
Co-authored-by: robstax <robert.stachofsky@gmail.com>
Co-authored-by: rstachof <rstachof@cisco.com>
Co-authored-by: Coread <coread@cisco.com>
Co-authored-by: László Vadász <maxinteger@gmail.com>
Co-authored-by: chrisadubois <chdubois@cisco.com>
Co-authored-by: Kesava Krishnan Madavan <mkesavan13@gmail.com>
Co-authored-by: Kacper Waśniowski <kacp.was@gmail.com>
Co-authored-by: Edmond Vujići <67634227+edvujic@users.noreply.github.com>
Co-authored-by: Sreekanth Narayanan <131740035+sreenara@users.noreply.github.com>
Co-authored-by: Peter Cole <55573154+peter7cole@users.noreply.github.com>
Co-authored-by: rsarika <95286093+rsarika@users.noreply.github.com>
Co-authored-by: akulakum <74420487+akulakum@users.noreply.github.com>
Co-authored-by: Kesari3008 <65543166+Kesari3008@users.noreply.github.com>
Co-authored-by: Bharath Balan <62698609+bhabalan@users.noreply.github.com>
Co-authored-by: Marcin <marcin.bazyl@gmail.com>
Co-authored-by: Bryce Tham <brycetham@users.noreply.github.com>
Co-authored-by: shivani1211 <shivaniyadav1211@gmail.com>
Co-authored-by: mickelr <121160648+mickelr@users.noreply.github.com>
Co-authored-by: Jordan Rowan <86778628+jor-row@users.noreply.github.com>
Co-authored-by: Anna Tsukanova <38460776+antsukanova@users.noreply.github.com>
Co-authored-by: John Soter <john.soter@outlook.com>
Co-authored-by: jsoter <jsoter@cisco.com>
Co-authored-by: Arun Ganeshan <arungane@cisco.com>
Co-authored-by: Rajesh Kumar <131742425+rarajes2@users.noreply.github.com>
Co-authored-by: Shreyas Sharma <72344404+Shreyas281299@users.noreply.github.com>
Co-authored-by: Stan Wang <stanjiawang@gmail.com>
Co-authored-by: Stan Wang <stawang2@cisco.com>
Co-authored-by: honghli <honghli@cisco.com>
Co-authored-by: JudyZhu <120536178+JudyZhuHz@users.noreply.github.com>
Co-authored-by: jiwang7 <133743423+jiwang7@users.noreply.github.com>
# Conflicts:
#	docs/samples/contact-center/app.js
#	docs/samples/contact-center/index.html
#	package.json
#	packages/@webex/contact-center/README.md
#	packages/@webex/contact-center/babel.config.js
#	packages/@webex/contact-center/package.json
#	packages/@webex/contact-center/src/cc.ts
#	packages/@webex/contact-center/src/constants.ts
#	packages/@webex/contact-center/src/index.ts
#	packages/@webex/contact-center/src/logger-proxy.ts
#	packages/@webex/contact-center/src/metrics/behavioral-events.ts
#	packages/@webex/contact-center/src/metrics/constants.ts
#	packages/@webex/contact-center/src/services/config/constants.ts
#	packages/@webex/contact-center/src/services/config/index.ts
#	packages/@webex/contact-center/src/services/config/types.ts
#	packages/@webex/contact-center/src/services/core/GlobalTypes.ts
#	packages/@webex/contact-center/src/services/core/Utils.ts
#	packages/@webex/contact-center/src/services/core/aqm-reqs.ts
#	packages/@webex/contact-center/src/services/core/websocket/WebSocketManager.ts
#	packages/@webex/contact-center/src/services/task/TaskManager.ts
#	packages/@webex/contact-center/src/services/task/constants.ts
#	packages/@webex/contact-center/src/services/task/index.ts
#	packages/@webex/contact-center/src/services/task/types.ts
#	packages/@webex/contact-center/src/types.ts
#	packages/@webex/contact-center/test/unit/spec/cc.ts
#	packages/@webex/contact-center/test/unit/spec/services/config/index.ts
#	packages/@webex/contact-center/test/unit/spec/services/core/Utils.ts
#	packages/@webex/contact-center/test/unit/spec/services/task/TaskManager.ts
#	packages/@webex/contact-center/test/unit/spec/services/task/index.ts
#	packages/@webex/contact-center/typedoc.md
#	packages/@webex/internal-plugin-metrics/package.json
#	packages/@webex/internal-plugin-metrics/src/call-diagnostic/call-diagnostic-metrics.ts
#	packages/@webex/internal-plugin-metrics/src/new-metrics.ts
#	packages/@webex/internal-plugin-metrics/test/unit/spec/call-diagnostic/call-diagnostic-metrics.ts
#	packages/@webex/internal-plugin-metrics/test/unit/spec/new-metrics.ts
#	packages/@webex/internal-plugin-voicea/src/constants.ts
#	packages/@webex/internal-plugin-voicea/src/voicea.ts
#	packages/@webex/internal-plugin-voicea/test/unit/spec/voicea.js
#	packages/@webex/media-helpers/package.json
#	packages/@webex/plugin-meetings/package.json
#	packages/@webex/plugin-meetings/src/config.ts
#	packages/@webex/plugin-meetings/src/constants.ts
#	packages/@webex/plugin-meetings/src/locus-info/index.ts
#	packages/@webex/plugin-meetings/src/media/index.ts
#	packages/@webex/plugin-meetings/src/media/properties.ts
#	packages/@webex/plugin-meetings/src/meeting/in-meeting-actions.ts
#	packages/@webex/plugin-meetings/src/meeting/index.ts
#	packages/@webex/plugin-meetings/src/meetings/index.ts
#	packages/@webex/plugin-meetings/src/member/index.ts
#	packages/@webex/plugin-meetings/src/member/util.ts
#	packages/@webex/plugin-meetings/src/members/index.ts
#	packages/@webex/plugin-meetings/src/members/request.ts
#	packages/@webex/plugin-meetings/src/members/util.ts
#	packages/@webex/plugin-meetings/src/reachability/index.ts
#	packages/@webex/plugin-meetings/test/unit/spec/locus-info/index.js
#	packages/@webex/plugin-meetings/test/unit/spec/media/index.ts
#	packages/@webex/plugin-meetings/test/unit/spec/meeting/brbState.ts
#	packages/@webex/plugin-meetings/test/unit/spec/meeting/in-meeting-actions.ts
#	packages/@webex/plugin-meetings/test/unit/spec/meeting/index.js
#	packages/@webex/plugin-meetings/test/unit/spec/meetings/index.js
#	packages/@webex/plugin-meetings/test/unit/spec/members/index.js
#	packages/@webex/plugin-meetings/test/unit/spec/members/request.js
#	packages/@webex/plugin-meetings/test/unit/spec/members/utils.js
#	packages/@webex/plugin-meetings/test/unit/spec/reachability/index.ts
#	packages/calling/package.json
#	yarn.lock
Co-authored-by: xiaoyang <13363075304@163.com>
Co-authored-by: rsarika <95286093+rsarika@users.noreply.github.com>
Co-authored-by: Rajesh Kumar <131742425+rarajes2@users.noreply.github.com>
Co-authored-by: akulakum <74420487+akulakum@users.noreply.github.com>
Co-authored-by: Marcin <marcin.bazyl@gmail.com>
Co-authored-by: Lisa Smith <82507773+lismith2-cisco@users.noreply.github.com>
Co-authored-by: Shreyas Sharma <72344404+Shreyas281299@users.noreply.github.com>
Co-authored-by: Ravi Chandra Sekhar Sarika <rsarika@cisco.com>
Co-authored-by: Kesari3008 <65543166+Kesari3008@users.noreply.github.com>
Co-authored-by: WeijuanShao <weijusha@cisco.com>
Co-authored-by: sokn-sys <58249052+sokn-sys@users.noreply.github.com>
Co-authored-by: CormacGCisco <cogeragh@cisco.com>
Co-authored-by: Coread <coread@cisco.com>
Co-authored-by: junhao3268 <142187938+junhao3268@users.noreply.github.com>
Co-authored-by: mickelr <121160648+mickelr@users.noreply.github.com>
Co-authored-by: vskygk <49182080+vskygk@users.noreply.github.com>
Co-authored-by: vicwan <vicwan@cisco.com>
Co-authored-by: JudyZhu <120536178+JudyZhuHz@users.noreply.github.com>
Co-authored-by: chrisadubois <chdubois@cisco.com>
Co-authored-by: venky-mediboina <91044509+venky-mediboina@users.noreply.github.com>
Co-authored-by: Bharath Balan <62698609+bhabalan@users.noreply.github.com>
Co-authored-by: Hem Dutt <hdutt@cisco.com>
Co-authored-by: Hem Dutt <hemdutt.developer@gmail.com>
Co-authored-by: arungane <arungane@cisco.com>
webex#4721)

Co-authored-by: Rankush Kumar <rankkuma+cisco@cisco.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Rankush Kumar <rankkuma+cisco@cisco.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…ex#4734)

Co-authored-by: Rankush Kumar <rankkuma+cisco@cisco.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…x#4735)

Co-authored-by: Rankush Kumar <rankkuma+cisco@cisco.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…ex#4730)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…bex#4728)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
webex#4731)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…ebex#4729)

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Priya <pkesari@cisco.com>
Co-authored-by: Kesari3008 <65543166+Kesari3008@users.noreply.github.com>
Add automated SDD documentation drift detection tooling:
- /spec-drift: full scan command for validating all ai-docs against source code
- /spec-drift-changed: incremental scan for changed files only
- Pre-commit hook to block commits when ai-docs drift is unverified

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Shreyas Sharma <shreyassharma9912@gmail.com>
Co-authored-by: Kesava Krishnan Madavan <mkesavan13@gmail.com>
Co-authored-by: ciscoRankush <119413473+ciscoRankush@users.noreply.github.com>
Co-authored-by: Rankush Kumar <rankkuma+cisco@cisco.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Shreyas Sharma <72344404+Shreyas281299@users.noreply.github.com>
…ebex#4722)

Co-authored-by: Rankush Kumar <rankkuma+cisco@cisco.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Shreyas Sharma <72344404+Shreyas281299@users.noreply.github.com>
…it hook (webex#4761)

Co-authored-by: ciscoRankush <ciscoRankush@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Rankush Kumar <rankkuma+cisco@cisco.com>
…ebex#4763)

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
…#4762)

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
akulakum and others added 23 commits March 26, 2026 13:40
Co-authored-by: Kesava Krishnan Madavan <mkesavan13@gmail.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
webex#4810)

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
… customer disconnect and consult failures with guard protection (webex#4841)
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
…ebex#4805)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Rankush Kumar <rankkuma+cisco@cisco.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: akulakum <74420487+akulakum@users.noreply.github.com>
Co-authored-by: Akula Uday <akulakum@cisco.com>
@rsarika
rsarika requested review from a team as code owners July 16, 2026 12:17

@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: 5ffc748c79

ℹ️ 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 +375 to +376
if (stateMachineEvent) {
task.sendStateMachineEvent(stateMachineEvent);

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 Gate WebRTC task incoming until the call exists

When loginOption is BROWSER and the telephony AgentContactReserved event arrives before LINE_EVENTS.INCOMING_CALL, this unconditional state-machine send emits TASK_INCOMING immediately. The previous path waited for this.call before emitting; now an agent can accept while WebCallingService.call is still unset, and answerCall() only logs and returns, so the UI records a successful accept without answering the actual call. Keep the old gate or defer TASK_INCOMING to handleIncomingWebCall for WebRTC tasks.

Useful? React with 👍 / 👎.

);
this.mobiusClusters = [mobiusObject.serviceUrls[0].baseUrl];
}
this.mobiusClusters = this.webex.internal.services.getMobiusClusters();

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 Restore Mobius cluster fallback for legacy services

In deployments backed by the legacy services object without _hostCatalog, getMobiusClusters() returns an empty array; the previous constructor explicitly fell back to _services. With an empty array, getMobiusServers() either skips regional discovery and creates a Line with no primaryMobiusUris, or in the default path dereferences this.mobiusClusters[0].host, blocking CallingClient.init(). Preserve the old _services/default fallback before relying on this helper.

Useful? React with 👍 / 👎.

Comment on lines +141 to +142
async handleMessage(message: HashTreeMessage, debugText?: string): Promise<void> {
// todo

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 Implement hash-tree parsing before routing events to it

For meetings that set hashTreeParser (join/get-loci responses with dataSets or LLM locus.state_message), LocusInfo.parse() no longer handles the classic locus path and calls handleMessage() instead. Since handleMessage() is a no-op and never calls locusInfoUpdateCallback, participant/self/media updates from hash-tree events are silently dropped for those meetings. Keep the classic handling path or leave hash-tree routing disabled until the parser is implemented.

Useful? React with 👍 / 👎.

private requestRealTimeTranscripts(eventType: string, interactionId: string): void {
const action = TRANSCRIPT_EVENT_MAP[eventType];
if (!action || !this.apiAIAssistant) return;
if (this.configFlags?.aiFeature?.realtimeTranscripts?.enable === false) return;

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 Require realtime transcript flag before sending events

When aiFeature or realtimeTranscripts is absent for tenants that do not have the feature, this guard only skips the explicit false case, so every mapped task event still calls ApiAIAssistant.sendEvent() and produces failed AI-assistant requests. This is inconsistent with cc.ts, which only opens the RTD websocket when enable is true, and with fetchHistoricTranscripts(), which rejects unless the flag is true. Require enable === true before sending transcript start/stop events.

Useful? React with 👍 / 👎.

@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-5099.d3m3l2kee0btzx.amplifyapp.com

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.

9 participants