@webex/contact-center 3.12.0-next.149 → 3.12.0-next.150

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/.sdd/manifest.json +1 -1
  2. package/ai-docs/CONTRACTS.md +1 -0
  3. package/dist/cc.js +4 -4
  4. package/dist/cc.js.map +1 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/services/config/Util.js +38 -45
  7. package/dist/services/config/Util.js.map +1 -1
  8. package/dist/services/config/constants.js +15 -71
  9. package/dist/services/config/constants.js.map +1 -1
  10. package/dist/services/config/index.js +49 -226
  11. package/dist/services/config/index.js.map +1 -1
  12. package/dist/services/config/types.js +33 -11
  13. package/dist/services/config/types.js.map +1 -1
  14. package/dist/types/cc.d.ts +3 -3
  15. package/dist/types/index.d.ts +16 -8
  16. package/dist/types/services/config/Util.d.ts +4 -8
  17. package/dist/types/services/config/constants.d.ts +15 -71
  18. package/dist/types/services/config/index.d.ts +16 -64
  19. package/dist/types/services/config/types.d.ts +97 -160
  20. package/dist/webex.js +1 -1
  21. package/package.json +1 -1
  22. package/src/cc.ts +4 -4
  23. package/src/index.ts +16 -8
  24. package/src/services/agent/ai-docs/AGENTS.md +1 -1
  25. package/src/services/config/Util.ts +43 -82
  26. package/src/services/config/ai-docs/AGENTS.md +34 -39
  27. package/src/services/config/ai-docs/ARCHITECTURE.md +88 -101
  28. package/src/services/config/ai-docs/config-spec.md +115 -132
  29. package/src/services/config/constants.ts +18 -80
  30. package/src/services/config/index.ts +52 -278
  31. package/src/services/config/types.ts +101 -185
  32. package/test/unit/spec/index.ts +6 -2
  33. package/test/unit/spec/services/config/Util.ts +442 -70
  34. package/test/unit/spec/services/config/index.ts +246 -544
  35. package/typedoc.md +1 -1
  36. package/umd/contact-center.min.js +2 -2
  37. package/umd/contact-center.min.js.map +1 -1
@@ -228,7 +228,7 @@
228
228
  "Agent profile aggregation including fail-closed Agent Wellness Break enablement; config endpoint methods including exact, registration-owned system wellness idle-code lookup; CC event/type contracts; outdial ANI access"
229
229
  ],
230
230
  "requires": [
231
- "WebexRequest; WCC organization, team, profile, AI-feature, aux-code, dial-plan, site, tenant, and URL-mapping APIs"
231
+ "WebexRequest; WCC organization and user desktop-login aggregate APIs; WCC team, aux-code, dial-plan, and site APIs"
232
232
  ]
233
233
  },
234
234
  "section_profile": {
@@ -18,6 +18,7 @@
18
18
  | `contact-center.state-controls` | Task state machine | `getDefaultUIControls`, `TaskUIControls` with ordered `consultTransferDestinations` arrays | Task controls include per-leg action state plus ordered `consult`/`transfer` destination categories derived from profile and interaction policy | additive semver public field; destination arrays are SDK-owned and first item is the consumer default | `src/services/task/state-machine/ai-docs/task-state-machine-spec.md` | `src/index.ts`, `src/services/task/types.ts`, `src/services/task/state-machine/uiControlsComputer.ts` |
19
19
  | `contact-center.conference-participant-drop` | Task | `DropConferenceParticipantPayload`, `ITask.dropConferenceParticipant` | `(payload: {participantId: string}) => Promise<TaskResponse>`; Voice resolves from correlated `ParticipantLeftConference`, while non-voice base Task rejects as unsupported. Existing participant/consult lifecycle events may resolve one unique child-keyed task by `mainInteractionId`; no new public event is introduced. | semver public | `src/services/task/ai-docs/task-spec.md`, `src/services/task/state-machine/ai-docs/task-state-machine-spec.md` | `src/index.ts`, `src/services/task/types.ts`, `src/services/task/voice/Voice.ts`, `src/services/task/contact.ts`, `src/services/task/TaskManager.ts` |
20
20
  | `contact-center.wxapp-answer` | Contact Center / Task | `enableWxBetterTogether`, `isWxBetterTogetherEnabled()`, `getWxAppMuted`, `syncWxAppMuteFromCallDetails`, unified task telephony (`ITask.accept`, `decline`, `toggleMute({ muted?, lineOwnerId? })`, `transmitDtmf({ dtmf, lineOwnerId? })`) | init flag ON → usersub `true` + Mercury on supported station login **and silent relogin**; init flag OFF → force usersub `false` on supported station login **and silent relogin** (clears stale suppression after refresh); **Phase 1 init-only** — change flag via re-init; multi-login supported; mute backfill via GET call details + `getWxAppMuted()` on hydrate/refresh; shared-line `lineOwnerId` defaults from participant; SDK `Voice` routes wxApp telephony when flag active | semver public | `src/services/task/ai-docs/task-spec.md`, `ai-docs/contact-center-spec.md`, `src/services/ai-docs/services-spec.md` | `src/cc.ts`, `src/services/task/voice/Voice.ts`, `src/services/task/voice/wxAppVoiceMethods.ts` |
21
+ | `contact-center.desktop-login-aggregate` | Services / Config | `getOrgDesktopLoginConfig`, `getUserDesktopLoginConfig`, `OrgDesktopLoginResponse`, `UserDesktopLoginResponse`, `AgentProfile`, `OrgUrlMappings`, `MicrosoftConfig`, `WebexConfig`; retyped `Profile.teams`; changed `getListOfTeams` / `getAllTeams`; removed `DesktopProfileResponse`, `URLMapping`, `AIFeatureFlagsResponse`, `Profile.environment` | `getAgentConfig` builds `Profile` from 6 calls (5 when `agentProfile.dialPlanEnabled` is false) instead of 11: `organization/{orgId}/desktop-login` and `organization/{orgId}/v2/user/by-ci-user-id/{ciUserId}/desktop-login` replace the org-info, org-setting, tenant-configuration, org-url-mapping, ai-feature, user-by-ci-user-id and agent-profile calls. `getListOfTeams(orgId, page, pageSize, userId)` filters on `userId=={user.dbId}` (unquoted) rather than a team-id list. `multimediaProfileId` resolves team → site. Auxiliary codes return the full organization pool with no per-agent restriction, while `Profile.idleCodesAccess` / `wrapupCodesAccess` still report `ALL` / `SPECIFIC`. Dial plans are filtered on `active`. Microsoft/Webex presence config is read from org level. | **not additive — breaking.** Removal: `DesktopProfileResponse` (renamed to `AgentProfile`), `URLMapping`, `AIFeatureFlagsResponse`, `Profile.environment`, and seven service methods. Payload reinterpretation: `Profile.callVariablesSuppressed` `string` → `boolean`. Semantic break: `getListOfTeams` filter meaning; unrestricted auxiliary-code pool; `webexConfig.stateSynchronizationWebex` may flip `false` → `true`. Type correction: `Profile.teams` `Team[]` → `TeamList[]`, matching what the team API has always returned. Ships as a **major version** — the release commit carries a `BREAKING CHANGE:` body and consumer notes live in `ai-docs/features/desktop-login-aggregate-migration/migration-notes.md`. | `ai-docs/features/desktop-login-aggregate-migration/migration-notes.md`, `src/services/config/ai-docs/config-spec.md` | `src/index.ts`, `src/services/config/index.ts`, `src/services/config/types.ts`, `src/services/config/constants.ts`, `src/services/config/Util.ts` |
21
22
  | `contact-center.agent-wellness-break` | Contact Center / Services / Config | `Profile.isWellnessBreakEnabled`, optional `Profile.agentSessionId` after logged-in registration, `requestWellnessBreak`, `respondToWellnessBreak`, `getWellbeingBreakIdleCode`, `WELLNESS_BREAK_NOTIFICATION_ACTIONS`, `WELLNESS_BREAK_USER_ACTIONS`, `WellnessBreakEvent` | Effective gate = backend-delivered `agentWellbeing.enable` + reminders `ENABLED` + `aiAssistantQuantity > 0`; registration projects the SDK-owned active station session after silent relogin so hosts can validate refresh recovery. Action calls accept no identity or context-mutating fields, read the current organization/agent/session from a read-only provider supplied to ApiAIAssistant at construction, and POST a direct `WellnessBreakAction` custom event; current-session logout, multi-login close, relogin, and deregistration entry update or invalidate the provider's source state; system idle code lookup is exact, registration-generation cached, and rejects stale results; valid wellness notifications from either primary or RTD sockets emit the same public event. | additive semver public; no client-side Split dependency or invented rollout field—the delivered AI feature configuration is the server rollout boundary | `ai-docs/contact-center-spec.md`, `src/services/ai-docs/services-spec.md`, `src/services/config/ai-docs/config-spec.md` | `src/index.ts`, `src/types.ts`, `src/cc.ts`, `src/services/config/types.ts`, `src/services/ApiAiAssistant.ts` |
22
23
 
23
24
  ### Events
package/dist/cc.js CHANGED
@@ -123,7 +123,7 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
123
123
  *
124
124
  * // Login with browser-based calling
125
125
  * await cc.stationLogin({
126
- * teamId: profile.teams[0].teamId,
126
+ * teamId: profile.teams[0].id,
127
127
  * loginOption: 'BROWSER'
128
128
  * });
129
129
  *
@@ -576,12 +576,12 @@ class ContactCenter extends _webexCore.WebexPlugin {
576
576
  *
577
577
  * console.log('Agent ID:', profile.agentId);
578
578
  * console.log('Default DN:', profile.defaultDn);
579
- * console.log('Teams:', profile.teams.map(t => t.teamId));
579
+ * console.log('Teams:', profile.teams.map(t => t.id));
580
580
  * console.log('WebRTC Enabled:', profile.webRtcEnabled);
581
581
  * console.log('Supported Login Options:', profile.loginVoiceOptions);
582
582
  *
583
583
  * // Now you can proceed with station login, state changes, etc.
584
- * await cc.stationLogin({ teamId: profile.teams[0].teamId, loginOption: 'BROWSER' });
584
+ * await cc.stationLogin({ teamId: profile.teams[0].id, loginOption: 'BROWSER' });
585
585
  * ```
586
586
  */
587
587
  async register() {
@@ -1183,7 +1183,7 @@ class ContactCenter extends _webexCore.WebexPlugin {
1183
1183
  this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.AGENT_STATE_CHANGE_SUCCESS, {
1184
1184
  ..._MetricsManager.default.getCommonTrackingFieldForAQMResponse(agentStatusResponse),
1185
1185
  requestedState: data.state,
1186
- teamId: this.agentConfig?.teams[0]?.teamId ?? _constants.EMPTY_STRING,
1186
+ teamId: this.agentConfig?.teams[0]?.id ?? _constants.EMPTY_STRING,
1187
1187
  status: agentStatusResponse.data?.status,
1188
1188
  subStatus: agentStatusResponse.data?.subStatus,
1189
1189
  auxCodeId: data.auxCodeId,