wxcli 1.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- wxcli/__init__.py +4 -0
- wxcli/_playbook/.claude/agents/migration-advisor.md +239 -0
- wxcli/_playbook/.claude/agents/wxc-calling-builder.md +946 -0
- wxcli/_playbook/.claude/rules/cleanup.md +29 -0
- wxcli/_playbook/.claude/rules/cucm-migration.md +58 -0
- wxcli/_playbook/.claude/rules/org-health.md +14 -0
- wxcli/_playbook/.claude/settings.json +8 -0
- wxcli/_playbook/.claude/skills/audit-compliance/SKILL.md +515 -0
- wxcli/_playbook/.claude/skills/call-control/SKILL.md +747 -0
- wxcli/_playbook/.claude/skills/configure-features/SKILL.md +623 -0
- wxcli/_playbook/.claude/skills/configure-routing/SKILL.md +627 -0
- wxcli/_playbook/.claude/skills/contact-center/SKILL.md +1181 -0
- wxcli/_playbook/.claude/skills/cucm-migrate/SKILL.md +820 -0
- wxcli/_playbook/.claude/skills/customer-assist/SKILL.md +443 -0
- wxcli/_playbook/.claude/skills/device-platform/SKILL.md +407 -0
- wxcli/_playbook/.claude/skills/manage-call-settings/SKILL.md +757 -0
- wxcli/_playbook/.claude/skills/manage-devices/SKILL.md +790 -0
- wxcli/_playbook/.claude/skills/manage-identity/SKILL.md +638 -0
- wxcli/_playbook/.claude/skills/manage-licensing/SKILL.md +528 -0
- wxcli/_playbook/.claude/skills/manage-meetings/SKILL.md +708 -0
- wxcli/_playbook/.claude/skills/messaging-bots/SKILL.md +365 -0
- wxcli/_playbook/.claude/skills/messaging-spaces/SKILL.md +520 -0
- wxcli/_playbook/.claude/skills/org-health/SKILL.md +159 -0
- wxcli/_playbook/.claude/skills/provision-calling/SKILL.md +421 -0
- wxcli/_playbook/.claude/skills/query-live/SKILL.md +183 -0
- wxcli/_playbook/.claude/skills/query-live/domains/call-flow-trace.md +223 -0
- wxcli/_playbook/.claude/skills/query-live/domains/call-history.md +44 -0
- wxcli/_playbook/.claude/skills/query-live/domains/features.md +169 -0
- wxcli/_playbook/.claude/skills/query-live/domains/numbers.md +93 -0
- wxcli/_playbook/.claude/skills/query-live/domains/people-and-settings.md +146 -0
- wxcli/_playbook/.claude/skills/query-live/domains/routing.md +124 -0
- wxcli/_playbook/.claude/skills/reporting/SKILL.md +501 -0
- wxcli/_playbook/.claude/skills/reporting/references/cdr-recipes.md +1628 -0
- wxcli/_playbook/.claude/skills/reporting-cc/SKILL.md +251 -0
- wxcli/_playbook/.claude/skills/reporting-meetings/SKILL.md +290 -0
- wxcli/_playbook/.claude/skills/teardown/SKILL.md +214 -0
- wxcli/_playbook/.claude/skills/video-mesh/SKILL.md +379 -0
- wxcli/_playbook/.claude/skills/wxc-calling-debug/SKILL.md +475 -0
- wxcli/_playbook/CLAUDE.md +373 -0
- wxcli/_playbook/docs/reference/CLAUDE.md +25 -0
- wxcli/_playbook/docs/reference/admin-apps-data.md +643 -0
- wxcli/_playbook/docs/reference/admin-audit-security.md +322 -0
- wxcli/_playbook/docs/reference/admin-hybrid.md +383 -0
- wxcli/_playbook/docs/reference/admin-identity-scim.md +1007 -0
- wxcli/_playbook/docs/reference/admin-licensing.md +414 -0
- wxcli/_playbook/docs/reference/admin-org-management.md +586 -0
- wxcli/_playbook/docs/reference/admin-partner.md +357 -0
- wxcli/_playbook/docs/reference/archive/wxc-sdk-patterns.md +1229 -0
- wxcli/_playbook/docs/reference/archive/wxcadm-advanced.md +835 -0
- wxcli/_playbook/docs/reference/archive/wxcadm-core.md +743 -0
- wxcli/_playbook/docs/reference/archive/wxcadm-devices-workspaces.md +1305 -0
- wxcli/_playbook/docs/reference/archive/wxcadm-features.md +849 -0
- wxcli/_playbook/docs/reference/archive/wxcadm-locations.md +938 -0
- wxcli/_playbook/docs/reference/archive/wxcadm-person.md +1255 -0
- wxcli/_playbook/docs/reference/archive/wxcadm-routing.md +1262 -0
- wxcli/_playbook/docs/reference/authentication.md +965 -0
- wxcli/_playbook/docs/reference/call-control.md +1205 -0
- wxcli/_playbook/docs/reference/call-features-additional.md +2541 -0
- wxcli/_playbook/docs/reference/call-features-major.md +1320 -0
- wxcli/_playbook/docs/reference/call-routing.md +2304 -0
- wxcli/_playbook/docs/reference/contact-center-analytics.md +1049 -0
- wxcli/_playbook/docs/reference/contact-center-core.md +1614 -0
- wxcli/_playbook/docs/reference/contact-center-journey.md +457 -0
- wxcli/_playbook/docs/reference/contact-center-routing.md +1138 -0
- wxcli/_playbook/docs/reference/devices-core.md +1869 -0
- wxcli/_playbook/docs/reference/devices-dect.md +1150 -0
- wxcli/_playbook/docs/reference/devices-platform.md +467 -0
- wxcli/_playbook/docs/reference/devices-workspaces.md +1426 -0
- wxcli/_playbook/docs/reference/emergency-services.md +1122 -0
- wxcli/_playbook/docs/reference/location-calling-core.md +2037 -0
- wxcli/_playbook/docs/reference/location-calling-media.md +1334 -0
- wxcli/_playbook/docs/reference/location-recording-advanced.md +1482 -0
- wxcli/_playbook/docs/reference/meetings-content.md +473 -0
- wxcli/_playbook/docs/reference/meetings-core.md +903 -0
- wxcli/_playbook/docs/reference/meetings-infrastructure.md +899 -0
- wxcli/_playbook/docs/reference/meetings-settings.md +850 -0
- wxcli/_playbook/docs/reference/messaging-bots.md +1091 -0
- wxcli/_playbook/docs/reference/messaging-spaces.md +695 -0
- wxcli/_playbook/docs/reference/person-call-settings-behavior.md +1639 -0
- wxcli/_playbook/docs/reference/person-call-settings-handling.md +1394 -0
- wxcli/_playbook/docs/reference/person-call-settings-media.md +1898 -0
- wxcli/_playbook/docs/reference/person-call-settings-permissions.md +1329 -0
- wxcli/_playbook/docs/reference/provisioning.md +1366 -0
- wxcli/_playbook/docs/reference/reporting-analytics.md +1318 -0
- wxcli/_playbook/docs/reference/self-service-call-settings.md +1020 -0
- wxcli/_playbook/docs/reference/virtual-lines.md +1132 -0
- wxcli/_playbook/docs/reference/webhooks-events.md +1444 -0
- wxcli/_playbook/docs/reference/wxcadm-xsi-realtime.md +953 -0
- wxcli/_version.py +24 -0
- wxcli/auth.py +137 -0
- wxcli/commands/__init__.py +0 -0
- wxcli/commands/_registry.py +181 -0
- wxcli/commands/activation_email.py +103 -0
- wxcli/commands/admin_recordings.py +585 -0
- wxcli/commands/analytics.py +105 -0
- wxcli/commands/announcement_playlists.py +219 -0
- wxcli/commands/announcements.py +519 -0
- wxcli/commands/archive_users.py +36 -0
- wxcli/commands/attachment_actions.py +60 -0
- wxcli/commands/audit_events.py +83 -0
- wxcli/commands/authorizations.py +113 -0
- wxcli/commands/auto_attendant.py +642 -0
- wxcli/commands/broadworks_billing_reports.py +126 -0
- wxcli/commands/broadworks_enterprises.py +160 -0
- wxcli/commands/broadworks_subscribers.py +319 -0
- wxcli/commands/broadworks_workspaces.py +108 -0
- wxcli/commands/call_controls.py +1304 -0
- wxcli/commands/call_park.py +494 -0
- wxcli/commands/call_pickup.py +229 -0
- wxcli/commands/call_queue.py +1878 -0
- wxcli/commands/call_recording.py +707 -0
- wxcli/commands/call_routing.py +1610 -0
- wxcli/commands/call_settings_for_me_phase_5.py +212 -0
- wxcli/commands/caller_reputation.py +169 -0
- wxcli/commands/calling_service.py +305 -0
- wxcli/commands/cc_address_book.py +770 -0
- wxcli/commands/cc_agent_greetings.py +242 -0
- wxcli/commands/cc_agent_summaries.py +39 -0
- wxcli/commands/cc_agent_wellbeing.py +216 -0
- wxcli/commands/cc_agents.py +425 -0
- wxcli/commands/cc_ai_assistant.py +55 -0
- wxcli/commands/cc_ai_feature.py +294 -0
- wxcli/commands/cc_audio_files.py +149 -0
- wxcli/commands/cc_auto_csat.py +311 -0
- wxcli/commands/cc_aux_code.py +458 -0
- wxcli/commands/cc_business_hour.py +353 -0
- wxcli/commands/cc_call_monitoring.py +228 -0
- wxcli/commands/cc_callbacks.py +194 -0
- wxcli/commands/cc_campaign.py +212 -0
- wxcli/commands/cc_captures.py +39 -0
- wxcli/commands/cc_contact_list.py +169 -0
- wxcli/commands/cc_contact_number.py +295 -0
- wxcli/commands/cc_data_sources.py +235 -0
- wxcli/commands/cc_desktop_layout.py +380 -0
- wxcli/commands/cc_desktop_profile.py +322 -0
- wxcli/commands/cc_dial_number.py +511 -0
- wxcli/commands/cc_dial_plan.py +347 -0
- wxcli/commands/cc_dnc.py +101 -0
- wxcli/commands/cc_entry_point.py +545 -0
- wxcli/commands/cc_ewt.py +51 -0
- wxcli/commands/cc_flow.py +477 -0
- wxcli/commands/cc_global_vars.py +430 -0
- wxcli/commands/cc_holiday_list.py +335 -0
- wxcli/commands/cc_journey.py +1261 -0
- wxcli/commands/cc_legacy_flows.py +49 -0
- wxcli/commands/cc_multimedia_profile.py +436 -0
- wxcli/commands/cc_notification.py +51 -0
- wxcli/commands/cc_outdial_ani.py +604 -0
- wxcli/commands/cc_overrides.py +341 -0
- wxcli/commands/cc_queue.py +1083 -0
- wxcli/commands/cc_queue_stats.py +55 -0
- wxcli/commands/cc_realtime.py +51 -0
- wxcli/commands/cc_resource_collection.py +312 -0
- wxcli/commands/cc_search.py +46 -0
- wxcli/commands/cc_site.py +400 -0
- wxcli/commands/cc_skill.py +350 -0
- wxcli/commands/cc_skill_profile.py +289 -0
- wxcli/commands/cc_subscriptions.py +426 -0
- wxcli/commands/cc_summaries.py +130 -0
- wxcli/commands/cc_tasks.py +844 -0
- wxcli/commands/cc_team.py +325 -0
- wxcli/commands/cc_user_profiles.py +349 -0
- wxcli/commands/cc_users.py +701 -0
- wxcli/commands/cc_work_types.py +363 -0
- wxcli/commands/cdr.py +89 -0
- wxcli/commands/classifications.py +38 -0
- wxcli/commands/cleanup.py +1427 -0
- wxcli/commands/client_settings.py +72 -0
- wxcli/commands/conference.py +328 -0
- wxcli/commands/configure.py +72 -0
- wxcli/commands/converged_recordings.py +347 -0
- wxcli/commands/converged_recordings_export.py +310 -0
- wxcli/commands/cq_playlists.py +42 -0
- wxcli/commands/cucm.py +2794 -0
- wxcli/commands/cucm_config.py +129 -0
- wxcli/commands/customer_assist.py +373 -0
- wxcli/commands/data_sources.py +227 -0
- wxcli/commands/dect_devices.py +787 -0
- wxcli/commands/device_configurations.py +77 -0
- wxcli/commands/device_dynamic_settings.py +320 -0
- wxcli/commands/device_settings.py +1489 -0
- wxcli/commands/devices.py +280 -0
- wxcli/commands/domains.py +142 -0
- wxcli/commands/ecm.py +178 -0
- wxcli/commands/emergency_services.py +827 -0
- wxcli/commands/events.py +83 -0
- wxcli/commands/external_voicemail.py +52 -0
- wxcli/commands/groups.py +206 -0
- wxcli/commands/guest_management.py +76 -0
- wxcli/commands/hds.py +340 -0
- wxcli/commands/hot_desk.py +67 -0
- wxcli/commands/hot_desking_members.py +118 -0
- wxcli/commands/hot_desking_portal.py +124 -0
- wxcli/commands/hunt_group.py +577 -0
- wxcli/commands/hybrid_clusters.py +71 -0
- wxcli/commands/hybrid_connectors.py +67 -0
- wxcli/commands/identity_org.py +159 -0
- wxcli/commands/init_playbook.py +155 -0
- wxcli/commands/licenses.py +106 -0
- wxcli/commands/live_monitoring.py +40 -0
- wxcli/commands/location_call_handling.py +577 -0
- wxcli/commands/location_schedules.py +341 -0
- wxcli/commands/location_settings.py +1297 -0
- wxcli/commands/location_voicemail.py +494 -0
- wxcli/commands/locations.py +336 -0
- wxcli/commands/meeting_captions.py +110 -0
- wxcli/commands/meeting_chats.py +63 -0
- wxcli/commands/meeting_invitees.py +234 -0
- wxcli/commands/meeting_messages.py +28 -0
- wxcli/commands/meeting_participants.py +278 -0
- wxcli/commands/meeting_polls.py +111 -0
- wxcli/commands/meeting_preferences.py +515 -0
- wxcli/commands/meeting_qa.py +78 -0
- wxcli/commands/meeting_qualities.py +43 -0
- wxcli/commands/meeting_reports.py +101 -0
- wxcli/commands/meeting_session_types.py +105 -0
- wxcli/commands/meeting_site.py +57 -0
- wxcli/commands/meeting_slido.py +44 -0
- wxcli/commands/meeting_summaries.py +92 -0
- wxcli/commands/meeting_tracking_codes.py +233 -0
- wxcli/commands/meeting_transcripts.py +230 -0
- wxcli/commands/meetings.py +1997 -0
- wxcli/commands/memberships.py +164 -0
- wxcli/commands/messages.py +213 -0
- wxcli/commands/mode_management.py +244 -0
- wxcli/commands/my_call_settings.py +3577 -0
- wxcli/commands/numbers.py +405 -0
- wxcli/commands/operating_modes.py +410 -0
- wxcli/commands/org_contacts.py +284 -0
- wxcli/commands/org_health_cli.py +55 -0
- wxcli/commands/org_settings.py +71 -0
- wxcli/commands/organizations.py +83 -0
- wxcli/commands/paging_group.py +257 -0
- wxcli/commands/partner_admins.py +141 -0
- wxcli/commands/partner_reports.py +188 -0
- wxcli/commands/partner_tags.py +216 -0
- wxcli/commands/people.py +279 -0
- wxcli/commands/person_call_settings.py +71 -0
- wxcli/commands/pstn.py +280 -0
- wxcli/commands/recording_report.py +154 -0
- wxcli/commands/report_templates.py +38 -0
- wxcli/commands/reports.py +144 -0
- wxcli/commands/resource_group_memberships.py +160 -0
- wxcli/commands/resource_groups.py +67 -0
- wxcli/commands/roles.py +63 -0
- wxcli/commands/room_tabs.py +160 -0
- wxcli/commands/rooms.py +225 -0
- wxcli/commands/scim_bulk.py +46 -0
- wxcli/commands/scim_groups.py +246 -0
- wxcli/commands/scim_schemas.py +82 -0
- wxcli/commands/scim_users.py +283 -0
- wxcli/commands/security_audit.py +54 -0
- wxcli/commands/service_apps.py +51 -0
- wxcli/commands/single_number_reach.py +209 -0
- wxcli/commands/team_memberships.py +155 -0
- wxcli/commands/teams.py +153 -0
- wxcli/commands/ucm_profile.py +42 -0
- wxcli/commands/update.py +219 -0
- wxcli/commands/user_settings.py +5116 -0
- wxcli/commands/video_mesh.py +1090 -0
- wxcli/commands/virtual_extensions.py +502 -0
- wxcli/commands/virtual_line_settings.py +2072 -0
- wxcli/commands/webhooks.py +176 -0
- wxcli/commands/wholesale_billing_reports.py +147 -0
- wxcli/commands/wholesale_provisioning.py +523 -0
- wxcli/commands/workspace_locations.py +339 -0
- wxcli/commands/workspace_metrics.py +103 -0
- wxcli/commands/workspace_personalization.py +70 -0
- wxcli/commands/workspace_settings.py +3347 -0
- wxcli/commands/workspaces.py +279 -0
- wxcli/commands/xapi.py +114 -0
- wxcli/config.py +139 -0
- wxcli/errors.py +77 -0
- wxcli/main.py +210 -0
- wxcli/migration/CLAUDE.md +106 -0
- wxcli/migration/__init__.py +1 -0
- wxcli/migration/advisory/CLAUDE.md +196 -0
- wxcli/migration/advisory/__init__.py +46 -0
- wxcli/migration/advisory/advisor.py +107 -0
- wxcli/migration/advisory/advisory_patterns.py +2552 -0
- wxcli/migration/advisory/recommendation_rules.py +835 -0
- wxcli/migration/cucm/CLAUDE.md +74 -0
- wxcli/migration/cucm/__init__.py +5 -0
- wxcli/migration/cucm/connection.py +265 -0
- wxcli/migration/cucm/discovery.py +225 -0
- wxcli/migration/cucm/extractors/__init__.py +1 -0
- wxcli/migration/cucm/extractors/announcements.py +92 -0
- wxcli/migration/cucm/extractors/base.py +90 -0
- wxcli/migration/cucm/extractors/device_profiles.py +98 -0
- wxcli/migration/cucm/extractors/devices.py +193 -0
- wxcli/migration/cucm/extractors/e911.py +103 -0
- wxcli/migration/cucm/extractors/features.py +309 -0
- wxcli/migration/cucm/extractors/helpers.py +73 -0
- wxcli/migration/cucm/extractors/informational.py +295 -0
- wxcli/migration/cucm/extractors/locations.py +221 -0
- wxcli/migration/cucm/extractors/moh.py +100 -0
- wxcli/migration/cucm/extractors/remote_destinations.py +96 -0
- wxcli/migration/cucm/extractors/routing.py +493 -0
- wxcli/migration/cucm/extractors/shared_lines.py +146 -0
- wxcli/migration/cucm/extractors/templates.py +229 -0
- wxcli/migration/cucm/extractors/tier4.py +173 -0
- wxcli/migration/cucm/extractors/users.py +240 -0
- wxcli/migration/cucm/extractors/voicemail.py +243 -0
- wxcli/migration/cucm/extractors/workspaces.py +88 -0
- wxcli/migration/cucm/unity_connection.py +304 -0
- wxcli/migration/execute/CLAUDE.md +372 -0
- wxcli/migration/execute/__init__.py +303 -0
- wxcli/migration/execute/batch.py +277 -0
- wxcli/migration/execute/dependency.py +483 -0
- wxcli/migration/execute/engine.py +964 -0
- wxcli/migration/execute/handlers.py +2232 -0
- wxcli/migration/execute/planner.py +1939 -0
- wxcli/migration/execute/runtime.py +571 -0
- wxcli/migration/export/CLAUDE.md +49 -0
- wxcli/migration/export/__init__.py +8 -0
- wxcli/migration/export/csv_export.py +126 -0
- wxcli/migration/export/deployment_plan.py +479 -0
- wxcli/migration/export/json_export.py +60 -0
- wxcli/migration/models.py +941 -0
- wxcli/migration/phone_models.py +50 -0
- wxcli/migration/preflight/CLAUDE.md +52 -0
- wxcli/migration/preflight/__init__.py +89 -0
- wxcli/migration/preflight/checks.py +911 -0
- wxcli/migration/preflight/runner.py +293 -0
- wxcli/migration/rate_limiter.py +144 -0
- wxcli/migration/report/CLAUDE.md +245 -0
- wxcli/migration/report/__init__.py +7 -0
- wxcli/migration/report/appendix.py +2437 -0
- wxcli/migration/report/assembler.py +183 -0
- wxcli/migration/report/charts.py +263 -0
- wxcli/migration/report/executive.py +776 -0
- wxcli/migration/report/explainer.py +704 -0
- wxcli/migration/report/helpers.py +74 -0
- wxcli/migration/report/ingest.py +152 -0
- wxcli/migration/report/notice_templates.py +192 -0
- wxcli/migration/report/score.py +375 -0
- wxcli/migration/report/styles.py +1052 -0
- wxcli/migration/report/user_diff.py +1052 -0
- wxcli/migration/report/user_notice.py +425 -0
- wxcli/migration/state.py +139 -0
- wxcli/migration/store.py +860 -0
- wxcli/migration/transform/CLAUDE.md +107 -0
- wxcli/migration/transform/__init__.py +12 -0
- wxcli/migration/transform/analysis_pipeline.py +453 -0
- wxcli/migration/transform/analyzers/__init__.py +142 -0
- wxcli/migration/transform/analyzers/css_permission.py +189 -0
- wxcli/migration/transform/analyzers/css_routing.py +335 -0
- wxcli/migration/transform/analyzers/device_compatibility.py +122 -0
- wxcli/migration/transform/analyzers/dn_ambiguity.py +131 -0
- wxcli/migration/transform/analyzers/duplicate_user.py +221 -0
- wxcli/migration/transform/analyzers/extension_conflict.py +173 -0
- wxcli/migration/transform/analyzers/feature_approximation.py +227 -0
- wxcli/migration/transform/analyzers/layout_overflow.py +174 -0
- wxcli/migration/transform/analyzers/location_ambiguity.py +184 -0
- wxcli/migration/transform/analyzers/missing_data.py +300 -0
- wxcli/migration/transform/analyzers/selective_call_handling.py +394 -0
- wxcli/migration/transform/analyzers/shared_line.py +170 -0
- wxcli/migration/transform/analyzers/voicemail_compatibility.py +267 -0
- wxcli/migration/transform/analyzers/workspace_license.py +212 -0
- wxcli/migration/transform/cross_reference.py +1136 -0
- wxcli/migration/transform/cucm_pattern.py +246 -0
- wxcli/migration/transform/decisions.py +301 -0
- wxcli/migration/transform/e164.py +145 -0
- wxcli/migration/transform/engine.py +256 -0
- wxcli/migration/transform/mappers/CLAUDE.md +123 -0
- wxcli/migration/transform/mappers/__init__.py +76 -0
- wxcli/migration/transform/mappers/announcement_mapper.py +122 -0
- wxcli/migration/transform/mappers/base.py +190 -0
- wxcli/migration/transform/mappers/button_template_mapper.py +186 -0
- wxcli/migration/transform/mappers/call_forwarding_mapper.py +228 -0
- wxcli/migration/transform/mappers/call_settings_mapper.py +144 -0
- wxcli/migration/transform/mappers/css_mapper.py +868 -0
- wxcli/migration/transform/mappers/dect_mapper.py +367 -0
- wxcli/migration/transform/mappers/device_layout_mapper.py +289 -0
- wxcli/migration/transform/mappers/device_mapper.py +227 -0
- wxcli/migration/transform/mappers/device_profile_mapper.py +190 -0
- wxcli/migration/transform/mappers/device_settings_mapper.py +464 -0
- wxcli/migration/transform/mappers/e911_mapper.py +129 -0
- wxcli/migration/transform/mappers/ecbn_mapper.py +263 -0
- wxcli/migration/transform/mappers/executive_assistant_mapper.py +156 -0
- wxcli/migration/transform/mappers/feature_mapper.py +1179 -0
- wxcli/migration/transform/mappers/line_mapper.py +310 -0
- wxcli/migration/transform/mappers/location_mapper.py +235 -0
- wxcli/migration/transform/mappers/moh_mapper.py +114 -0
- wxcli/migration/transform/mappers/monitoring_mapper.py +221 -0
- wxcli/migration/transform/mappers/receptionist_mapper.py +245 -0
- wxcli/migration/transform/mappers/routing_mapper.py +821 -0
- wxcli/migration/transform/mappers/snr_mapper.py +201 -0
- wxcli/migration/transform/mappers/softkey_mapper.py +205 -0
- wxcli/migration/transform/mappers/user_mapper.py +264 -0
- wxcli/migration/transform/mappers/voicemail_group_mapper.py +286 -0
- wxcli/migration/transform/mappers/voicemail_mapper.py +514 -0
- wxcli/migration/transform/mappers/workspace_mapper.py +464 -0
- wxcli/migration/transform/normalizers.py +2008 -0
- wxcli/migration/transform/pattern_converter.py +106 -0
- wxcli/migration/transform/pipeline.py +271 -0
- wxcli/migration/transform/rules.py +255 -0
- wxcli/org_health/CLAUDE.md +63 -0
- wxcli/org_health/__init__.py +7 -0
- wxcli/org_health/analyze.py +93 -0
- wxcli/org_health/checks.py +458 -0
- wxcli/org_health/collector.py +62 -0
- wxcli/org_health/models.py +78 -0
- wxcli/org_health/report.py +300 -0
- wxcli/output.py +101 -0
- wxcli-1.2.0.dist-info/METADATA +505 -0
- wxcli-1.2.0.dist-info/RECORD +413 -0
- wxcli-1.2.0.dist-info/WHEEL +5 -0
- wxcli-1.2.0.dist-info/entry_points.txt +2 -0
- wxcli-1.2.0.dist-info/licenses/LICENSE +191 -0
- wxcli-1.2.0.dist-info/scm_file_list.json +751 -0
- wxcli-1.2.0.dist-info/scm_version.json +8 -0
- wxcli-1.2.0.dist-info/top_level.txt +1 -0
wxcli/__init__.py
ADDED
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: migration-advisor
|
|
3
|
+
description: |
|
|
4
|
+
CCIE Collaboration-level migration advisor for CUCM-to-Webex migrations.
|
|
5
|
+
Produces architectural reasoning narratives and guides admins through
|
|
6
|
+
decision review. Reads from a structured knowledge base, applies
|
|
7
|
+
cross-decision reasoning, and flags dissents where static heuristics
|
|
8
|
+
are likely wrong. Use when the cucm-migrate skill reaches advisory/
|
|
9
|
+
decision review phases.
|
|
10
|
+
allowed-tools:
|
|
11
|
+
- Read
|
|
12
|
+
- Grep
|
|
13
|
+
- Glob
|
|
14
|
+
- Bash
|
|
15
|
+
- Write
|
|
16
|
+
- Edit
|
|
17
|
+
- Agent
|
|
18
|
+
- AskUserQuestion
|
|
19
|
+
model: opus
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Migration Advisor Agent
|
|
23
|
+
|
|
24
|
+
You are a CCIE Collaboration-level migration advisor for CUCM-to-Webex Calling migrations. You have two modes: **analysis** and **review**. The launching prompt tells you which mode to use.
|
|
25
|
+
|
|
26
|
+
## Grounding Priority
|
|
27
|
+
|
|
28
|
+
When forming recommendations, dissents, or answering admin questions, follow this priority:
|
|
29
|
+
|
|
30
|
+
1. **Knowledge base docs** (in `docs/knowledge-base/migration/`) — Read first. Cite specific sections when they inform your reasoning. These are curated, migration-specific expertise.
|
|
31
|
+
2. **Static heuristic output** — The tested baseline from `wxcli cucm decisions`. Present static recommendations as the primary recommendation. Never override them silently.
|
|
32
|
+
3. **Your own training** — For edge cases, follow-up questions, and reasoning beyond KB + heuristics. Signal when you're drawing on general knowledge: "Based on general CUCM migration experience (not documented in the KB)..."
|
|
33
|
+
|
|
34
|
+
**Dissent triggers:** Whenever you load a KB doc, also read its `## Dissent Triggers` section (every kb-*.md has one — empty is honest). For each `DT-{DOMAIN}-NNN` entry whose `Condition` matches the current decision context, surface a dissent flag with the entry ID, the alternative recommendation, and the entry's confidence level. Dissent triggers are how Layer 2 codifies known weak spots in the static heuristics — using them is part of grounding, not optional commentary.
|
|
35
|
+
|
|
36
|
+
If you cannot answer a question from any of these three sources (e.g., it requires customer-specific business context), say so explicitly rather than speculate.
|
|
37
|
+
|
|
38
|
+
## Analysis Mode
|
|
39
|
+
|
|
40
|
+
When launched with an analysis mode prompt:
|
|
41
|
+
|
|
42
|
+
1. **Read pipeline output.** Run the commands specified in the launch prompt to get decisions, advisories, and canonical model data as JSON.
|
|
43
|
+
|
|
44
|
+
2. **Determine which KB docs to load.** Scan the pipeline output for DecisionType values and advisory pattern_name values. Map them to KB docs using this table:
|
|
45
|
+
|
|
46
|
+
**By DecisionType:**
|
|
47
|
+
| DecisionType | KB Doc |
|
|
48
|
+
|---|---|
|
|
49
|
+
| FEATURE_APPROXIMATION | kb-feature-mapping.md |
|
|
50
|
+
| DEVICE_INCOMPATIBLE | kb-device-migration.md |
|
|
51
|
+
| CSS_ROUTING_MISMATCH, CALLING_PERMISSION_MISMATCH | kb-css-routing.md |
|
|
52
|
+
| LOCATION_AMBIGUOUS | kb-location-design.md |
|
|
53
|
+
| DN_AMBIGUOUS, EXTENSION_CONFLICT, DUPLICATE_USER, NUMBER_CONFLICT | kb-identity-numbering.md |
|
|
54
|
+
| VOICEMAIL_INCOMPATIBLE, WORKSPACE_LICENSE_TIER, WORKSPACE_TYPE_UNCERTAIN | kb-user-settings.md |
|
|
55
|
+
| SHARED_LINE_COMPLEX, FORWARDING_LOSSY, SNR_LOSSY | kb-user-settings.md |
|
|
56
|
+
| HOTDESK_DN_CONFLICT, AUDIO_ASSET_MANUAL, BUTTON_UNMAPPABLE | kb-device-migration.md |
|
|
57
|
+
|
|
58
|
+
**By advisory pattern_name:**
|
|
59
|
+
| Pattern Name | KB Doc |
|
|
60
|
+
|---|---|
|
|
61
|
+
| restriction_css_consolidation, translation_pattern_elimination, partition_time_routing, partition_ordering_loss, overengineered_dial_plan, globalized_vs_localized, mixed_css, selective_call_handling_opportunities | kb-css-routing.md |
|
|
62
|
+
| pstn_connection_type, trunk_destination_consolidation, cpn_transformation_chain, transformation_patterns, trunk_type_selection, intercluster_trunks, legacy_gateway_protocols, route_list_complexity | kb-trunk-pstn.md |
|
|
63
|
+
| device_bulk_upgrade, extension_mobility_usage, dect_deployment | kb-device-migration.md |
|
|
64
|
+
| hunt_pilot_reclassification, custom_audio_assets, feature_forwarding_gaps | kb-feature-mapping.md |
|
|
65
|
+
| voicemail_pilot_simplification, shared_line_simplification, recording_enabled_users, snr_configured_users, user_oauth_required, voicemail_greeting_rerecording, call_intercept_candidates, executive_assistant_migration, receptionist_workflow_impact, workspace_settings_gaps | kb-user-settings.md |
|
|
66
|
+
| location_consolidation, e911_migration_flag | kb-location-design.md |
|
|
67
|
+
| media_resource_scope_removal, cumulative_virtual_line_consumption | kb-webex-limits.md |
|
|
68
|
+
|
|
69
|
+
**Always load:** `kb-webex-limits.md`
|
|
70
|
+
|
|
71
|
+
3. **Read the relevant KB docs.** Use the Read tool to load each mapped KB doc from `docs/knowledge-base/migration/`.
|
|
72
|
+
|
|
73
|
+
4. **Produce the migration narrative.** Write to `<project>/exports/migration-narrative.md` following this structure:
|
|
74
|
+
|
|
75
|
+
```markdown
|
|
76
|
+
# Migration Architecture Narrative
|
|
77
|
+
|
|
78
|
+
**Generated:** <timestamp>
|
|
79
|
+
**Project:** <project name>
|
|
80
|
+
**Pipeline stage:** <stage>
|
|
81
|
+
**Decision summary:** <N> total decisions (<P> pending, <R> resolved, <A> advisories)
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Executive Summary
|
|
86
|
+
[2-3 paragraphs: migration type, primary risk areas, overall complexity,
|
|
87
|
+
what the admin should pay most attention to. Readable by non-technical stakeholders.]
|
|
88
|
+
|
|
89
|
+
## Cross-Decision Analysis
|
|
90
|
+
[Interactions between decisions spanning multiple domains. Each is a subsection
|
|
91
|
+
naming specific decision IDs and the combined implication.]
|
|
92
|
+
|
|
93
|
+
## Dissent Flags
|
|
94
|
+
[Structured disagreements with static recommendations. Only when KB-grounded
|
|
95
|
+
reasoning produces a different conclusion than the heuristic.]
|
|
96
|
+
|
|
97
|
+
### Dissent: <Decision ID> - <summary>
|
|
98
|
+
**Static recommendation:** <option> - "<reasoning>"
|
|
99
|
+
**Advisor alternative:** <option> - "<KB-grounded reasoning>"
|
|
100
|
+
**Confidence:** HIGH | MEDIUM | LOW
|
|
101
|
+
**KB source:** <kb-doc-name>.md §<section>, entry **DT-{DOMAIN}-NNN** (cite the specific entry ID, not just the section name)
|
|
102
|
+
**Admin action:** <what to consider>
|
|
103
|
+
|
|
104
|
+
## Domain Summaries
|
|
105
|
+
[One subsection per active domain. Specific to THIS migration's data, not
|
|
106
|
+
generic advice. Only include domains that have decisions/advisories.]
|
|
107
|
+
|
|
108
|
+
## Risk Narrative
|
|
109
|
+
[Top 3-5 risks in prose. Each connects specific decisions to business impact.
|
|
110
|
+
Written for a project manager.]
|
|
111
|
+
|
|
112
|
+
## Questions for the Admin
|
|
113
|
+
[Things requiring human business knowledge. Each includes what you observed,
|
|
114
|
+
why it matters, and what information the admin should provide.]
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
5. **Return the full narrative text** in your response to the launching agent. Do not summarize — return the complete contents of the narrative file you just wrote. The launching agent will display it directly to the user.
|
|
118
|
+
|
|
119
|
+
**Narrative quality rules:**
|
|
120
|
+
- Every claim must be grounded — reference specific objects/properties from pipeline data
|
|
121
|
+
- Dissent flags must cite KB doc sections
|
|
122
|
+
- Every dissent flag must cite a specific `DT-{DOMAIN}-NNN` entry ID. The section name alone is insufficient — operators need the entry ID to grep to the evidence.
|
|
123
|
+
- Executive summary must be readable by non-technical stakeholders (no unexplained CUCM jargon)
|
|
124
|
+
- Cross-decision analysis must name specific decision IDs
|
|
125
|
+
|
|
126
|
+
## Review Mode
|
|
127
|
+
|
|
128
|
+
When launched with a review mode prompt:
|
|
129
|
+
|
|
130
|
+
1. **Read the migration narrative** (your prior analysis from `<project>/exports/migration-narrative.md`).
|
|
131
|
+
|
|
132
|
+
2. **Read static recommendations** from pipeline output (run wxcli cucm commands as specified).
|
|
133
|
+
|
|
134
|
+
3. **Load relevant KB docs** (same mapping as analysis mode).
|
|
135
|
+
|
|
136
|
+
4. **Present Phase A: Architecture Advisory Review.**
|
|
137
|
+
|
|
138
|
+
Pull advisories: `wxcli cucm decisions --type advisory -o json -p <project>`
|
|
139
|
+
|
|
140
|
+
Group by category and present with narrative context:
|
|
141
|
+
```
|
|
142
|
+
=== Architecture Advisory ===
|
|
143
|
+
|
|
144
|
+
[2-3 sentences from the narrative connecting advisories to this migration's architecture]
|
|
145
|
+
|
|
146
|
+
ELIMINATE (CUCM workarounds to remove):
|
|
147
|
+
1. [D0101] <summary>
|
|
148
|
+
Why this matters here: <migration-specific context from narrative>
|
|
149
|
+
[REC: accept]
|
|
150
|
+
|
|
151
|
+
REBUILD (use Webex-native patterns):
|
|
152
|
+
...
|
|
153
|
+
|
|
154
|
+
OUT OF SCOPE (separate workstreams):
|
|
155
|
+
...
|
|
156
|
+
|
|
157
|
+
MIGRATE AS-IS (informational):
|
|
158
|
+
...
|
|
159
|
+
|
|
160
|
+
Accept all advisory recommendations? [Y/n] Or review individually? [r]
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
- If **Y**: run `wxcli cucm decide <ID> accept -p <project>` for each advisory
|
|
164
|
+
- If **n**: skip advisory resolution
|
|
165
|
+
- If **r**: present each individually with accept/dismiss options
|
|
166
|
+
|
|
167
|
+
5. **Present Phase B: Per-Decision Review.**
|
|
168
|
+
|
|
169
|
+
Pull remaining decisions: `wxcli cucm decisions --status pending -o json -p <project>`
|
|
170
|
+
|
|
171
|
+
**Group 1: Auto-apply** (clear-cut, no judgment):
|
|
172
|
+
- `DEVICE_INCOMPATIBLE` with no migration path -> skip
|
|
173
|
+
- `MISSING_DATA` on already-incompatible devices -> skip
|
|
174
|
+
- `CALLING_PERMISSION_MISMATCH` with 0 affected users -> skip
|
|
175
|
+
|
|
176
|
+
**Group 2: Recommended (no dissent)** — enhanced with contextual explanation:
|
|
177
|
+
```
|
|
178
|
+
RECOMMENDED (N decisions):
|
|
179
|
+
|
|
180
|
+
1. [D0042] <summary>
|
|
181
|
+
Recommended: <option> - "<reasoning>"
|
|
182
|
+
Context: <migration-specific context connecting to related decisions>
|
|
183
|
+
Accept? [Y/n]
|
|
184
|
+
|
|
185
|
+
Accept all N recommended decisions? [Y/a individual/n reject all]
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
**Group 2b: Recommended (with dissent)** — both perspectives:
|
|
189
|
+
```
|
|
190
|
+
2. [D0048] <summary>
|
|
191
|
+
Recommended: <option> - "<reasoning>"
|
|
192
|
+
|
|
193
|
+
>>> Advisor note: <alternative reasoning with KB citation>
|
|
194
|
+
[Confidence: HIGH/MEDIUM/LOW]
|
|
195
|
+
[KB: <doc> section <section name>]
|
|
196
|
+
|
|
197
|
+
Accept system recommendation? [Y]
|
|
198
|
+
Override with advisor suggestion? [a]
|
|
199
|
+
Skip for now? [s]
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
**Group 3: Needs input** — enhanced with advisor guidance:
|
|
203
|
+
```
|
|
204
|
+
NEEDS YOUR INPUT (N decisions):
|
|
205
|
+
|
|
206
|
+
1. [D0055] <summary>
|
|
207
|
+
No system recommendation (genuinely ambiguous).
|
|
208
|
+
|
|
209
|
+
Advisor guidance: <KB-grounded analysis of this specific case>
|
|
210
|
+
|
|
211
|
+
[a] <option 1> [b] <option 2> [c] Skip
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
Resolve decisions via: `wxcli cucm decide <ID> <option> -p <project>`
|
|
215
|
+
|
|
216
|
+
6. **Handle follow-up Q&A.** When the admin asks questions:
|
|
217
|
+
- Reference KB docs and pipeline data
|
|
218
|
+
- Trace downstream impacts of choices
|
|
219
|
+
- Follow grounding priority (KB first, heuristics second, training third)
|
|
220
|
+
- Signal when drawing on training vs KB-grounded knowledge
|
|
221
|
+
|
|
222
|
+
7. **Apply auto-resolvable decisions** after admin resolves all needs-input:
|
|
223
|
+
```bash
|
|
224
|
+
wxcli cucm decide --apply-auto -y -p <project>
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
8. **Re-plan and re-export:**
|
|
228
|
+
```bash
|
|
229
|
+
wxcli cucm plan -p <project> && wxcli cucm export -p <project>
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
**CRITICAL rules for interactive review:**
|
|
233
|
+
- Number each decision sequentially (1, 2, 3...)
|
|
234
|
+
- Letter each option (a, b, c...) mapped to actual option IDs
|
|
235
|
+
- Accept compact responses: "1a, 2a, 3b" or "all a"
|
|
236
|
+
- Accept natural language: "accept for 1, workspace for 2 and 3"
|
|
237
|
+
- Confirm what was applied with a brief summary
|
|
238
|
+
- Do NOT auto-resolve needs-input decisions — wait for explicit choices
|
|
239
|
+
- Before resolving ANY decision as "skip", check downstream dependents and warn the admin
|