{
  "name": "grafana",
  "kind": "registry",
  "title": "Grafana",
  "description": "Your Grafana dashboards, alerts and Prometheus queries from the panel, with a bar item that counts what is firing. Silence an alert for an hour or a day without opening the browser.",
  "version": "0.1.0",
  "icon": {
    "tile": {
      "svg": "M23.02 10.59a8.578 8.578 0 0 0-.862-3.034 8.911 8.911 0 0 0-1.789-2.445c.337-1.342-.413-2.505-.413-2.505-1.292-.08-2.113.4-2.416.62-.052-.02-.102-.044-.154-.064-.22-.089-.446-.172-.677-.247-.231-.073-.47-.14-.711-.197a9.867 9.867 0 0 0-.875-.161C14.557.753 12.94 0 12.94 0c-1.804 1.145-2.147 2.744-2.147 2.744l-.018.093c-.098.029-.2.057-.298.088-.138.042-.275.094-.413.143-.138.055-.275.107-.41.166a8.869 8.869 0 0 0-1.557.87l-.063-.029c-2.497-.955-4.716.195-4.716.195-.203 2.658.996 4.33 1.235 4.636a11.608 11.608 0 0 0-.607 2.635C1.636 12.677.953 15.014.953 15.014c1.926 2.214 4.171 2.351 4.171 2.351.003-.002.006-.002.006-.005.285.509.615.994.986 1.446.156.19.32.371.488.548-.704 2.009.099 3.68.099 3.68 2.144.08 3.553-.937 3.849-1.173a9.784 9.784 0 0 0 3.164.501h.08l.055-.003.107-.002.103-.005.003.002c1.01 1.44 2.788 1.646 2.788 1.646 1.264-1.332 1.337-2.653 1.337-2.94v-.058c0-.02-.003-.039-.003-.06.265-.187.52-.387.758-.6a7.875 7.875 0 0 0 1.415-1.7c1.43.083 2.437-.885 2.437-.885-.236-1.49-1.085-2.216-1.264-2.354l-.018-.013-.016-.013a.217.217 0 0 1-.031-.02c.008-.092.016-.18.02-.27.011-.162.016-.323.016-.48v-.253l-.005-.098-.008-.135a1.891 1.891 0 0 0-.01-.13c-.003-.042-.008-.083-.013-.125l-.016-.124-.018-.122a6.215 6.215 0 0 0-2.032-3.73 6.015 6.015 0 0 0-3.222-1.46 6.292 6.292 0 0 0-.85-.048l-.107.002h-.063l-.044.003-.104.008a4.777 4.777 0 0 0-3.335 1.695c-.332.4-.592.84-.768 1.297a4.594 4.594 0 0 0-.312 1.817l.003.091c.005.055.007.11.013.164a3.615 3.615 0 0 0 .698 1.82 3.53 3.53 0 0 0 1.827 1.282c.33.098.66.14.971.137.039 0 .078 0 .114-.002l.063-.003c.02 0 .041-.003.062-.003.034-.002.065-.007.099-.01.007 0 .018-.003.028-.003l.031-.005.06-.008a1.18 1.18 0 0 0 .112-.02c.036-.008.072-.013.109-.024a2.634 2.634 0 0 0 .914-.415c.028-.02.056-.041.085-.065a.248.248 0 0 0 .039-.35.244.244 0 0 0-.309-.06l-.078.042c-.09.044-.184.083-.283.116a2.476 2.476 0 0 1-.475.096c-.028.003-.054.006-.083.006l-.083.002c-.026 0-.054 0-.08-.002l-.102-.006h-.012l-.024.006c-.016-.003-.031-.003-.044-.006-.031-.002-.06-.007-.091-.01a2.59 2.59 0 0 1-.724-.213 2.557 2.557 0 0 1-.667-.438 2.52 2.52 0 0 1-.805-1.475 2.306 2.306 0 0 1-.029-.444l.006-.122v-.023l.002-.031c.003-.021.003-.04.005-.06a3.163 3.163 0 0 1 1.352-2.29 3.12 3.12 0 0 1 .937-.43 2.946 2.946 0 0 1 .776-.101h.06l.07.002.045.003h.026l.07.005a4.041 4.041 0 0 1 1.635.49 3.94 3.94 0 0 1 1.602 1.662 3.77 3.77 0 0 1 .397 1.414l.005.076.003.075c.002.026.002.05.002.075 0 .024.003.052 0 .07v.065l-.002.073-.008.174a6.195 6.195 0 0 1-.08.639 5.1 5.1 0 0 1-.267.927 5.31 5.31 0 0 1-.624 1.13 5.052 5.052 0 0 1-3.237 2.014 4.82 4.82 0 0 1-.649.066l-.039.003h-.287a6.607 6.607 0 0 1-1.716-.265 6.776 6.776 0 0 1-3.4-2.274 6.75 6.75 0 0 1-.746-1.15 6.616 6.616 0 0 1-.714-2.596l-.005-.083-.002-.02v-.056l-.003-.073v-.096l-.003-.104v-.07l.003-.163c.008-.22.026-.45.054-.678a8.707 8.707 0 0 1 .28-1.355c.128-.444.286-.872.473-1.277a7.04 7.04 0 0 1 1.456-2.1 5.925 5.925 0 0 1 .953-.763c.169-.111.343-.213.524-.306.089-.05.182-.091.273-.135.047-.02.093-.042.138-.062a7.177 7.177 0 0 1 .714-.267l.145-.045c.049-.015.098-.026.148-.041.098-.029.197-.052.296-.076.049-.013.1-.02.15-.033l.15-.032.151-.028.076-.013.075-.01.153-.024c.057-.01.114-.013.171-.023l.169-.021c.036-.003.073-.008.106-.01l.073-.008.036-.003.042-.002c.057-.003.114-.008.171-.01l.086-.006h.023l.037-.003.145-.007a7.999 7.999 0 0 1 1.708.125 7.917 7.917 0 0 1 2.048.68 8.253 8.253 0 0 1 1.672 1.09l.09.077.089.078c.06.052.114.107.171.159.057.052.112.106.166.16.052.055.107.107.159.164a8.671 8.671 0 0 1 1.41 1.978c.012.026.028.052.04.078l.04.078.075.156c.023.051.05.1.07.153l.065.15a8.848 8.848 0 0 1 .45 1.34.19.19 0 0 0 .201.142.186.186 0 0 0 .172-.184c.01-.246.002-.532-.024-.856z",
      "box": 24,
      "bg": "#F46800"
    }
  },
  "author": "pal",
  "spec": "github:zcag/pal/extensions/grafana@v0.9.1",
  "source": "https://github.com/zcag/pal/tree/HEAD/extensions/grafana",
  "commit": "63287e180ce349dac3aa87c68ce4c80bc42ad409",
  "manifest": {
    "name": "grafana",
    "title": "Grafana",
    "description": "Your Grafana dashboards, alerts and Prometheus queries from the panel, with a bar item that counts what is firing. Silence an alert for an hour or a day without opening the browser.",
    "version": "0.1.0",
    "multi": true,
    "icon": {
      "tile": {
        "svg": "M23.02 10.59a8.578 8.578 0 0 0-.862-3.034 8.911 8.911 0 0 0-1.789-2.445c.337-1.342-.413-2.505-.413-2.505-1.292-.08-2.113.4-2.416.62-.052-.02-.102-.044-.154-.064-.22-.089-.446-.172-.677-.247-.231-.073-.47-.14-.711-.197a9.867 9.867 0 0 0-.875-.161C14.557.753 12.94 0 12.94 0c-1.804 1.145-2.147 2.744-2.147 2.744l-.018.093c-.098.029-.2.057-.298.088-.138.042-.275.094-.413.143-.138.055-.275.107-.41.166a8.869 8.869 0 0 0-1.557.87l-.063-.029c-2.497-.955-4.716.195-4.716.195-.203 2.658.996 4.33 1.235 4.636a11.608 11.608 0 0 0-.607 2.635C1.636 12.677.953 15.014.953 15.014c1.926 2.214 4.171 2.351 4.171 2.351.003-.002.006-.002.006-.005.285.509.615.994.986 1.446.156.19.32.371.488.548-.704 2.009.099 3.68.099 3.68 2.144.08 3.553-.937 3.849-1.173a9.784 9.784 0 0 0 3.164.501h.08l.055-.003.107-.002.103-.005.003.002c1.01 1.44 2.788 1.646 2.788 1.646 1.264-1.332 1.337-2.653 1.337-2.94v-.058c0-.02-.003-.039-.003-.06.265-.187.52-.387.758-.6a7.875 7.875 0 0 0 1.415-1.7c1.43.083 2.437-.885 2.437-.885-.236-1.49-1.085-2.216-1.264-2.354l-.018-.013-.016-.013a.217.217 0 0 1-.031-.02c.008-.092.016-.18.02-.27.011-.162.016-.323.016-.48v-.253l-.005-.098-.008-.135a1.891 1.891 0 0 0-.01-.13c-.003-.042-.008-.083-.013-.125l-.016-.124-.018-.122a6.215 6.215 0 0 0-2.032-3.73 6.015 6.015 0 0 0-3.222-1.46 6.292 6.292 0 0 0-.85-.048l-.107.002h-.063l-.044.003-.104.008a4.777 4.777 0 0 0-3.335 1.695c-.332.4-.592.84-.768 1.297a4.594 4.594 0 0 0-.312 1.817l.003.091c.005.055.007.11.013.164a3.615 3.615 0 0 0 .698 1.82 3.53 3.53 0 0 0 1.827 1.282c.33.098.66.14.971.137.039 0 .078 0 .114-.002l.063-.003c.02 0 .041-.003.062-.003.034-.002.065-.007.099-.01.007 0 .018-.003.028-.003l.031-.005.06-.008a1.18 1.18 0 0 0 .112-.02c.036-.008.072-.013.109-.024a2.634 2.634 0 0 0 .914-.415c.028-.02.056-.041.085-.065a.248.248 0 0 0 .039-.35.244.244 0 0 0-.309-.06l-.078.042c-.09.044-.184.083-.283.116a2.476 2.476 0 0 1-.475.096c-.028.003-.054.006-.083.006l-.083.002c-.026 0-.054 0-.08-.002l-.102-.006h-.012l-.024.006c-.016-.003-.031-.003-.044-.006-.031-.002-.06-.007-.091-.01a2.59 2.59 0 0 1-.724-.213 2.557 2.557 0 0 1-.667-.438 2.52 2.52 0 0 1-.805-1.475 2.306 2.306 0 0 1-.029-.444l.006-.122v-.023l.002-.031c.003-.021.003-.04.005-.06a3.163 3.163 0 0 1 1.352-2.29 3.12 3.12 0 0 1 .937-.43 2.946 2.946 0 0 1 .776-.101h.06l.07.002.045.003h.026l.07.005a4.041 4.041 0 0 1 1.635.49 3.94 3.94 0 0 1 1.602 1.662 3.77 3.77 0 0 1 .397 1.414l.005.076.003.075c.002.026.002.05.002.075 0 .024.003.052 0 .07v.065l-.002.073-.008.174a6.195 6.195 0 0 1-.08.639 5.1 5.1 0 0 1-.267.927 5.31 5.31 0 0 1-.624 1.13 5.052 5.052 0 0 1-3.237 2.014 4.82 4.82 0 0 1-.649.066l-.039.003h-.287a6.607 6.607 0 0 1-1.716-.265 6.776 6.776 0 0 1-3.4-2.274 6.75 6.75 0 0 1-.746-1.15 6.616 6.616 0 0 1-.714-2.596l-.005-.083-.002-.02v-.056l-.003-.073v-.096l-.003-.104v-.07l.003-.163c.008-.22.026-.45.054-.678a8.707 8.707 0 0 1 .28-1.355c.128-.444.286-.872.473-1.277a7.04 7.04 0 0 1 1.456-2.1 5.925 5.925 0 0 1 .953-.763c.169-.111.343-.213.524-.306.089-.05.182-.091.273-.135.047-.02.093-.042.138-.062a7.177 7.177 0 0 1 .714-.267l.145-.045c.049-.015.098-.026.148-.041.098-.029.197-.052.296-.076.049-.013.1-.02.15-.033l.15-.032.151-.028.076-.013.075-.01.153-.024c.057-.01.114-.013.171-.023l.169-.021c.036-.003.073-.008.106-.01l.073-.008.036-.003.042-.002c.057-.003.114-.008.171-.01l.086-.006h.023l.037-.003.145-.007a7.999 7.999 0 0 1 1.708.125 7.917 7.917 0 0 1 2.048.68 8.253 8.253 0 0 1 1.672 1.09l.09.077.089.078c.06.052.114.107.171.159.057.052.112.106.166.16.052.055.107.107.159.164a8.671 8.671 0 0 1 1.41 1.978c.012.026.028.052.04.078l.04.078.075.156c.023.051.05.1.07.153l.065.15a8.848 8.848 0 0 1 .45 1.34.19.19 0 0 0 .201.142.186.186 0 0 0 .172-.184c.01-.246.002-.532-.024-.856z",
        "box": 24,
        "bg": "#F46800"
      }
    },
    "author": "pal",
    "repo": "bundled",
    "license": "MIT",
    "keywords": [
      "grafana",
      "prometheus",
      "promql",
      "dashboards",
      "alerts",
      "metrics"
    ],
    "settings": [
      {
        "kind": "text",
        "id": "url",
        "required": true,
        "scope": "instance",
        "label": "URL",
        "placeholder": "https://grafana.example.com",
        "description": "Where Grafana answers, scheme included; no trailing slash needed.",
        "default": ""
      },
      {
        "kind": "secret",
        "id": "token",
        "required": true,
        "label": "Token",
        "placeholder": "keychain:pal/grafana-token",
        "description": "A service account token (Administration › Service accounts): Viewer reads everything here, Editor is needed to silence alerts. Stored as a keychain: or env: reference.",
        "default": ""
      },
      {
        "kind": "text",
        "id": "time_range",
        "label": "Time range",
        "placeholder": "now-6h",
        "description": "Appended to a dashboard's URL as from=…\u0026to=now when set (now-6h, now-24h, now-7d); leave empty to open the dashboard's own range.",
        "default": ""
      },
      {
        "kind": "text",
        "id": "datasource",
        "label": "Prometheus datasource",
        "placeholder": "prometheus",
        "description": "The datasource the Query palette runs against, by uid or name; leave empty for Grafana's default.",
        "default": ""
      },
      {
        "kind": "list",
        "id": "queries",
        "label": "Saved queries",
        "placeholder": "Targets down = up == 0",
        "description": "PromQL listed before you type in the Query palette, one `Name = expr` per line (cmd+s on a result saves the one you ran).",
        "default": [
          "Targets down = up == 0",
          "Firing alerts = ALERTS{alertstate=\"firing\"}",
          "CPU busy % = 100 - avg by (instance) (rate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100",
          "Memory used % = 100 * (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)",
          "Root disk used % = 100 * (1 - node_filesystem_avail_bytes{mountpoint=\"/\"} / node_filesystem_size_bytes{mountpoint=\"/\"})"
        ]
      },
      {
        "kind": "number",
        "id": "sparklines",
        "label": "Panels in the pane",
        "description": "How many of a dashboard's time series panels the detail pane draws: as panel images when the image renderer plugin is installed, else as sparklines from the panels' queries. 0 turns it off.",
        "min": 0,
        "max": 6,
        "step": 1,
        "default": 3
      },
      {
        "kind": "number",
        "id": "timeout",
        "label": "Timeout",
        "description": "How long one request may take before the row says Grafana did not answer.",
        "min": 1,
        "max": 60,
        "step": 1,
        "unit": "s",
        "default": 8
      }
    ],
    "palettes": {
      "grafana": {
        "title": "Grafana Dashboards",
        "description": "Every dashboard, starred first, with its folder and tags; Enter opens it in the browser with the time range you set, cmd+enter asks for one. Folders as a filter that lists them, each a drill-in.",
        "kind": "list",
        "lazy": true,
        "ttl": 900,
        "keys": [
          {
            "keys": "enter",
            "title": "Open the dashboard in the browser (with the `time_range` setting appended)"
          },
          {
            "keys": "cmd+enter",
            "title": "Open with a time range: from, to and kiosk asked in a form"
          },
          {
            "keys": "cmd+c",
            "title": "Copy the URL"
          },
          {
            "keys": "cmd+s",
            "title": "Star or unstar (the token's own stars, which sort first here)"
          },
          {
            "keys": "cmd+f",
            "title": "Open in kiosk mode (no chrome, for a wall)"
          },
          {
            "keys": "cmd+u",
            "title": "Copy the uid"
          },
          {
            "keys": "right",
            "title": "The dashboard's folder as a level"
          },
          {
            "keys": "tab",
            "title": "All, Starred, Folders"
          }
        ]
      },
      "alerts": {
        "title": "Grafana Alerts",
        "description": "Every alert instance firing or pending, by rule, with its summary, severity, labels and since when; silences as a filter, with the active silences to expire.",
        "kind": "live",
        "lazy": true,
        "ttl": 30,
        "keys": [
          {
            "keys": "enter",
            "title": "Open the rule in Grafana"
          },
          {
            "keys": "cmd+enter",
            "title": "Open the rule's dashboard"
          },
          {
            "keys": "cmd+s",
            "title": "Silence this instance for 1 hour (asks first)"
          },
          {
            "keys": "cmd+shift+s",
            "title": "Silence for 4 hours (asks first)"
          },
          {
            "keys": "cmd+d",
            "title": "Silence for 1 day (asks first)"
          },
          {
            "keys": "cmd+e",
            "title": "Expire the silence on a silenced instance, or a silence row (asks first)"
          },
          {
            "keys": "cmd+c",
            "title": "Copy the summary"
          },
          {
            "keys": "cmd+l",
            "title": "Copy the labels"
          },
          {
            "keys": "tab",
            "title": "All, Firing, Pending, Silenced"
          }
        ]
      },
      "query": {
        "title": "Grafana Query",
        "description": "A PromQL instant query against the Prometheus datasource, one row per series with its value; the saved queries before you type. Enter copies the value, cmd+o opens Explore.",
        "kind": "input",
        "keys": [
          {
            "keys": "enter",
            "title": "Copy the value (on a saved query: run it)"
          },
          {
            "keys": "cmd+enter",
            "title": "Copy the series with its value"
          },
          {
            "keys": "cmd+o",
            "title": "Open the expression in Explore"
          },
          {
            "keys": "cmd+c",
            "title": "Copy the expression"
          },
          {
            "keys": "cmd+shift+a",
            "title": "Copy every series with its value"
          },
          {
            "keys": "cmd+s",
            "title": "Save the expression under a name (the `queries` setting)"
          },
          {
            "keys": "cmd+backspace",
            "title": "Remove a saved query"
          }
        ]
      }
    },
    "links": {
      "query": {
        "description": "Open the Query palette with an expression typed",
        "params": {
          "expr": {
            "description": "The PromQL",
            "required": true
          }
        }
      },
      "open": {
        "description": "Open a dashboard in the browser",
        "params": {
          "uid": {
            "description": "The dashboard's uid",
            "required": true
          },
          "from": {
            "description": "A time range start (now-6h, an ISO date); the `time_range` setting when absent"
          },
          "to": {
            "description": "Its end; now when absent"
          },
          "kiosk": {
            "description": "Kiosk mode",
            "type": "boolean"
          }
        }
      }
    },
    "states": {
      "firing": {
        "description": "Alert instances firing",
        "kind": "number"
      },
      "pending": {
        "description": "Alert instances pending (over the threshold, inside their `for`)",
        "kind": "number"
      }
    },
    "bar": {
      "alerts": {
        "title": "Alerts",
        "description": "How many alert instances are firing (red) and pending (amber); hidden while none is, by its rules. The popover lists them by state: Enter opens the rule, o the dashboard, s silences for an hour (f four, d a day), c copies the summary.",
        "refresh": {
          "every": 60,
          "on": [
            "show",
            "wake",
            "network"
          ]
        },
        "mocks": {
          "firing": {
            "title": "Two firing",
            "item": {
              "icon": "",
              "segments": [
                {
                  "id": "firing",
                  "text": "2",
                  "color": "red"
                }
              ],
              "tooltip": "2 firing on Grafana"
            }
          },
          "mixed": {
            "title": "One firing, one pending",
            "item": {
              "icon": "",
              "segments": [
                {
                  "id": "firing",
                  "text": "1",
                  "color": "red"
                },
                {
                  "id": "pending",
                  "text": "1",
                  "color": "amber"
                }
              ],
              "tooltip": "1 firing, 1 pending on Grafana"
            }
          },
          "pending": {
            "title": "One pending, nothing firing",
            "item": {
              "icon": "",
              "segments": [
                {
                  "id": "pending",
                  "text": "1",
                  "color": "amber"
                }
              ],
              "tooltip": "1 pending on Grafana"
            }
          },
          "quiet": {
            "title": "All quiet, hidden",
            "item": {
              "hidden": true,
              "empty": {
                "icon": "",
                "tooltip": "No alert is firing on Grafana"
              }
            }
          }
        },
        "rules": [
          {
            "id": "quiet",
            "when": "not grafana.firing and not grafana.pending",
            "description": "Nothing firing or pending: nothing to say.",
            "hidden": true
          },
          {
            "id": "pending",
            "when": "grafana.pending and not grafana.firing",
            "description": "Something is over its threshold but inside its `for`.",
            "color": "amber"
          },
          {
            "id": "firing",
            "when": "grafana.firing",
            "description": "An alert is firing.",
            "color": "red"
          }
        ],
        "keys": [
          {
            "keys": "enter",
            "title": "Open the focused rule in Grafana"
          },
          {
            "keys": "o",
            "title": "Open its dashboard (the alert list without one)"
          },
          {
            "keys": "s",
            "title": "Silence the focused instance for 1 hour (asks first); on a silenced one, expire the silence"
          },
          {
            "keys": "f",
            "title": "Silence for 4 hours (asks first)"
          },
          {
            "keys": "d",
            "title": "Silence for 1 day (asks first)"
          },
          {
            "keys": "c",
            "title": "Copy the summary"
          },
          {
            "keys": "a",
            "title": "Open the alert list in Grafana"
          },
          {
            "keys": "p",
            "title": "Open Grafana Alerts in pal"
          },
          {
            "keys": "r",
            "title": "Refresh"
          },
          {
            "keys": "up",
            "title": "Move between alerts (or j and k)"
          }
        ]
      }
    },
    "store": {
      "tagline": "Dashboards, alerts and PromQL from the panel",
      "category": "developer",
      "features": [
        "Every dashboard by name, starred first, with its folder and tags; open it, pick a time range or go kiosk",
        "A preview of the dashboard's first graphs in the side pane",
        "Alerts firing and pending with summary, severity and labels; `cmd+s` silences one for an hour, `cmd+d` for a day",
        "A PromQL prompt: one row per series with its value, saved queries before you type, `cmd+o` opens Explore",
        "A bar item counting firing (red) and pending (amber) alerts, hidden while all is quiet",
        "Several Grafanas as separate instances; deep links open a query or a dashboard from a script"
      ],
      "permissions": [
        "network",
        "token"
      ],
      "platforms": [
        "macos",
        "linux"
      ],
      "screenshots": [
        {
          "file": "1-dashboards.png",
          "caption": "Every dashboard, starred first, its folder and tags on the right; the pane draws its first panels from their own queries"
        },
        {
          "file": "2-alerts.png",
          "caption": "What is firing and pending, by rule, with the summary and since when; the pane has the labels and the dashboard"
        },
        {
          "file": "3-silence.png",
          "caption": "Silence an instance for an hour, four or a day from the list, or jump to its dashboard"
        },
        {
          "file": "4-query.png",
          "caption": "A PromQL prompt: one row per series with its value; Enter copies it, ⌘O opens Explore"
        },
        {
          "file": "5-range.png",
          "caption": "⌘Enter asks for the range to open a dashboard over, and whether in kiosk mode for a wall"
        },
        {
          "file": "bar-menubar.png",
          "caption": "On the menu bar: the glyph red while something fires, then how many fire and how many are pending; hidden while all is quiet",
          "kind": "bar"
        },
        {
          "file": "bar-menubar-pending.png",
          "caption": "Only pending: the count in amber, before an alert's wait is up",
          "kind": "bar"
        },
        {
          "file": "bar-popover.png",
          "caption": "A click opens the popover: firing then pending, each with its summary and age; s silences, o opens the dashboard",
          "kind": "bar",
          "box": [
            428,
            64,
            840,
            876
          ]
        },
        {
          "file": "bar-sketchybar.png",
          "caption": "On sketchybar: the glyph and the two counts",
          "kind": "bar"
        }
      ],
      "actions": [
        {
          "title": "Open",
          "description": "The dashboard in the browser, with the `time_range` setting appended when set.",
          "keys": "enter"
        },
        {
          "title": "Open with a time range",
          "description": "From, to and kiosk asked in a form.",
          "keys": "cmd+enter"
        },
        {
          "title": "Star / Unstar",
          "keys": "cmd+s"
        },
        {
          "title": "Open in kiosk mode",
          "keys": "cmd+f"
        },
        {
          "title": "Copy URL",
          "keys": "cmd+c"
        },
        {
          "title": "Open rule",
          "description": "On an alert: the rule's page in Grafana.",
          "keys": "enter"
        },
        {
          "title": "Silence for 1 hour / 4 hours / 1 day",
          "description": "On an alert instance; asks first. Needs the Editor role.",
          "keys": "cmd+s"
        },
        {
          "title": "Expire silence",
          "description": "On a silenced instance or a silence row; asks first.",
          "keys": "cmd+e"
        },
        {
          "title": "Copy value",
          "description": "On a query result.",
          "keys": "enter"
        },
        {
          "title": "Open in Explore",
          "description": "On a query result or a saved query.",
          "keys": "cmd+o"
        }
      ]
    }
  },
  "playable": false,
  "updated_at": "2026-09-30T01:45:08Z",
  "url": "https://pal.cagdas.io/extensions/grafana",
  "tagline": "Dashboards, alerts and PromQL from the panel",
  "category": "developer",
  "screenshots": [
    "https://pal.cagdas.io/extensions/grafana/screenshots/1-dashboards-dark.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/1-dashboards.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/2-alerts-dark.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/2-alerts.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/3-silence-dark.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/3-silence.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/4-query-dark.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/4-query.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/5-range-dark.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/5-range.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/bar-menubar-dark.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/bar-menubar-pending-dark.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/bar-menubar-pending.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/bar-menubar.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/bar-popover-dark.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/bar-popover.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/bar-sketchybar-dark.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/bar-sketchybar.png"
  ],
  "panel_screenshots": [
    "https://pal.cagdas.io/extensions/grafana/screenshots/1-dashboards.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/2-alerts.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/3-silence.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/4-query.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/5-range.png"
  ],
  "bar_screenshots": [
    "https://pal.cagdas.io/extensions/grafana/screenshots/bar-menubar-pending.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/bar-menubar.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/bar-popover.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/bar-sketchybar.png"
  ],
  "panel_screenshots_dark": [
    "https://pal.cagdas.io/extensions/grafana/screenshots/1-dashboards-dark.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/2-alerts-dark.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/3-silence-dark.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/4-query-dark.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/5-range-dark.png"
  ],
  "bar_screenshots_dark": [
    "https://pal.cagdas.io/extensions/grafana/screenshots/bar-menubar-pending-dark.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/bar-menubar-dark.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/bar-popover-dark.png",
    "https://pal.cagdas.io/extensions/grafana/screenshots/bar-sketchybar-dark.png"
  ],
  "has_bar": true,
  "bar_items": [
    {
      "id": "alerts",
      "title": "Alerts",
      "description": "How many alert instances are firing (red) and pending (amber); hidden while none is, by its rules. The popover lists them by state: Enter opens the rule, o the dashboard, s silences for an hour (f four, d a day), c copies the summary.",
      "refresh": {
        "every": 60,
        "on": [
          "show",
          "wake",
          "network"
        ]
      },
      "refresh_words": "every 1 min, when the panel shows, on wake, when the network is back"
    }
  ],
  "has_links": true,
  "links": [
    {
      "route": "query",
      "url": "pal://grafana/query?expr=\u003cexpr\u003e",
      "cli": "pal call grafana/query expr=\u003cexpr\u003e",
      "description": "Open the Query palette with an expression typed",
      "params": [
        {
          "name": "expr",
          "description": "The PromQL",
          "required": true
        }
      ]
    },
    {
      "route": "open",
      "url": "pal://grafana/open?uid=\u003cuid\u003e",
      "cli": "pal call grafana/open uid=\u003cuid\u003e",
      "description": "Open a dashboard in the browser",
      "params": [
        {
          "name": "uid",
          "description": "The dashboard's uid",
          "required": true
        },
        {
          "name": "from",
          "description": "A time range start (now-6h, an ISO date); the `time_range` setting when absent"
        },
        {
          "name": "to",
          "description": "Its end; now when absent"
        },
        {
          "name": "kiosk",
          "description": "Kiosk mode",
          "type": "boolean"
        }
      ]
    }
  ],
  "multi": true,
  "has_readme": true
}
