wxcli 1.4.2__tar.gz → 1.4.4__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.
- {wxcli-1.4.2/src/wxcli/_playbook → wxcli-1.4.4}/.claude/agents/wxc-calling-builder.md +9 -23
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/settings.json +14 -0
- {wxcli-1.4.2/src/wxcli/_playbook → wxcli-1.4.4}/.claude/skills/device-platform/SKILL.md +71 -8
- {wxcli-1.4.2/src/wxcli/_playbook/.codex → wxcli-1.4.4/.claude}/skills/query-live/domains/people-and-settings.md +16 -7
- {wxcli-1.4.2 → wxcli-1.4.4}/.gitignore +13 -1
- {wxcli-1.4.2/src/wxcli/_playbook → wxcli-1.4.4}/CLAUDE.md +41 -0
- {wxcli-1.4.2/src/wxcli.egg-info → wxcli-1.4.4}/PKG-INFO +48 -1
- {wxcli-1.4.2 → wxcli-1.4.4}/README.md +47 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/devices-platform.md +2 -2
- {wxcli-1.4.2 → wxcli-1.4.4/src/wxcli/_playbook}/.claude/agents/wxc-calling-builder.md +9 -23
- {wxcli-1.4.2 → wxcli-1.4.4/src/wxcli/_playbook}/.claude/skills/device-platform/SKILL.md +71 -8
- {wxcli-1.4.2 → wxcli-1.4.4/src/wxcli/_playbook}/.claude/skills/query-live/domains/people-and-settings.md +16 -7
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/agents/wxc-calling-builder.toml +9 -23
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/device-platform/SKILL.md +71 -8
- {wxcli-1.4.2/src/wxcli/_playbook/.claude → wxcli-1.4.4/src/wxcli/_playbook/.codex}/skills/query-live/domains/people-and-settings.md +16 -7
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/AGENTS.md +41 -0
- {wxcli-1.4.2 → wxcli-1.4.4/src/wxcli/_playbook}/CLAUDE.md +41 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/devices-platform.md +2 -2
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_version.py +3 -3
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/admin_recordings.py +1 -5
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_agent_greetings.py +1 -5
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_aux_code.py +1 -5
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_desktop_layout.py +1 -5
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_desktop_profile.py +1 -5
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_entry_point.py +1 -5
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_global_vars.py +1 -5
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_journey.py +1 -1
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_multimedia_profile.py +1 -5
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_queue.py +2 -10
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_site.py +1 -5
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_skill.py +1 -5
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_tasks.py +1 -5
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_team.py +1 -5
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_work_types.py +1 -5
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/converged_recordings.py +1 -5
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/location_call_handling.py +1 -1
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/meeting_participants.py +1 -5
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/meeting_preferences.py +1 -5
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/user_settings.py +2 -2
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/virtual_line_settings.py +2 -2
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/workspace_settings.py +2 -2
- {wxcli-1.4.2 → wxcli-1.4.4/src/wxcli.egg-info}/PKG-INFO +48 -1
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli.egg-info/SOURCES.txt +4 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli.egg-info/scm_file_list.json +727 -723
- wxcli-1.4.4/src/wxcli.egg-info/scm_version.json +8 -0
- wxcli-1.4.4/tests/test_assemble.py +275 -0
- wxcli-1.4.4/tests/test_field_overrides.py +429 -0
- wxcli-1.4.4/tests/test_readme_distribution.py +27 -0
- wxcli-1.4.4/tests/test_release_integrity.py +51 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tools/CLAUDE.md +18 -3
- {wxcli-1.4.2 → wxcli-1.4.4}/tools/command_renderer.py +39 -3
- {wxcli-1.4.2 → wxcli-1.4.4}/tools/field_overrides.yaml +35 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tools/generate_commands.py +94 -5
- {wxcli-1.4.2 → wxcli-1.4.4}/tools/openapi_parser.py +2 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tools/postman_parser.py +51 -0
- wxcli-1.4.2/src/wxcli.egg-info/scm_version.json +0 -8
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/agents/migration-advisor.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/projects/-Users-ahobgood-Documents-webexCalling/memory/feedback_help_gate_for_skills.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/rules/cleanup.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/rules/cucm-migration.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/rules/org-health.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/audit-compliance/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/call-control/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/configure-features/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/configure-routing/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/contact-center/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/cucm-migrate/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/customer-assist/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/manage-call-settings/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/manage-devices/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/manage-identity/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/manage-licensing/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/manage-meetings/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/messaging-bots/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/messaging-spaces/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/org-health/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/provision-calling/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/query-live/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/query-live/domains/call-flow-trace.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/query-live/domains/call-history.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/query-live/domains/features.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/query-live/domains/numbers.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/query-live/domains/routing.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/reporting/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/reporting/references/cdr-recipes.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/reporting-cc/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/reporting-meetings/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/teardown/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/video-mesh/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.claude/skills/wxc-calling-debug/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.github/workflows/ci.yml +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/.github/workflows/release.yml +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/LICENSE +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/TODO.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/CLAUDE.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/architecture/00-index.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/architecture/01-structural-map.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/architecture/02-decisions.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/architecture/03-behavior.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/architecture/04-operations-and-evolution.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/architecture/05-purpose.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/knowledge-base/migration/kb-css-routing.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/knowledge-base/migration/kb-device-migration.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/knowledge-base/migration/kb-feature-mapping.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/knowledge-base/migration/kb-identity-numbering.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/knowledge-base/migration/kb-location-design.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/knowledge-base/migration/kb-trunk-pstn.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/knowledge-base/migration/kb-user-settings.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/knowledge-base/migration/kb-webex-limits.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/CLAUDE.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/TODO.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/admin-apps-data.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/admin-audit-security.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/admin-hybrid.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/admin-identity-scim.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/admin-licensing.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/admin-org-management.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/admin-partner.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/archive/wxc-sdk-patterns.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/archive/wxcadm-advanced.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/archive/wxcadm-core.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/archive/wxcadm-devices-workspaces.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/archive/wxcadm-features.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/archive/wxcadm-locations.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/archive/wxcadm-person.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/archive/wxcadm-routing.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/authentication.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/call-control.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/call-features-additional.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/call-features-major.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/call-routing.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/contact-center-analytics.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/contact-center-core.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/contact-center-journey.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/contact-center-routing.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/devices-core.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/devices-dect.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/devices-workspaces.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/emergency-services.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/location-calling-core.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/location-calling-media.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/location-recording-advanced.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/meetings-content.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/meetings-core.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/meetings-infrastructure.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/meetings-settings.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/messaging-bots.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/messaging-spaces.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/migration-spec-template.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/person-call-settings-behavior.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/person-call-settings-handling.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/person-call-settings-media.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/person-call-settings-permissions.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/provisioning.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/reporting-analytics.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/self-service-call-settings.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/virtual-lines.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/webhooks-events.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/reference/wxcadm-xsi-realtime.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/runbooks/cucm-migration/decision-guide.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/runbooks/cucm-migration/operator-runbook.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/runbooks/cucm-migration/self-review-findings.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/runbooks/cucm-migration/tuning-reference.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/templates/deployment-plan.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/docs/templates/execution-report.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/pyproject.toml +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/setup.cfg +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/specs/overlays/webex-cloud-calling.overlay.json +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/specs/webex-admin.json +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/specs/webex-broadworks.json +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/specs/webex-cloud-calling.json +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/specs/webex-contact-center.json +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/specs/webex-device.json +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/specs/webex-meetings.json +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/specs/webex-messaging.json +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/specs/webex-ucm.json +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/specs/webex-wholesale.json +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/agents/migration-advisor.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/rules/cleanup.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/rules/cucm-migration.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/rules/org-health.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/settings.json +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/audit-compliance/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/call-control/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/configure-features/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/configure-routing/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/contact-center/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/cucm-migrate/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/customer-assist/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/manage-call-settings/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/manage-devices/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/manage-identity/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/manage-licensing/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/manage-meetings/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/messaging-bots/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/messaging-spaces/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/org-health/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/provision-calling/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/query-live/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/query-live/domains/call-flow-trace.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/query-live/domains/call-history.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/query-live/domains/features.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/query-live/domains/numbers.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/query-live/domains/routing.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/reporting/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/reporting/references/cdr-recipes.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/reporting-cc/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/reporting-meetings/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/teardown/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/video-mesh/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.claude/skills/wxc-calling-debug/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/agents/migration-advisor.toml +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/config.toml +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/rules/cleanup.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/rules/cucm-migration.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/rules/org-health.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/audit-compliance/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/call-control/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/configure-features/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/configure-routing/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/contact-center/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/cucm-migrate/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/customer-assist/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/manage-call-settings/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/manage-devices/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/manage-identity/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/manage-licensing/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/manage-meetings/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/messaging-bots/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/messaging-spaces/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/org-health/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/provision-calling/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/query-live/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/query-live/domains/call-flow-trace.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/query-live/domains/call-history.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/query-live/domains/features.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/query-live/domains/numbers.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/query-live/domains/routing.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/reporting/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/reporting/references/cdr-recipes.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/reporting-cc/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/reporting-meetings/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/teardown/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/video-mesh/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/.codex/skills/wxc-calling-debug/SKILL.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/knowledge-base/migration/kb-css-routing.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/knowledge-base/migration/kb-device-migration.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/knowledge-base/migration/kb-feature-mapping.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/knowledge-base/migration/kb-identity-numbering.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/knowledge-base/migration/kb-location-design.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/knowledge-base/migration/kb-trunk-pstn.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/knowledge-base/migration/kb-user-settings.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/knowledge-base/migration/kb-webex-limits.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/CLAUDE.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/admin-apps-data.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/admin-audit-security.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/admin-hybrid.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/admin-identity-scim.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/admin-licensing.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/admin-org-management.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/admin-partner.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/archive/wxc-sdk-patterns.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/archive/wxcadm-advanced.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/archive/wxcadm-core.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/archive/wxcadm-devices-workspaces.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/archive/wxcadm-features.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/archive/wxcadm-locations.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/archive/wxcadm-person.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/archive/wxcadm-routing.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/authentication.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/call-control.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/call-features-additional.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/call-features-major.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/call-routing.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/contact-center-analytics.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/contact-center-core.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/contact-center-journey.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/contact-center-routing.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/devices-core.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/devices-dect.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/devices-workspaces.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/emergency-services.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/location-calling-core.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/location-calling-media.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/location-recording-advanced.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/meetings-content.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/meetings-core.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/meetings-infrastructure.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/meetings-settings.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/messaging-bots.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/messaging-spaces.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/person-call-settings-behavior.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/person-call-settings-handling.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/person-call-settings-media.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/person-call-settings-permissions.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/provisioning.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/reporting-analytics.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/self-service-call-settings.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/virtual-lines.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/webhooks-events.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/reference/wxcadm-xsi-realtime.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/runbooks/cucm-migration/decision-guide.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/runbooks/cucm-migration/operator-runbook.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/_playbook/docs/runbooks/cucm-migration/tuning-reference.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/auth.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/_registry.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/activation_email.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/analytics.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/announcement_playlists.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/announcements.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/archive_users.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/attachment_actions.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/audit_events.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/authorizations.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/auto_attendant.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/broadworks_billing_reports.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/broadworks_enterprises.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/broadworks_subscribers.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/broadworks_workspaces.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/call_controls.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/call_park.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/call_pickup.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/call_queue.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/call_recording.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/call_routing.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/call_settings_for_me_phase_5.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/caller_reputation.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/calling_service.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_address_book.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_agent_summaries.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_agent_wellbeing.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_agents.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_ai_assistant.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_ai_feature.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_audio_files.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_auto_csat.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_business_hour.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_call_monitoring.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_callbacks.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_campaign.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_captures.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_contact_list.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_contact_number.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_data_sources.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_dial_number.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_dial_plan.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_dnc.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_ewt.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_flow.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_holiday_list.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_legacy_flows.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_notification.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_outdial_ani.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_overrides.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_queue_stats.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_realtime.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_resource_collection.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_search.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_skill_profile.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_subscriptions.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_summaries.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_user_profiles.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cc_users.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cdr.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/classifications.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cleanup.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/client_settings.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/conference.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/configure.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/converged_recordings_export.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cq_playlists.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cucm.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/cucm_config.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/customer_assist.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/data_sources.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/dect_devices.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/device_configurations.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/device_dynamic_settings.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/device_settings.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/devices.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/domains.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/ecm.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/emergency_services.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/events.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/external_voicemail.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/groups.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/guest_management.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/hds.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/hot_desk.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/hot_desking_members.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/hot_desking_portal.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/hunt_group.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/hybrid_clusters.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/hybrid_connectors.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/identity_org.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/init_playbook.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/licenses.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/live_monitoring.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/location_schedules.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/location_settings.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/location_voicemail.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/locations.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/meeting_captions.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/meeting_chats.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/meeting_invitees.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/meeting_messages.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/meeting_polls.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/meeting_qa.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/meeting_qualities.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/meeting_reports.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/meeting_session_types.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/meeting_site.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/meeting_slido.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/meeting_summaries.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/meeting_tracking_codes.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/meeting_transcripts.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/meetings.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/memberships.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/messages.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/mode_management.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/my_call_settings.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/numbers.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/operating_modes.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/org_contacts.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/org_health_cli.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/org_settings.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/organizations.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/paging_group.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/partner_admins.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/partner_reports.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/partner_tags.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/people.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/person_call_settings.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/pstn.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/recording_report.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/report_templates.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/reports.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/resource_group_memberships.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/resource_groups.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/roles.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/room_tabs.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/rooms.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/scim_bulk.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/scim_groups.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/scim_schemas.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/scim_users.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/security_audit.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/service_apps.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/single_number_reach.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/team_memberships.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/teams.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/ucm_profile.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/update.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/video_mesh.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/virtual_extensions.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/webhooks.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/wholesale_billing_reports.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/wholesale_provisioning.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/workspace_locations.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/workspace_metrics.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/workspace_personalization.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/workspaces.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/commands/xapi.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/config.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/errors.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/main.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/CLAUDE.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/advisory/CLAUDE.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/advisory/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/advisory/advisor.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/advisory/advisory_patterns.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/advisory/recommendation_rules.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/CLAUDE.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/connection.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/discovery.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/extractors/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/extractors/announcements.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/extractors/base.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/extractors/device_profiles.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/extractors/devices.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/extractors/e911.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/extractors/features.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/extractors/helpers.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/extractors/informational.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/extractors/locations.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/extractors/moh.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/extractors/remote_destinations.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/extractors/routing.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/extractors/shared_lines.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/extractors/templates.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/extractors/tier4.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/extractors/users.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/extractors/voicemail.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/extractors/workspaces.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/cucm/unity_connection.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/execute/CLAUDE.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/execute/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/execute/batch.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/execute/dependency.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/execute/engine.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/execute/handlers.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/execute/planner.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/execute/runtime.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/export/CLAUDE.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/export/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/export/csv_export.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/export/deployment_plan.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/export/json_export.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/models.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/phone_models.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/preflight/CLAUDE.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/preflight/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/preflight/checks.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/preflight/runner.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/rate_limiter.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/report/CLAUDE.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/report/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/report/appendix.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/report/assembler.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/report/charts.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/report/executive.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/report/explainer.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/report/helpers.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/report/ingest.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/report/notice_templates.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/report/score.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/report/styles.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/report/user_diff.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/report/user_notice.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/state.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/store.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/CLAUDE.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/analysis_pipeline.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/analyzers/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/analyzers/css_permission.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/analyzers/css_routing.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/analyzers/device_compatibility.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/analyzers/dn_ambiguity.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/analyzers/duplicate_user.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/analyzers/extension_conflict.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/analyzers/feature_approximation.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/analyzers/layout_overflow.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/analyzers/location_ambiguity.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/analyzers/missing_data.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/analyzers/selective_call_handling.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/analyzers/shared_line.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/analyzers/voicemail_compatibility.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/analyzers/workspace_license.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/cross_reference.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/cucm_pattern.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/decisions.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/e164.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/engine.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/CLAUDE.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/announcement_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/base.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/button_template_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/call_forwarding_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/call_settings_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/css_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/dect_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/device_layout_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/device_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/device_profile_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/device_settings_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/e911_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/ecbn_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/executive_assistant_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/feature_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/line_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/location_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/moh_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/monitoring_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/receptionist_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/routing_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/snr_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/softkey_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/user_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/voicemail_group_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/voicemail_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/mappers/workspace_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/normalizers.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/pattern_converter.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/pipeline.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/migration/transform/rules.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/org_health/CLAUDE.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/org_health/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/org_health/analyze.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/org_health/checks.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/org_health/collector.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/org_health/models.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/org_health/report.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/output.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli/update_check.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli.egg-info/dependency_links.txt +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli.egg-info/entry_points.txt +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli.egg-info/requires.txt +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/src/wxcli.egg-info/top_level.txt +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/advisory/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/advisory/test_advisor.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/advisory/test_advisory_executive_assistant.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/advisory/test_advisory_intercept.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/advisory/test_advisory_patterns.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/advisory/test_advisory_selective.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/advisory/test_foundation.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/advisory/test_integration.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/advisory/test_new_patterns.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/advisory/test_receptionist_advisory.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/advisory/test_recommendation_rules.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/advisory/test_recommendation_rules_tier2p2.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/advisory/test_recommendation_selective.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/advisory/test_tier4_patterns.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/cucm/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/cucm/fixtures/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/cucm/test_connection.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/cucm/test_cpc_detail_fetch.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/cucm/test_device_settings_tags.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/cucm/test_discovery.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/cucm/test_executive_assistant_extractor.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/cucm/test_extractors.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/cucm/test_informational_extractor.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/cucm/test_intercept_extractor.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/cucm/test_template_extractor.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/cucm/test_tier4_extractor.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/cucm/test_unity_shared_mailboxes.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/conftest.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_advisory_to_execution_bridge.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_batch.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_bridge_integration.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_bulk_batch.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_bulk_config.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_bulk_constants.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_bulk_e2e.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_bulk_fallback.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_bulk_handlers.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_bulk_integration.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_bulk_planner.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_bulk_polling.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_bulk_serialization.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_cascade_and_retry.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_dect_handlers.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_dect_planner.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_dependency.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_device_settings_handlers.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_device_settings_planner.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_engine.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_engine_409_recovery.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_executive_assistant_handlers.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_handlers.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_handlers_forwarding.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_handlers_workspace_settings.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_hoteling_handlers.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_phase12a_planner_fixes.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_planner.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_planner_forwarding.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_planner_settings_ops.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_planner_silent_skip_visibility.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_receptionist_handler.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_runtime.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_silent_failure_wave1.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_silent_failure_wave2a.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_silent_failure_wave2b.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_silent_failure_wave2c.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_silent_failure_wave3a.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_silent_failure_wave3b.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_voicemail_group_handler.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/execute/test_voicemail_group_planner.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/export/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/export/test_csv_activation_codes.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/export/test_deployment_plan.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/preflight/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/preflight/test_checks.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/preflight/test_runner.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/report/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/report/conftest.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/report/test_appendix.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/report/test_appendix_selective.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/report/test_appendix_tier2p2.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/report/test_appendix_tier3.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/report/test_assembler.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/report/test_cli_integration.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/report/test_dect_appendix.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/report/test_device_settings_score.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/report/test_e2e.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/report/test_executive.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/report/test_executive_selective.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/report/test_explainer.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/report/test_from_file.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/report/test_helpers.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/report/test_score.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/report/test_tier4_appendix.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/report/test_user_diff.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/report/test_user_notice.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/test_cucm_cli.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/test_decision_cli.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/test_dect_integration.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/test_device_settings_lossy_type.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/test_models.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/test_models_tier2p2.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/test_models_voicemail_group.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/test_pipeline_e2e.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/test_rate_limiter.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/test_state.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/test_store.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transferability/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transferability/conftest.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transferability/test_advisor_routing_coverage.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transferability/test_advisory_pattern_coverage.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transferability/test_config_key_coverage.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transferability/test_decision_type_coverage.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transferability/test_default_auto_rules_coverage.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transferability/test_recommendation_output_coverage.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transferability/test_runbook_cites.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transferability/test_runbook_cli_commands.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transferability/test_runbook_links.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transferability/test_runbook_parsability.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transferability/test_score_factor_display_names.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/analyzers/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/analyzers/test_each_analyzer.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/analyzers/test_layout_overflow.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/conftest.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_announcement_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_button_template_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_call_forwarding_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_call_settings_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_call_settings_mapper_intercept.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_css_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_dect_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_device_layout_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_device_layout_mapper_convertible.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_device_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_device_profile_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_device_settings_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_e911_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_executive_assistant_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_feature_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_feature_mapper_forwarding.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_feature_mapper_voicemail_gap.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_line_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_location_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_moh_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_monitoring_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_phase12a_feature_fixes.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_receptionist_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_routing_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_snr_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_softkey_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_user_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_voicemail_enrichment.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_voicemail_group_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_voicemail_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_workspace_mapper.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/mappers/test_workspace_mapper_call_settings.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_analysis_pipeline.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_classify_decisions.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_cpc_cross_ref.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_cross_decision_enrichment.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_cross_ref_phone_mirror.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_cross_ref_tier2p2.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_cross_reference.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_cucm_pattern.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_decision_merge.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_dect_classification.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_default_auto_rules_field_alignment.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_e164.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_engine.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_executive_assistant_integration.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_integration.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_intercept_integration.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_normalize_phone_device_settings.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_normalizers.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_normalizers_executive.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_normalizers_intercept.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_normalizers_tier2p2.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_normalizers_voicemail_group.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_pattern_converter.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_phase12a_analyzer_routing_fixes.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_pipeline.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_pipeline_common_area.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_rules.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_selective_call_handling_analyzer.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_selective_integration.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_shared_line_status.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_voicemail_group_integration.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_voicemail_group_pipeline.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/migration/transform/test_workspace_call_settings_integration.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/org_health/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/org_health/conftest.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/org_health/test_analyze.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/org_health/test_checks.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/org_health/test_cli.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/org_health/test_collector.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/org_health/test_models.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tests/org_health/test_report.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tools/__init__.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tools/create_stress_test_db.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tools/drift_check.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tools/drift_check_allowlist.txt +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tools/expand_cucm_data.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tools/postman_spec_diff.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tools/spec_overlay.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tools/spec_sync.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tools/update-specs.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tools/webhook_receiver.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/tools/wheel_playbook_smoke.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/wxcli-dist/assemble.py +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/wxcli-dist/codex/agents-md-sections.md +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/wxcli-dist/codex/config.toml +0 -0
- {wxcli-1.4.2 → wxcli-1.4.4}/wxcli-dist/settings.bundled.json +0 -0
|
@@ -28,16 +28,6 @@ Your job is to make the process structured, safe, and recoverable. You interview
|
|
|
28
28
|
|
|
29
29
|
When invoked, run these checks silently:
|
|
30
30
|
|
|
31
|
-
### 0. Register agent with wxcli gate (REQUIRED — run FIRST, before any other Bash)
|
|
32
|
-
|
|
33
|
-
The PreToolUse hook denies all `wxcli` Bash calls unless this agent has registered itself in `/tmp/.wxcli-agent-active`. Run this once at startup, before `wxcli --help` or any other command:
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
echo $PPID >> /tmp/.wxcli-agent-active
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
This appends the parent Claude Code process PID to the gate file. Multiple concurrent wxc-calling-builder agents in the same Claude Code session will append the same PID multiple times — that is expected and correct (ref-counted). The `SubagentStop` hook automatically removes one entry on every subagent exit, so no explicit teardown is required — do not run a teardown block yourself (it will over-decrement and lock out sibling agents).
|
|
40
|
-
|
|
41
31
|
### 1. CLI Environment
|
|
42
32
|
|
|
43
33
|
Check that wxcli is installed:
|
|
@@ -369,15 +359,14 @@ Read `docs/templates/deployment-plan.md` to get the template. Fill in every sect
|
|
|
369
359
|
|
|
370
360
|
Execute commands in the order specified in the deployment plan. Use wxcli CLI commands for all standard operations.
|
|
371
361
|
|
|
372
|
-
### Discovery-First Rule
|
|
362
|
+
### Discovery-First Rule
|
|
373
363
|
|
|
374
|
-
|
|
364
|
+
Discover first, act second — one broad query, evaluate, stop within 3 commands; accept a
|
|
365
|
+
negative result rather than hunting for workarounds. The rule and its false-negative guard
|
|
366
|
+
live in CLAUDE.md (§ Discovery-First Rule), which you already have in context. It applies to
|
|
367
|
+
reads and queries too, which is why it is no longer duplicated here.
|
|
375
368
|
|
|
376
|
-
|
|
377
|
-
2. **Evaluate the result** — is the target in the response?
|
|
378
|
-
3. **If yes** → proceed. **If no** → report what you found and **stop within 3 total commands**.
|
|
379
|
-
|
|
380
|
-
**Anti-pattern: refusing a negative result.** If a broad query shows the target doesn't exist, accept it. Do not try alternate key names, narrower/broader filters, the same query on a different device, speculative writes, or workaround paths. Report the negative finding — that IS the answer. Three total commands max before reporting back.
|
|
369
|
+
Example of a broad query in this domain: `wxcli device-configurations show --device-id X --key "Lines.*"`
|
|
381
370
|
|
|
382
371
|
### Progress Reporting
|
|
383
372
|
|
|
@@ -581,12 +570,9 @@ Each row names what the skill contains that is NOT in your training data. Do NOT
|
|
|
581
570
|
|
|
582
571
|
### Source of Truth Precedence
|
|
583
572
|
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
2. **Skills** — verified against live APIs; contain exact command examples
|
|
588
|
-
3. **Reference docs** — comprehensive but can lag behind skill and CLI updates
|
|
589
|
-
4. **Your training data** — least reliable; NEVER trust over the above three
|
|
573
|
+
`--help` > skills > reference docs > training data. The full rule lives in CLAUDE.md
|
|
574
|
+
(§ Source of Truth Precedence), which you already have in context; it applies to every
|
|
575
|
+
caller of `wxcli`, not just this agent, so it is no longer duplicated here.
|
|
590
576
|
|
|
591
577
|
Example: if a reference doc says `wxcli locations-api list` but the skill says `wxcli locations list`, run `wxcli locations list --help` to see which exists. If `--help` confirms `locations list` works, use that regardless of what the reference doc says.
|
|
592
578
|
|
|
@@ -12,5 +12,19 @@
|
|
|
12
12
|
"Bash(python3.11:*)",
|
|
13
13
|
"Bash(PYTHONPATH=.:*)"
|
|
14
14
|
]
|
|
15
|
+
},
|
|
16
|
+
"hooks": {
|
|
17
|
+
"PreToolUse": [
|
|
18
|
+
{
|
|
19
|
+
"matcher": "Bash",
|
|
20
|
+
"hooks": [
|
|
21
|
+
{
|
|
22
|
+
"type": "command",
|
|
23
|
+
"command": "sh /Users/ahobgood/Documents/webexCalling/.claude/hooks/wxcli-gate.sh",
|
|
24
|
+
"timeout": 5
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
]
|
|
15
29
|
}
|
|
16
30
|
}
|
|
@@ -14,10 +14,12 @@ argument-hint: [device-platform-operation]
|
|
|
14
14
|
# Device Platform Workflow
|
|
15
15
|
|
|
16
16
|
**Checkpoint — do NOT proceed until you can answer these:**
|
|
17
|
-
1. Do 9800-series phones (9811/9821/9841/9851/9861/9871) use telephony device settings or
|
|
18
|
-
2. What CLI group handles xAPI commands for device control? (Answer: `wxcli xapi` — covers
|
|
17
|
+
1. Do 9800-series phones (9811/9821/9841/9851/9861/9871) use telephony device settings or PhoneOS config keys? (Answer: PhoneOS config keys via the Device Configurations API (`wxcli device-configurations`) — they are NOT configured via `wxcli device-settings` or telephony settings APIs.)
|
|
18
|
+
2. What CLI group handles xAPI commands for device control? (Answer: `wxcli xapi` — covers schema discovery (`list`), status queries (`show`), and command execution (`create`).)
|
|
19
|
+
3. You need a key name (command, status, or config) and don't know it. What do you do FIRST? (Answer: dump the device's full namespace to disk with `"*"` and grep it — see 6c. Do NOT guess a namespace, do NOT use training data, do NOT send the user to a website.)
|
|
20
|
+
4. You grep all three dumps and the key isn't there. What do you report? (Answer: "this device does not expose it" — NOT "the feature doesn't exist." Coverage varies by model and firmware.)
|
|
19
21
|
|
|
20
|
-
If you cannot answer
|
|
22
|
+
If you cannot answer all four, you skipped reading this skill. Go back and read it.
|
|
21
23
|
|
|
22
24
|
## Step 1: Load references
|
|
23
25
|
|
|
@@ -202,7 +204,68 @@ wxcli workspace-personalization show WORKSPACE_ID
|
|
|
202
204
|
- Common error: "Device is offline" -- the workspace device must be online and registered
|
|
203
205
|
- **Do not tell the user it is done until `show` returns `success: true`**
|
|
204
206
|
|
|
205
|
-
### 6c.
|
|
207
|
+
### 6c. Discover the Namespace -- Dump, Then Grep
|
|
208
|
+
|
|
209
|
+
**Do this FIRST whenever you do not already know the exact key name. Do NOT guess a namespace, and do NOT rely on your training data for xAPI key names.**
|
|
210
|
+
|
|
211
|
+
The device reports its own complete namespace. Dump all three surfaces to disk, then grep locally:
|
|
212
|
+
|
|
213
|
+
**One device per dump. Always namespace the filenames by device.** Namespaces differ by model and firmware — a key on one device may be absent on the next.
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
# Pick a short unique tag per device (e.g. its displayName, slugified). ONE device per file.
|
|
217
|
+
TAG=roombarpro # <- change per device; never reuse across devices
|
|
218
|
+
|
|
219
|
+
wxcli xapi list --device-id DEVICE_ID --status "*" -o json > /tmp/${TAG}_status.json
|
|
220
|
+
wxcli xapi list --device-id DEVICE_ID --command "*" -o json > /tmp/${TAG}_commands.json
|
|
221
|
+
|
|
222
|
+
# Configurations -- DIFFERENT API, see the surface table below
|
|
223
|
+
wxcli device-configurations show --device-id DEVICE_ID -o json > /tmp/${TAG}_configs.json
|
|
224
|
+
|
|
225
|
+
# Search ONE device's dumps at a time -- never glob across devices
|
|
226
|
+
grep -io '"[A-Za-z][A-Za-z0-9._[]]*Background[A-Za-z0-9._[]]*"' /tmp/${TAG}_*.json | sort -u
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
**NEVER `Read` these dumps.** Verified live on a Room Bar Pro: 535 statuses + 453 commands + 1,218 configs, ~1.4 MB combined (~350k tokens). Grep them; never open them.
|
|
230
|
+
|
|
231
|
+
**Multi-device rules — violating these is how you execute against the wrong box:**
|
|
232
|
+
|
|
233
|
+
- **Never grep across devices** (no `/tmp/*_status.json` globs). A hit tells you a key exists *somewhere*, not on the device you're about to call. Re-grep that device's own dump before executing.
|
|
234
|
+
- `--device-id` accepts up to **5 device IDs** per request, and the response is an array where each item carries its own `deviceId`. If you ever query more than one at a time, you **must** parse per `deviceId` — a flat grep destroys the attribution the API gave you.
|
|
235
|
+
- **Fleet-wide work:** dump each device separately, grep each separately, and treat "device A has it" as zero evidence about device B. Report per-device results, not a single fleet-wide answer.
|
|
236
|
+
- **Mixed fleets: xAPI is RoomOS-only.** Room/Board/Desk series support xAPI; PhoneOS 9800-series and MPP phones do not. On a 9800-series phone, skip the `xapi` dumps entirely and use `device-configurations` (6a) — that API serves both RoomOS and PhoneOS. A failed xAPI call on a phone is expected, not a bug; do not report it as the device being broken, and do not retry it.
|
|
237
|
+
|
|
238
|
+
**Why dump instead of filter:** filtering requires guessing the first word, and that guess is a coin flip. `Camera.*` and `Cameras.*` are BOTH real, distinct namespaces on the same device — a filtered query on the wrong one returns a confident, complete-looking, wrong answer. Dumping has no such failure mode. Once you know the namespace, filtering (`--command "Camera.*"`) is a fine optimization.
|
|
239
|
+
|
|
240
|
+
**Three surfaces, two APIs — a key lives in exactly one:**
|
|
241
|
+
|
|
242
|
+
| Surface | API | Command | Example |
|
|
243
|
+
|---------|-----|---------|---------|
|
|
244
|
+
| Command (do a thing) | xAPI | `wxcli xapi list --command`, `xapi create` | `Camera.PositionReset` |
|
|
245
|
+
| Status (read a live value) | xAPI | `wxcli xapi list --status`, `xapi show` | `SystemUnit.ProductPlatform` |
|
|
246
|
+
| Configuration (persistent setting) | Device Configurations | `wxcli device-configurations show/update` (6a) | `Video.Input.CameraConfigMode` |
|
|
247
|
+
|
|
248
|
+
`xapi list` **cannot see configurations** — `/xapi/schema` accepts only `--status` and `--command`. If you search only xAPI for a setting, you will wrongly conclude it does not exist. Search all three dumps.
|
|
249
|
+
|
|
250
|
+
**Verified behaviors — do not re-derive these:**
|
|
251
|
+
|
|
252
|
+
- **`-o json` is mandatory.** The default table output renders a single `Device Id` column and silently drops every command, argument, and schema. It does not error — it just looks like the device has nothing.
|
|
253
|
+
- **The dumps contain NO descriptions.** Checked across all 2,206 keys on a live device: zero `description`/`help`/`summary`/`doc` fields. A command returns only `arguments` (each with `required` + a JSON Schema) and a `resultSchema`; a config returns only `value`, `source`, `sources`, `valueSpace`, `appliedConfigurationValue`. **The device tells you a key's shape, never its meaning.** Do not tell the user what a key does based on a dump alone — say you have the name and shape but not the semantics.
|
|
254
|
+
- `--device-id` is required (max 5 per request). Discovery needs a live, online, cloud-registered device.
|
|
255
|
+
- Scopes differ: `spark:xapi_commands` for `--command`, `spark:xapi_statuses` for `--status`. Configurations use `spark-admin:devices_read/write`.
|
|
256
|
+
|
|
257
|
+
**Absence in a dump means "not on THIS device" — never "does not exist."**
|
|
258
|
+
Coverage varies sharply by model and firmware. A real example: the virtual-background keys (`Cameras.Background.*`) exist on Cisco hardware but are absent from a Room Bar Pro's dump entirely. If you grep and find nothing, report *"this device does not expose it"* and name the device — do NOT tell the user the feature does not exist. A confident false negative is worse than no answer.
|
|
259
|
+
|
|
260
|
+
**Worked example -- "reset the camera position on device XYZ":**
|
|
261
|
+
|
|
262
|
+
1. Dump + grep: `grep -io '"Camera[^"]*"' /tmp/dev_commands.json | sort -u` -> finds `Camera.PositionReset`
|
|
263
|
+
2. Read that key's object: `CameraId` (required, integer 1-15) and `Axis` (optional enum `All`/`Focus`/`PanTilt`/`Zoom`, default `All`). *(Verified live.)*
|
|
264
|
+
3. Execute: `wxcli xapi create Camera.PositionReset --device-id XYZ --json-body '{"deviceId": "XYZ", "arguments": {"CameraId": 1}}'`
|
|
265
|
+
|
|
266
|
+
Argument names and value ranges vary by model and firmware. Trust the dump for the device in front of you over any example in this skill.
|
|
267
|
+
|
|
268
|
+
### 6d. xAPI -- Status Queries
|
|
206
269
|
|
|
207
270
|
```bash
|
|
208
271
|
# Query a single status value
|
|
@@ -227,7 +290,7 @@ wxcli xapi show --device-id DEVICE_ID --name "Audio.Volume,SystemUnit.State.Numb
|
|
|
227
290
|
| `Peripherals.ConnectedDevice[*].Name` | Connected peripherals |
|
|
228
291
|
| `Standby.State` | Standby/active state |
|
|
229
292
|
|
|
230
|
-
###
|
|
293
|
+
### 6e. xAPI -- Command Execution
|
|
231
294
|
|
|
232
295
|
```bash
|
|
233
296
|
# Simple command with no arguments (deviceId auto-populated from --device-id)
|
|
@@ -260,7 +323,7 @@ wxcli xapi create UserInterface.Message.Alert.Display --device-id DEVICE_ID --js
|
|
|
260
323
|
| `Message.Send` | `Text` | Display on-screen message |
|
|
261
324
|
| `UserInterface.Message.Alert.Display` | `Title`, `Text`, `Duration` | Show alert popup |
|
|
262
325
|
|
|
263
|
-
**Do not
|
|
326
|
+
**Do not paste the namespace into context — but do dump it.** An unfiltered `xapi list` returns hundreds of keys (~350k tokens across all three surfaces). Redirect it to a file and grep (6c); never `Read` it. https://roomos.cisco.com/xapi documents the namespace for humans and is the only source of *prose* for what a key means, but it is not a substitute for 6c — only the device knows what it actually exposes.
|
|
264
327
|
|
|
265
328
|
### Error handling
|
|
266
329
|
|
|
@@ -268,7 +331,7 @@ wxcli xapi create UserInterface.Message.Alert.Display --device-id DEVICE_ID --js
|
|
|
268
331
|
|-------|-------|-----|
|
|
269
332
|
| 401/403 | Token expired or insufficient scopes | Run `wxcli configure` to re-authenticate |
|
|
270
333
|
| 400 "device not found" | Invalid device ID or device not cloud-registered | Verify with `wxcli devices list` |
|
|
271
|
-
| 400 on xAPI command | Device offline, wrong command name, or missing arguments | Check device is online,
|
|
334
|
+
| 400 on xAPI command | Device offline, wrong command name, or missing arguments | Check device is online, then confirm the command name and its required arguments against the device with a filtered `wxcli xapi list` (6c) |
|
|
272
335
|
| 400 on device-configurations update | Invalid path, bad JSON Patch format, or non-editable key | Verify path ends in `/sources/configured/value`, check key is editable |
|
|
273
336
|
| Personalization "Device is offline" | Workspace device not online | Device must be powered on and cloud-registered |
|
|
274
337
|
|
|
@@ -355,7 +418,7 @@ Next steps:
|
|
|
355
418
|
|
|
356
419
|
6. **Configuration update PATCH content type.** The API uses `application/json-patch+json`, not `application/json`. The CLI handles this automatically. If the user falls back to raw HTTP (curl), they must set the `Content-Type` header correctly.
|
|
357
420
|
|
|
358
|
-
7. **
|
|
421
|
+
7. **Never guess a key name — dump the device's namespace and grep it (6c).** Filtering on a guessed namespace is a coin flip: `Camera.*` and `Cameras.*` are both real and distinct, so a wrong guess returns a confident, complete-looking, wrong answer. Dump all three surfaces with `"*"` to disk and grep. Never `Read` the dumps (~350k tokens). Do not substitute training data or a link to roomos.cisco.com for the lookup. The device is authoritative for its own model and firmware — but only about itself: absence means "not on this device," not "does not exist."
|
|
359
422
|
|
|
360
423
|
8. **Scope mismatch between device-configurations and xAPI.** Device configurations use admin scopes (`spark-admin:devices_read`/`spark-admin:devices_write`). xAPI uses user-level scopes (`spark:xapi_statuses`/`spark:xapi_commands`). A token may have one set but not the other. Diagnose scope issues early in Step 2.
|
|
361
424
|
|
|
@@ -16,17 +16,25 @@
|
|
|
16
16
|
## Command Recipes
|
|
17
17
|
|
|
18
18
|
### List users (org-wide or filtered)
|
|
19
|
+
|
|
20
|
+
**Always pass `--calling-data true` when the question touches extension, location, or
|
|
21
|
+
any calling attribute.** Without it the API omits those fields entirely — the command
|
|
22
|
+
still exits 0 and returns every person, so a count built from it silently reports zero.
|
|
23
|
+
|
|
19
24
|
```bash
|
|
20
|
-
wxcli people list -o json
|
|
21
|
-
wxcli people list --location-id LOCATION_ID -o json
|
|
22
|
-
wxcli people list --display-name "John Smith" -o json
|
|
23
|
-
wxcli people list --email "john@example.com" -o json
|
|
25
|
+
wxcli people list --calling-data true -o json
|
|
26
|
+
wxcli people list --calling-data true --location-id LOCATION_ID -o json
|
|
27
|
+
wxcli people list --calling-data true --display-name "John Smith" -o json
|
|
28
|
+
wxcli people list --calling-data true --email "john@example.com" -o json
|
|
24
29
|
```
|
|
25
30
|
|
|
31
|
+
Omit `--calling-data` only for pure directory questions (name, email, roles, licenses).
|
|
32
|
+
|
|
26
33
|
### Show a specific user
|
|
27
34
|
```bash
|
|
28
|
-
wxcli people show PERSON_ID -o json
|
|
35
|
+
wxcli people show PERSON_ID --calling-data true -o json
|
|
29
36
|
```
|
|
37
|
+
Same rule as `list`: without `--calling-data true`, `extension` and `locationId` are absent.
|
|
30
38
|
|
|
31
39
|
### Voicemail settings
|
|
32
40
|
```bash
|
|
@@ -92,13 +100,14 @@ wxcli user-settings show-hoteling PERSON_ID -o json
|
|
|
92
100
|
|
|
93
101
|
**Finding users at a location by name:**
|
|
94
102
|
1. `wxcli locations list -o json` → search for location name → get ID
|
|
95
|
-
2. `wxcli people list --location-id <locationId> -o json`
|
|
103
|
+
2. `wxcli people list --calling-data true --location-id <locationId> -o json`
|
|
96
104
|
|
|
97
105
|
## Join Patterns
|
|
98
106
|
|
|
99
107
|
**Audit query** ("Which users at Austin don't have voicemail?"):
|
|
100
108
|
1. Resolve location name → ID: `wxcli locations list -o json`
|
|
101
|
-
2. List users at location: `wxcli people list --location-id <locationId> -o json`
|
|
109
|
+
2. List users at location: `wxcli people list --calling-data true --location-id <locationId> -o json`
|
|
110
|
+
(`--calling-data true` is required — the audit report prints each user's extension)
|
|
102
111
|
3. For each user, fetch setting: `wxcli user-settings show-voicemail <personId> -o json`
|
|
103
112
|
4. Filter to matches (enabled=false or missing)
|
|
104
113
|
5. Format as audit table
|
|
@@ -46,12 +46,21 @@ docs/arch/
|
|
|
46
46
|
docs/webex-api-feedback.html
|
|
47
47
|
docs/webex-api-feedback-for-cisco-collab-bu.md
|
|
48
48
|
|
|
49
|
-
# Tests (dev-only, except the actively-maintained migration/org-health suites
|
|
49
|
+
# Tests (dev-only, except the actively-maintained migration/org-health suites
|
|
50
|
+
# and the artifact guards below)
|
|
50
51
|
tests/*
|
|
51
52
|
!tests/migration/
|
|
52
53
|
!tests/migration/**
|
|
53
54
|
!tests/org_health/
|
|
54
55
|
!tests/org_health/**
|
|
56
|
+
# Artifact guards: these assert on files that ship (settings.bundled.json,
|
|
57
|
+
# field_overrides.yaml, README.md, ci.yml). They caught real drift while CI
|
|
58
|
+
# could not see them, so they are tracked and run on every PR. They import only
|
|
59
|
+
# stdlib/pytest/yaml plus in-repo modules — no network, no live API, and no
|
|
60
|
+
# dependency on the untracked tests/conftest.py.
|
|
61
|
+
!tests/test_assemble.py
|
|
62
|
+
!tests/test_field_overrides.py
|
|
63
|
+
!tests/test_readme_distribution.py
|
|
55
64
|
!tests/test_release_integrity.py
|
|
56
65
|
tests/migration/**/__pycache__/
|
|
57
66
|
tests/org_health/**/__pycache__/
|
|
@@ -89,6 +98,9 @@ tools/reassign_dids_to_cc.py
|
|
|
89
98
|
README.md.bak
|
|
90
99
|
src/wxcli/_version.py
|
|
91
100
|
|
|
101
|
+
# Org-health scan output (contains live org data — person IDs, numbers, devices)
|
|
102
|
+
org-health-output/
|
|
103
|
+
|
|
92
104
|
# Remotion video production (local build artifact)
|
|
93
105
|
remotion-video/
|
|
94
106
|
|
|
@@ -15,6 +15,47 @@ For every question — capability, configuration, behavior, limits, or anything
|
|
|
15
15
|
|
|
16
16
|
The reference docs and skills are the authoritative source for this project. Training data about Cisco/Webex products is unreliable — product tiers get conflated, feature names change, and capabilities vary by license. If the answer isn't in the docs or skills, say so explicitly rather than filling the gap from training data.
|
|
17
17
|
|
|
18
|
+
## Source of Truth Precedence
|
|
19
|
+
|
|
20
|
+
Applies to everyone touching `wxcli` — main session, skills, and agents alike. When
|
|
21
|
+
sources conflict, trust them in this order:
|
|
22
|
+
|
|
23
|
+
1. **`wxcli <command> --help`** — the running code; always current
|
|
24
|
+
2. **Skills** — verified against live APIs; contain exact command examples
|
|
25
|
+
3. **Reference docs** — comprehensive but can lag behind skill and CLI updates
|
|
26
|
+
4. **Your training data** — least reliable; NEVER trust over the above three
|
|
27
|
+
|
|
28
|
+
This refines the grounding rule above: skills and docs outrank your training, but
|
|
29
|
+
`--help` outranks *them*. A skill's recipe is a starting point, not a guarantee — recipes
|
|
30
|
+
are hand-written and drift as the CLI regenerates. When a recipe and `--help` disagree,
|
|
31
|
+
`--help` wins, and the stale recipe should be fixed, not worked around.
|
|
32
|
+
|
|
33
|
+
**A read-only command can be silently wrong.** Real case: the query-live recipe said
|
|
34
|
+
`wxcli people list -o json`, but Webex omits `extension` and `locationId` unless
|
|
35
|
+
`--calling-data true` is passed. The command exits 0 and returns every user, so
|
|
36
|
+
"how many users have extensions?" answers **0** instead of the true count. No error, no
|
|
37
|
+
warning. Before trusting a read, confirm via `--help` that the command was actually
|
|
38
|
+
capable of returning the field you are about to draw a conclusion from.
|
|
39
|
+
|
|
40
|
+
## Discovery-First Rule
|
|
41
|
+
|
|
42
|
+
Applies to ALL work — reads, queries, and builds — not just execution. When checking
|
|
43
|
+
whether a capability, config key, API field, or setting exists, discover first, act second:
|
|
44
|
+
|
|
45
|
+
1. **One broad query** — enumerate what's available
|
|
46
|
+
2. **Evaluate the result** — is the target in the response?
|
|
47
|
+
3. **If yes** → proceed. **If no** → report what you found and **stop within 3 total commands**.
|
|
48
|
+
|
|
49
|
+
**Anti-pattern: refusing a negative result.** If a broad query shows the target doesn't
|
|
50
|
+
exist, accept it. Do not try alternate key names, narrower/broader filters, the same query
|
|
51
|
+
on a different resource, speculative writes, or workaround paths. Report the negative
|
|
52
|
+
finding — that IS the answer. Three total commands max before reporting back.
|
|
53
|
+
|
|
54
|
+
**Guard on that rule: only accept a negative once the query could have returned a positive.**
|
|
55
|
+
An absent field may mean "not configured" or may mean "you didn't ask for it" (see the
|
|
56
|
+
`--calling-data` case above). Confirm the command surfaces the field before reporting
|
|
57
|
+
"none found" — a false negative delivered confidently is worse than no answer.
|
|
58
|
+
|
|
18
59
|
## Plain-English Communication Rule
|
|
19
60
|
|
|
20
61
|
The target user has ZERO platform experience. When explaining findings, trade-offs, or decisions — or asking the user to choose between options — do NOT lead with jargon, acronyms, or internal feature-names. Instead:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: wxcli
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.4
|
|
4
4
|
Summary: Webex Calling CLI — terminal-based provisioning for Webex APIs
|
|
5
5
|
Author: Adam Hobgood
|
|
6
6
|
License: Apache-2.0
|
|
@@ -41,6 +41,13 @@ A command-line tool and AI-assisted playbook for provisioning, managing, migrati
|
|
|
41
41
|
|
|
42
42
|
> **Unofficial community CLI — not affiliated with or endorsed by Cisco.**
|
|
43
43
|
|
|
44
|
+
> **Use at your own risk.** This software is provided "AS IS", without warranty
|
|
45
|
+
> of any kind, and the authors accept no liability for any damage, data loss, or
|
|
46
|
+
> service disruption arising from its use (see [LICENSE](LICENSE), Apache 2.0
|
|
47
|
+
> §7–8). It performs **write and delete operations against live production
|
|
48
|
+
> Webex Calling and CUCM environments**, driven in part by non-deterministic AI.
|
|
49
|
+
> You are responsible for reviewing every action before it runs.
|
|
50
|
+
|
|
44
51
|
## What It Does
|
|
45
52
|
|
|
46
53
|
- **176 CLI command groups** — provision locations, users, call features, devices, routing, PSTN, messaging, meetings, and contact center resources from the terminal
|
|
@@ -493,6 +500,46 @@ The CLI covers 176 command groups across calling, admin, device, messaging, meet
|
|
|
493
500
|
|
|
494
501
|
See [`docs/reference/authentication.md`](docs/reference/authentication.md) for full details on token types, OAuth flows, and scope requirements per endpoint.
|
|
495
502
|
|
|
503
|
+
## Disclaimer & Safe Use
|
|
504
|
+
|
|
505
|
+
wxcli is an unofficial, community-maintained tool. It is **not affiliated with,
|
|
506
|
+
endorsed by, or supported by Cisco.** "Webex", "Webex Calling", and "CUCM" are
|
|
507
|
+
Cisco trademarks, used here only to describe interoperability.
|
|
508
|
+
|
|
509
|
+
**This tool changes and deletes real telephony configuration.** The AI playbook
|
|
510
|
+
reasons and orchestrates using a large language model, which is non-deterministic:
|
|
511
|
+
the same prompt can produce different actions, and the agent can select the wrong
|
|
512
|
+
resource. The layered design (docs → skills → tested CLI, with read-back
|
|
513
|
+
verification) is built to reduce this, but **cannot eliminate it.**
|
|
514
|
+
|
|
515
|
+
Before running anything against a production org:
|
|
516
|
+
|
|
517
|
+
- **Preview first.** Use `--dry-run` (cleanup, migration) and review the plan.
|
|
518
|
+
- **Verify emergency services.** E911 / emergency-callback misconfiguration is a
|
|
519
|
+
life-safety risk. Independently confirm every emergency address and ECBN after
|
|
520
|
+
any change — do not rely on the tool's read-back alone.
|
|
521
|
+
- **`cleanup run --all` is irreversible** and deletes an entire org's calling
|
|
522
|
+
config. There is no undo.
|
|
523
|
+
- **Test in a lab or sandbox org first**, especially for CUCM migrations.
|
|
524
|
+
- **You are the operator of record.** You are responsible for reviewing and
|
|
525
|
+
authorizing every action, and for compliance with your own change-control,
|
|
526
|
+
regulatory (e.g. Kari's Law / RAY BAUM's Act), and data-handling obligations.
|
|
527
|
+
|
|
528
|
+
By using this tool you accept these risks and the terms of the Apache 2.0 License.
|
|
529
|
+
|
|
530
|
+
### Credentials, secrets, and API usage
|
|
531
|
+
|
|
532
|
+
- **Tokens are stored locally in plaintext** in your wxcli config file. Treat that
|
|
533
|
+
file like a password — it grants full admin access to your Webex org. Personal
|
|
534
|
+
access tokens expire after 12 hours; OAuth/service-app tokens live longer, so
|
|
535
|
+
guard them accordingly.
|
|
536
|
+
- **CUCM AXL credentials** passed inline to `wxcli cucm discover --username/--password`
|
|
537
|
+
land in your shell history. Prefer a prompt-based flow or a throwaway shell, and
|
|
538
|
+
clear the history afterward.
|
|
539
|
+
- **The AI playbook can generate many API calls in a loop.** Long agent runs and
|
|
540
|
+
large migrations may hit Webex API rate limits; the tool retries, but you own the
|
|
541
|
+
API-usage footprint against your org.
|
|
542
|
+
|
|
496
543
|
## License
|
|
497
544
|
|
|
498
545
|
Apache 2.0 — see LICENSE.
|
|
@@ -4,6 +4,13 @@ A command-line tool and AI-assisted playbook for provisioning, managing, migrati
|
|
|
4
4
|
|
|
5
5
|
> **Unofficial community CLI — not affiliated with or endorsed by Cisco.**
|
|
6
6
|
|
|
7
|
+
> **Use at your own risk.** This software is provided "AS IS", without warranty
|
|
8
|
+
> of any kind, and the authors accept no liability for any damage, data loss, or
|
|
9
|
+
> service disruption arising from its use (see [LICENSE](LICENSE), Apache 2.0
|
|
10
|
+
> §7–8). It performs **write and delete operations against live production
|
|
11
|
+
> Webex Calling and CUCM environments**, driven in part by non-deterministic AI.
|
|
12
|
+
> You are responsible for reviewing every action before it runs.
|
|
13
|
+
|
|
7
14
|
## What It Does
|
|
8
15
|
|
|
9
16
|
- **176 CLI command groups** — provision locations, users, call features, devices, routing, PSTN, messaging, meetings, and contact center resources from the terminal
|
|
@@ -456,6 +463,46 @@ The CLI covers 176 command groups across calling, admin, device, messaging, meet
|
|
|
456
463
|
|
|
457
464
|
See [`docs/reference/authentication.md`](docs/reference/authentication.md) for full details on token types, OAuth flows, and scope requirements per endpoint.
|
|
458
465
|
|
|
466
|
+
## Disclaimer & Safe Use
|
|
467
|
+
|
|
468
|
+
wxcli is an unofficial, community-maintained tool. It is **not affiliated with,
|
|
469
|
+
endorsed by, or supported by Cisco.** "Webex", "Webex Calling", and "CUCM" are
|
|
470
|
+
Cisco trademarks, used here only to describe interoperability.
|
|
471
|
+
|
|
472
|
+
**This tool changes and deletes real telephony configuration.** The AI playbook
|
|
473
|
+
reasons and orchestrates using a large language model, which is non-deterministic:
|
|
474
|
+
the same prompt can produce different actions, and the agent can select the wrong
|
|
475
|
+
resource. The layered design (docs → skills → tested CLI, with read-back
|
|
476
|
+
verification) is built to reduce this, but **cannot eliminate it.**
|
|
477
|
+
|
|
478
|
+
Before running anything against a production org:
|
|
479
|
+
|
|
480
|
+
- **Preview first.** Use `--dry-run` (cleanup, migration) and review the plan.
|
|
481
|
+
- **Verify emergency services.** E911 / emergency-callback misconfiguration is a
|
|
482
|
+
life-safety risk. Independently confirm every emergency address and ECBN after
|
|
483
|
+
any change — do not rely on the tool's read-back alone.
|
|
484
|
+
- **`cleanup run --all` is irreversible** and deletes an entire org's calling
|
|
485
|
+
config. There is no undo.
|
|
486
|
+
- **Test in a lab or sandbox org first**, especially for CUCM migrations.
|
|
487
|
+
- **You are the operator of record.** You are responsible for reviewing and
|
|
488
|
+
authorizing every action, and for compliance with your own change-control,
|
|
489
|
+
regulatory (e.g. Kari's Law / RAY BAUM's Act), and data-handling obligations.
|
|
490
|
+
|
|
491
|
+
By using this tool you accept these risks and the terms of the Apache 2.0 License.
|
|
492
|
+
|
|
493
|
+
### Credentials, secrets, and API usage
|
|
494
|
+
|
|
495
|
+
- **Tokens are stored locally in plaintext** in your wxcli config file. Treat that
|
|
496
|
+
file like a password — it grants full admin access to your Webex org. Personal
|
|
497
|
+
access tokens expire after 12 hours; OAuth/service-app tokens live longer, so
|
|
498
|
+
guard them accordingly.
|
|
499
|
+
- **CUCM AXL credentials** passed inline to `wxcli cucm discover --username/--password`
|
|
500
|
+
land in your shell history. Prefer a prompt-based flow or a throwaway shell, and
|
|
501
|
+
clear the history afterward.
|
|
502
|
+
- **The AI playbook can generate many API calls in a loop.** Long agent runs and
|
|
503
|
+
large migrations may hit Webex API rate limits; the tool retries, but you own the
|
|
504
|
+
API-usage footprint against your org.
|
|
505
|
+
|
|
459
506
|
## License
|
|
460
507
|
|
|
461
508
|
Apache 2.0 — see LICENSE.
|
|
@@ -24,7 +24,7 @@ Before using any of the three APIs documented here, you need:
|
|
|
24
24
|
|
|
25
25
|
1. **A working auth token.** Verify with `wxcli whoami`. Token type (admin, user, service app) affects which scopes are available — see the Scopes section below.
|
|
26
26
|
|
|
27
|
-
2. **At least one cloud-registered RoomOS device
|
|
27
|
+
2. **At least one cloud-registered RoomOS device or PhoneOS 9800-series phone.** Device-configurations works on either: a Cisco Room, Board, or Desk series device (RoomOS) or a 9800-series phone (9811/9821/9841/9851/9861/9871, PhoneOS) registered to Webex cloud. xAPI requires a RoomOS device specifically. MPP phones (68xx/78xx/88xx) support neither — they use the telephony device settings API instead (see [devices-core.md](devices-core.md)).
|
|
28
28
|
|
|
29
29
|
3. **At least one workspace with a device** (for workspace-personalization). The workspace must already exist and have a device assigned to it.
|
|
30
30
|
|
|
@@ -61,7 +61,7 @@ The Device Configurations API reads and writes RoomOS configuration keys on a sp
|
|
|
61
61
|
|
|
62
62
|
Changes are applied via JSON Patch operations (`replace` to set a value, `remove` to revert to the schema default). The API supports filtering by key name, wildcard patterns, and index ranges.
|
|
63
63
|
|
|
64
|
-
This API targets RoomOS devices
|
|
64
|
+
This API targets RoomOS devices (Room, Board, Desk series) and PhoneOS 9800-series phones. The API surface is shared between the two platforms, but the reported config-key schemas differ by platform and firmware (see gotcha #11). MPP phones do not expose configuration keys through this interface.
|
|
65
65
|
|
|
66
66
|
### CLI Commands
|
|
67
67
|
|
|
@@ -28,16 +28,6 @@ Your job is to make the process structured, safe, and recoverable. You interview
|
|
|
28
28
|
|
|
29
29
|
When invoked, run these checks silently:
|
|
30
30
|
|
|
31
|
-
### 0. Register agent with wxcli gate (REQUIRED — run FIRST, before any other Bash)
|
|
32
|
-
|
|
33
|
-
The PreToolUse hook denies all `wxcli` Bash calls unless this agent has registered itself in `/tmp/.wxcli-agent-active`. Run this once at startup, before `wxcli --help` or any other command:
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
echo $PPID >> /tmp/.wxcli-agent-active
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
This appends the parent Claude Code process PID to the gate file. Multiple concurrent wxc-calling-builder agents in the same Claude Code session will append the same PID multiple times — that is expected and correct (ref-counted). The `SubagentStop` hook automatically removes one entry on every subagent exit, so no explicit teardown is required — do not run a teardown block yourself (it will over-decrement and lock out sibling agents).
|
|
40
|
-
|
|
41
31
|
### 1. CLI Environment
|
|
42
32
|
|
|
43
33
|
Check that wxcli is installed:
|
|
@@ -369,15 +359,14 @@ Read `docs/templates/deployment-plan.md` to get the template. Fill in every sect
|
|
|
369
359
|
|
|
370
360
|
Execute commands in the order specified in the deployment plan. Use wxcli CLI commands for all standard operations.
|
|
371
361
|
|
|
372
|
-
### Discovery-First Rule
|
|
362
|
+
### Discovery-First Rule
|
|
373
363
|
|
|
374
|
-
|
|
364
|
+
Discover first, act second — one broad query, evaluate, stop within 3 commands; accept a
|
|
365
|
+
negative result rather than hunting for workarounds. The rule and its false-negative guard
|
|
366
|
+
live in CLAUDE.md (§ Discovery-First Rule), which you already have in context. It applies to
|
|
367
|
+
reads and queries too, which is why it is no longer duplicated here.
|
|
375
368
|
|
|
376
|
-
|
|
377
|
-
2. **Evaluate the result** — is the target in the response?
|
|
378
|
-
3. **If yes** → proceed. **If no** → report what you found and **stop within 3 total commands**.
|
|
379
|
-
|
|
380
|
-
**Anti-pattern: refusing a negative result.** If a broad query shows the target doesn't exist, accept it. Do not try alternate key names, narrower/broader filters, the same query on a different device, speculative writes, or workaround paths. Report the negative finding — that IS the answer. Three total commands max before reporting back.
|
|
369
|
+
Example of a broad query in this domain: `wxcli device-configurations show --device-id X --key "Lines.*"`
|
|
381
370
|
|
|
382
371
|
### Progress Reporting
|
|
383
372
|
|
|
@@ -581,12 +570,9 @@ Each row names what the skill contains that is NOT in your training data. Do NOT
|
|
|
581
570
|
|
|
582
571
|
### Source of Truth Precedence
|
|
583
572
|
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
2. **Skills** — verified against live APIs; contain exact command examples
|
|
588
|
-
3. **Reference docs** — comprehensive but can lag behind skill and CLI updates
|
|
589
|
-
4. **Your training data** — least reliable; NEVER trust over the above three
|
|
573
|
+
`--help` > skills > reference docs > training data. The full rule lives in CLAUDE.md
|
|
574
|
+
(§ Source of Truth Precedence), which you already have in context; it applies to every
|
|
575
|
+
caller of `wxcli`, not just this agent, so it is no longer duplicated here.
|
|
590
576
|
|
|
591
577
|
Example: if a reference doc says `wxcli locations-api list` but the skill says `wxcli locations list`, run `wxcli locations list --help` to see which exists. If `--help` confirms `locations list` works, use that regardless of what the reference doc says.
|
|
592
578
|
|