{
  "format": "smartcom-revisited/button-set",
  "version": 1,
  "exportedAt": "2026-08-13T12:00:00.000Z",
  "exportedBy": "Smartcom Revisited",
  "sets": [
    {
      "id": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "Asterisk - Endpoints & Registrations",
      "description": "PJSIP and chan_sip endpoints, contacts, trunks and auth.",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00"
    },
    {
      "id": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Asterisk - Calls, Channels & Queues",
      "description": "Live channels, active calls, queue state and agents.",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00"
    },
    {
      "id": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Asterisk - Dialplan, Trace & System",
      "description": "Dialplan lookups, SIP trace, logs, reloads and restarts.",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00"
    }
  ],
  "macros": [
    {
      "id": "e5366d4c-afc5-54eb-b2fd-4d00930b48b5",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "PJSIP Endpoints",
      "description": "Run: asterisk -rx \"pjsip show endpoints\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"pjsip show endpoints\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "b68b47c6-27ba-5db3-aac9-be83a55df9d9",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "PJSIP Endpoint Detail",
      "description": "Run: asterisk -rx \"pjsip show endpoint {{EXTENSION}}\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"pjsip show endpoint {{EXTENSION}}\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "EXTENSION",
          "label": "Extension",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "1001",
          "description": "SIP extension or endpoint name."
        }
      ],
      "confirmBeforeRun": false
    },
    {
      "id": "369b40b9-b0ce-56a0-b5b6-6a1420edddc8",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "PJSIP Contacts",
      "description": "Run: asterisk -rx \"pjsip show contacts\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"pjsip show contacts\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "c13dff3b-40b0-52ea-ac17-19744a9b470f",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "PJSIP AORs",
      "description": "Run: asterisk -rx \"pjsip show aors\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"pjsip show aors\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "2b53ea49-0139-5f2a-a730-4a2b8f60c54e",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "PJSIP AOR Detail",
      "description": "Run: asterisk -rx \"pjsip show aor {{EXTENSION}}\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"pjsip show aor {{EXTENSION}}\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "EXTENSION",
          "label": "Extension",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "1001",
          "description": "SIP extension or endpoint name."
        }
      ],
      "confirmBeforeRun": false
    },
    {
      "id": "3f646534-1f5f-5a45-b6dd-6dc3c9d5f213",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "PJSIP Auths",
      "description": "Run: asterisk -rx \"pjsip show auths\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"pjsip show auths\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "2e9b771a-bbf7-59b7-9d24-8b2d7d8ee0be",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "PJSIP Transports",
      "description": "Run: asterisk -rx \"pjsip show transports\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"pjsip show transports\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "50ed6712-6546-51a0-96b1-2892b7c9a68e",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "PJSIP Outbound Registrations",
      "description": "Run: asterisk -rx \"pjsip show registrations\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"pjsip show registrations\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "c895d91a-bffc-5e30-87da-855e4ab14eb2",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "PJSIP Identifies",
      "description": "Run: asterisk -rx \"pjsip show identifies\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"pjsip show identifies\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "4a5ac4ac-6bd0-5a41-89a5-871a4c1313eb",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "Unreachable Endpoints",
      "description": "Run: asterisk -rx \"pjsip show contacts\" | grep -i unavail",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"pjsip show contacts\" | grep -i unavail",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "ca463e4b-2409-54b4-9ca3-35081d003d95",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "Reachable Endpoints",
      "description": "Run: asterisk -rx \"pjsip show contacts\" | grep -i avail",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"pjsip show contacts\" | grep -i avail",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "0dbbdfc0-a1b3-5aa7-9e7a-5a0e5d702253",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "Endpoint Count",
      "description": "Run: asterisk -rx \"pjsip show endpoints\" | grep -c Endpoint:",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"pjsip show endpoints\" | grep -c Endpoint:",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "7e0c2f01-ff6f-523a-922f-a2f15e9c0707",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "SIP Peers (chan_sip)",
      "description": "Run: asterisk -rx \"sip show peers\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"sip show peers\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "1bc2df1a-a973-5149-9e64-3fd32a3e96e8",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "SIP Peer Detail (chan_sip)",
      "description": "Run: asterisk -rx \"sip show peer {{EXTENSION}}\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"sip show peer {{EXTENSION}}\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "EXTENSION",
          "label": "Extension",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "1001",
          "description": "SIP extension or endpoint name."
        }
      ],
      "confirmBeforeRun": false
    },
    {
      "id": "ba1d8858-880d-513b-a29a-ffdfcf24fa80",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "SIP Registry (chan_sip)",
      "description": "Run: asterisk -rx \"sip show registry\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"sip show registry\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "d2035452-1f7c-5f0b-9f68-501084ea788c",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "IAX2 Peers",
      "description": "Run: asterisk -rx \"iax2 show peers\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"iax2 show peers\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "6fbc458f-784b-58bd-b6f8-5f8873c66205",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "IAX2 Registry",
      "description": "Run: asterisk -rx \"iax2 show registry\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"iax2 show registry\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "b13d068d-23fe-598e-9328-4dd02cdaf632",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "Registration for Trunk",
      "description": "Run: asterisk -rx \"pjsip show registration {{TRUNK}}\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"pjsip show registration {{TRUNK}}\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "TRUNK",
          "label": "Trunk",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "sip-provider",
          "description": "SIP trunk or gateway name."
        }
      ],
      "confirmBeforeRun": false
    },
    {
      "id": "fa31dff8-1bd6-5f3c-a4f9-0ec9bb28299f",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "Devices by State",
      "description": "Run: asterisk -rx \"core show hints\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"core show hints\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "cd63142a-23a7-5a25-af1c-7d40ae8d78d1",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "Hint for Extension",
      "description": "Run: asterisk -rx \"core show hint {{EXTENSION}}\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"core show hint {{EXTENSION}}\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "EXTENSION",
          "label": "Extension",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "1001",
          "description": "SIP extension or endpoint name."
        }
      ],
      "confirmBeforeRun": false
    },
    {
      "id": "af026d1c-b771-5097-95f9-1844ded521bc",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "Reload PJSIP",
      "description": "Re-reads PJSIP config. Registered phones stay registered; in-progress calls are not touched.",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"module reload res_pjsip.so\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": true
    },
    {
      "id": "3eb7fe6c-21dd-52b6-929d-b04b9dce2ab9",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "Send Outbound Registration",
      "description": "Run: asterisk -rx \"pjsip send register {{TRUNK}}\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"pjsip send register {{TRUNK}}\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "TRUNK",
          "label": "Trunk",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "sip-provider",
          "description": "SIP trunk or gateway name."
        }
      ],
      "confirmBeforeRun": true
    },
    {
      "id": "e5c147c0-44da-5ed0-9b4b-61c10c0351c6",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "Unregister Trunk",
      "description": "Run: asterisk -rx \"pjsip send unregister {{TRUNK}}\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "confirm",
          "text": "",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": true,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": [],
          "title": "Unregister Trunk",
          "message": "Unregister trunk {{TRUNK}} from the provider. Inbound calls on that trunk stop arriving until it registers again. Continue?",
          "confirmLabel": "Yes, run it",
          "cancelLabel": "Cancel"
        },
        {
          "type": "send",
          "text": "asterisk -rx \"pjsip send unregister {{TRUNK}}\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "TRUNK",
          "label": "Trunk",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "sip-provider",
          "description": "SIP trunk or gateway name."
        }
      ],
      "confirmBeforeRun": true
    },
    {
      "id": "4740a083-f848-52dd-a8a7-beee83d0b4a9",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "Reload chan_sip",
      "description": "Run: asterisk -rx \"sip reload\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "confirm",
          "text": "",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": true,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": [],
          "title": "Reload chan_sip",
          "message": "Reload chan_sip. Peers re-evaluate their config and some phones re-register — a brief window where calls can fail to route. Continue?",
          "confirmLabel": "Yes, run it",
          "cancelLabel": "Cancel"
        },
        {
          "type": "send",
          "text": "asterisk -rx \"sip reload\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": true
    },
    {
      "id": "97f07a83-7ebc-5eba-ac1d-6e7cec7a360a",
      "setId": "2db8ed5f-5062-5e2e-8b66-4da5c4bd334c",
      "name": "Qualify All Endpoints",
      "description": "Run: asterisk -rx \"pjsip qualify *\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "confirm",
          "text": "",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": true,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": [],
          "title": "Qualify All Endpoints",
          "message": "Send an OPTIONS probe to every endpoint at once. On a large PBX this is a burst of traffic that can briefly load the box. Continue?",
          "confirmLabel": "Yes, run it",
          "cancelLabel": "Cancel"
        },
        {
          "type": "send",
          "text": "asterisk -rx \"pjsip qualify *\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": true
    },
    {
      "id": "89ad4eb6-1291-5d9a-835c-b7ba0a48ccad",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Active Channels",
      "description": "Run: asterisk -rx \"core show channels\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"core show channels\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "2a300869-fd3d-544c-aad8-4078f6d75bc0",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Channel Count",
      "description": "Run: asterisk -rx \"core show channels count\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"core show channels count\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "acc7b95d-3679-5840-8a31-674ca4b2a9ca",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Channel Verbose",
      "description": "Run: asterisk -rx \"core show channels verbose\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"core show channels verbose\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "a137a2b5-0e69-5198-99c1-440989206ca1",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Channel Detail",
      "description": "Run: asterisk -rx \"core show channel {{CHANNEL}}\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"core show channel {{CHANNEL}}\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "CHANNEL",
          "label": "Channel",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "PJSIP/1001-00000001",
          "description": "Full channel identifier."
        }
      ],
      "confirmBeforeRun": false
    },
    {
      "id": "7898830e-22eb-526b-9434-aa1b40a0e327",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "PJSIP Channels",
      "description": "Run: asterisk -rx \"pjsip show channels\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"pjsip show channels\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "3793fba6-fa84-58c1-9126-0a5d78fd052f",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Active Calls Only",
      "description": "Run: asterisk -rx \"core show channels\" | grep -E \"active call|active channel\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"core show channels\" | grep -E \"active call|active channel\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "ce04d174-d180-5e66-b9c9-eb29692197f9",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Longest Running Calls",
      "description": "Run: asterisk -rx \"core show channels verbose\" | sort -k 5 -r | head -15",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"core show channels verbose\" | sort -k 5 -r | head -15",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "2e47db33-50b3-514a-8ed4-cac51532631c",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Bridged Calls",
      "description": "Run: asterisk -rx \"bridge show all\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"bridge show all\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "3d7ed8bb-a33a-5874-9482-5db8389e9a57",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Bridge Detail",
      "description": "Run: asterisk -rx \"bridge show {{ID}}\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"bridge show {{ID}}\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "ID",
          "label": "ID",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "1",
          "description": "Identifier of the object to act on."
        }
      ],
      "confirmBeforeRun": false
    },
    {
      "id": "69744b7c-b844-5a00-8ed6-ba8ab92fd926",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Queue Summary",
      "description": "Run: asterisk -rx \"queue show\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"queue show\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "f771592a-f943-5e3c-b5ab-c0bc602694ca",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Queue Detail",
      "description": "Run: asterisk -rx \"queue show {{QUEUE}}\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"queue show {{QUEUE}}\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "QUEUE",
          "label": "Queue",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "support",
          "description": "Call queue name."
        }
      ],
      "confirmBeforeRun": false
    },
    {
      "id": "25aa1717-b905-5b64-a031-ef66cf7a28cc",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Queue Statistics",
      "description": "Run: asterisk -rx \"queue show\" | grep -A 20 {{QUEUE}}",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"queue show\" | grep -A 20 {{QUEUE}}",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "QUEUE",
          "label": "Queue",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "support",
          "description": "Call queue name."
        }
      ],
      "confirmBeforeRun": false
    },
    {
      "id": "cff8fdf4-035e-563a-992f-dfc785dc6e53",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Paused Queue Members",
      "description": "Run: asterisk -rx \"queue show\" | grep -i paused",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"queue show\" | grep -i paused",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "728952ef-2377-5c89-837b-9aa66c494a4b",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Parked Calls",
      "description": "Run: asterisk -rx \"parking show\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"parking show\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "56613cbd-f5eb-5d9d-90fb-a8c60aa29f0b",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Conference Rooms",
      "description": "Run: asterisk -rx \"confbridge list\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"confbridge list\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "ef3f7c8b-ef0f-55ef-a99a-e9d858edbba7",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Conference Participants",
      "description": "Run: asterisk -rx \"confbridge list {{ID}}\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"confbridge list {{ID}}\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "ID",
          "label": "ID",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "1",
          "description": "Identifier of the object to act on."
        }
      ],
      "confirmBeforeRun": false
    },
    {
      "id": "9db65b08-b64a-5ac7-bd69-ace44300da89",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Voicemail Users",
      "description": "Run: asterisk -rx \"voicemail show users\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"voicemail show users\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "99f95cbc-0b81-5109-9773-8c74d8742502",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Voicemail Boxes with Messages",
      "description": "Run: asterisk -rx \"voicemail show users\" | grep -v \" 0 \" | head -30",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"voicemail show users\" | grep -v \" 0 \" | head -30",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "a118f219-2d74-501f-88c5-6daef97df386",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Active Recordings",
      "description": "Run: asterisk -rx \"core show channels verbose\" | grep -i record",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"core show channels verbose\" | grep -i record",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "5cbdf2e4-440b-51e4-9b88-f743ffeb5af6",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Codec Usage",
      "description": "Run: asterisk -rx \"core show channels verbose\" | awk '{print $NF}' | sort | uniq -c",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"core show channels verbose\" | awk '{print $NF}' | sort | uniq -c",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "9c247574-4807-5dfc-b2c9-981d2bf96156",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "RTP Statistics",
      "description": "Run: asterisk -rx \"rtp show stats\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"rtp show stats\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "d5815ba9-7530-5d49-88a9-f6e53d21b05d",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Add Queue Member",
      "description": "Run: asterisk -rx \"queue add member PJSIP/{{EXTENSION}} to {{QUEUE}}\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"queue add member PJSIP/{{EXTENSION}} to {{QUEUE}}\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "EXTENSION",
          "label": "Extension",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "1001",
          "description": "SIP extension or endpoint name."
        },
        {
          "name": "QUEUE",
          "label": "Queue",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "support",
          "description": "Call queue name."
        }
      ],
      "confirmBeforeRun": true
    },
    {
      "id": "d918b878-49c0-5366-9f18-ac9b0ffbbe7b",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Unpause Queue Member",
      "description": "Run: asterisk -rx \"queue unpause member PJSIP/{{EXTENSION}} queue {{QUEUE}}\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"queue unpause member PJSIP/{{EXTENSION}} queue {{QUEUE}}\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "EXTENSION",
          "label": "Extension",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "1001",
          "description": "SIP extension or endpoint name."
        },
        {
          "name": "QUEUE",
          "label": "Queue",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "support",
          "description": "Call queue name."
        }
      ],
      "confirmBeforeRun": true
    },
    {
      "id": "817d9311-a7af-55eb-af5a-28eafdbc65e0",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Originate Test Call",
      "description": "Rings an extension and connects it to a dialplan target. The phone will actually ring.",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"channel originate PJSIP/{{EXTENSION}} extension {{TARGET}}@{{CONTEXT}}\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "EXTENSION",
          "label": "Extension",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "1001",
          "description": "SIP extension or endpoint name."
        },
        {
          "name": "TARGET",
          "label": "Target extension",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "1002",
          "description": "Extension the call is connected to once answered."
        },
        {
          "name": "CONTEXT",
          "label": "Context",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "from-internal",
          "description": "Dialplan context name."
        }
      ],
      "confirmBeforeRun": true
    },
    {
      "id": "be6909d8-5390-539e-840e-350e37032d07",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Pause Queue Member",
      "description": "Run: asterisk -rx \"queue pause member PJSIP/{{EXTENSION}} queue {{QUEUE}} reason maintenance\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "confirm",
          "text": "",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": true,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": [],
          "title": "Pause Queue Member",
          "message": "Pause {{EXTENSION}} in queue {{QUEUE}}. They stop receiving queue calls until unpaused — if this leaves the queue with no agents, callers wait with nobody to answer. Continue?",
          "confirmLabel": "Yes, run it",
          "cancelLabel": "Cancel"
        },
        {
          "type": "send",
          "text": "asterisk -rx \"queue pause member PJSIP/{{EXTENSION}} queue {{QUEUE}} reason maintenance\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "EXTENSION",
          "label": "Extension",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "1001",
          "description": "SIP extension or endpoint name."
        },
        {
          "name": "QUEUE",
          "label": "Queue",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "support",
          "description": "Call queue name."
        }
      ],
      "confirmBeforeRun": true
    },
    {
      "id": "6fdcab24-b49a-5f44-94e0-7cb6764e650c",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Remove Queue Member",
      "description": "Run: asterisk -rx \"queue remove member PJSIP/{{EXTENSION}} from {{QUEUE}}\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "confirm",
          "text": "",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": true,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": [],
          "title": "Remove Queue Member",
          "message": "Remove {{EXTENSION}} from queue {{QUEUE}} entirely. If they were added statically in config, a reload puts them back; if dynamically, they are gone. Continue?",
          "confirmLabel": "Yes, run it",
          "cancelLabel": "Cancel"
        },
        {
          "type": "send",
          "text": "asterisk -rx \"queue remove member PJSIP/{{EXTENSION}} from {{QUEUE}}\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "EXTENSION",
          "label": "Extension",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "1001",
          "description": "SIP extension or endpoint name."
        },
        {
          "name": "QUEUE",
          "label": "Queue",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "support",
          "description": "Call queue name."
        }
      ],
      "confirmBeforeRun": true
    },
    {
      "id": "26c571c7-fd70-54c1-b1f3-3f5d34a7a7c8",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Hang Up Channel",
      "description": "Run: asterisk -rx \"channel request hangup {{CHANNEL}}\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "confirm",
          "text": "",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": true,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": [],
          "title": "Hang Up Channel",
          "message": "Hang up {{CHANNEL}}. That call ends immediately — the person on it hears the line drop. Continue?",
          "confirmLabel": "Yes, run it",
          "cancelLabel": "Cancel"
        },
        {
          "type": "send",
          "text": "asterisk -rx \"channel request hangup {{CHANNEL}}\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "CHANNEL",
          "label": "Channel",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "PJSIP/1001-00000001",
          "description": "Full channel identifier."
        }
      ],
      "confirmBeforeRun": true
    },
    {
      "id": "f361f1dd-b205-5b89-bffc-2a9fdaf3abe5",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Hang Up All Channels",
      "description": "Run: asterisk -rx \"channel request hangup all\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "confirm",
          "text": "",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": true,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": [],
          "title": "Hang Up All Channels",
          "message": "Hang up every call on this PBX at once. Everyone on a call is cut off with no warning. Continue?",
          "confirmLabel": "Yes, hang up every call",
          "cancelLabel": "Cancel"
        },
        {
          "type": "send",
          "text": "asterisk -rx \"channel request hangup all\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": true
    },
    {
      "id": "f16a4fe7-bdc1-5fd6-b3bd-bd3b600fd581",
      "setId": "0413c459-746b-5110-a94c-cc084bc6dc49",
      "name": "Redirect Channel",
      "description": "Run: asterisk -rx \"channel redirect {{CHANNEL}} {{TARGET}}@{{CONTEXT}}\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "confirm",
          "text": "",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": true,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": [],
          "title": "Redirect Channel",
          "message": "Move {{CHANNEL}} to another dialplan destination mid-call. The caller is transferred with no announcement. Continue?",
          "confirmLabel": "Yes, run it",
          "cancelLabel": "Cancel"
        },
        {
          "type": "send",
          "text": "asterisk -rx \"channel redirect {{CHANNEL}} {{TARGET}}@{{CONTEXT}}\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "CHANNEL",
          "label": "Channel",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "PJSIP/1001-00000001",
          "description": "Full channel identifier."
        },
        {
          "name": "TARGET",
          "label": "Target extension",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "1002",
          "description": "Where the channel is sent."
        },
        {
          "name": "CONTEXT",
          "label": "Context",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "from-internal",
          "description": "Dialplan context name."
        }
      ],
      "confirmBeforeRun": true
    },
    {
      "id": "1a62c388-297c-55b2-881c-ecdbd7e5f053",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Dialplan Contexts",
      "description": "Run: asterisk -rx \"dialplan show\" | grep \"Context\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"dialplan show\" | grep \"Context\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "1377a0cb-b172-5e13-9c17-c0de5aa25d70",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Dialplan for Context",
      "description": "Run: asterisk -rx \"dialplan show {{CONTEXT}}\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"dialplan show {{CONTEXT}}\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "CONTEXT",
          "label": "Context",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "from-internal",
          "description": "Dialplan context name."
        }
      ],
      "confirmBeforeRun": false
    },
    {
      "id": "f58813b4-7aff-5ba4-83fe-6ecd577fe942",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Dialplan for Extension",
      "description": "Run: asterisk -rx \"dialplan show {{EXTENSION}}@{{CONTEXT}}\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"dialplan show {{EXTENSION}}@{{CONTEXT}}\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "EXTENSION",
          "label": "Extension",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "1001",
          "description": "SIP extension or endpoint name."
        },
        {
          "name": "CONTEXT",
          "label": "Context",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "from-internal",
          "description": "Dialplan context name."
        }
      ],
      "confirmBeforeRun": false
    },
    {
      "id": "959ccf88-e631-550e-8af4-e2bff89237fa",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Global Variables",
      "description": "Run: asterisk -rx \"dialplan show globals\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"dialplan show globals\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "9d05c5f3-2ef7-5a7c-8ae0-481142468a50",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Dialplan Functions",
      "description": "Run: asterisk -rx \"core show functions\" | head -40",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"core show functions\" | head -40",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "8358aa87-928f-5757-b323-e5254364527e",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Applications List",
      "description": "Run: asterisk -rx \"core show applications\" | head -40",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"core show applications\" | head -40",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "61c5bcb3-eb5c-5d5f-91a0-9373f41c0925",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Loaded Modules",
      "description": "Run: asterisk -rx \"module show\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"module show\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "9fe9eacd-2ff1-54a0-b706-2b66f7f5d827",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Module Detail",
      "description": "Run: asterisk -rx \"module show like {{NAME}}\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"module show like {{NAME}}\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "NAME",
          "label": "Name",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "my-object",
          "description": "Name of the object to act on."
        }
      ],
      "confirmBeforeRun": false
    },
    {
      "id": "702065d3-8684-5182-9897-660db1877e7d",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Core Status",
      "description": "Run: asterisk -rx \"core show uptime\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"core show uptime\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "a88f8dd6-7804-5653-ac25-5f1c3b60ef4f",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Core Settings",
      "description": "Run: asterisk -rx \"core show settings\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"core show settings\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "5fcdfccc-a6df-5fff-88b7-35f87173eded",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Asterisk Version",
      "description": "Run: asterisk -rx \"core show version\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"core show version\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "b781ad80-2b62-58f9-958a-f885b93152b7",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "System Load",
      "description": "Run: asterisk -rx \"core show sysinfo\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"core show sysinfo\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "d71ca991-a61b-52be-8d2c-c90ed843c667",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Codecs Available",
      "description": "Run: asterisk -rx \"core show codecs\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"core show codecs\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "2fb96006-d243-57f8-aa2b-e42691f2cf17",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "CDR Status",
      "description": "Run: asterisk -rx \"cdr show status\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"cdr show status\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "d96f6bac-70fa-55c9-96af-55167f109e56",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "CEL Status",
      "description": "Run: asterisk -rx \"cel show status\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"cel show status\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "cbe6cb92-8370-5798-bd03-4a39d8d2bc43",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "AMI Users",
      "description": "Run: asterisk -rx \"manager show users\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"manager show users\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "e3a8f173-6575-5ee0-a09d-841bd5271d01",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "AMI Connections",
      "description": "Run: asterisk -rx \"manager show connected\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"manager show connected\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "dace9d17-d253-56e6-b14d-92c59545e322",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Log Channels",
      "description": "Run: asterisk -rx \"logger show channels\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"logger show channels\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "a7c32bd9-3573-5f81-bdaa-87a1d5274919",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Full Log Tail",
      "description": "Run: tail -{{LINES}} /var/log/asterisk/full",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "tail -{{LINES}} /var/log/asterisk/full",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "LINES",
          "label": "Lines",
          "type": "number",
          "defaultValue": "50",
          "options": [],
          "required": true,
          "description": "How many lines to show."
        }
      ],
      "confirmBeforeRun": false
    },
    {
      "id": "57fb60e2-054f-523e-b2b5-58e0000a1bb4",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Search Log",
      "description": "Run: grep {{PATTERN}} /var/log/asterisk/full | tail -{{LINES}}",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "grep {{PATTERN}} /var/log/asterisk/full | tail -{{LINES}}",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "PATTERN",
          "label": "Pattern",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "error",
          "description": "Text or regex to match."
        },
        {
          "name": "LINES",
          "label": "Lines",
          "type": "number",
          "defaultValue": "50",
          "options": [],
          "required": true,
          "description": "How many lines to show."
        }
      ],
      "confirmBeforeRun": false
    },
    {
      "id": "6f35c7fb-33f3-5d5e-84e9-e7889d269b89",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Errors in Log",
      "description": "Run: grep -iE \"error|warning\" /var/log/asterisk/full | tail -{{LINES}}",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "grep -iE \"error|warning\" /var/log/asterisk/full | tail -{{LINES}}",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "LINES",
          "label": "Lines",
          "type": "number",
          "defaultValue": "50",
          "options": [],
          "required": true,
          "description": "How many lines to show."
        }
      ],
      "confirmBeforeRun": false
    },
    {
      "id": "65e73aba-5d46-5748-990f-b40602475e76",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Log for Extension",
      "description": "Run: grep {{EXTENSION}} /var/log/asterisk/full | tail -{{LINES}}",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "grep {{EXTENSION}} /var/log/asterisk/full | tail -{{LINES}}",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "EXTENSION",
          "label": "Extension",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "1001",
          "description": "SIP extension or endpoint name."
        },
        {
          "name": "LINES",
          "label": "Lines",
          "type": "number",
          "defaultValue": "50",
          "options": [],
          "required": true,
          "description": "How many lines to show."
        }
      ],
      "confirmBeforeRun": false
    },
    {
      "id": "85f51481-0bb0-5fe1-adca-52d897f143f0",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Messages Log",
      "description": "Run: tail -{{LINES}} /var/log/asterisk/messages",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "tail -{{LINES}} /var/log/asterisk/messages",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "LINES",
          "label": "Lines",
          "type": "number",
          "defaultValue": "50",
          "options": [],
          "required": true,
          "description": "How many lines to show."
        }
      ],
      "confirmBeforeRun": false
    },
    {
      "id": "59dfba71-a3b5-5853-83f9-445d9fead82c",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Asterisk Process",
      "description": "Run: ps aux | grep [a]sterisk",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "ps aux | grep [a]sterisk",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "ba59cada-4948-5ffc-8ca0-afcfca3c798c",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Asterisk Service Status",
      "description": "Run: systemctl status asterisk --no-pager",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "systemctl status asterisk --no-pager",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "57d3be93-8685-5630-9bd1-71ae50ed0be6",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Disk Space for Recordings",
      "description": "Run: df -h /var/spool/asterisk",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "df -h /var/spool/asterisk",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "4dc27683-09e1-5717-812c-3373ff335285",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Recording Directory Size",
      "description": "Run: du -sh /var/spool/asterisk/monitor 2>/dev/null",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "du -sh /var/spool/asterisk/monitor 2>/dev/null",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": false,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": false
    },
    {
      "id": "4773f9f9-ba0b-598b-af7e-77f0275852ac",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Enable PJSIP Logger",
      "description": "Writes full SIP messages to the log. Turn it off again — it is noisy and fills the disk on a busy PBX.",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"pjsip set logger on\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": true
    },
    {
      "id": "c88c56db-ef85-5ba8-a808-284e0348f7c2",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Disable PJSIP Logger",
      "description": "Run: asterisk -rx \"pjsip set logger off\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"pjsip set logger off\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": true
    },
    {
      "id": "7c2eb4a0-5e9f-5024-bcca-6de6161b77cc",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Enable SIP Debug for Peer",
      "description": "Run: asterisk -rx \"sip set debug peer {{EXTENSION}}\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"sip set debug peer {{EXTENSION}}\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "EXTENSION",
          "label": "Extension",
          "type": "text",
          "defaultValue": "",
          "options": [],
          "required": true,
          "placeholder": "1001",
          "description": "SIP extension or endpoint name."
        }
      ],
      "confirmBeforeRun": true
    },
    {
      "id": "a87044f8-0ff9-531b-90f2-ace762dde59a",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Disable SIP Debug",
      "description": "Run: asterisk -rx \"sip set debug off\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"sip set debug off\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": true
    },
    {
      "id": "2577fa1e-cf9b-532f-a620-4ec12f035444",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Set Verbose Level",
      "description": "Run: asterisk -rx \"core set verbose {{LEVEL}}\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"core set verbose {{LEVEL}}\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [
        {
          "name": "LEVEL",
          "label": "Verbosity",
          "type": "select",
          "defaultValue": "3",
          "options": [
            "0",
            "1",
            "3",
            "5",
            "10"
          ],
          "required": true,
          "description": "Higher is noisier. 0 turns console verbosity off."
        }
      ],
      "confirmBeforeRun": true
    },
    {
      "id": "ba806dfb-6cdd-59e8-9205-2714ea625bbe",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Reload Dialplan",
      "description": "Run: asterisk -rx \"dialplan reload\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"dialplan reload\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": true
    },
    {
      "id": "81b55142-a6a9-5775-90be-61b7c8a7e2b0",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Reload Queues",
      "description": "Run: asterisk -rx \"queue reload all\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"queue reload all\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": true
    },
    {
      "id": "7af1f310-486a-57c1-a4c0-bc2169f82d47",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Rotate Logs",
      "description": "Run: asterisk -rx \"logger rotate\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "send",
          "text": "asterisk -rx \"logger rotate\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": true
    },
    {
      "id": "8c6cae80-12ee-5670-8c2f-a4e4dadcb957",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Reload All Config",
      "description": "Run: asterisk -rx \"core reload\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "confirm",
          "text": "",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": true,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": [],
          "title": "Reload All Config",
          "message": "Reload every module's configuration. Calls in progress usually survive, but registrations and queues re-evaluate and a bad config file takes effect immediately. Continue?",
          "confirmLabel": "Yes, run it",
          "cancelLabel": "Cancel"
        },
        {
          "type": "send",
          "text": "asterisk -rx \"core reload\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": true
    },
    {
      "id": "5c027583-0c23-5721-b580-01a281dafc47",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Graceful Restart",
      "description": "Run: asterisk -rx \"core restart gracefully\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "confirm",
          "text": "",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": true,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": [],
          "title": "Graceful Restart",
          "message": "Restart Asterisk once every current call has ended. New calls are refused from now until it comes back, so on a busy PBX this can hold for a long time. Continue?",
          "confirmLabel": "Yes, run it",
          "cancelLabel": "Cancel"
        },
        {
          "type": "send",
          "text": "asterisk -rx \"core restart gracefully\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": true
    },
    {
      "id": "0dc21a94-ae33-54ce-a6a9-eb2390208fed",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Restart When Convenient",
      "description": "Run: asterisk -rx \"core restart when convenient\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "confirm",
          "text": "",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": true,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": [],
          "title": "Restart When Convenient",
          "message": "Restart Asterisk at the next moment there are no calls. Timing is not under your control, so the outage lands without warning. Continue?",
          "confirmLabel": "Yes, run it",
          "cancelLabel": "Cancel"
        },
        {
          "type": "send",
          "text": "asterisk -rx \"core restart when convenient\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": true
    },
    {
      "id": "9e373b2f-992b-51ab-a3f3-a68a5d01b6ed",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Restart Now",
      "description": "Run: asterisk -rx \"core restart now\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "confirm",
          "text": "",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": true,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": [],
          "title": "Restart Now",
          "message": "Restart Asterisk immediately. Every call in progress is cut off mid-conversation. Continue?",
          "confirmLabel": "Yes, restart now",
          "cancelLabel": "Cancel"
        },
        {
          "type": "send",
          "text": "asterisk -rx \"core restart now\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": true
    },
    {
      "id": "cc269c78-82b6-5f9d-8760-0aa1626537c8",
      "setId": "5103672e-c58d-5570-a0a9-75a3633662cd",
      "name": "Stop Asterisk Gracefully",
      "description": "Run: asterisk -rx \"core stop gracefully\"",
      "createdAt": "2026-08-13 12:00:00",
      "updatedAt": "2026-08-13 12:00:00",
      "steps": [
        {
          "type": "confirm",
          "text": "",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": true,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": [],
          "title": "Stop Asterisk Gracefully",
          "message": "Stop Asterisk once calls have ended. The PBX will not come back on its own — you need service control to start it again. Continue?",
          "confirmLabel": "Yes, stop Asterisk",
          "cancelLabel": "Cancel"
        },
        {
          "type": "send",
          "text": "asterisk -rx \"core stop gracefully\"",
          "appendEnter": true,
          "delayMs": 0,
          "destructive": true,
          "fields": [],
          "exitAll": false,
          "cleanupAfterRun": true,
          "args": {},
          "continueOnError": false,
          "thenSteps": [],
          "elseSteps": []
        }
      ],
      "placeholders": [],
      "fields": [],
      "confirmBeforeRun": true
    }
  ]
}
