wxcli 1.3.0__tar.gz → 1.4.0__tar.gz

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 (820) hide show
  1. {wxcli-1.3.0/src/wxcli/_playbook → wxcli-1.4.0}/.claude/agents/wxc-calling-builder.md +3 -3
  2. wxcli-1.4.0/.claude/settings.json +16 -0
  3. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/skills/audit-compliance/SKILL.md +73 -1
  4. {wxcli-1.3.0/src/wxcli/_playbook/.codex → wxcli-1.4.0/.claude}/skills/configure-features/SKILL.md +346 -2
  5. {wxcli-1.3.0/src/wxcli/_playbook/.codex → wxcli-1.4.0/.claude}/skills/configure-routing/SKILL.md +4 -5
  6. {wxcli-1.3.0/src/wxcli/_playbook/.codex → wxcli-1.4.0/.claude}/skills/cucm-migrate/SKILL.md +1 -1
  7. {wxcli-1.3.0/src/wxcli/_playbook/.codex → wxcli-1.4.0/.claude}/skills/customer-assist/SKILL.md +32 -14
  8. {wxcli-1.3.0/src/wxcli/_playbook → wxcli-1.4.0}/.claude/skills/manage-call-settings/SKILL.md +176 -6
  9. {wxcli-1.3.0/src/wxcli/_playbook → wxcli-1.4.0}/.claude/skills/manage-devices/SKILL.md +116 -9
  10. {wxcli-1.3.0/src/wxcli/_playbook → wxcli-1.4.0}/.claude/skills/manage-identity/SKILL.md +165 -2
  11. {wxcli-1.3.0/src/wxcli/_playbook → wxcli-1.4.0}/.claude/skills/manage-licensing/SKILL.md +72 -4
  12. {wxcli-1.3.0/src/wxcli/_playbook/.codex → wxcli-1.4.0/.claude}/skills/manage-meetings/SKILL.md +7 -6
  13. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/skills/provision-calling/SKILL.md +95 -3
  14. {wxcli-1.3.0/src/wxcli/_playbook/.codex → wxcli-1.4.0/.claude}/skills/query-live/domains/routing.md +1 -1
  15. {wxcli-1.3.0/src/wxcli/_playbook → wxcli-1.4.0}/.claude/skills/reporting/SKILL.md +79 -5
  16. {wxcli-1.3.0/src/wxcli/_playbook → wxcli-1.4.0}/.claude/skills/teardown/SKILL.md +1 -1
  17. wxcli-1.4.0/.github/workflows/ci.yml +114 -0
  18. {wxcli-1.3.0 → wxcli-1.4.0}/.github/workflows/release.yml +3 -0
  19. {wxcli-1.3.0 → wxcli-1.4.0}/.gitignore +2 -0
  20. {wxcli-1.3.0/src/wxcli/_playbook → wxcli-1.4.0}/CLAUDE.md +41 -19
  21. {wxcli-1.3.0 → wxcli-1.4.0}/PKG-INFO +11 -11
  22. {wxcli-1.3.0 → wxcli-1.4.0}/README.md +10 -10
  23. {wxcli-1.3.0 → wxcli-1.4.0}/TODO.md +2 -2
  24. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/admin-apps-data.md +4 -4
  25. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/admin-hybrid.md +1 -1
  26. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/admin-identity-scim.md +4 -4
  27. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/admin-licensing.md +12 -16
  28. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/admin-partner.md +34 -28
  29. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/authentication.md +58 -69
  30. {wxcli-1.3.0/src/wxcli/_playbook → wxcli-1.4.0}/docs/reference/call-control.md +6 -4
  31. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/call-features-additional.md +123 -78
  32. {wxcli-1.3.0/src/wxcli/_playbook → wxcli-1.4.0}/docs/reference/call-features-major.md +1 -1
  33. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/contact-center-analytics.md +21 -31
  34. {wxcli-1.3.0/src/wxcli/_playbook → wxcli-1.4.0}/docs/reference/contact-center-core.md +145 -143
  35. {wxcli-1.3.0/src/wxcli/_playbook → wxcli-1.4.0}/docs/reference/contact-center-journey.md +15 -16
  36. {wxcli-1.3.0/src/wxcli/_playbook → wxcli-1.4.0}/docs/reference/contact-center-routing.md +105 -95
  37. {wxcli-1.3.0/src/wxcli/_playbook → wxcli-1.4.0}/docs/reference/devices-core.md +20 -9
  38. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/devices-dect.md +1 -1
  39. {wxcli-1.3.0/src/wxcli/_playbook → wxcli-1.4.0}/docs/reference/devices-workspaces.md +1 -1
  40. {wxcli-1.3.0/src/wxcli/_playbook → wxcli-1.4.0}/docs/reference/location-calling-core.md +1 -1
  41. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/location-calling-media.md +2 -2
  42. {wxcli-1.3.0/src/wxcli/_playbook → wxcli-1.4.0}/docs/reference/location-recording-advanced.md +6 -5
  43. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/meetings-content.md +13 -10
  44. {wxcli-1.3.0/src/wxcli/_playbook → wxcli-1.4.0}/docs/reference/meetings-core.md +42 -35
  45. {wxcli-1.3.0/src/wxcli/_playbook → wxcli-1.4.0}/docs/reference/meetings-infrastructure.md +58 -44
  46. {wxcli-1.3.0/src/wxcli/_playbook → wxcli-1.4.0}/docs/reference/meetings-settings.md +47 -38
  47. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/messaging-bots.md +1 -1
  48. {wxcli-1.3.0/src/wxcli/_playbook → wxcli-1.4.0}/docs/reference/messaging-spaces.md +1 -1
  49. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/person-call-settings-behavior.md +31 -9
  50. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/person-call-settings-media.md +33 -13
  51. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/person-call-settings-permissions.md +1 -1
  52. {wxcli-1.3.0/src/wxcli/_playbook → wxcli-1.4.0}/docs/reference/provisioning.md +8 -6
  53. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/reporting-analytics.md +22 -22
  54. {wxcli-1.3.0 → wxcli-1.4.0}/docs/runbooks/cucm-migration/decision-guide.md +1 -1
  55. {wxcli-1.3.0 → wxcli-1.4.0}/docs/runbooks/cucm-migration/operator-runbook.md +2 -2
  56. {wxcli-1.3.0 → wxcli-1.4.0}/pyproject.toml +3 -3
  57. wxcli-1.4.0/specs/overlays/webex-cloud-calling.overlay.json +178 -0
  58. {wxcli-1.3.0 → wxcli-1.4.0}/specs/webex-admin.json +8 -4
  59. {wxcli-1.3.0 → wxcli-1.4.0}/specs/webex-cloud-calling.json +503 -2
  60. {wxcli-1.3.0 → wxcli-1.4.0}/specs/webex-contact-center.json +526 -216
  61. {wxcli-1.3.0 → wxcli-1.4.0/src/wxcli/_playbook}/.claude/agents/wxc-calling-builder.md +3 -3
  62. wxcli-1.4.0/src/wxcli/_playbook/.claude/settings.json +21 -0
  63. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/skills/audit-compliance/SKILL.md +73 -1
  64. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/skills/configure-features/SKILL.md +346 -2
  65. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/skills/configure-routing/SKILL.md +4 -5
  66. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/skills/cucm-migrate/SKILL.md +1 -1
  67. {wxcli-1.3.0 → wxcli-1.4.0/src/wxcli/_playbook}/.claude/skills/customer-assist/SKILL.md +32 -14
  68. {wxcli-1.3.0 → wxcli-1.4.0/src/wxcli/_playbook}/.claude/skills/manage-call-settings/SKILL.md +176 -6
  69. {wxcli-1.3.0/src/wxcli/_playbook/.codex → wxcli-1.4.0/src/wxcli/_playbook/.claude}/skills/manage-devices/SKILL.md +116 -9
  70. {wxcli-1.3.0 → wxcli-1.4.0/src/wxcli/_playbook}/.claude/skills/manage-identity/SKILL.md +165 -2
  71. {wxcli-1.3.0 → wxcli-1.4.0/src/wxcli/_playbook}/.claude/skills/manage-licensing/SKILL.md +72 -4
  72. {wxcli-1.3.0 → wxcli-1.4.0/src/wxcli/_playbook}/.claude/skills/manage-meetings/SKILL.md +7 -6
  73. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/skills/provision-calling/SKILL.md +95 -3
  74. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/skills/query-live/domains/routing.md +1 -1
  75. {wxcli-1.3.0 → wxcli-1.4.0/src/wxcli/_playbook}/.claude/skills/reporting/SKILL.md +79 -5
  76. {wxcli-1.3.0 → wxcli-1.4.0/src/wxcli/_playbook}/.claude/skills/teardown/SKILL.md +1 -1
  77. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/agents/wxc-calling-builder.toml +3 -3
  78. wxcli-1.4.0/src/wxcli/_playbook/.codex/config.toml +17 -0
  79. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/audit-compliance/SKILL.md +73 -1
  80. {wxcli-1.3.0/.claude → wxcli-1.4.0/src/wxcli/_playbook/.codex}/skills/configure-features/SKILL.md +346 -2
  81. {wxcli-1.3.0/.claude → wxcli-1.4.0/src/wxcli/_playbook/.codex}/skills/configure-routing/SKILL.md +4 -5
  82. {wxcli-1.3.0/.claude → wxcli-1.4.0/src/wxcli/_playbook/.codex}/skills/cucm-migrate/SKILL.md +1 -1
  83. {wxcli-1.3.0/src/wxcli/_playbook/.claude → wxcli-1.4.0/src/wxcli/_playbook/.codex}/skills/customer-assist/SKILL.md +32 -14
  84. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/manage-call-settings/SKILL.md +176 -6
  85. {wxcli-1.3.0/.claude → wxcli-1.4.0/src/wxcli/_playbook/.codex}/skills/manage-devices/SKILL.md +116 -9
  86. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/manage-identity/SKILL.md +165 -2
  87. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/manage-licensing/SKILL.md +72 -4
  88. {wxcli-1.3.0/src/wxcli/_playbook/.claude → wxcli-1.4.0/src/wxcli/_playbook/.codex}/skills/manage-meetings/SKILL.md +7 -6
  89. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/provision-calling/SKILL.md +95 -3
  90. {wxcli-1.3.0/.claude → wxcli-1.4.0/src/wxcli/_playbook/.codex}/skills/query-live/domains/routing.md +1 -1
  91. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/reporting/SKILL.md +79 -5
  92. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/teardown/SKILL.md +1 -1
  93. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/AGENTS.md +39 -17
  94. {wxcli-1.3.0 → wxcli-1.4.0/src/wxcli/_playbook}/CLAUDE.md +41 -19
  95. wxcli-1.4.0/src/wxcli/_playbook/docs/knowledge-base/migration/kb-css-routing.md +243 -0
  96. wxcli-1.4.0/src/wxcli/_playbook/docs/knowledge-base/migration/kb-device-migration.md +341 -0
  97. wxcli-1.4.0/src/wxcli/_playbook/docs/knowledge-base/migration/kb-feature-mapping.md +250 -0
  98. wxcli-1.4.0/src/wxcli/_playbook/docs/knowledge-base/migration/kb-identity-numbering.md +134 -0
  99. wxcli-1.4.0/src/wxcli/_playbook/docs/knowledge-base/migration/kb-location-design.md +305 -0
  100. wxcli-1.4.0/src/wxcli/_playbook/docs/knowledge-base/migration/kb-trunk-pstn.md +274 -0
  101. wxcli-1.4.0/src/wxcli/_playbook/docs/knowledge-base/migration/kb-user-settings.md +331 -0
  102. wxcli-1.4.0/src/wxcli/_playbook/docs/knowledge-base/migration/kb-webex-limits.md +270 -0
  103. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/admin-apps-data.md +4 -4
  104. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/admin-hybrid.md +1 -1
  105. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/admin-identity-scim.md +4 -4
  106. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/admin-licensing.md +12 -16
  107. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/admin-partner.md +34 -28
  108. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/authentication.md +58 -69
  109. {wxcli-1.3.0 → wxcli-1.4.0/src/wxcli/_playbook}/docs/reference/call-control.md +6 -4
  110. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/call-features-additional.md +123 -78
  111. {wxcli-1.3.0 → wxcli-1.4.0/src/wxcli/_playbook}/docs/reference/call-features-major.md +1 -1
  112. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/contact-center-analytics.md +21 -31
  113. {wxcli-1.3.0 → wxcli-1.4.0/src/wxcli/_playbook}/docs/reference/contact-center-core.md +145 -143
  114. {wxcli-1.3.0 → wxcli-1.4.0/src/wxcli/_playbook}/docs/reference/contact-center-journey.md +15 -16
  115. {wxcli-1.3.0 → wxcli-1.4.0/src/wxcli/_playbook}/docs/reference/contact-center-routing.md +105 -95
  116. {wxcli-1.3.0 → wxcli-1.4.0/src/wxcli/_playbook}/docs/reference/devices-core.md +20 -9
  117. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/devices-dect.md +1 -1
  118. {wxcli-1.3.0 → wxcli-1.4.0/src/wxcli/_playbook}/docs/reference/devices-workspaces.md +1 -1
  119. {wxcli-1.3.0 → wxcli-1.4.0/src/wxcli/_playbook}/docs/reference/location-calling-core.md +1 -1
  120. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/location-calling-media.md +2 -2
  121. {wxcli-1.3.0 → wxcli-1.4.0/src/wxcli/_playbook}/docs/reference/location-recording-advanced.md +6 -5
  122. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/meetings-content.md +13 -10
  123. {wxcli-1.3.0 → wxcli-1.4.0/src/wxcli/_playbook}/docs/reference/meetings-core.md +42 -35
  124. {wxcli-1.3.0 → wxcli-1.4.0/src/wxcli/_playbook}/docs/reference/meetings-infrastructure.md +58 -44
  125. {wxcli-1.3.0 → wxcli-1.4.0/src/wxcli/_playbook}/docs/reference/meetings-settings.md +47 -38
  126. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/messaging-bots.md +1 -1
  127. {wxcli-1.3.0 → wxcli-1.4.0/src/wxcli/_playbook}/docs/reference/messaging-spaces.md +1 -1
  128. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/person-call-settings-behavior.md +31 -9
  129. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/person-call-settings-media.md +33 -13
  130. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/person-call-settings-permissions.md +1 -1
  131. {wxcli-1.3.0 → wxcli-1.4.0/src/wxcli/_playbook}/docs/reference/provisioning.md +8 -6
  132. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/reporting-analytics.md +22 -22
  133. wxcli-1.4.0/src/wxcli/_playbook/docs/runbooks/cucm-migration/decision-guide.md +928 -0
  134. wxcli-1.4.0/src/wxcli/_playbook/docs/runbooks/cucm-migration/operator-runbook.md +988 -0
  135. wxcli-1.4.0/src/wxcli/_playbook/docs/runbooks/cucm-migration/tuning-reference.md +817 -0
  136. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_version.py +3 -3
  137. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/customer_assist.py +62 -0
  138. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/update.py +46 -2
  139. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/user_settings.py +166 -0
  140. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/virtual_line_settings.py +58 -0
  141. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/workspace_settings.py +58 -0
  142. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/main.py +10 -1
  143. wxcli-1.4.0/src/wxcli/update_check.py +145 -0
  144. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli.egg-info/PKG-INFO +11 -11
  145. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli.egg-info/SOURCES.txt +16 -0
  146. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli.egg-info/scm_file_list.json +17 -1
  147. wxcli-1.4.0/src/wxcli.egg-info/scm_version.json +8 -0
  148. {wxcli-1.3.0 → wxcli-1.4.0}/tools/CLAUDE.md +21 -1
  149. {wxcli-1.3.0 → wxcli-1.4.0}/tools/drift_check.py +256 -13
  150. {wxcli-1.3.0 → wxcli-1.4.0}/tools/drift_check_allowlist.txt +6 -4
  151. {wxcli-1.3.0 → wxcli-1.4.0}/tools/openapi_parser.py +8 -2
  152. wxcli-1.4.0/tools/spec_overlay.py +106 -0
  153. wxcli-1.4.0/tools/wheel_playbook_smoke.py +149 -0
  154. {wxcli-1.3.0 → wxcli-1.4.0}/wxcli-dist/assemble.py +17 -1
  155. wxcli-1.4.0/wxcli-dist/codex/config.toml +17 -0
  156. wxcli-1.4.0/wxcli-dist/settings.bundled.json +21 -0
  157. wxcli-1.3.0/.claude/settings.json +0 -29
  158. wxcli-1.3.0/src/wxcli/_playbook/.claude/settings.json +0 -8
  159. wxcli-1.3.0/src/wxcli/_playbook/.codex/config.toml +0 -14
  160. wxcli-1.3.0/src/wxcli.egg-info/scm_version.json +0 -8
  161. wxcli-1.3.0/wxcli-dist/codex/config.toml +0 -14
  162. wxcli-1.3.0/wxcli-dist/settings.bundled.json +0 -8
  163. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/agents/migration-advisor.md +0 -0
  164. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/projects/-Users-ahobgood-Documents-webexCalling/memory/feedback_help_gate_for_skills.md +0 -0
  165. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/rules/cleanup.md +0 -0
  166. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/rules/cucm-migration.md +0 -0
  167. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/rules/org-health.md +0 -0
  168. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/skills/call-control/SKILL.md +0 -0
  169. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/skills/contact-center/SKILL.md +0 -0
  170. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/skills/device-platform/SKILL.md +0 -0
  171. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/skills/messaging-bots/SKILL.md +0 -0
  172. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/skills/messaging-spaces/SKILL.md +0 -0
  173. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/skills/org-health/SKILL.md +0 -0
  174. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/skills/query-live/SKILL.md +0 -0
  175. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/skills/query-live/domains/call-flow-trace.md +0 -0
  176. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/skills/query-live/domains/call-history.md +0 -0
  177. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/skills/query-live/domains/features.md +0 -0
  178. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/skills/query-live/domains/numbers.md +0 -0
  179. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/skills/query-live/domains/people-and-settings.md +0 -0
  180. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/skills/reporting/references/cdr-recipes.md +0 -0
  181. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/skills/reporting-cc/SKILL.md +0 -0
  182. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/skills/reporting-meetings/SKILL.md +0 -0
  183. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/skills/video-mesh/SKILL.md +0 -0
  184. {wxcli-1.3.0 → wxcli-1.4.0}/.claude/skills/wxc-calling-debug/SKILL.md +0 -0
  185. {wxcli-1.3.0 → wxcli-1.4.0}/LICENSE +0 -0
  186. {wxcli-1.3.0 → wxcli-1.4.0}/docs/CLAUDE.md +0 -0
  187. {wxcli-1.3.0 → wxcli-1.4.0}/docs/architecture/00-index.md +0 -0
  188. {wxcli-1.3.0 → wxcli-1.4.0}/docs/architecture/01-structural-map.md +0 -0
  189. {wxcli-1.3.0 → wxcli-1.4.0}/docs/architecture/02-decisions.md +0 -0
  190. {wxcli-1.3.0 → wxcli-1.4.0}/docs/architecture/03-behavior.md +0 -0
  191. {wxcli-1.3.0 → wxcli-1.4.0}/docs/architecture/04-operations-and-evolution.md +0 -0
  192. {wxcli-1.3.0 → wxcli-1.4.0}/docs/architecture/05-purpose.md +0 -0
  193. {wxcli-1.3.0 → wxcli-1.4.0}/docs/knowledge-base/migration/kb-css-routing.md +0 -0
  194. {wxcli-1.3.0 → wxcli-1.4.0}/docs/knowledge-base/migration/kb-device-migration.md +0 -0
  195. {wxcli-1.3.0 → wxcli-1.4.0}/docs/knowledge-base/migration/kb-feature-mapping.md +0 -0
  196. {wxcli-1.3.0 → wxcli-1.4.0}/docs/knowledge-base/migration/kb-identity-numbering.md +0 -0
  197. {wxcli-1.3.0 → wxcli-1.4.0}/docs/knowledge-base/migration/kb-location-design.md +0 -0
  198. {wxcli-1.3.0 → wxcli-1.4.0}/docs/knowledge-base/migration/kb-trunk-pstn.md +0 -0
  199. {wxcli-1.3.0 → wxcli-1.4.0}/docs/knowledge-base/migration/kb-user-settings.md +0 -0
  200. {wxcli-1.3.0 → wxcli-1.4.0}/docs/knowledge-base/migration/kb-webex-limits.md +0 -0
  201. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/CLAUDE.md +0 -0
  202. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/TODO.md +0 -0
  203. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/admin-audit-security.md +0 -0
  204. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/admin-org-management.md +0 -0
  205. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/archive/wxc-sdk-patterns.md +0 -0
  206. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/archive/wxcadm-advanced.md +0 -0
  207. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/archive/wxcadm-core.md +0 -0
  208. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/archive/wxcadm-devices-workspaces.md +0 -0
  209. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/archive/wxcadm-features.md +0 -0
  210. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/archive/wxcadm-locations.md +0 -0
  211. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/archive/wxcadm-person.md +0 -0
  212. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/archive/wxcadm-routing.md +0 -0
  213. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/call-routing.md +0 -0
  214. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/devices-platform.md +0 -0
  215. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/emergency-services.md +0 -0
  216. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/migration-spec-template.md +0 -0
  217. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/person-call-settings-handling.md +0 -0
  218. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/self-service-call-settings.md +0 -0
  219. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/virtual-lines.md +0 -0
  220. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/webhooks-events.md +0 -0
  221. {wxcli-1.3.0 → wxcli-1.4.0}/docs/reference/wxcadm-xsi-realtime.md +0 -0
  222. {wxcli-1.3.0 → wxcli-1.4.0}/docs/runbooks/cucm-migration/self-review-findings.md +0 -0
  223. {wxcli-1.3.0 → wxcli-1.4.0}/docs/runbooks/cucm-migration/tuning-reference.md +0 -0
  224. {wxcli-1.3.0 → wxcli-1.4.0}/docs/templates/deployment-plan.md +0 -0
  225. {wxcli-1.3.0 → wxcli-1.4.0}/docs/templates/execution-report.md +0 -0
  226. {wxcli-1.3.0 → wxcli-1.4.0}/setup.cfg +0 -0
  227. {wxcli-1.3.0 → wxcli-1.4.0}/specs/webex-broadworks.json +0 -0
  228. {wxcli-1.3.0 → wxcli-1.4.0}/specs/webex-device.json +0 -0
  229. {wxcli-1.3.0 → wxcli-1.4.0}/specs/webex-meetings.json +0 -0
  230. {wxcli-1.3.0 → wxcli-1.4.0}/specs/webex-messaging.json +0 -0
  231. {wxcli-1.3.0 → wxcli-1.4.0}/specs/webex-ucm.json +0 -0
  232. {wxcli-1.3.0 → wxcli-1.4.0}/specs/webex-wholesale.json +0 -0
  233. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/__init__.py +0 -0
  234. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/agents/migration-advisor.md +0 -0
  235. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/rules/cleanup.md +0 -0
  236. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/rules/cucm-migration.md +0 -0
  237. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/rules/org-health.md +0 -0
  238. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/skills/call-control/SKILL.md +0 -0
  239. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/skills/contact-center/SKILL.md +0 -0
  240. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/skills/device-platform/SKILL.md +0 -0
  241. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/skills/messaging-bots/SKILL.md +0 -0
  242. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/skills/messaging-spaces/SKILL.md +0 -0
  243. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/skills/org-health/SKILL.md +0 -0
  244. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/skills/query-live/SKILL.md +0 -0
  245. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/skills/query-live/domains/call-flow-trace.md +0 -0
  246. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/skills/query-live/domains/call-history.md +0 -0
  247. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/skills/query-live/domains/features.md +0 -0
  248. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/skills/query-live/domains/numbers.md +0 -0
  249. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/skills/query-live/domains/people-and-settings.md +0 -0
  250. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/skills/reporting/references/cdr-recipes.md +0 -0
  251. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/skills/reporting-cc/SKILL.md +0 -0
  252. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/skills/reporting-meetings/SKILL.md +0 -0
  253. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/skills/video-mesh/SKILL.md +0 -0
  254. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.claude/skills/wxc-calling-debug/SKILL.md +0 -0
  255. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/agents/migration-advisor.toml +0 -0
  256. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/rules/cleanup.md +0 -0
  257. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/rules/cucm-migration.md +0 -0
  258. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/rules/org-health.md +0 -0
  259. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/call-control/SKILL.md +0 -0
  260. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/contact-center/SKILL.md +0 -0
  261. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/device-platform/SKILL.md +0 -0
  262. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/messaging-bots/SKILL.md +0 -0
  263. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/messaging-spaces/SKILL.md +0 -0
  264. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/org-health/SKILL.md +0 -0
  265. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/query-live/SKILL.md +0 -0
  266. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/query-live/domains/call-flow-trace.md +0 -0
  267. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/query-live/domains/call-history.md +0 -0
  268. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/query-live/domains/features.md +0 -0
  269. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/query-live/domains/numbers.md +0 -0
  270. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/query-live/domains/people-and-settings.md +0 -0
  271. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/reporting/references/cdr-recipes.md +0 -0
  272. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/reporting-cc/SKILL.md +0 -0
  273. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/reporting-meetings/SKILL.md +0 -0
  274. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/video-mesh/SKILL.md +0 -0
  275. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/.codex/skills/wxc-calling-debug/SKILL.md +0 -0
  276. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/CLAUDE.md +0 -0
  277. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/admin-audit-security.md +0 -0
  278. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/admin-org-management.md +0 -0
  279. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/archive/wxc-sdk-patterns.md +0 -0
  280. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/archive/wxcadm-advanced.md +0 -0
  281. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/archive/wxcadm-core.md +0 -0
  282. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/archive/wxcadm-devices-workspaces.md +0 -0
  283. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/archive/wxcadm-features.md +0 -0
  284. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/archive/wxcadm-locations.md +0 -0
  285. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/archive/wxcadm-person.md +0 -0
  286. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/archive/wxcadm-routing.md +0 -0
  287. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/call-routing.md +0 -0
  288. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/devices-platform.md +0 -0
  289. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/emergency-services.md +0 -0
  290. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/person-call-settings-handling.md +0 -0
  291. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/self-service-call-settings.md +0 -0
  292. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/virtual-lines.md +0 -0
  293. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/webhooks-events.md +0 -0
  294. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/_playbook/docs/reference/wxcadm-xsi-realtime.md +0 -0
  295. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/auth.py +0 -0
  296. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/__init__.py +0 -0
  297. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/_registry.py +0 -0
  298. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/activation_email.py +0 -0
  299. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/admin_recordings.py +0 -0
  300. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/analytics.py +0 -0
  301. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/announcement_playlists.py +0 -0
  302. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/announcements.py +0 -0
  303. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/archive_users.py +0 -0
  304. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/attachment_actions.py +0 -0
  305. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/audit_events.py +0 -0
  306. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/authorizations.py +0 -0
  307. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/auto_attendant.py +0 -0
  308. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/broadworks_billing_reports.py +0 -0
  309. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/broadworks_enterprises.py +0 -0
  310. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/broadworks_subscribers.py +0 -0
  311. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/broadworks_workspaces.py +0 -0
  312. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/call_controls.py +0 -0
  313. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/call_park.py +0 -0
  314. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/call_pickup.py +0 -0
  315. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/call_queue.py +0 -0
  316. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/call_recording.py +0 -0
  317. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/call_routing.py +0 -0
  318. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/call_settings_for_me_phase_5.py +0 -0
  319. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/caller_reputation.py +0 -0
  320. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/calling_service.py +0 -0
  321. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_address_book.py +0 -0
  322. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_agent_greetings.py +0 -0
  323. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_agent_summaries.py +0 -0
  324. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_agent_wellbeing.py +0 -0
  325. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_agents.py +0 -0
  326. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_ai_assistant.py +0 -0
  327. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_ai_feature.py +0 -0
  328. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_audio_files.py +0 -0
  329. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_auto_csat.py +0 -0
  330. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_aux_code.py +0 -0
  331. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_business_hour.py +0 -0
  332. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_call_monitoring.py +0 -0
  333. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_callbacks.py +0 -0
  334. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_campaign.py +0 -0
  335. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_captures.py +0 -0
  336. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_contact_list.py +0 -0
  337. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_contact_number.py +0 -0
  338. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_data_sources.py +0 -0
  339. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_desktop_layout.py +0 -0
  340. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_desktop_profile.py +0 -0
  341. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_dial_number.py +0 -0
  342. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_dial_plan.py +0 -0
  343. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_dnc.py +0 -0
  344. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_entry_point.py +0 -0
  345. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_ewt.py +0 -0
  346. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_flow.py +0 -0
  347. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_global_vars.py +0 -0
  348. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_holiday_list.py +0 -0
  349. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_journey.py +0 -0
  350. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_legacy_flows.py +0 -0
  351. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_multimedia_profile.py +0 -0
  352. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_notification.py +0 -0
  353. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_outdial_ani.py +0 -0
  354. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_overrides.py +0 -0
  355. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_queue.py +0 -0
  356. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_queue_stats.py +0 -0
  357. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_realtime.py +0 -0
  358. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_resource_collection.py +0 -0
  359. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_search.py +0 -0
  360. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_site.py +0 -0
  361. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_skill.py +0 -0
  362. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_skill_profile.py +0 -0
  363. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_subscriptions.py +0 -0
  364. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_summaries.py +0 -0
  365. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_tasks.py +0 -0
  366. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_team.py +0 -0
  367. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_user_profiles.py +0 -0
  368. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_users.py +0 -0
  369. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cc_work_types.py +0 -0
  370. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cdr.py +0 -0
  371. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/classifications.py +0 -0
  372. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cleanup.py +0 -0
  373. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/client_settings.py +0 -0
  374. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/conference.py +0 -0
  375. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/configure.py +0 -0
  376. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/converged_recordings.py +0 -0
  377. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/converged_recordings_export.py +0 -0
  378. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cq_playlists.py +0 -0
  379. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cucm.py +0 -0
  380. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/cucm_config.py +0 -0
  381. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/data_sources.py +0 -0
  382. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/dect_devices.py +0 -0
  383. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/device_configurations.py +0 -0
  384. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/device_dynamic_settings.py +0 -0
  385. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/device_settings.py +0 -0
  386. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/devices.py +0 -0
  387. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/domains.py +0 -0
  388. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/ecm.py +0 -0
  389. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/emergency_services.py +0 -0
  390. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/events.py +0 -0
  391. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/external_voicemail.py +0 -0
  392. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/groups.py +0 -0
  393. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/guest_management.py +0 -0
  394. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/hds.py +0 -0
  395. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/hot_desk.py +0 -0
  396. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/hot_desking_members.py +0 -0
  397. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/hot_desking_portal.py +0 -0
  398. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/hunt_group.py +0 -0
  399. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/hybrid_clusters.py +0 -0
  400. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/hybrid_connectors.py +0 -0
  401. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/identity_org.py +0 -0
  402. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/init_playbook.py +0 -0
  403. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/licenses.py +0 -0
  404. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/live_monitoring.py +0 -0
  405. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/location_call_handling.py +0 -0
  406. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/location_schedules.py +0 -0
  407. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/location_settings.py +0 -0
  408. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/location_voicemail.py +0 -0
  409. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/locations.py +0 -0
  410. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/meeting_captions.py +0 -0
  411. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/meeting_chats.py +0 -0
  412. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/meeting_invitees.py +0 -0
  413. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/meeting_messages.py +0 -0
  414. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/meeting_participants.py +0 -0
  415. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/meeting_polls.py +0 -0
  416. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/meeting_preferences.py +0 -0
  417. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/meeting_qa.py +0 -0
  418. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/meeting_qualities.py +0 -0
  419. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/meeting_reports.py +0 -0
  420. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/meeting_session_types.py +0 -0
  421. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/meeting_site.py +0 -0
  422. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/meeting_slido.py +0 -0
  423. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/meeting_summaries.py +0 -0
  424. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/meeting_tracking_codes.py +0 -0
  425. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/meeting_transcripts.py +0 -0
  426. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/meetings.py +0 -0
  427. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/memberships.py +0 -0
  428. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/messages.py +0 -0
  429. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/mode_management.py +0 -0
  430. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/my_call_settings.py +0 -0
  431. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/numbers.py +0 -0
  432. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/operating_modes.py +0 -0
  433. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/org_contacts.py +0 -0
  434. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/org_health_cli.py +0 -0
  435. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/org_settings.py +0 -0
  436. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/organizations.py +0 -0
  437. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/paging_group.py +0 -0
  438. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/partner_admins.py +0 -0
  439. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/partner_reports.py +0 -0
  440. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/partner_tags.py +0 -0
  441. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/people.py +0 -0
  442. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/person_call_settings.py +0 -0
  443. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/pstn.py +0 -0
  444. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/recording_report.py +0 -0
  445. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/report_templates.py +0 -0
  446. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/reports.py +0 -0
  447. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/resource_group_memberships.py +0 -0
  448. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/resource_groups.py +0 -0
  449. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/roles.py +0 -0
  450. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/room_tabs.py +0 -0
  451. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/rooms.py +0 -0
  452. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/scim_bulk.py +0 -0
  453. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/scim_groups.py +0 -0
  454. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/scim_schemas.py +0 -0
  455. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/scim_users.py +0 -0
  456. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/security_audit.py +0 -0
  457. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/service_apps.py +0 -0
  458. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/single_number_reach.py +0 -0
  459. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/team_memberships.py +0 -0
  460. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/teams.py +0 -0
  461. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/ucm_profile.py +0 -0
  462. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/video_mesh.py +0 -0
  463. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/virtual_extensions.py +0 -0
  464. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/webhooks.py +0 -0
  465. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/wholesale_billing_reports.py +0 -0
  466. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/wholesale_provisioning.py +0 -0
  467. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/workspace_locations.py +0 -0
  468. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/workspace_metrics.py +0 -0
  469. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/workspace_personalization.py +0 -0
  470. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/workspaces.py +0 -0
  471. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/commands/xapi.py +0 -0
  472. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/config.py +0 -0
  473. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/errors.py +0 -0
  474. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/CLAUDE.md +0 -0
  475. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/__init__.py +0 -0
  476. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/advisory/CLAUDE.md +0 -0
  477. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/advisory/__init__.py +0 -0
  478. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/advisory/advisor.py +0 -0
  479. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/advisory/advisory_patterns.py +0 -0
  480. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/advisory/recommendation_rules.py +0 -0
  481. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/CLAUDE.md +0 -0
  482. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/__init__.py +0 -0
  483. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/connection.py +0 -0
  484. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/discovery.py +0 -0
  485. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/extractors/__init__.py +0 -0
  486. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/extractors/announcements.py +0 -0
  487. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/extractors/base.py +0 -0
  488. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/extractors/device_profiles.py +0 -0
  489. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/extractors/devices.py +0 -0
  490. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/extractors/e911.py +0 -0
  491. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/extractors/features.py +0 -0
  492. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/extractors/helpers.py +0 -0
  493. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/extractors/informational.py +0 -0
  494. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/extractors/locations.py +0 -0
  495. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/extractors/moh.py +0 -0
  496. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/extractors/remote_destinations.py +0 -0
  497. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/extractors/routing.py +0 -0
  498. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/extractors/shared_lines.py +0 -0
  499. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/extractors/templates.py +0 -0
  500. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/extractors/tier4.py +0 -0
  501. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/extractors/users.py +0 -0
  502. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/extractors/voicemail.py +0 -0
  503. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/extractors/workspaces.py +0 -0
  504. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/cucm/unity_connection.py +0 -0
  505. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/execute/CLAUDE.md +0 -0
  506. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/execute/__init__.py +0 -0
  507. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/execute/batch.py +0 -0
  508. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/execute/dependency.py +0 -0
  509. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/execute/engine.py +0 -0
  510. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/execute/handlers.py +0 -0
  511. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/execute/planner.py +0 -0
  512. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/execute/runtime.py +0 -0
  513. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/export/CLAUDE.md +0 -0
  514. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/export/__init__.py +0 -0
  515. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/export/csv_export.py +0 -0
  516. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/export/deployment_plan.py +0 -0
  517. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/export/json_export.py +0 -0
  518. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/models.py +0 -0
  519. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/phone_models.py +0 -0
  520. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/preflight/CLAUDE.md +0 -0
  521. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/preflight/__init__.py +0 -0
  522. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/preflight/checks.py +0 -0
  523. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/preflight/runner.py +0 -0
  524. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/rate_limiter.py +0 -0
  525. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/report/CLAUDE.md +0 -0
  526. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/report/__init__.py +0 -0
  527. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/report/appendix.py +0 -0
  528. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/report/assembler.py +0 -0
  529. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/report/charts.py +0 -0
  530. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/report/executive.py +0 -0
  531. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/report/explainer.py +0 -0
  532. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/report/helpers.py +0 -0
  533. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/report/ingest.py +0 -0
  534. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/report/notice_templates.py +0 -0
  535. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/report/score.py +0 -0
  536. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/report/styles.py +0 -0
  537. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/report/user_diff.py +0 -0
  538. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/report/user_notice.py +0 -0
  539. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/state.py +0 -0
  540. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/store.py +0 -0
  541. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/CLAUDE.md +0 -0
  542. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/__init__.py +0 -0
  543. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/analysis_pipeline.py +0 -0
  544. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/analyzers/__init__.py +0 -0
  545. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/analyzers/css_permission.py +0 -0
  546. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/analyzers/css_routing.py +0 -0
  547. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/analyzers/device_compatibility.py +0 -0
  548. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/analyzers/dn_ambiguity.py +0 -0
  549. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/analyzers/duplicate_user.py +0 -0
  550. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/analyzers/extension_conflict.py +0 -0
  551. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/analyzers/feature_approximation.py +0 -0
  552. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/analyzers/layout_overflow.py +0 -0
  553. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/analyzers/location_ambiguity.py +0 -0
  554. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/analyzers/missing_data.py +0 -0
  555. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/analyzers/selective_call_handling.py +0 -0
  556. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/analyzers/shared_line.py +0 -0
  557. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/analyzers/voicemail_compatibility.py +0 -0
  558. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/analyzers/workspace_license.py +0 -0
  559. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/cross_reference.py +0 -0
  560. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/cucm_pattern.py +0 -0
  561. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/decisions.py +0 -0
  562. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/e164.py +0 -0
  563. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/engine.py +0 -0
  564. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/CLAUDE.md +0 -0
  565. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/__init__.py +0 -0
  566. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/announcement_mapper.py +0 -0
  567. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/base.py +0 -0
  568. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/button_template_mapper.py +0 -0
  569. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/call_forwarding_mapper.py +0 -0
  570. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/call_settings_mapper.py +0 -0
  571. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/css_mapper.py +0 -0
  572. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/dect_mapper.py +0 -0
  573. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/device_layout_mapper.py +0 -0
  574. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/device_mapper.py +0 -0
  575. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/device_profile_mapper.py +0 -0
  576. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/device_settings_mapper.py +0 -0
  577. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/e911_mapper.py +0 -0
  578. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/ecbn_mapper.py +0 -0
  579. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/executive_assistant_mapper.py +0 -0
  580. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/feature_mapper.py +0 -0
  581. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/line_mapper.py +0 -0
  582. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/location_mapper.py +0 -0
  583. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/moh_mapper.py +0 -0
  584. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/monitoring_mapper.py +0 -0
  585. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/receptionist_mapper.py +0 -0
  586. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/routing_mapper.py +0 -0
  587. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/snr_mapper.py +0 -0
  588. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/softkey_mapper.py +0 -0
  589. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/user_mapper.py +0 -0
  590. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/voicemail_group_mapper.py +0 -0
  591. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/voicemail_mapper.py +0 -0
  592. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/mappers/workspace_mapper.py +0 -0
  593. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/normalizers.py +0 -0
  594. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/pattern_converter.py +0 -0
  595. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/pipeline.py +0 -0
  596. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/migration/transform/rules.py +0 -0
  597. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/org_health/CLAUDE.md +0 -0
  598. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/org_health/__init__.py +0 -0
  599. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/org_health/analyze.py +0 -0
  600. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/org_health/checks.py +0 -0
  601. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/org_health/collector.py +0 -0
  602. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/org_health/models.py +0 -0
  603. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/org_health/report.py +0 -0
  604. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli/output.py +0 -0
  605. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli.egg-info/dependency_links.txt +0 -0
  606. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli.egg-info/entry_points.txt +0 -0
  607. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli.egg-info/requires.txt +0 -0
  608. {wxcli-1.3.0 → wxcli-1.4.0}/src/wxcli.egg-info/top_level.txt +0 -0
  609. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/__init__.py +0 -0
  610. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/advisory/__init__.py +0 -0
  611. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/advisory/test_advisor.py +0 -0
  612. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/advisory/test_advisory_executive_assistant.py +0 -0
  613. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/advisory/test_advisory_intercept.py +0 -0
  614. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/advisory/test_advisory_patterns.py +0 -0
  615. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/advisory/test_advisory_selective.py +0 -0
  616. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/advisory/test_foundation.py +0 -0
  617. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/advisory/test_integration.py +0 -0
  618. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/advisory/test_new_patterns.py +0 -0
  619. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/advisory/test_receptionist_advisory.py +0 -0
  620. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/advisory/test_recommendation_rules.py +0 -0
  621. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/advisory/test_recommendation_rules_tier2p2.py +0 -0
  622. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/advisory/test_recommendation_selective.py +0 -0
  623. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/advisory/test_tier4_patterns.py +0 -0
  624. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/cucm/__init__.py +0 -0
  625. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/cucm/fixtures/__init__.py +0 -0
  626. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/cucm/test_connection.py +0 -0
  627. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/cucm/test_cpc_detail_fetch.py +0 -0
  628. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/cucm/test_device_settings_tags.py +0 -0
  629. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/cucm/test_discovery.py +0 -0
  630. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/cucm/test_executive_assistant_extractor.py +0 -0
  631. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/cucm/test_extractors.py +0 -0
  632. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/cucm/test_informational_extractor.py +0 -0
  633. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/cucm/test_intercept_extractor.py +0 -0
  634. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/cucm/test_template_extractor.py +0 -0
  635. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/cucm/test_tier4_extractor.py +0 -0
  636. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/cucm/test_unity_shared_mailboxes.py +0 -0
  637. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/__init__.py +0 -0
  638. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/conftest.py +0 -0
  639. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_advisory_to_execution_bridge.py +0 -0
  640. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_batch.py +0 -0
  641. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_bridge_integration.py +0 -0
  642. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_bulk_batch.py +0 -0
  643. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_bulk_config.py +0 -0
  644. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_bulk_constants.py +0 -0
  645. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_bulk_e2e.py +0 -0
  646. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_bulk_fallback.py +0 -0
  647. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_bulk_handlers.py +0 -0
  648. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_bulk_integration.py +0 -0
  649. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_bulk_planner.py +0 -0
  650. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_bulk_polling.py +0 -0
  651. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_bulk_serialization.py +0 -0
  652. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_cascade_and_retry.py +0 -0
  653. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_dect_handlers.py +0 -0
  654. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_dect_planner.py +0 -0
  655. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_dependency.py +0 -0
  656. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_device_settings_handlers.py +0 -0
  657. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_device_settings_planner.py +0 -0
  658. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_engine.py +0 -0
  659. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_engine_409_recovery.py +0 -0
  660. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_executive_assistant_handlers.py +0 -0
  661. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_handlers.py +0 -0
  662. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_handlers_forwarding.py +0 -0
  663. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_handlers_workspace_settings.py +0 -0
  664. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_hoteling_handlers.py +0 -0
  665. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_phase12a_planner_fixes.py +0 -0
  666. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_planner.py +0 -0
  667. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_planner_forwarding.py +0 -0
  668. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_planner_settings_ops.py +0 -0
  669. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_planner_silent_skip_visibility.py +0 -0
  670. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_receptionist_handler.py +0 -0
  671. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_runtime.py +0 -0
  672. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_silent_failure_wave1.py +0 -0
  673. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_silent_failure_wave2a.py +0 -0
  674. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_silent_failure_wave2b.py +0 -0
  675. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_silent_failure_wave2c.py +0 -0
  676. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_silent_failure_wave3a.py +0 -0
  677. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_silent_failure_wave3b.py +0 -0
  678. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_voicemail_group_handler.py +0 -0
  679. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/execute/test_voicemail_group_planner.py +0 -0
  680. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/export/__init__.py +0 -0
  681. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/export/test_csv_activation_codes.py +0 -0
  682. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/export/test_deployment_plan.py +0 -0
  683. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/preflight/__init__.py +0 -0
  684. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/preflight/test_checks.py +0 -0
  685. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/preflight/test_runner.py +0 -0
  686. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/report/__init__.py +0 -0
  687. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/report/conftest.py +0 -0
  688. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/report/test_appendix.py +0 -0
  689. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/report/test_appendix_selective.py +0 -0
  690. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/report/test_appendix_tier2p2.py +0 -0
  691. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/report/test_appendix_tier3.py +0 -0
  692. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/report/test_assembler.py +0 -0
  693. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/report/test_cli_integration.py +0 -0
  694. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/report/test_dect_appendix.py +0 -0
  695. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/report/test_device_settings_score.py +0 -0
  696. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/report/test_e2e.py +0 -0
  697. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/report/test_executive.py +0 -0
  698. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/report/test_executive_selective.py +0 -0
  699. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/report/test_explainer.py +0 -0
  700. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/report/test_from_file.py +0 -0
  701. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/report/test_helpers.py +0 -0
  702. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/report/test_score.py +0 -0
  703. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/report/test_tier4_appendix.py +0 -0
  704. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/report/test_user_diff.py +0 -0
  705. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/report/test_user_notice.py +0 -0
  706. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/test_cucm_cli.py +0 -0
  707. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/test_decision_cli.py +0 -0
  708. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/test_dect_integration.py +0 -0
  709. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/test_device_settings_lossy_type.py +0 -0
  710. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/test_models.py +0 -0
  711. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/test_models_tier2p2.py +0 -0
  712. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/test_models_voicemail_group.py +0 -0
  713. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/test_pipeline_e2e.py +0 -0
  714. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/test_rate_limiter.py +0 -0
  715. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/test_state.py +0 -0
  716. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/test_store.py +0 -0
  717. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transferability/__init__.py +0 -0
  718. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transferability/conftest.py +0 -0
  719. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transferability/test_advisor_routing_coverage.py +0 -0
  720. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transferability/test_advisory_pattern_coverage.py +0 -0
  721. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transferability/test_config_key_coverage.py +0 -0
  722. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transferability/test_decision_type_coverage.py +0 -0
  723. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transferability/test_default_auto_rules_coverage.py +0 -0
  724. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transferability/test_recommendation_output_coverage.py +0 -0
  725. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transferability/test_runbook_cites.py +0 -0
  726. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transferability/test_runbook_cli_commands.py +0 -0
  727. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transferability/test_runbook_links.py +0 -0
  728. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transferability/test_runbook_parsability.py +0 -0
  729. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transferability/test_score_factor_display_names.py +0 -0
  730. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/__init__.py +0 -0
  731. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/analyzers/__init__.py +0 -0
  732. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/analyzers/test_each_analyzer.py +0 -0
  733. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/analyzers/test_layout_overflow.py +0 -0
  734. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/conftest.py +0 -0
  735. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/__init__.py +0 -0
  736. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_announcement_mapper.py +0 -0
  737. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_button_template_mapper.py +0 -0
  738. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_call_forwarding_mapper.py +0 -0
  739. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_call_settings_mapper.py +0 -0
  740. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_call_settings_mapper_intercept.py +0 -0
  741. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_css_mapper.py +0 -0
  742. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_dect_mapper.py +0 -0
  743. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_device_layout_mapper.py +0 -0
  744. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_device_layout_mapper_convertible.py +0 -0
  745. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_device_mapper.py +0 -0
  746. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_device_profile_mapper.py +0 -0
  747. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_device_settings_mapper.py +0 -0
  748. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_e911_mapper.py +0 -0
  749. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_executive_assistant_mapper.py +0 -0
  750. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_feature_mapper.py +0 -0
  751. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_feature_mapper_forwarding.py +0 -0
  752. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_feature_mapper_voicemail_gap.py +0 -0
  753. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_line_mapper.py +0 -0
  754. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_location_mapper.py +0 -0
  755. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_moh_mapper.py +0 -0
  756. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_monitoring_mapper.py +0 -0
  757. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_phase12a_feature_fixes.py +0 -0
  758. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_receptionist_mapper.py +0 -0
  759. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_routing_mapper.py +0 -0
  760. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_snr_mapper.py +0 -0
  761. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_softkey_mapper.py +0 -0
  762. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_user_mapper.py +0 -0
  763. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_voicemail_enrichment.py +0 -0
  764. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_voicemail_group_mapper.py +0 -0
  765. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_voicemail_mapper.py +0 -0
  766. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_workspace_mapper.py +0 -0
  767. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/mappers/test_workspace_mapper_call_settings.py +0 -0
  768. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_analysis_pipeline.py +0 -0
  769. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_classify_decisions.py +0 -0
  770. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_cpc_cross_ref.py +0 -0
  771. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_cross_decision_enrichment.py +0 -0
  772. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_cross_ref_phone_mirror.py +0 -0
  773. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_cross_ref_tier2p2.py +0 -0
  774. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_cross_reference.py +0 -0
  775. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_cucm_pattern.py +0 -0
  776. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_decision_merge.py +0 -0
  777. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_dect_classification.py +0 -0
  778. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_default_auto_rules_field_alignment.py +0 -0
  779. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_e164.py +0 -0
  780. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_engine.py +0 -0
  781. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_executive_assistant_integration.py +0 -0
  782. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_integration.py +0 -0
  783. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_intercept_integration.py +0 -0
  784. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_normalize_phone_device_settings.py +0 -0
  785. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_normalizers.py +0 -0
  786. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_normalizers_executive.py +0 -0
  787. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_normalizers_intercept.py +0 -0
  788. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_normalizers_tier2p2.py +0 -0
  789. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_normalizers_voicemail_group.py +0 -0
  790. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_pattern_converter.py +0 -0
  791. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_phase12a_analyzer_routing_fixes.py +0 -0
  792. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_pipeline.py +0 -0
  793. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_pipeline_common_area.py +0 -0
  794. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_rules.py +0 -0
  795. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_selective_call_handling_analyzer.py +0 -0
  796. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_selective_integration.py +0 -0
  797. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_shared_line_status.py +0 -0
  798. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_voicemail_group_integration.py +0 -0
  799. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_voicemail_group_pipeline.py +0 -0
  800. {wxcli-1.3.0 → wxcli-1.4.0}/tests/migration/transform/test_workspace_call_settings_integration.py +0 -0
  801. {wxcli-1.3.0 → wxcli-1.4.0}/tests/org_health/__init__.py +0 -0
  802. {wxcli-1.3.0 → wxcli-1.4.0}/tests/org_health/conftest.py +0 -0
  803. {wxcli-1.3.0 → wxcli-1.4.0}/tests/org_health/test_analyze.py +0 -0
  804. {wxcli-1.3.0 → wxcli-1.4.0}/tests/org_health/test_checks.py +0 -0
  805. {wxcli-1.3.0 → wxcli-1.4.0}/tests/org_health/test_cli.py +0 -0
  806. {wxcli-1.3.0 → wxcli-1.4.0}/tests/org_health/test_collector.py +0 -0
  807. {wxcli-1.3.0 → wxcli-1.4.0}/tests/org_health/test_models.py +0 -0
  808. {wxcli-1.3.0 → wxcli-1.4.0}/tests/org_health/test_report.py +0 -0
  809. {wxcli-1.3.0 → wxcli-1.4.0}/tools/__init__.py +0 -0
  810. {wxcli-1.3.0 → wxcli-1.4.0}/tools/command_renderer.py +0 -0
  811. {wxcli-1.3.0 → wxcli-1.4.0}/tools/create_stress_test_db.py +0 -0
  812. {wxcli-1.3.0 → wxcli-1.4.0}/tools/expand_cucm_data.py +0 -0
  813. {wxcli-1.3.0 → wxcli-1.4.0}/tools/field_overrides.yaml +0 -0
  814. {wxcli-1.3.0 → wxcli-1.4.0}/tools/generate_commands.py +0 -0
  815. {wxcli-1.3.0 → wxcli-1.4.0}/tools/postman_parser.py +0 -0
  816. {wxcli-1.3.0 → wxcli-1.4.0}/tools/postman_spec_diff.py +0 -0
  817. {wxcli-1.3.0 → wxcli-1.4.0}/tools/spec_sync.py +0 -0
  818. {wxcli-1.3.0 → wxcli-1.4.0}/tools/update-specs.py +0 -0
  819. {wxcli-1.3.0 → wxcli-1.4.0}/tools/webhook_receiver.py +0 -0
  820. {wxcli-1.3.0 → wxcli-1.4.0}/wxcli-dist/codex/agents-md-sections.md +0 -0
@@ -156,7 +156,7 @@ The query-live skill handles classification, domain routing, command execution,
156
156
  Before asking the interview questions, check for an existing CUCM migration project:
157
157
 
158
158
  ```bash
159
- wxcli cucm status -o json 2>/dev/null
159
+ wxcli cucm status 2>/dev/null
160
160
  ```
161
161
 
162
162
  **If the pipeline is at stage ANALYZED or later** (or a deployment plan exists at `docs/plans/*cucm-migration*`):
@@ -174,7 +174,7 @@ Walk them through the analysis pipeline conversationally. Do NOT tell them to ru
174
174
  > "Let's start by setting up a migration project. What would you like to name it? (e.g., your company name or site name)"
175
175
 
176
176
  ```bash
177
- wxcli cucm init -p <name>
177
+ wxcli cucm init <name>
178
178
  ```
179
179
 
180
180
  Before asking for credentials, explain what's needed:
@@ -670,7 +670,7 @@ Overwrite this file at each boundary — it is a cursor, not a log. The migratio
670
670
 
671
671
  When spawned (regardless of what the prompt says):
672
672
  1. Check for active project state:
673
- - `wxcli cucm status -o json 2>/dev/null` for CUCM workflows
673
+ - `wxcli cucm status 2>/dev/null` for CUCM workflows
674
674
  - `ls docs/plans/` for standard builds
675
675
  2. Read `session-state.md` if it exists
676
676
  3. Validate the prompt's claims against disk state (if the prompt says "pipeline is at ANALYZED" but `wxcli cucm status` says PLANNED, trust disk)
@@ -0,0 +1,16 @@
1
+ {
2
+ "env": {
3
+ "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
4
+ },
5
+ "permissions": {
6
+ "allow": [
7
+ "Bash(wxcli:*)",
8
+ "Bash(which:*)",
9
+ "Bash(pip install -e:*)",
10
+ "Bash(pip3 install -e:*)",
11
+ "Bash(pip3.11:*)",
12
+ "Bash(python3.11:*)",
13
+ "Bash(PYTHONPATH=.:*)"
14
+ ]
15
+ }
16
+ }
@@ -3,7 +3,9 @@ name: audit-compliance
3
3
  description: |
4
4
  Pull and analyze Webex audit logs, security events, and compliance data.
5
5
  Covers admin audit trail, security audit events, authorization review,
6
- and service app credential management. Guides from query design through export.
6
+ service app credential management, and data sources (the JWT-authenticated
7
+ endpoints service apps register to receive streamed Webex data).
8
+ Guides from query design through export.
7
9
  NOT for: org health assessment (use org-health skill), CDR/call analytics (use reporting skill),
8
10
  or license auditing (use manage-licensing skill).
9
11
  allowed-tools: Read, Grep, Glob, Bash
@@ -21,6 +23,7 @@ If you cannot answer both, you skipped reading this skill. Go back and read it.
21
23
  ## Step 1: Load references
22
24
 
23
25
  1. Read `docs/reference/admin-audit-security.md` for audit event APIs, security audit scopes, event categories, and date parameter conventions
26
+ 2. For data source operations (Step 6f) only, read `docs/reference/admin-apps-data.md` § "Data Source Registration Flow" — skip this unless the user asks about data sources or streaming Webex data to a service app
24
27
 
25
28
  **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 audit-events list --help` and `wxcli security-audit --help` — date/range parameter names are spec-generated, not guessable). 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.
26
29
 
@@ -43,6 +46,7 @@ If this fails, stop and resolve authentication first (`wxcli configure`).
43
46
  | Platform events (compliance) | `events` | Standard admin token | `--from` / `--to` | Full or read-only admin. Compliance officer role also works. |
44
47
  | Authorizations review | `authorizations` | Standard admin token | N/A | Lists OAuth grants for users and the org. Full admin required for delete. |
45
48
  | Service app tokens | `service-apps` | Admin + service app credentials | N/A | Requires `client-id`, `client-secret`, and `target-org-id`. |
49
+ | Data sources | `data-sources` | `spark-admin:datasource_read` / `_write` | N/A | **A full-admin PAT is not enough** — see the gotcha in Step 6f. `list-schemas` works without the scope; `list` returns 403. |
46
50
 
47
51
  ### Verification gate
48
52
 
@@ -84,6 +88,7 @@ Ask the user what they want to investigate. Present this decision matrix if they
84
88
  | Review OAuth grants and integrations | Authorization audit | `authorizations` |
85
89
  | Create/rotate service app credentials | Service app token | `service-apps` |
86
90
  | List available audit event categories | Category reference | `audit-events` |
91
+ | Register/inspect where Webex streams data to a service app | Data source management | `data-sources` |
87
92
 
88
93
  ## Step 4: Check prerequisites
89
94
 
@@ -372,6 +377,66 @@ wxcli service-apps create APPLICATION_ID \
372
377
 
373
378
  The returned token is short-lived. Store it immediately -- the secret is only shown once at creation time.
374
379
 
380
+ ### 6f. Data sources (`data-sources`)
381
+
382
+ Use `wxcli data-sources` to manage where Webex **pushes** data to a service app. This is the outbound counterpart to the pull-based audit APIs above: instead of you querying events, you register an endpoint and Webex streams data to it, authenticated with a JWT that Webex mints from the parameters you supply.
383
+
384
+ A data source is always tied to a **schema**, which fixes the data type and transport. Discover schemas before registering anything — do not assume a schema exists for the data you want.
385
+
386
+ **Discover the schemas this org supports:**
387
+
388
+ ```bash
389
+ # List schema IDs available to the org
390
+ wxcli data-sources list-schemas
391
+
392
+ # Inspect one schema — returns serviceType, protocol, appType, and a link to the
393
+ # schema definition on GitHub. Takes a SCHEMA_ID, not a data source ID.
394
+ wxcli data-sources show "523e1b7f-4693-47bc-b84e-a7b7a505fb0b"
395
+ ```
396
+
397
+ Verified against a live org, the returned schemas were `audio_forking_schema` (gRPC), `VoiceVirtualAgent_WebSocket` (web-socket), and `VA_service_schema` (gRPC) — all `appType: serviceApp`. These are real-time media/AI streaming schemas, not audit or compliance event feeds. **If the user wants message, call, or admin event history, this is the wrong API — use `events`, `audit-events`, or `security-audit` (Steps 6a-6c).**
398
+
399
+ **Read registered data sources:**
400
+
401
+ ```bash
402
+ # All data sources registered in the org
403
+ wxcli data-sources list
404
+
405
+ # One data source (takes a DATA_SOURCE_ID — note this is a different command
406
+ # from `show`, which takes a SCHEMA_ID)
407
+ wxcli data-sources show-data-sources "DATA_SOURCE_ID"
408
+ ```
409
+
410
+ **Register a data source (write — show the plan first):**
411
+
412
+ ```bash
413
+ wxcli data-sources create \
414
+ --schema-id "SCHEMA_ID_FROM_LIST_SCHEMAS" \
415
+ --url "https://your-endpoint.example.com/webex-data" \
416
+ --audience "your-service-app-name" \
417
+ --subject "data-source-purpose" \
418
+ --nonce "UNIQUE_NONCE_VALUE" \
419
+ --token-lifetime-minutes "1440"
420
+ ```
421
+
422
+ **Maintain and remove:**
423
+
424
+ ```bash
425
+ # Pause a data source without deleting it. --status takes `active` or `disabled`;
426
+ # --error-message is what Control Hub displays while it is disabled.
427
+ wxcli data-sources update "DATA_SOURCE_ID" \
428
+ --status "disabled" \
429
+ --error-message "Paused for maintenance window"
430
+
431
+ # Re-enable
432
+ wxcli data-sources update "DATA_SOURCE_ID" --status "active"
433
+
434
+ # Delete permanently -- destructive, confirm with the user first
435
+ wxcli data-sources delete "DATA_SOURCE_ID" --force
436
+ ```
437
+
438
+ **Scope gotcha (verified live):** `data-sources list` returns **403 "missing required scopes"** even with a full-admin personal access token, while `data-sources list-schemas` succeeds with the same token. The data source APIs require `spark-admin:datasource_read` / `spark-admin:datasource_write`, which PATs do not carry. If you hit this 403, do not retry or assume the org has no data sources — the token is the problem. Use a service app or an OAuth integration with those scopes explicitly selected.
439
+
375
440
  ## Step 7: Verify
376
441
 
377
442
  After executing the query, verify the results are correct and complete.
@@ -482,6 +547,9 @@ for auth in data:
482
547
  9. **ISO 8601 datetime format required.** All date parameters expect ISO 8601 format: `2026-03-18T00:00:00.000Z`. Other formats return errors or unexpected results.
483
548
  10. **Event categories — treat as case-sensitive.** Always run `wxcli audit-events list-event-categories` first (Step 4b) to discover the exact category names before filtering. Use exact values from the list output.
484
549
  11. **`events list` resource types are not validated client-side.** Misspelled `--resource` values return empty result sets, not errors. Use the known resource types listed in Step 6c.
550
+ 12. **`data-sources` needs its own scopes -- a full-admin PAT gets 403.** `spark-admin:datasource_read`/`_write` are not carried by personal access tokens. `list-schemas` works without them, so a passing `list-schemas` does NOT mean `list` will work. Do not read a 403 here as "the org has no data sources."
551
+ 13. **`data-sources show` and `show-data-sources` take different IDs.** `show SCHEMA_ID` returns a schema definition. `show-data-sources DATA_SOURCE_ID` returns a registered data source. Passing the wrong ID type to either one fails.
552
+ 14. **Data sources push data out; they are not an audit query API.** They stream real-time media/AI payloads (audio forking, voice virtual agent) to a service app endpoint. For event history use `events`, `audit-events`, or `security-audit` instead.
485
553
 
486
554
  ---
487
555
 
@@ -492,6 +560,8 @@ for auth in data:
492
560
  | Standard admin token | Admin audit events (`wxcli audit-events`), platform events (`wxcli events`), authorizations (`wxcli authorizations`) |
493
561
  | `audit:events_read` | Security audit events (`wxcli security-audit`) |
494
562
  | Compliance officer role | Platform events with compliance-level access (`wxcli events`) |
563
+ | `spark-admin:datasource_read` | List and retrieve data sources (`wxcli data-sources list`, `show-data-sources`) |
564
+ | `spark-admin:datasource_write` | Register, update, delete data sources (`wxcli data-sources create`, `update`, `delete`) |
495
565
 
496
566
  ---
497
567
 
@@ -504,6 +574,8 @@ for auth in data:
504
574
  | 403 on `authorizations list` | Insufficient admin privileges | Requires full admin, not read-only |
505
575
  | Empty results from `audit-events list` | Date range too narrow or no admin activity | Widen the date range; verify org has admin activity in that period |
506
576
  | 400 on date parameters | Wrong date format or wrong parameter names for the API | Use ISO 8601 (`2026-03-18T00:00:00.000Z`); check Step 2 table for which date params the API expects |
577
+ | 403 on `data-sources list` (but `list-schemas` works) | PAT does not carry `spark-admin:datasource_read` | Use a service app or OAuth integration with the datasource scopes selected — see Step 6f |
578
+ | 404 / ID error on `data-sources show` | Passed a data source ID to the schema command | `show` takes a SCHEMA_ID; use `show-data-sources DATA_SOURCE_ID` for a registered source |
507
579
 
508
580
  ---
509
581
 
@@ -3,8 +3,12 @@ name: configure-features
3
3
  description: |
4
4
  Create, modify, or delete Webex Calling call features using wxcli CLI commands: Auto Attendants, Call Queues,
5
5
  Hunt Groups, Paging Groups, Call Park, Call Pickup, Voicemail Groups, and Calling schedules
6
- (business hours, holidays). Guides the user from prerequisites through creation, modification,
7
- deletion, and verification.
6
+ (business hours, holidays). Also covers the announcement repository (greeting files) and
7
+ text-to-speech prompt generation, announcement playlists (music on hold) and playlist usage,
8
+ location call handling (internal dialing, location intercept, outgoing calling permissions,
9
+ access/authorization codes, outgoing digit patterns), caller reputation (spam/fraud call scoring),
10
+ and external voicemail MWI control. Guides the user from prerequisites through creation,
11
+ modification, deletion, and verification.
8
12
  Use for: create, update, delete, remove, list, or troubleshoot any Calling call feature.
9
13
  NOT for: Contact Center queues/teams/flows (use contact-center skill), Customer Assist/CX Essentials
10
14
  (use customer-assist skill), or per-person call settings (use manage-call-settings skill).
@@ -26,6 +30,10 @@ If you cannot answer both, you skipped reading this skill. Go back and read it.
26
30
 
27
31
  1. Read `docs/reference/call-features-major.md` for AA, CQ, HG data models and API signatures
28
32
  2. Read `docs/reference/call-features-additional.md` for Paging, Call Park, Call Pickup, VM Groups, CX Essentials
33
+ 3. Read `docs/reference/location-calling-media.md` for announcements, playlists, and access codes (only when working those groups)
34
+ 4. Read `docs/reference/location-calling-core.md` for internal dialing and location-level call handling
35
+ 5. Read `docs/reference/location-recording-advanced.md` for caller reputation
36
+ 6. Read `docs/reference/call-control.md` §6 for external voicemail MWI
29
37
 
30
38
  **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 call-queue create --help` reveals the kebab-cased flags like `--has-cx-essentials` and the `--json-body` shape you cannot guess from training data). 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.
31
39
 
@@ -55,6 +63,12 @@ Ask the user which feature they want to create. Present this decision matrix if
55
63
  | Let team members answer each other's ringing phones | **Call Pickup** |
56
64
  | Shared voicemail box for a team or feature | **Voicemail Group** |
57
65
  | Screen pop, recording, wrap-up, supervisors on a CQ | **Customer Assist** (use `customer-assist` skill) |
66
+ | Upload/manage greeting audio files used by AA/CQ; generate a spoken prompt from text | **Announcements** (`announcements`) |
67
+ | Group announcements into a music-on-hold rotation and assign to locations | **Announcement Playlists** (`announcement-playlists`) |
68
+ | See which queues/locations reference a playlist before changing or deleting it | **Playlist Usage** (`cq-playlists`) |
69
+ | Route unknown extensions off-net; block/allow outbound call types; access codes; digit patterns | **Location Call Handling** (`location-call-handling`) |
70
+ | Score inbound calls for spam/fraud via an external reputation provider | **Caller Reputation** (`caller-reputation`) |
71
+ | Turn a user's or workspace's voicemail waiting light on/off from an external voicemail system | **External Voicemail MWI** (`external-voicemail`) |
58
72
 
59
73
  ## Step 4: Check prerequisites
60
74
 
@@ -466,6 +480,143 @@ Optional flags: `--phone-number`, `--first-name`, `--last-name`.
466
480
 
467
481
  ---
468
482
 
483
+ ### Announcements (greeting repository + text-to-speech)
484
+
485
+ The announcement repository holds the audio files that AAs, CQs, and playlists play to callers. Every announcement lives at **one of two scopes**: org-level (available to all locations) or location-level (that location only). Each scope has its own set of commands — this is the main source of confusion in this group.
486
+
487
+ | Scope | List | Create | Show details | Update | Delete | Repo usage |
488
+ |-------|------|--------|--------------|--------|--------|------------|
489
+ | Org | `list` | `create` | `show-announcements-config` | `update` | `delete` | `show` |
490
+ | Location | `list --location-id LOC_ID` | `create-announcements LOC_ID` | `show-announcements-locations LOC_ID ANN_ID` | `update-announcements LOC_ID ANN_ID` | `delete-announcements LOC_ID ANN_ID` | `show-usage-announcements LOC_ID` |
491
+
492
+ > **NAMING TRAP:** `wxcli announcements show` does **not** show an announcement — it returns org repository usage (space used, size limits). To fetch one announcement's details use `show-announcements-config ANNOUNCEMENT_ID` (org) or `show-announcements-locations LOCATION_ID ANNOUNCEMENT_ID` (location).
493
+
494
+ **Discovery — start here:**
495
+
496
+ ```bash
497
+ # List org-level announcements
498
+ wxcli announcements list --output json
499
+
500
+ # List announcements for one location, or across all locations
501
+ wxcli announcements list --location-id LOCATION_ID --output json
502
+ wxcli announcements list --location-id all --output json
503
+
504
+ # Check repository space before uploading
505
+ wxcli announcements show --output json
506
+ ```
507
+
508
+ `list` also filters with `--name`, `--file-name`, `--file-type`, `--media-file-type`, and sorts with `--order`.
509
+
510
+ **Create an announcement.** `create` (org) and `create-announcements LOCATION_ID` take a file **URI**, not a local file path — all four flags are required:
511
+
512
+ ```bash
513
+ wxcli announcements create \
514
+ --name "Welcome Greeting" \
515
+ --file-uri "https://example.com/welcome.wav" \
516
+ --file-name "welcome.wav" \
517
+ --no-is-text-to-speech
518
+ ```
519
+
520
+ Use `--is-text-to-speech` instead of `--no-is-text-to-speech` when registering a TTS-generated prompt.
521
+
522
+ **Delete (both scopes need `--force` for non-interactive runs):**
523
+
524
+ ```bash
525
+ wxcli announcements delete ANNOUNCEMENT_ID --force
526
+ wxcli announcements delete-announcements LOCATION_ID ANNOUNCEMENT_ID --force
527
+ ```
528
+
529
+ **Before deleting, check what references the announcement.** The details command returns `featureReferences` and `playlists` — an announcement in use by an AA/CQ/playlist should not be deleted blind:
530
+
531
+ ```bash
532
+ wxcli announcements show-announcements-config ANNOUNCEMENT_ID --output json
533
+ ```
534
+
535
+ #### Text-to-Speech prompts
536
+
537
+ Generate spoken audio from text instead of recording and uploading a WAV. The flow is: pick a voice → generate → poll status.
538
+
539
+ ```bash
540
+ # 1. List available voices (get the voice ID and language code)
541
+ wxcli announcements tts-voices --output json
542
+
543
+ # 2. Generate the prompt
544
+ wxcli announcements tts-generate --voice VOICE_ID --text "Thank you for calling. Please hold." --language-code en_US
545
+
546
+ # 3. Check generation status (tts-status requires a ttsId)
547
+ wxcli announcements tts-status TTS_ID --output json
548
+
549
+ # 4. Check TTS quota/consumption for the org
550
+ wxcli announcements tts-usage --output json
551
+ ```
552
+
553
+ All four flags on `tts-generate` (`--voice`, `--text`, `--language-code`, plus `--json-body`) are optional per `--help`, but voice and text are needed for a usable prompt. Use `tts-voices` to get a valid `--voice` ID and `--language-code` rather than guessing.
554
+
555
+ > **Unverified — confirm on first run:** the existence of a separate `tts-status TTS_ID` command implies generation is asynchronous and that `tts-generate` returns a `ttsId` to poll, but this flow has not been executed live. Capture the actual `tts-generate` output on first use and check the prompt reached a completed state before wiring it into a feature.
556
+
557
+ ---
558
+
559
+ ### Announcement Playlists (music on hold)
560
+
561
+ A playlist groups announcement files into a rotation (typically music on hold) and is then assigned to locations. **Playlists are org-level objects** — you create one playlist and assign it to many locations.
562
+
563
+ **Order of operations:** upload announcements first → create the playlist referencing those announcement IDs → assign the playlist to locations.
564
+
565
+ | Parameter | Required | Notes |
566
+ |-----------|:--------:|-------|
567
+ | Name | Yes | Unique name for the playlist |
568
+ | Announcement IDs | No (on create) | Array of announcement IDs — `--json-body` only, no flag exists |
569
+ | Location IDs | No | Assigned separately via `update-playlists` |
570
+
571
+ ```bash
572
+ # List playlists in the org
573
+ wxcli announcement-playlists list --output json
574
+
575
+ # Get one playlist (includes its announcement list)
576
+ wxcli announcement-playlists show PLAYLIST_ID --output json
577
+
578
+ # Create a playlist — announcement IDs require --json-body
579
+ wxcli announcement-playlists create --json-body '{"name":"Lobby MOH","announcementIds":["ANN_ID_1","ANN_ID_2"]}'
580
+
581
+ # Rename (flag) or change its announcements (--json-body)
582
+ wxcli announcement-playlists update PLAYLIST_ID --name "Lobby MOH v2"
583
+ wxcli announcement-playlists update PLAYLIST_ID --json-body '{"name":"Lobby MOH v2","announcementIds":["ANN_ID_1"]}'
584
+
585
+ # Delete
586
+ wxcli announcement-playlists delete PLAYLIST_ID --force
587
+ ```
588
+
589
+ **Location assignment:**
590
+
591
+ ```bash
592
+ # Which locations use this playlist
593
+ wxcli announcement-playlists list-playlists PLAYLIST_ID --output json
594
+
595
+ # Assign locations — FULL REPLACE, not incremental
596
+ wxcli announcement-playlists update-playlists PLAYLIST_ID --json-body '{"locationIds":["LOC_ID_1","LOC_ID_2"]}'
597
+ ```
598
+
599
+ > **WARNING (full replace):** `update-playlists` replaces the entire location assignment list. Always read the current list with `list-playlists` first and include every location you want to keep — omitting one un-assigns it.
600
+
601
+ > **NAMING TRAP:** `list-playlists` and `update-playlists` operate on a playlist's **locations**, not on playlists. To list playlists themselves, use plain `list`.
602
+
603
+ #### Playlist usage (`cq-playlists`)
604
+
605
+ Before changing or deleting a playlist, check what references it. This is the only command in the `cq-playlists` group.
606
+
607
+ ```bash
608
+ # Everything referencing this playlist
609
+ wxcli cq-playlists list PLAYLIST_ID --output json
610
+
611
+ # Narrow to feature references (call queues, auto attendants) or location assignments
612
+ wxcli cq-playlists list PLAYLIST_ID --playlist-usage-type feature --output json
613
+ wxcli cq-playlists list PLAYLIST_ID --playlist-usage-type location --output json
614
+ ```
615
+
616
+ `--playlist-usage-type` accepts only `feature` or `location`.
617
+
618
+ ---
619
+
469
620
  ### CX Essentials (Customer Assist)
470
621
 
471
622
  Customer Assist (formerly CX Essentials) has its own dedicated skill with full coverage of screen pop, wrap-up reasons, queue call recording, supervisors, and available agents.
@@ -476,6 +627,169 @@ The call queue itself is still created here (see Call Queue section above). Once
476
627
 
477
628
  ---
478
629
 
630
+ ### Location Call Handling
631
+
632
+ 19 commands covering location-wide call handling: where unknown extensions route, whether the location is intercepted, what call types users may dial out, and the access codes / digit patterns that override those rules. **Every command takes `LOCATION_ID` as the first positional argument.**
633
+
634
+ > **THIS GROUP HAS THE WORST NAMING IN THE CLI.** The generic verbs do not mean what they look like. Read this table before running anything:
635
+ >
636
+ > | Command | What it ACTUALLY does |
637
+ > |---------|----------------------|
638
+ > | `show` / `update` | Internal **dialing** config — not a generic show/update |
639
+ > | `list` | Gets the location's **outgoing permission** — returns one settings object, not a list |
640
+ > | `create` | Creates an **access code** |
641
+ > | `update-access-codes` | **DELETES** specific access codes (body is `deleteCodes`) — it does not update anything |
642
+ > | `delete` | **DELETES ALL** access codes for the location |
643
+ > | `delete-digit-patterns-outgoing-permission` | **DELETES ALL** digit patterns for the location |
644
+ > | `delete-digit-patterns-outgoing-permission-1` | Deletes **one** digit pattern (the `-1` suffix is the single-item variant) |
645
+
646
+ **Discovery — read current state before changing anything:**
647
+
648
+ ```bash
649
+ wxcli location-call-handling show LOCATION_ID --output json # internal dialing
650
+ wxcli location-call-handling list LOCATION_ID --output json # outgoing permissions
651
+ wxcli location-call-handling show-intercept LOCATION_ID --output json # intercept
652
+ wxcli location-call-handling show-access-codes LOCATION_ID --output json # access codes
653
+ wxcli location-call-handling list-digit-patterns LOCATION_ID --output json # digit patterns
654
+ ```
655
+
656
+ #### Internal dialing (`show`, `update`)
657
+
658
+ Controls whether calls to an unknown extension are routed off-net to a trunk or route group.
659
+
660
+ ```bash
661
+ wxcli location-call-handling update LOCATION_ID --json-body '{"enableUnknownExtensionRoutePolicy":true,"unknownExtensionRouteIdentity":{"id":"ROUTE_GROUP_ID","type":"ROUTE_GROUP"}}'
662
+ ```
663
+
664
+ `--enable-unknown-extension-route-policy` / `--no-enable-unknown-extension-route-policy` toggles the policy alone; setting the route target requires `--json-body`. The trunk or route group must already exist — create it with the `configure-routing` skill first.
665
+
666
+ #### Location intercept (`show-intercept`, `update-intercept`)
667
+
668
+ Overrides all inbound and/or outbound calling at the location, sending callers to an announcement instead. Used during cutovers and closures.
669
+
670
+ ```bash
671
+ wxcli location-call-handling update-intercept LOCATION_ID --json-body '{"enabled":true,"incoming":{"type":"INTERCEPT_ALL","voicemailEnabled":true,"announcements":{"greeting":"DEFAULT"}},"outgoing":{"type":"INTERCEPT_ALL","transferEnabled":false}}'
672
+ ```
673
+
674
+ `--enabled` / `--no-enabled` toggles intercept alone.
675
+
676
+ > **BLAST RADIUS:** Enabling intercept silently overrides call handling for the **whole location**. Confirm with the user before enabling.
677
+
678
+ #### Outgoing permissions (`list`, `update-outgoing-permission`)
679
+
680
+ Allow/block outbound call types (international, premium, toll-free, etc.) for the location.
681
+
682
+ ```bash
683
+ wxcli location-call-handling update-outgoing-permission LOCATION_ID --json-body '{"callingPermissions":[{"callType":"INTERNATIONAL","action":"BLOCK","transferEnabled":false}]}'
684
+ ```
685
+
686
+ #### Auto transfer numbers (`show-auto-transfer-numbers`, `update-auto-transfer-numbers`)
687
+
688
+ The destinations that outbound rules with a `TRANSFER_NUMBER_1/2/3` action send calls to.
689
+
690
+ ```bash
691
+ wxcli location-call-handling show-auto-transfer-numbers LOCATION_ID --output json
692
+ wxcli location-call-handling update-auto-transfer-numbers LOCATION_ID --auto-transfer-number1 "+15551234567"
693
+ ```
694
+
695
+ Flags: `--auto-transfer-number1`, `--auto-transfer-number2`, `--auto-transfer-number3`.
696
+
697
+ #### Access codes (`show-access-codes`, `create`, `update-access-codes`, `delete`)
698
+
699
+ Authorization codes that let a caller bypass an outgoing permission restriction.
700
+
701
+ ```bash
702
+ # Add an access code
703
+ wxcli location-call-handling create LOCATION_ID --json-body '{"accessCodes":{"code":"123456","description":"Front desk override"}}'
704
+
705
+ # Delete SPECIFIC codes (yes, the command is named "update-access-codes")
706
+ wxcli location-call-handling update-access-codes LOCATION_ID --json-body '{"deleteCodes":["123456"]}'
707
+
708
+ # Delete ALL access codes at the location
709
+ wxcli location-call-handling delete LOCATION_ID --force
710
+ ```
711
+
712
+ #### Digit patterns (6 commands)
713
+
714
+ Per-pattern outbound rules — match a dialed pattern and allow, block, require an auth code, or force a transfer number.
715
+
716
+ ```bash
717
+ # Create a pattern (all four flags required)
718
+ wxcli location-call-handling create-digit-patterns LOCATION_ID \
719
+ --name "Block 900" --pattern "1900XXXXXXX" --action BLOCK --no-transfer-enabled
720
+
721
+ # Read one / update one
722
+ wxcli location-call-handling show-digit-patterns LOCATION_ID DIGIT_PATTERN_ID --output json
723
+ wxcli location-call-handling update-digit-patterns LOCATION_ID DIGIT_PATTERN_ID --action ALLOW
724
+
725
+ # Delete ONE pattern
726
+ wxcli location-call-handling delete-digit-patterns-outgoing-permission-1 LOCATION_ID DIGIT_PATTERN_ID --force
727
+
728
+ # Delete ALL patterns at the location
729
+ wxcli location-call-handling delete-digit-patterns-outgoing-permission LOCATION_ID --force
730
+ ```
731
+
732
+ `--action` accepts: `ALLOW`, `BLOCK`, `AUTH_CODE`, `TRANSFER_NUMBER_1`, `TRANSFER_NUMBER_2`, `TRANSFER_NUMBER_3`.
733
+
734
+ > **Digit patterns here are permission rules (allow/block a dialed pattern), not digit manipulation.** To strip or prepend digits, use translation patterns in the `configure-routing` skill.
735
+
736
+ #### Example password (`generate-example-password`)
737
+
738
+ Generates a compliant example password for the location's SIP device credentials.
739
+
740
+ ```bash
741
+ wxcli location-call-handling generate-example-password LOCATION_ID --json-body '{"generate":["sip"]}'
742
+ ```
743
+
744
+ ---
745
+
746
+ ### Caller Reputation
747
+
748
+ Connects an external reputation provider that scores inbound calls for spam/fraud. **Org-level, not location-level** — there is no `LOCATION_ID` argument in this group.
749
+
750
+ ```bash
751
+ # What providers are available
752
+ wxcli caller-reputation list --output json
753
+
754
+ # Current service settings and connection status
755
+ wxcli caller-reputation show --output json
756
+ wxcli caller-reputation show-status --output json
757
+
758
+ # Enable a provider and set scoring thresholds
759
+ wxcli caller-reputation update --enabled --id PROVIDER_ID --name "Provider Name" \
760
+ --client-id CLIENT_ID --client-secret CLIENT_SECRET \
761
+ --call-block-score-threshold "80" --call-allow-score-threshold "20"
762
+
763
+ # Recover a provider locked out after repeated auth failures
764
+ wxcli caller-reputation unlock-caller-reputation --id PROVIDER_ID
765
+ ```
766
+
767
+ **Gotchas (both confirmed in `--help`):**
768
+ - **Score thresholds are strings, not integers** — `--call-block-score-threshold "80"`. Quote them.
769
+ - **This group uses `--organization-id`, not the usual `--orgId`/`orgId` injection.** Every command accepts `--organization-id`; omit it to use the token's own org.
770
+ - `show-status` returns provider state: `NOT_CONNECTED`, `CONNECTING`, `CONNECTED`, `ACTIVE`, `EXPIRED`, `AUTH_FAILED`, `PROVIDER_DISABLED`. An `AUTH_FAILED` or `EXPIRED` provider is why scoring silently stops.
771
+ - `client_secret` is write-only — it is never returned by `show`.
772
+
773
+ ---
774
+
775
+ ### External Voicemail (MWI)
776
+
777
+ One command. Turns the message-waiting indicator (the voicemail light/badge) on or off for a person or workspace — used when an **external** voicemail system, not Webex voicemail, holds the messages.
778
+
779
+ ```bash
780
+ # Light the voicemail indicator
781
+ wxcli external-voicemail create --id PERSON_OR_WORKSPACE_ID --action SET
782
+
783
+ # Turn it off
784
+ wxcli external-voicemail create --id PERSON_OR_WORKSPACE_ID --action CLEAR
785
+ ```
786
+
787
+ `--id` is required; `--action` accepts `SET` or `CLEAR` only.
788
+
789
+ > **Requires a Service App token** with the `spark-admin:calls_write` scope — an ordinary admin token or PAT will not work here. See `docs/reference/call-control.md` §6. This command only drives the indicator; it does not create or store voicemail.
790
+
791
+ ---
792
+
479
793
  ### Deployment Plan Template
480
794
 
481
795
  Before executing any commands, present the full plan to the user:
@@ -554,8 +868,28 @@ wxcli call-pickup show LOCATION_ID PICKUP_ID --output json
554
868
 
555
869
  # Example for voicemail group
556
870
  wxcli location-voicemail show-voicemail-groups LOCATION_ID VMG_ID --output json
871
+
872
+ # Example for announcement (org-level vs location-level)
873
+ wxcli announcements show-announcements-config ANNOUNCEMENT_ID --output json
874
+ wxcli announcements show-announcements-locations LOCATION_ID ANNOUNCEMENT_ID --output json
875
+
876
+ # Example for announcement playlist (plus its location assignments)
877
+ wxcli announcement-playlists show PLAYLIST_ID --output json
878
+ wxcli announcement-playlists list-playlists PLAYLIST_ID --output json
879
+
880
+ # Example for location call handling (each theme reads back separately)
881
+ wxcli location-call-handling show LOCATION_ID --output json
882
+ wxcli location-call-handling list LOCATION_ID --output json
883
+ wxcli location-call-handling show-access-codes LOCATION_ID --output json
884
+ wxcli location-call-handling list-digit-patterns LOCATION_ID --output json
885
+
886
+ # Example for caller reputation (settings + live connection state)
887
+ wxcli caller-reputation show --output json
888
+ wxcli caller-reputation show-status --output json
557
889
  ```
558
890
 
891
+ > **External voicemail MWI has no read-back command** — the `external-voicemail` group only has `create`. Verify by checking the physical device indicator, not via API.
892
+
559
893
  ## Step 8: Report results
560
894
 
561
895
  Present the creation results:
@@ -612,6 +946,16 @@ Next steps:
612
946
  - Routing (trunks, dial plans, PSTN) → `configure-routing` skill
613
947
  - Device provisioning → `manage-devices` skill
614
948
  - Location teardown → `provision-calling` skill (Operation D: Teardown)
949
+ 21. **`location-call-handling` verbs lie — never infer meaning from the command name.** `show`/`update` are internal dialing; `list` returns outgoing permissions (a settings object, not a list); `create` makes an access code; `update-access-codes` **deletes** codes; `delete` wipes **all** access codes. Re-read the trap table in the Location Call Handling section before running any of them.
950
+ 22. **Three commands in `location-call-handling` delete everything at a location** — `delete` (all access codes), `delete-digit-patterns-outgoing-permission` (all digit patterns), and enabling `update-intercept` (overrides all call handling). The single-item digit pattern delete is the `-1` suffixed variant. Confirm scope with the user first.
951
+ 23. **`announcements show` is repository usage, not announcement details.** Use `show-announcements-config ANN_ID` (org) or `show-announcements-locations LOC_ID ANN_ID` (location).
952
+ 24. **Announcements are scoped org-level OR location-level, with different commands for each.** Location-level commands are the `*-announcements`/`*-announcements-locations` variants and take `LOCATION_ID` first. Passing a location announcement ID to an org command returns 404.
953
+ 25. **Check references before deleting an announcement or playlist.** `wxcli announcements show-announcements-config ANN_ID -o json` returns `featureReferences` and `playlists`; `wxcli cq-playlists list PLAYLIST_ID -o json` shows which queues/locations use a playlist. Deleting an in-use file silently breaks the AA/CQ that plays it.
954
+ 26. **Playlist location assignment is a full replace.** `announcement-playlists update-playlists` overwrites the whole list — read `list-playlists PLAYLIST_ID` first and re-include every location you want to keep.
955
+ 27. **`caller-reputation` is org-level and uses `--organization-id`**, not the standard orgId injection. Score thresholds are **strings** — quote them (`--call-block-score-threshold "80"`).
956
+ 28. **`external-voicemail create` requires a Service App token** with `spark-admin:calls_write`. Admin tokens and PATs fail. It has no read-back command.
957
+ 29. **Announcement `create` takes a file URI, not a local path.** `--file-uri`, `--file-name`, `--name`, and the `--is-text-to-speech`/`--no-is-text-to-speech` flag are all required. For a spoken prompt without an audio file, use the `tts-generate` flow instead.
958
+ 30. **The TTS flow is not live-verified.** The `tts-generate` → `tts-status` sequence is inferred from the command surface, not from an executed run. Capture the real `tts-generate` output on first use, confirm the prompt completed, and correct this skill if the flow differs.
615
959
 
616
960
  ---
617
961
 
@@ -375,11 +375,10 @@ wxcli call-routing create-translation-patterns-call-routing \
375
375
  **Create location-level translation pattern:**
376
376
 
377
377
  ```bash
378
- wxcli call-routing create-translation-patterns-call-routing-1 \
378
+ wxcli call-routing create-translation-patterns-call-routing-1 LOCATION_ID \
379
379
  --name "Local-Rewrite" \
380
380
  --matching-pattern "+1919555XXXX" \
381
- --replacement-pattern "+19196660000" \
382
- --location-id LOCATION_ID
381
+ --replacement-pattern "+19196660000"
383
382
  ```
384
383
 
385
384
  **View translation patterns:**
@@ -392,7 +391,7 @@ wxcli call-routing list-translation-patterns --output json
392
391
  wxcli call-routing show-translation-patterns-call-routing PATTERN_ID --output json
393
392
 
394
393
  # Show a specific location-level pattern
395
- wxcli call-routing show-translation-patterns-call-routing-1 PATTERN_ID --location-id LOCATION_ID --output json
394
+ wxcli call-routing show-translation-patterns-call-routing-1 LOCATION_ID PATTERN_ID --output json
396
395
  ```
397
396
 
398
397
  **Delete translation patterns:**
@@ -402,7 +401,7 @@ wxcli call-routing show-translation-patterns-call-routing-1 PATTERN_ID --locatio
402
401
  wxcli call-routing delete-translation-patterns-call-routing PATTERN_ID
403
402
 
404
403
  # Location-level
405
- wxcli call-routing delete-translation-patterns-call-routing-1 PATTERN_ID --location-id LOCATION_ID
404
+ wxcli call-routing delete-translation-patterns-call-routing-1 LOCATION_ID PATTERN_ID
406
405
  ```
407
406
 
408
407
  ### 4j. Component CLI reference -- PSTN Connection (per-location)
@@ -42,7 +42,7 @@ These are the only operator-facing docs for this migration tool. If the operator
42
42
 
43
43
  1. **Check project exists and pipeline is complete:**
44
44
  ```bash
45
- wxcli cucm status -o json
45
+ wxcli cucm status
46
46
  ```
47
47
  Verify stage is `ANALYZED` or later. If not, tell the admin which pipeline stages remain.
48
48