wxcli 1.2.0__py3-none-any.whl

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 (413) hide show
  1. wxcli/__init__.py +4 -0
  2. wxcli/_playbook/.claude/agents/migration-advisor.md +239 -0
  3. wxcli/_playbook/.claude/agents/wxc-calling-builder.md +946 -0
  4. wxcli/_playbook/.claude/rules/cleanup.md +29 -0
  5. wxcli/_playbook/.claude/rules/cucm-migration.md +58 -0
  6. wxcli/_playbook/.claude/rules/org-health.md +14 -0
  7. wxcli/_playbook/.claude/settings.json +8 -0
  8. wxcli/_playbook/.claude/skills/audit-compliance/SKILL.md +515 -0
  9. wxcli/_playbook/.claude/skills/call-control/SKILL.md +747 -0
  10. wxcli/_playbook/.claude/skills/configure-features/SKILL.md +623 -0
  11. wxcli/_playbook/.claude/skills/configure-routing/SKILL.md +627 -0
  12. wxcli/_playbook/.claude/skills/contact-center/SKILL.md +1181 -0
  13. wxcli/_playbook/.claude/skills/cucm-migrate/SKILL.md +820 -0
  14. wxcli/_playbook/.claude/skills/customer-assist/SKILL.md +443 -0
  15. wxcli/_playbook/.claude/skills/device-platform/SKILL.md +407 -0
  16. wxcli/_playbook/.claude/skills/manage-call-settings/SKILL.md +757 -0
  17. wxcli/_playbook/.claude/skills/manage-devices/SKILL.md +790 -0
  18. wxcli/_playbook/.claude/skills/manage-identity/SKILL.md +638 -0
  19. wxcli/_playbook/.claude/skills/manage-licensing/SKILL.md +528 -0
  20. wxcli/_playbook/.claude/skills/manage-meetings/SKILL.md +708 -0
  21. wxcli/_playbook/.claude/skills/messaging-bots/SKILL.md +365 -0
  22. wxcli/_playbook/.claude/skills/messaging-spaces/SKILL.md +520 -0
  23. wxcli/_playbook/.claude/skills/org-health/SKILL.md +159 -0
  24. wxcli/_playbook/.claude/skills/provision-calling/SKILL.md +421 -0
  25. wxcli/_playbook/.claude/skills/query-live/SKILL.md +183 -0
  26. wxcli/_playbook/.claude/skills/query-live/domains/call-flow-trace.md +223 -0
  27. wxcli/_playbook/.claude/skills/query-live/domains/call-history.md +44 -0
  28. wxcli/_playbook/.claude/skills/query-live/domains/features.md +169 -0
  29. wxcli/_playbook/.claude/skills/query-live/domains/numbers.md +93 -0
  30. wxcli/_playbook/.claude/skills/query-live/domains/people-and-settings.md +146 -0
  31. wxcli/_playbook/.claude/skills/query-live/domains/routing.md +124 -0
  32. wxcli/_playbook/.claude/skills/reporting/SKILL.md +501 -0
  33. wxcli/_playbook/.claude/skills/reporting/references/cdr-recipes.md +1628 -0
  34. wxcli/_playbook/.claude/skills/reporting-cc/SKILL.md +251 -0
  35. wxcli/_playbook/.claude/skills/reporting-meetings/SKILL.md +290 -0
  36. wxcli/_playbook/.claude/skills/teardown/SKILL.md +214 -0
  37. wxcli/_playbook/.claude/skills/video-mesh/SKILL.md +379 -0
  38. wxcli/_playbook/.claude/skills/wxc-calling-debug/SKILL.md +475 -0
  39. wxcli/_playbook/CLAUDE.md +373 -0
  40. wxcli/_playbook/docs/reference/CLAUDE.md +25 -0
  41. wxcli/_playbook/docs/reference/admin-apps-data.md +643 -0
  42. wxcli/_playbook/docs/reference/admin-audit-security.md +322 -0
  43. wxcli/_playbook/docs/reference/admin-hybrid.md +383 -0
  44. wxcli/_playbook/docs/reference/admin-identity-scim.md +1007 -0
  45. wxcli/_playbook/docs/reference/admin-licensing.md +414 -0
  46. wxcli/_playbook/docs/reference/admin-org-management.md +586 -0
  47. wxcli/_playbook/docs/reference/admin-partner.md +357 -0
  48. wxcli/_playbook/docs/reference/archive/wxc-sdk-patterns.md +1229 -0
  49. wxcli/_playbook/docs/reference/archive/wxcadm-advanced.md +835 -0
  50. wxcli/_playbook/docs/reference/archive/wxcadm-core.md +743 -0
  51. wxcli/_playbook/docs/reference/archive/wxcadm-devices-workspaces.md +1305 -0
  52. wxcli/_playbook/docs/reference/archive/wxcadm-features.md +849 -0
  53. wxcli/_playbook/docs/reference/archive/wxcadm-locations.md +938 -0
  54. wxcli/_playbook/docs/reference/archive/wxcadm-person.md +1255 -0
  55. wxcli/_playbook/docs/reference/archive/wxcadm-routing.md +1262 -0
  56. wxcli/_playbook/docs/reference/authentication.md +965 -0
  57. wxcli/_playbook/docs/reference/call-control.md +1205 -0
  58. wxcli/_playbook/docs/reference/call-features-additional.md +2541 -0
  59. wxcli/_playbook/docs/reference/call-features-major.md +1320 -0
  60. wxcli/_playbook/docs/reference/call-routing.md +2304 -0
  61. wxcli/_playbook/docs/reference/contact-center-analytics.md +1049 -0
  62. wxcli/_playbook/docs/reference/contact-center-core.md +1614 -0
  63. wxcli/_playbook/docs/reference/contact-center-journey.md +457 -0
  64. wxcli/_playbook/docs/reference/contact-center-routing.md +1138 -0
  65. wxcli/_playbook/docs/reference/devices-core.md +1869 -0
  66. wxcli/_playbook/docs/reference/devices-dect.md +1150 -0
  67. wxcli/_playbook/docs/reference/devices-platform.md +467 -0
  68. wxcli/_playbook/docs/reference/devices-workspaces.md +1426 -0
  69. wxcli/_playbook/docs/reference/emergency-services.md +1122 -0
  70. wxcli/_playbook/docs/reference/location-calling-core.md +2037 -0
  71. wxcli/_playbook/docs/reference/location-calling-media.md +1334 -0
  72. wxcli/_playbook/docs/reference/location-recording-advanced.md +1482 -0
  73. wxcli/_playbook/docs/reference/meetings-content.md +473 -0
  74. wxcli/_playbook/docs/reference/meetings-core.md +903 -0
  75. wxcli/_playbook/docs/reference/meetings-infrastructure.md +899 -0
  76. wxcli/_playbook/docs/reference/meetings-settings.md +850 -0
  77. wxcli/_playbook/docs/reference/messaging-bots.md +1091 -0
  78. wxcli/_playbook/docs/reference/messaging-spaces.md +695 -0
  79. wxcli/_playbook/docs/reference/person-call-settings-behavior.md +1639 -0
  80. wxcli/_playbook/docs/reference/person-call-settings-handling.md +1394 -0
  81. wxcli/_playbook/docs/reference/person-call-settings-media.md +1898 -0
  82. wxcli/_playbook/docs/reference/person-call-settings-permissions.md +1329 -0
  83. wxcli/_playbook/docs/reference/provisioning.md +1366 -0
  84. wxcli/_playbook/docs/reference/reporting-analytics.md +1318 -0
  85. wxcli/_playbook/docs/reference/self-service-call-settings.md +1020 -0
  86. wxcli/_playbook/docs/reference/virtual-lines.md +1132 -0
  87. wxcli/_playbook/docs/reference/webhooks-events.md +1444 -0
  88. wxcli/_playbook/docs/reference/wxcadm-xsi-realtime.md +953 -0
  89. wxcli/_version.py +24 -0
  90. wxcli/auth.py +137 -0
  91. wxcli/commands/__init__.py +0 -0
  92. wxcli/commands/_registry.py +181 -0
  93. wxcli/commands/activation_email.py +103 -0
  94. wxcli/commands/admin_recordings.py +585 -0
  95. wxcli/commands/analytics.py +105 -0
  96. wxcli/commands/announcement_playlists.py +219 -0
  97. wxcli/commands/announcements.py +519 -0
  98. wxcli/commands/archive_users.py +36 -0
  99. wxcli/commands/attachment_actions.py +60 -0
  100. wxcli/commands/audit_events.py +83 -0
  101. wxcli/commands/authorizations.py +113 -0
  102. wxcli/commands/auto_attendant.py +642 -0
  103. wxcli/commands/broadworks_billing_reports.py +126 -0
  104. wxcli/commands/broadworks_enterprises.py +160 -0
  105. wxcli/commands/broadworks_subscribers.py +319 -0
  106. wxcli/commands/broadworks_workspaces.py +108 -0
  107. wxcli/commands/call_controls.py +1304 -0
  108. wxcli/commands/call_park.py +494 -0
  109. wxcli/commands/call_pickup.py +229 -0
  110. wxcli/commands/call_queue.py +1878 -0
  111. wxcli/commands/call_recording.py +707 -0
  112. wxcli/commands/call_routing.py +1610 -0
  113. wxcli/commands/call_settings_for_me_phase_5.py +212 -0
  114. wxcli/commands/caller_reputation.py +169 -0
  115. wxcli/commands/calling_service.py +305 -0
  116. wxcli/commands/cc_address_book.py +770 -0
  117. wxcli/commands/cc_agent_greetings.py +242 -0
  118. wxcli/commands/cc_agent_summaries.py +39 -0
  119. wxcli/commands/cc_agent_wellbeing.py +216 -0
  120. wxcli/commands/cc_agents.py +425 -0
  121. wxcli/commands/cc_ai_assistant.py +55 -0
  122. wxcli/commands/cc_ai_feature.py +294 -0
  123. wxcli/commands/cc_audio_files.py +149 -0
  124. wxcli/commands/cc_auto_csat.py +311 -0
  125. wxcli/commands/cc_aux_code.py +458 -0
  126. wxcli/commands/cc_business_hour.py +353 -0
  127. wxcli/commands/cc_call_monitoring.py +228 -0
  128. wxcli/commands/cc_callbacks.py +194 -0
  129. wxcli/commands/cc_campaign.py +212 -0
  130. wxcli/commands/cc_captures.py +39 -0
  131. wxcli/commands/cc_contact_list.py +169 -0
  132. wxcli/commands/cc_contact_number.py +295 -0
  133. wxcli/commands/cc_data_sources.py +235 -0
  134. wxcli/commands/cc_desktop_layout.py +380 -0
  135. wxcli/commands/cc_desktop_profile.py +322 -0
  136. wxcli/commands/cc_dial_number.py +511 -0
  137. wxcli/commands/cc_dial_plan.py +347 -0
  138. wxcli/commands/cc_dnc.py +101 -0
  139. wxcli/commands/cc_entry_point.py +545 -0
  140. wxcli/commands/cc_ewt.py +51 -0
  141. wxcli/commands/cc_flow.py +477 -0
  142. wxcli/commands/cc_global_vars.py +430 -0
  143. wxcli/commands/cc_holiday_list.py +335 -0
  144. wxcli/commands/cc_journey.py +1261 -0
  145. wxcli/commands/cc_legacy_flows.py +49 -0
  146. wxcli/commands/cc_multimedia_profile.py +436 -0
  147. wxcli/commands/cc_notification.py +51 -0
  148. wxcli/commands/cc_outdial_ani.py +604 -0
  149. wxcli/commands/cc_overrides.py +341 -0
  150. wxcli/commands/cc_queue.py +1083 -0
  151. wxcli/commands/cc_queue_stats.py +55 -0
  152. wxcli/commands/cc_realtime.py +51 -0
  153. wxcli/commands/cc_resource_collection.py +312 -0
  154. wxcli/commands/cc_search.py +46 -0
  155. wxcli/commands/cc_site.py +400 -0
  156. wxcli/commands/cc_skill.py +350 -0
  157. wxcli/commands/cc_skill_profile.py +289 -0
  158. wxcli/commands/cc_subscriptions.py +426 -0
  159. wxcli/commands/cc_summaries.py +130 -0
  160. wxcli/commands/cc_tasks.py +844 -0
  161. wxcli/commands/cc_team.py +325 -0
  162. wxcli/commands/cc_user_profiles.py +349 -0
  163. wxcli/commands/cc_users.py +701 -0
  164. wxcli/commands/cc_work_types.py +363 -0
  165. wxcli/commands/cdr.py +89 -0
  166. wxcli/commands/classifications.py +38 -0
  167. wxcli/commands/cleanup.py +1427 -0
  168. wxcli/commands/client_settings.py +72 -0
  169. wxcli/commands/conference.py +328 -0
  170. wxcli/commands/configure.py +72 -0
  171. wxcli/commands/converged_recordings.py +347 -0
  172. wxcli/commands/converged_recordings_export.py +310 -0
  173. wxcli/commands/cq_playlists.py +42 -0
  174. wxcli/commands/cucm.py +2794 -0
  175. wxcli/commands/cucm_config.py +129 -0
  176. wxcli/commands/customer_assist.py +373 -0
  177. wxcli/commands/data_sources.py +227 -0
  178. wxcli/commands/dect_devices.py +787 -0
  179. wxcli/commands/device_configurations.py +77 -0
  180. wxcli/commands/device_dynamic_settings.py +320 -0
  181. wxcli/commands/device_settings.py +1489 -0
  182. wxcli/commands/devices.py +280 -0
  183. wxcli/commands/domains.py +142 -0
  184. wxcli/commands/ecm.py +178 -0
  185. wxcli/commands/emergency_services.py +827 -0
  186. wxcli/commands/events.py +83 -0
  187. wxcli/commands/external_voicemail.py +52 -0
  188. wxcli/commands/groups.py +206 -0
  189. wxcli/commands/guest_management.py +76 -0
  190. wxcli/commands/hds.py +340 -0
  191. wxcli/commands/hot_desk.py +67 -0
  192. wxcli/commands/hot_desking_members.py +118 -0
  193. wxcli/commands/hot_desking_portal.py +124 -0
  194. wxcli/commands/hunt_group.py +577 -0
  195. wxcli/commands/hybrid_clusters.py +71 -0
  196. wxcli/commands/hybrid_connectors.py +67 -0
  197. wxcli/commands/identity_org.py +159 -0
  198. wxcli/commands/init_playbook.py +155 -0
  199. wxcli/commands/licenses.py +106 -0
  200. wxcli/commands/live_monitoring.py +40 -0
  201. wxcli/commands/location_call_handling.py +577 -0
  202. wxcli/commands/location_schedules.py +341 -0
  203. wxcli/commands/location_settings.py +1297 -0
  204. wxcli/commands/location_voicemail.py +494 -0
  205. wxcli/commands/locations.py +336 -0
  206. wxcli/commands/meeting_captions.py +110 -0
  207. wxcli/commands/meeting_chats.py +63 -0
  208. wxcli/commands/meeting_invitees.py +234 -0
  209. wxcli/commands/meeting_messages.py +28 -0
  210. wxcli/commands/meeting_participants.py +278 -0
  211. wxcli/commands/meeting_polls.py +111 -0
  212. wxcli/commands/meeting_preferences.py +515 -0
  213. wxcli/commands/meeting_qa.py +78 -0
  214. wxcli/commands/meeting_qualities.py +43 -0
  215. wxcli/commands/meeting_reports.py +101 -0
  216. wxcli/commands/meeting_session_types.py +105 -0
  217. wxcli/commands/meeting_site.py +57 -0
  218. wxcli/commands/meeting_slido.py +44 -0
  219. wxcli/commands/meeting_summaries.py +92 -0
  220. wxcli/commands/meeting_tracking_codes.py +233 -0
  221. wxcli/commands/meeting_transcripts.py +230 -0
  222. wxcli/commands/meetings.py +1997 -0
  223. wxcli/commands/memberships.py +164 -0
  224. wxcli/commands/messages.py +213 -0
  225. wxcli/commands/mode_management.py +244 -0
  226. wxcli/commands/my_call_settings.py +3577 -0
  227. wxcli/commands/numbers.py +405 -0
  228. wxcli/commands/operating_modes.py +410 -0
  229. wxcli/commands/org_contacts.py +284 -0
  230. wxcli/commands/org_health_cli.py +55 -0
  231. wxcli/commands/org_settings.py +71 -0
  232. wxcli/commands/organizations.py +83 -0
  233. wxcli/commands/paging_group.py +257 -0
  234. wxcli/commands/partner_admins.py +141 -0
  235. wxcli/commands/partner_reports.py +188 -0
  236. wxcli/commands/partner_tags.py +216 -0
  237. wxcli/commands/people.py +279 -0
  238. wxcli/commands/person_call_settings.py +71 -0
  239. wxcli/commands/pstn.py +280 -0
  240. wxcli/commands/recording_report.py +154 -0
  241. wxcli/commands/report_templates.py +38 -0
  242. wxcli/commands/reports.py +144 -0
  243. wxcli/commands/resource_group_memberships.py +160 -0
  244. wxcli/commands/resource_groups.py +67 -0
  245. wxcli/commands/roles.py +63 -0
  246. wxcli/commands/room_tabs.py +160 -0
  247. wxcli/commands/rooms.py +225 -0
  248. wxcli/commands/scim_bulk.py +46 -0
  249. wxcli/commands/scim_groups.py +246 -0
  250. wxcli/commands/scim_schemas.py +82 -0
  251. wxcli/commands/scim_users.py +283 -0
  252. wxcli/commands/security_audit.py +54 -0
  253. wxcli/commands/service_apps.py +51 -0
  254. wxcli/commands/single_number_reach.py +209 -0
  255. wxcli/commands/team_memberships.py +155 -0
  256. wxcli/commands/teams.py +153 -0
  257. wxcli/commands/ucm_profile.py +42 -0
  258. wxcli/commands/update.py +219 -0
  259. wxcli/commands/user_settings.py +5116 -0
  260. wxcli/commands/video_mesh.py +1090 -0
  261. wxcli/commands/virtual_extensions.py +502 -0
  262. wxcli/commands/virtual_line_settings.py +2072 -0
  263. wxcli/commands/webhooks.py +176 -0
  264. wxcli/commands/wholesale_billing_reports.py +147 -0
  265. wxcli/commands/wholesale_provisioning.py +523 -0
  266. wxcli/commands/workspace_locations.py +339 -0
  267. wxcli/commands/workspace_metrics.py +103 -0
  268. wxcli/commands/workspace_personalization.py +70 -0
  269. wxcli/commands/workspace_settings.py +3347 -0
  270. wxcli/commands/workspaces.py +279 -0
  271. wxcli/commands/xapi.py +114 -0
  272. wxcli/config.py +139 -0
  273. wxcli/errors.py +77 -0
  274. wxcli/main.py +210 -0
  275. wxcli/migration/CLAUDE.md +106 -0
  276. wxcli/migration/__init__.py +1 -0
  277. wxcli/migration/advisory/CLAUDE.md +196 -0
  278. wxcli/migration/advisory/__init__.py +46 -0
  279. wxcli/migration/advisory/advisor.py +107 -0
  280. wxcli/migration/advisory/advisory_patterns.py +2552 -0
  281. wxcli/migration/advisory/recommendation_rules.py +835 -0
  282. wxcli/migration/cucm/CLAUDE.md +74 -0
  283. wxcli/migration/cucm/__init__.py +5 -0
  284. wxcli/migration/cucm/connection.py +265 -0
  285. wxcli/migration/cucm/discovery.py +225 -0
  286. wxcli/migration/cucm/extractors/__init__.py +1 -0
  287. wxcli/migration/cucm/extractors/announcements.py +92 -0
  288. wxcli/migration/cucm/extractors/base.py +90 -0
  289. wxcli/migration/cucm/extractors/device_profiles.py +98 -0
  290. wxcli/migration/cucm/extractors/devices.py +193 -0
  291. wxcli/migration/cucm/extractors/e911.py +103 -0
  292. wxcli/migration/cucm/extractors/features.py +309 -0
  293. wxcli/migration/cucm/extractors/helpers.py +73 -0
  294. wxcli/migration/cucm/extractors/informational.py +295 -0
  295. wxcli/migration/cucm/extractors/locations.py +221 -0
  296. wxcli/migration/cucm/extractors/moh.py +100 -0
  297. wxcli/migration/cucm/extractors/remote_destinations.py +96 -0
  298. wxcli/migration/cucm/extractors/routing.py +493 -0
  299. wxcli/migration/cucm/extractors/shared_lines.py +146 -0
  300. wxcli/migration/cucm/extractors/templates.py +229 -0
  301. wxcli/migration/cucm/extractors/tier4.py +173 -0
  302. wxcli/migration/cucm/extractors/users.py +240 -0
  303. wxcli/migration/cucm/extractors/voicemail.py +243 -0
  304. wxcli/migration/cucm/extractors/workspaces.py +88 -0
  305. wxcli/migration/cucm/unity_connection.py +304 -0
  306. wxcli/migration/execute/CLAUDE.md +372 -0
  307. wxcli/migration/execute/__init__.py +303 -0
  308. wxcli/migration/execute/batch.py +277 -0
  309. wxcli/migration/execute/dependency.py +483 -0
  310. wxcli/migration/execute/engine.py +964 -0
  311. wxcli/migration/execute/handlers.py +2232 -0
  312. wxcli/migration/execute/planner.py +1939 -0
  313. wxcli/migration/execute/runtime.py +571 -0
  314. wxcli/migration/export/CLAUDE.md +49 -0
  315. wxcli/migration/export/__init__.py +8 -0
  316. wxcli/migration/export/csv_export.py +126 -0
  317. wxcli/migration/export/deployment_plan.py +479 -0
  318. wxcli/migration/export/json_export.py +60 -0
  319. wxcli/migration/models.py +941 -0
  320. wxcli/migration/phone_models.py +50 -0
  321. wxcli/migration/preflight/CLAUDE.md +52 -0
  322. wxcli/migration/preflight/__init__.py +89 -0
  323. wxcli/migration/preflight/checks.py +911 -0
  324. wxcli/migration/preflight/runner.py +293 -0
  325. wxcli/migration/rate_limiter.py +144 -0
  326. wxcli/migration/report/CLAUDE.md +245 -0
  327. wxcli/migration/report/__init__.py +7 -0
  328. wxcli/migration/report/appendix.py +2437 -0
  329. wxcli/migration/report/assembler.py +183 -0
  330. wxcli/migration/report/charts.py +263 -0
  331. wxcli/migration/report/executive.py +776 -0
  332. wxcli/migration/report/explainer.py +704 -0
  333. wxcli/migration/report/helpers.py +74 -0
  334. wxcli/migration/report/ingest.py +152 -0
  335. wxcli/migration/report/notice_templates.py +192 -0
  336. wxcli/migration/report/score.py +375 -0
  337. wxcli/migration/report/styles.py +1052 -0
  338. wxcli/migration/report/user_diff.py +1052 -0
  339. wxcli/migration/report/user_notice.py +425 -0
  340. wxcli/migration/state.py +139 -0
  341. wxcli/migration/store.py +860 -0
  342. wxcli/migration/transform/CLAUDE.md +107 -0
  343. wxcli/migration/transform/__init__.py +12 -0
  344. wxcli/migration/transform/analysis_pipeline.py +453 -0
  345. wxcli/migration/transform/analyzers/__init__.py +142 -0
  346. wxcli/migration/transform/analyzers/css_permission.py +189 -0
  347. wxcli/migration/transform/analyzers/css_routing.py +335 -0
  348. wxcli/migration/transform/analyzers/device_compatibility.py +122 -0
  349. wxcli/migration/transform/analyzers/dn_ambiguity.py +131 -0
  350. wxcli/migration/transform/analyzers/duplicate_user.py +221 -0
  351. wxcli/migration/transform/analyzers/extension_conflict.py +173 -0
  352. wxcli/migration/transform/analyzers/feature_approximation.py +227 -0
  353. wxcli/migration/transform/analyzers/layout_overflow.py +174 -0
  354. wxcli/migration/transform/analyzers/location_ambiguity.py +184 -0
  355. wxcli/migration/transform/analyzers/missing_data.py +300 -0
  356. wxcli/migration/transform/analyzers/selective_call_handling.py +394 -0
  357. wxcli/migration/transform/analyzers/shared_line.py +170 -0
  358. wxcli/migration/transform/analyzers/voicemail_compatibility.py +267 -0
  359. wxcli/migration/transform/analyzers/workspace_license.py +212 -0
  360. wxcli/migration/transform/cross_reference.py +1136 -0
  361. wxcli/migration/transform/cucm_pattern.py +246 -0
  362. wxcli/migration/transform/decisions.py +301 -0
  363. wxcli/migration/transform/e164.py +145 -0
  364. wxcli/migration/transform/engine.py +256 -0
  365. wxcli/migration/transform/mappers/CLAUDE.md +123 -0
  366. wxcli/migration/transform/mappers/__init__.py +76 -0
  367. wxcli/migration/transform/mappers/announcement_mapper.py +122 -0
  368. wxcli/migration/transform/mappers/base.py +190 -0
  369. wxcli/migration/transform/mappers/button_template_mapper.py +186 -0
  370. wxcli/migration/transform/mappers/call_forwarding_mapper.py +228 -0
  371. wxcli/migration/transform/mappers/call_settings_mapper.py +144 -0
  372. wxcli/migration/transform/mappers/css_mapper.py +868 -0
  373. wxcli/migration/transform/mappers/dect_mapper.py +367 -0
  374. wxcli/migration/transform/mappers/device_layout_mapper.py +289 -0
  375. wxcli/migration/transform/mappers/device_mapper.py +227 -0
  376. wxcli/migration/transform/mappers/device_profile_mapper.py +190 -0
  377. wxcli/migration/transform/mappers/device_settings_mapper.py +464 -0
  378. wxcli/migration/transform/mappers/e911_mapper.py +129 -0
  379. wxcli/migration/transform/mappers/ecbn_mapper.py +263 -0
  380. wxcli/migration/transform/mappers/executive_assistant_mapper.py +156 -0
  381. wxcli/migration/transform/mappers/feature_mapper.py +1179 -0
  382. wxcli/migration/transform/mappers/line_mapper.py +310 -0
  383. wxcli/migration/transform/mappers/location_mapper.py +235 -0
  384. wxcli/migration/transform/mappers/moh_mapper.py +114 -0
  385. wxcli/migration/transform/mappers/monitoring_mapper.py +221 -0
  386. wxcli/migration/transform/mappers/receptionist_mapper.py +245 -0
  387. wxcli/migration/transform/mappers/routing_mapper.py +821 -0
  388. wxcli/migration/transform/mappers/snr_mapper.py +201 -0
  389. wxcli/migration/transform/mappers/softkey_mapper.py +205 -0
  390. wxcli/migration/transform/mappers/user_mapper.py +264 -0
  391. wxcli/migration/transform/mappers/voicemail_group_mapper.py +286 -0
  392. wxcli/migration/transform/mappers/voicemail_mapper.py +514 -0
  393. wxcli/migration/transform/mappers/workspace_mapper.py +464 -0
  394. wxcli/migration/transform/normalizers.py +2008 -0
  395. wxcli/migration/transform/pattern_converter.py +106 -0
  396. wxcli/migration/transform/pipeline.py +271 -0
  397. wxcli/migration/transform/rules.py +255 -0
  398. wxcli/org_health/CLAUDE.md +63 -0
  399. wxcli/org_health/__init__.py +7 -0
  400. wxcli/org_health/analyze.py +93 -0
  401. wxcli/org_health/checks.py +458 -0
  402. wxcli/org_health/collector.py +62 -0
  403. wxcli/org_health/models.py +78 -0
  404. wxcli/org_health/report.py +300 -0
  405. wxcli/output.py +101 -0
  406. wxcli-1.2.0.dist-info/METADATA +505 -0
  407. wxcli-1.2.0.dist-info/RECORD +413 -0
  408. wxcli-1.2.0.dist-info/WHEEL +5 -0
  409. wxcli-1.2.0.dist-info/entry_points.txt +2 -0
  410. wxcli-1.2.0.dist-info/licenses/LICENSE +191 -0
  411. wxcli-1.2.0.dist-info/scm_file_list.json +751 -0
  412. wxcli-1.2.0.dist-info/scm_version.json +8 -0
  413. wxcli-1.2.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,443 @@
1
+ ---
2
+ name: customer-assist
3
+ description: |
4
+ Configure Webex Calling Customer Assist (CX Essentials) using wxcli CLI commands: screen pop,
5
+ wrap-up reasons, queue call recording, supervisors, and available agents.
6
+ Guides the user from prerequisites through configuration and verification.
7
+ NOT for: standard call queues/hunt groups (use configure-features) or
8
+ full Contact Center queues/agents (use contact-center skill — CX Essentials is
9
+ a Calling add-on, not WxCC).
10
+ allowed-tools: Read, Grep, Glob, Bash
11
+ argument-hint: [feature-type]
12
+ ---
13
+
14
+ # Configure Customer Assist Workflow
15
+
16
+ **Checkpoint — do NOT proceed until you can answer these:**
17
+ 1. How do you list Customer Assist call queues? (Answer: `wxcli call-queue list --has-cx-essentials true` — they are hidden from the default `call-queue list` output.)
18
+ 2. What is the workaround for the supervisor delete bug? (Answer: `delete-supervisors-config-1` returns 204 but the supervisor persists. Instead, use `update-supervisors` with `action: DELETE` on each agent — removing the last agent auto-removes the supervisor.)
19
+
20
+ If you cannot answer both, you skipped reading this skill. Go back and read it.
21
+
22
+ ## Step 1: Load references
23
+
24
+ 1. Read `docs/reference/call-features-additional.md` — Customer Assist data models, screen pop, wrap-up reasons, queue recording, available agents
25
+ 2. Read `docs/reference/location-recording-advanced.md` — Supervisors data models, API methods, key behaviors
26
+
27
+ **Mandatory --help verification:** Before constructing any wxcli command, run `wxcli <group> --help` to verify the subcommand exists, then `wxcli <group> <subcommand> --help` to verify the exact flags (e.g. `wxcli customer-assist --help` for CX queue management — and note CX queues require `--has-cx-essentials true` on `call-queue` commands or they vanish from listings, known issue #7). Do NOT rely on examples in this skill or reference docs — the CLI is auto-generated and flag names may differ from what documentation suggests.
28
+
29
+ ## Step 2: Verify auth token
30
+
31
+ Before any API calls, confirm the user has a working auth token:
32
+
33
+ ```bash
34
+ wxcli whoami
35
+ ```
36
+
37
+ If this fails, stop and resolve authentication first (`wxcli configure`). Required scopes:
38
+
39
+ | Operation | Read Scope | Write Scope |
40
+ |-----------|-----------|-------------|
41
+ | Screen pop, wrap-up, agents, supervisors | `spark-admin:telephony_config_read` | `spark-admin:telephony_config_write` |
42
+ | Queue call recording | `spark-admin:people_read` | `spark-admin:people_write` |
43
+
44
+ ## Step 3: Identify which feature(s) to configure
45
+
46
+ Ask the user which feature they want to configure. Present this decision matrix if they are unsure:
47
+
48
+ | Need | Feature | CLI Group |
49
+ |------|---------|-----------|
50
+ | Pop a CRM/ticketing URL when agent receives a queued call | **Screen Pop** | `wxcli customer-assist` |
51
+ | Post-call categorization codes for agents | **Wrap-Up Reasons** | `wxcli customer-assist` |
52
+ | Record calls on a queue for QA/compliance/training | **Queue Call Recording** | `wxcli customer-assist` |
53
+ | Assign supervisors to monitor/coach/barge agents | **Supervisors** | `wxcli call-queue` |
54
+ | List agents with or without Customer Assist licensing | **Available Agents** | `wxcli customer-assist` |
55
+
56
+ ## Step 4: Check prerequisites
57
+
58
+ Before configuring any feature, verify these exist:
59
+
60
+ ### 4a. Location exists
61
+
62
+ ```bash
63
+ wxcli locations list --output json
64
+ ```
65
+
66
+ ### 4b. Customer Assist queue exists
67
+
68
+ All Customer Assist features are per-queue configurations. **Customer Assist queues are separate from regular queues** — they do not appear in the default `call-queue list` output.
69
+
70
+ ```bash
71
+ # List Customer Assist queues (MUST use --has-cx-essentials true)
72
+ wxcli call-queue list --has-cx-essentials true --output json
73
+ ```
74
+
75
+ If no Customer Assist queue exists, create one. **Customer Assist queues require `callPolicies` via `--json-body`:**
76
+
77
+ ```bash
78
+ wxcli call-queue create LOCATION_ID --name "Queue Name" --has-cx-essentials true \
79
+ --json-body '{"name":"Queue Name","extension":"XXXX","callPolicies":{"policy":"SIMULTANEOUS"}}'
80
+ ```
81
+
82
+ > **IMPORTANT:** A regular queue (created without `--has-cx-essentials true`) will return error 28018 on all Customer Assist endpoints. The queue must be created with the `--has-cx-essentials true` flag. The `callPolicies` field is mandatory for Customer Assist queues but not for regular queues.
83
+
84
+ ### 4c. Customer Assist licensing
85
+
86
+ Confirm agents have Customer Assist licenses:
87
+
88
+ ```bash
89
+ wxcli customer-assist list-available-agents LOCATION_ID --has-cx-essentials true
90
+ ```
91
+
92
+ If no agents are returned, Customer Assist licenses must be assigned first (use `manage-licensing` skill).
93
+
94
+ ### 4d. Feature-specific prerequisites
95
+
96
+ | Feature | Additional Prerequisites |
97
+ |---------|------------------------|
98
+ | **Screen Pop** | Call queue must exist. No additional requirements. |
99
+ | **Wrap-Up Reasons** | Call queue must exist. Org-level reasons must be created before queue assignment. |
100
+ | **Queue Call Recording** | Call queue must exist. Recording vendor must be configured at org/location level (see `wxcli call-recording`). Requires `spark-admin:people_read`/`people_write` scopes (different from other Customer Assist features). |
101
+ | **Supervisors** | At least one agent must be assigned when creating. Supervisor must be a calling-enabled user. |
102
+ | **Available Agents** | Location must exist. |
103
+
104
+ ## Step 5: Gather configuration and present deployment plan -- [SHOW BEFORE EXECUTING]
105
+
106
+ Based on the selected feature, collect the required parameters from the user. **Always present the plan before executing.**
107
+
108
+ ---
109
+
110
+ ### Screen Pop
111
+
112
+ Collect from user:
113
+
114
+ | Parameter | Required | Notes |
115
+ |-----------|:--------:|-------|
116
+ | Location ID | Yes | Positional argument |
117
+ | Queue ID | Yes | Positional argument |
118
+ | Enabled | Yes | `--enabled` / `--no-enabled` |
119
+ | Screen pop URL | Yes (if enabling) | CRM or ticketing system URL |
120
+ | Desktop label | No | Label for the config |
121
+ | Query params | No | Requires `--json-body` (not available as explicit flags) |
122
+
123
+ CLI commands:
124
+
125
+ ```bash
126
+ # View current screen pop config
127
+ wxcli customer-assist show-screen-pop LOCATION_ID QUEUE_ID -o json
128
+
129
+ # Simple: enable with URL
130
+ wxcli customer-assist update-screen-pop LOCATION_ID QUEUE_ID \
131
+ --enabled --screen-pop-url "https://crm.example.com/lookup"
132
+
133
+ # Full: enable with URL, label, and query params (requires --json-body)
134
+ wxcli customer-assist update-screen-pop LOCATION_ID QUEUE_ID --json-body '{
135
+ "enabled": true,
136
+ "screenPopUrl": "https://crm.example.com/lookup",
137
+ "desktopLabel": "Customer Lookup",
138
+ "queryParams": {"caller_id": "{{callerNumber}}", "queue": "{{queueName}}"}
139
+ }'
140
+ ```
141
+
142
+ > **NOTE:** Query parameters (`queryParams`) are only available via `--json-body`. The `--screen-pop-url`, `--enabled`, and `--desktop-label` flags cover the simple case. Use `--json-body` for the full configuration including query params.
143
+
144
+ ---
145
+
146
+ ### Wrap-Up Reasons
147
+
148
+ Wrap-up reasons are a two-level configuration: org-level reasons, then per-queue assignment.
149
+
150
+ **Org-level parameter table:**
151
+
152
+ | Parameter | Required | Notes |
153
+ |-----------|:--------:|-------|
154
+ | Name | Yes | `--name` flag |
155
+ | Description | No | `--description` flag |
156
+ | Queues | No | List of queue IDs — requires `--json-body` (not available as explicit flag) |
157
+ | Assign all queues | No | `--assign-all-queues-enabled` flag |
158
+
159
+ **Queue-level parameter table:**
160
+
161
+ | Parameter | Required | Notes |
162
+ |-----------|:--------:|-------|
163
+ | Location ID | Yes | Positional argument |
164
+ | Queue ID | Yes | Positional argument |
165
+ | Wrap-up timer enabled | No | `--wrapup-timer-enabled` / `--no-wrapup-timer-enabled` |
166
+ | Wrap-up timer (seconds) | No | `--wrapup-timer` (default 60) |
167
+ | Default wrap-up reason ID | No | `--default-wrapup-reason-id` |
168
+ | Wrap-up reasons list | No | List of reason IDs — requires `--json-body` |
169
+
170
+ CLI commands:
171
+
172
+ ```bash
173
+ # --- Org-level reason management ---
174
+
175
+ # List all wrap-up reasons
176
+ wxcli customer-assist list
177
+
178
+ # Create a reason (simple — assign to queues later)
179
+ wxcli customer-assist create --name "Issue Resolved" --description "Customer issue resolved on the call"
180
+
181
+ # Create a reason AND assign to specific queues (requires --json-body)
182
+ wxcli customer-assist create --json-body '{
183
+ "name": "Issue Resolved",
184
+ "description": "Customer issue resolved on the call",
185
+ "queues": ["QUEUE_ID_1", "QUEUE_ID_2"]
186
+ }'
187
+
188
+ # Validate a reason name before creating
189
+ wxcli customer-assist validate-wrap-up --name "Issue Resolved"
190
+
191
+ # Show reason details (includes assigned queues)
192
+ wxcli customer-assist show REASON_ID -o json
193
+
194
+ # Update a reason (incremental queue assignment)
195
+ wxcli customer-assist update REASON_ID --json-body '{
196
+ "queuesToAssign": ["QUEUE_ID_3"],
197
+ "queuesToUnassign": ["QUEUE_ID_1"]
198
+ }'
199
+
200
+ # List queues not yet assigned to a reason
201
+ wxcli customer-assist list-available-queues REASON_ID
202
+
203
+ # Delete a reason
204
+ wxcli customer-assist delete REASON_ID --force
205
+
206
+ # --- Per-queue wrap-up settings ---
207
+
208
+ # View queue wrap-up settings
209
+ wxcli customer-assist list-settings LOCATION_ID QUEUE_ID -o json
210
+
211
+ # Update queue wrap-up timer and assign reasons
212
+ wxcli customer-assist update-settings LOCATION_ID QUEUE_ID --json-body '{
213
+ "wrapupTimerEnabled": true,
214
+ "wrapupTimer": 60,
215
+ "wrapupReasons": ["REASON_ID_1", "REASON_ID_2"],
216
+ "defaultWrapupReasonId": "REASON_ID_1"
217
+ }'
218
+ ```
219
+
220
+ > **NOTE:** The `queues` array on `create` and the `wrapupReasons` array on `update-settings` require `--json-body`. The CLI flags only cover scalar fields (`--name`, `--description`, `--wrapup-timer-enabled`, `--wrapup-timer`). For queue assignment at creation time, use `--json-body`.
221
+
222
+ > **NOTE:** Queue assignment on `update` is incremental — use `queuesToAssign` and `queuesToUnassign`, not a full replacement list.
223
+
224
+ ---
225
+
226
+ ### Queue Call Recording
227
+
228
+ Collect from user:
229
+
230
+ | Parameter | Required | Notes |
231
+ |-----------|:--------:|-------|
232
+ | Location ID | Yes | Positional argument |
233
+ | Queue ID | Yes | Positional argument |
234
+
235
+ `wxcli customer-assist show-queue-recording` / `update-queue-recording` do NOT exist — there is no matching API operation in the generated CLI. Use the CX queue itself:
236
+
237
+ ```bash
238
+ # View the CX queue payload — inspect for recording fields (see note below)
239
+ wxcli call-queue show LOCATION_ID QUEUE_ID --has-cx-essentials true -o json
240
+
241
+ # Apply changes via --json-body, using field names found in the show output
242
+ wxcli call-queue update LOCATION_ID QUEUE_ID --json-body '{...}'
243
+ ```
244
+
245
+ > **NOTE:** Whether the CX queue payload carries queue-level recording fields is UNVERIFIED — the test org has zero Customer Assist queues to confirm against. Inspect the `call-queue show ... --has-cx-essentials true -o json` output for a recording-related block. If none is present, call recording is instead configured at the org/location level (`wxcli call-recording show`) or per-agent (see `manage-call-settings` skill).
246
+
247
+ ---
248
+
249
+ ### Supervisors
250
+
251
+ Supervisor commands live under `wxcli call-queue`, not `wxcli customer-assist`. **All commands must include `--has-cx-essentials true` when working with Customer Assist supervisors** (without it, commands default to CX Basic).
252
+
253
+ Collect from user (for create):
254
+
255
+ | Parameter | Required | Notes |
256
+ |-----------|:--------:|-------|
257
+ | Supervisor person ID | Yes | `--id` flag — the person's ID (not a separate supervisor entity ID); must be a calling-enabled user |
258
+ | Agents | Yes | List of agent IDs — requires `--json-body` |
259
+ | Has Customer Assist | Yes (for Customer Assist) | `--has-cx-essentials true` |
260
+
261
+ CLI commands:
262
+
263
+ ```bash
264
+ # --- Discovery ---
265
+
266
+ # List all Customer Assist supervisors
267
+ wxcli call-queue list-supervisors --has-cx-essentials true
268
+
269
+ # List available supervisors (not yet assigned)
270
+ wxcli call-queue list-available-supervisors --has-cx-essentials true
271
+
272
+ # List available agents for supervisor assignment
273
+ wxcli call-queue list-available-agents-supervisors --has-cx-essentials true
274
+
275
+ # --- Create ---
276
+
277
+ # Create a supervisor with agents (--id is required AND must be in --json-body)
278
+ wxcli call-queue create-supervisors --has-cx-essentials true \
279
+ --id SUPERVISOR_PERSON_ID --json-body '{"id": "SUPERVISOR_PERSON_ID", "agents": [{"id": "AGENT_ID_1"}, {"id": "AGENT_ID_2"}]}'
280
+
281
+ # --- Read ---
282
+
283
+ # Show supervisor's assigned agents
284
+ wxcli call-queue show-supervisors SUPERVISOR_ID --has-cx-essentials true -o json
285
+
286
+ # --- Update ---
287
+
288
+ # Add/remove agents (incremental)
289
+ wxcli call-queue update-supervisors SUPERVISOR_ID --has-cx-essentials true --json-body '{
290
+ "agents": [
291
+ {"id": "AGENT_ID_3", "action": "ADD"},
292
+ {"id": "AGENT_ID_1", "action": "DELETE"}
293
+ ]
294
+ }'
295
+
296
+ # --- Delete ---
297
+
298
+ # Delete a specific supervisor
299
+ wxcli call-queue delete-supervisors-config-1 SUPERVISOR_ID --has-cx-essentials true --force
300
+
301
+ # Delete supervisors in bulk
302
+ wxcli call-queue delete-supervisors-config --has-cx-essentials true --force
303
+ ```
304
+
305
+ > **WARNING:** `delete-supervisors-config --force` without specifying IDs may remove **all supervisors in the org**. Always confirm scope before executing. Omitting `--force` triggers a confirmation prompt.
306
+
307
+ > **NOTE:** `SUPERVISOR_ID` in these commands is the supervisor's **person ID**, not a separate supervisor entity ID. Use `wxcli call-queue list-supervisors --has-cx-essentials true` to find supervisor person IDs.
308
+
309
+ > **NOTE:** Runtime supervisor capabilities (silent monitor, whisper coach, barge in, take over) activate automatically once the supervisor-agent relationship is configured. No additional API setup is needed — these are built into the Webex app.
310
+
311
+ ---
312
+
313
+ ### Available Agents
314
+
315
+ ```bash
316
+ # List all agents at a location
317
+ wxcli customer-assist list-available-agents LOCATION_ID
318
+
319
+ # List only agents with Customer Assist (Customer Assist) license
320
+ wxcli customer-assist list-available-agents LOCATION_ID --has-cx-essentials true
321
+
322
+ # List only agents with CX Basic license
323
+ wxcli customer-assist list-available-agents LOCATION_ID --has-cx-essentials false
324
+ ```
325
+
326
+ ---
327
+
328
+ ### Deployment Plan Template
329
+
330
+ ```
331
+ DEPLOYMENT PLAN
332
+ ===============
333
+ Feature: Customer Assist — [sub-feature]
334
+ Location: [name] ([location_id])
335
+ Queue: [queue_name] ([queue_id])
336
+
337
+ Configuration:
338
+ [Feature-specific settings listed here]
339
+
340
+ Prerequisites verified:
341
+ ✓ Location exists
342
+ ✓ Call queue exists
343
+ ✓ Customer Assist licenses assigned ([N] agents)
344
+ ✓ [Feature-specific prereqs]
345
+
346
+ Commands to execute:
347
+ wxcli customer-assist [command] ...
348
+
349
+ Proceed? (yes/no)
350
+ ```
351
+
352
+ **Wait for user confirmation before executing.**
353
+
354
+ ## Step 6: Execute via wxcli
355
+
356
+ Run commands sequentially. Handle errors explicitly:
357
+ - **400 with code 28018**: Customer Assist is not enabled on this queue — create the queue with `--has-cx-essentials true` or use a Customer Assist queue (see Step 4b)
358
+ - **401/403**: Token expired or insufficient scopes — run `wxcli configure`
359
+ - **409**: Name or resource conflict — ask user for alternate
360
+ - **400**: Validation error — read the error message and fix the parameter
361
+ - **400 with code 25008**: Missing required field — use `--json-body` for full control
362
+ - **400 with code 4003 / "Target user not authorized"**: Endpoint requires user-level OAuth, not admin token
363
+ - **404 with code 4008**: Target user needs a Webex Calling license
364
+ - **405 with code 25409**: Workspace requires Professional license
365
+
366
+ ## Step 7: Verify creation
367
+
368
+ After configuration, fetch the details back and confirm:
369
+
370
+ ```bash
371
+ # Verify screen pop
372
+ wxcli customer-assist show-screen-pop LOCATION_ID QUEUE_ID -o json
373
+
374
+ # Verify wrap-up reasons (org-level)
375
+ wxcli customer-assist list -o json
376
+ wxcli customer-assist show REASON_ID -o json
377
+
378
+ # Verify wrap-up settings (per-queue)
379
+ wxcli customer-assist list-settings LOCATION_ID QUEUE_ID -o json
380
+
381
+ # Verify queue recording (inspect payload for recording fields — see Queue Call Recording note above)
382
+ wxcli call-queue show LOCATION_ID QUEUE_ID --has-cx-essentials true -o json
383
+
384
+ # Verify supervisors
385
+ wxcli call-queue list-supervisors --has-cx-essentials true -o json
386
+ wxcli call-queue show-supervisors SUPERVISOR_ID --has-cx-essentials true -o json
387
+ ```
388
+
389
+ ## Step 8: Report results
390
+
391
+ Present the configuration results:
392
+
393
+ ```
394
+ CUSTOMER ASSIST CONFIGURED
395
+ ===========================
396
+ Feature: [sub-feature]
397
+ Queue: [queue_name]
398
+ Location: [location_name]
399
+
400
+ Configuration applied:
401
+ [Feature-specific summary]
402
+
403
+ Verification:
404
+ ✓ [Feature] confirmed via read-back
405
+
406
+ Next steps:
407
+ - [Feature-specific next steps]
408
+ - [e.g., "Assign more agents to supervisor via update-supervisors"]
409
+ - [e.g., "Configure additional queues with the same wrap-up reasons"]
410
+ ```
411
+
412
+ ---
413
+
414
+ ## Critical Rules
415
+
416
+ 1. **All Customer Assist features require a Customer Assist queue.** Screen pop, queue recording, and wrap-up reasons are per-queue configurations. The queue must be created with `--has-cx-essentials true` — a regular queue returns error 28018. Use `wxcli call-queue list --has-cx-essentials true` to find existing Customer Assist queues (they are hidden from the default `call-queue list`).
417
+ 2. **Always show the deployment plan** (Step 5) and wait for user confirmation before executing.
418
+ 3. **Always pass `--has-cx-essentials true` on supervisor commands.** Without it, commands default to CX Basic supervisors. This applies to `list-supervisors`, `create-supervisors`, `show-supervisors`, `update-supervisors`, `list-available-supervisors`, and `list-available-agents-supervisors`.
419
+ 4. **Supervisor commands live under `wxcli call-queue`, not `wxcli customer-assist`.** The supervisor API base path (`/telephony/config/supervisors`) was grouped with call queues in the OpenAPI spec. The `cx-essentials` group handles wrap-up reasons, screen pop, queue recording, and available agents.
420
+ 5. **A supervisor must have at least one agent** when created via `create-supervisors`.
421
+ 6. **`delete-supervisors-config --force` can remove ALL supervisors in the org.** The bulk delete endpoint has a `delete_all` option. Always confirm scope before executing.
422
+ 7. **Queue call recording requires different scopes.** Queue recording uses `spark-admin:people_read` / `spark-admin:people_write`, while all other Customer Assist features use `spark-admin:telephony_config_read` / `spark-admin:telephony_config_write`.
423
+ 8. **Wrap-up reason queue assignment is incremental.** Use `queuesToAssign` and `queuesToUnassign` on update — not a full replacement list.
424
+ 9. **`show-supervisors` returns the supervisor's assigned agents, not the supervisor's own details.** The response is a list of agents, not supervisor metadata.
425
+ 10. **Per-queue features need both `location_id` and `queue_id`.** Screen pop, queue recording, and wrap-up settings are scoped to a specific queue within a specific location.
426
+ 11. **`queryParams` on screen pop requires `--json-body`.** The `--screen-pop-url`, `--enabled`, and `--desktop-label` flags cover the simple case. For query parameters (passing caller data to the CRM URL), use `--json-body`.
427
+ 12. **`queues` array on wrap-up reason create requires `--json-body`.** To assign a reason to specific queues on creation, use `--json-body`. Alternatively, create the reason first, then assign queues via `update`.
428
+ 13. **Runtime supervisor capabilities are automatic.** Silent monitor, whisper coach, barge in, and take over activate once the supervisor-agent relationship is configured. No additional API setup is needed.
429
+ 14. **Recording vendor must be configured first.** Queue call recording depends on an org-level or location-level recording vendor configuration. Check with `wxcli call-recording show -o json` before enabling queue recording.
430
+ 15. **Customer Assist queues are hidden from default `call-queue list`.** You must pass `--has-cx-essentials true` to see them. Without the flag, only regular (non-Customer Assist) queues are returned.
431
+ 16. **Queue recording schema is UNVERIFIED.** Earlier versions of this skill asserted nested recording objects (`notification`, `repeat`, `startStopAnnouncement`) in the queue payload — that schema came from a fabricated example tied to commands that never existed (2026-07-01 audit). Inspect a real CX queue payload (`wxcli call-queue show LOCATION_ID QUEUE_ID --has-cx-essentials true -o json`) before building any `--json-body`; if no recording fields appear, recording is org/location-level (`call-recording show`) or per-agent (manage-call-settings skill).
432
+ 17. **`create-supervisors` requires `id` in both `--id` flag and `--json-body`.** The `--id` flag is a required CLI option. When using `--json-body`, include `"id"` in the JSON body too, since `--json-body` overrides flag-built body fields.
433
+ 18. **To remove a Customer Assist supervisor, remove all their agents first.** The DELETE endpoint (`delete-supervisors-config-1`) returns 204 but the supervisor may persist. Instead, use `update-supervisors` with `action: DELETE` on each agent. When the last agent is removed, the supervisor is automatically deleted.
434
+ 19. **Customer Assist queue creation requires `callPolicies`.** Unlike regular queues, CX queues require the `callPolicies` field (e.g., `{"policy":"SIMULTANEOUS"}`). This must be passed via `--json-body` since it's not available as a CLI flag.
435
+
436
+ ---
437
+
438
+ ## Context Compaction Recovery
439
+
440
+ If context compacts mid-execution, recover by:
441
+ 1. Read the deployment plan from `docs/plans/` to recover what was planned
442
+ 2. Check what's already been configured: run the relevant `show` / `list` commands
443
+ 3. Resume from the first incomplete step