@64mb/freelens-power 1.2.2 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/out/main/common/store/monitoring-preferences-store.js +10 -0
- package/out/main/common/store/monitoring-preferences-store.js.map +1 -1
- package/out/renderer/ai-diagnostic-handoff.js +52 -0
- package/out/renderer/ai-diagnostic-handoff.js.map +1 -0
- package/out/renderer/ai-extras.js +40 -4
- package/out/renderer/ai-extras.js.map +1 -1
- package/out/renderer/ai.js +48 -56
- package/out/renderer/ai.js.map +1 -1
- package/out/renderer/details/hpa-diagnostics-details.js +46 -0
- package/out/renderer/details/hpa-diagnostics-details.js.map +1 -0
- package/out/renderer/details/namespace-health-details.js +91 -0
- package/out/renderer/details/namespace-health-details.js.map +1 -0
- package/out/renderer/details/resource-health-details.js +135 -0
- package/out/renderer/details/resource-health-details.js.map +1 -0
- package/out/renderer/details/service-diagnostics-details.js +163 -0
- package/out/renderer/details/service-diagnostics-details.js.map +1 -0
- package/out/renderer/diagnostic-explain-button.js +16 -0
- package/out/renderer/diagnostic-explain-button.js.map +1 -0
- package/out/renderer/diagnostics-state.js +53 -0
- package/out/renderer/diagnostics-state.js.map +1 -0
- package/out/renderer/diagnostics.css.js +10 -1
- package/out/renderer/diagnostics.css.js.map +1 -1
- package/out/renderer/diagnostics.js +486 -114
- package/out/renderer/diagnostics.js.map +1 -1
- package/out/renderer/incident-copy-button.js +50 -0
- package/out/renderer/incident-copy-button.js.map +1 -0
- package/out/renderer/index.js +91 -19
- package/out/renderer/index.js.map +1 -1
- package/out/renderer/monitoring-history-collection.js +1 -1
- package/out/renderer/monitoring.js +15 -0
- package/out/renderer/monitoring.js.map +1 -1
- package/out/renderer/preferences/monitoring-preferences.js +10 -0
- package/out/renderer/preferences/monitoring-preferences.js.map +1 -1
- package/out/renderer/preferences/preferences.js +98 -0
- package/out/renderer/preferences/preferences.js.map +1 -1
- package/out/renderer/resource-relationships.css.js +7 -0
- package/out/renderer/resource-relationships.css.js.map +1 -0
- package/out/renderer/resource-relationships.js +571 -0
- package/out/renderer/resource-relationships.js.map +1 -0
- package/out/renderer/resource-search-distance.js +24 -0
- package/out/renderer/resource-search-distance.js.map +1 -0
- package/out/renderer/resource-search-fields.js +55 -0
- package/out/renderer/resource-search-fields.js.map +1 -0
- package/out/renderer/resource-search-model.js +193 -0
- package/out/renderer/resource-search-model.js.map +1 -0
- package/out/renderer/resource-search.js +365 -0
- package/out/renderer/resource-search.js.map +1 -0
- package/out/renderer/src/common/hpa-diagnostics.js +24 -0
- package/out/renderer/src/common/hpa-diagnostics.js.map +1 -0
- package/out/renderer/src/common/incident-summary.js +73 -0
- package/out/renderer/src/common/incident-summary.js.map +1 -0
- package/out/renderer/src/common/resource-health.js +92 -0
- package/out/renderer/src/common/resource-health.js.map +1 -0
- package/out/renderer/src/common/resource-relationships.js +155 -0
- package/out/renderer/src/common/resource-relationships.js.map +1 -0
- package/out/renderer/src/common/service-diagnostics.js +50 -0
- package/out/renderer/src/common/service-diagnostics.js.map +1 -0
- package/out/renderer/src/common/store/monitoring-preferences-store.js +10 -0
- package/out/renderer/src/common/store/monitoring-preferences-store.js.map +1 -1
- package/out/renderer/src/common/timeline-groups.js +36 -0
- package/out/renderer/src/common/timeline-groups.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
const require_extensions = require("../_virtual/_global-external_@freelensapp/extensions.js");
|
|
2
|
+
const require__global_external_mobx_react = require("../_virtual/_global-external_mobx-react.js");
|
|
3
|
+
const require_ai_preferences_store = require("../src/common/store/ai-preferences-store.js");
|
|
4
|
+
const require_jsx_runtime = require("../_virtual/_global-external_react/jsx-runtime.js");
|
|
5
|
+
const require_ai_diagnostic_handoff = require("../ai-diagnostic-handoff.js");
|
|
6
|
+
const require_resource_health = require("../src/common/resource-health.js");
|
|
7
|
+
//#region src/renderer/details/resource-health-details.tsx
|
|
8
|
+
var { Button, DrawerItem, DrawerTitle, Icon } = require_extensions.Renderer.Component;
|
|
9
|
+
var actionStyle = {
|
|
10
|
+
display: "inline-flex",
|
|
11
|
+
alignItems: "center",
|
|
12
|
+
justifyContent: "center",
|
|
13
|
+
gap: 6,
|
|
14
|
+
minHeight: 28,
|
|
15
|
+
padding: "4px 8px"
|
|
16
|
+
};
|
|
17
|
+
var ResourceHealthDetails = require__global_external_mobx_react.observer(({ object, onOpenDiagnostics }) => {
|
|
18
|
+
const health = require_resource_health.summarizeObjectHealth(object);
|
|
19
|
+
const namespace = object.getNs();
|
|
20
|
+
const clusterId = require_extensions.Renderer.Catalog.activeCluster.get()?.metadata.uid;
|
|
21
|
+
const aiEnabled = require_ai_preferences_store.AiPreferencesStore.getInstanceOrCreate().enabled;
|
|
22
|
+
const askAi = () => {
|
|
23
|
+
if (!clusterId || !require_ai_preferences_store.AiPreferencesStore.getInstanceOrCreate().enabled) return;
|
|
24
|
+
const name = object.getName();
|
|
25
|
+
require_ai_diagnostic_handoff.explainDiagnosticFinding({
|
|
26
|
+
clusterId,
|
|
27
|
+
title: `${object.kind} ${name}: operational summary`.slice(0, 160),
|
|
28
|
+
summary: [...health.rows.map((row) => `${row.name}: ${row.value}`), ...health.issue ? [`Key issue: ${health.issue}`] : []].join("\n").slice(0, 6e3),
|
|
29
|
+
resource: {
|
|
30
|
+
kind: object.kind,
|
|
31
|
+
name,
|
|
32
|
+
...namespace ? { namespace } : {}
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
const node = object.spec?.nodeName;
|
|
37
|
+
const open = (path) => {
|
|
38
|
+
Promise.resolve(require_extensions.Renderer.Navigation.showDetails(path)).catch(() => {});
|
|
39
|
+
};
|
|
40
|
+
return /* @__PURE__ */ require_jsx_runtime.jsxs("section", {
|
|
41
|
+
className: "power-operational-summary",
|
|
42
|
+
style: { marginBottom: 16 },
|
|
43
|
+
children: [
|
|
44
|
+
/* @__PURE__ */ require_jsx_runtime.jsx("style", { children: `
|
|
45
|
+
.power-operational-summary > .DrawerTitle.power-operational-title { margin-bottom: 10px; }
|
|
46
|
+
.power-operational-summary .power-resource-action::before { content: none; }
|
|
47
|
+
.power-operational-summary .power-resource-action { border: 1px solid var(--borderFaintColor); background: var(--buttonDefaultBackground); transition: background-color 140ms, border-color 140ms; }
|
|
48
|
+
.power-operational-summary .power-resource-action:not(:disabled):hover { background: color-mix(in srgb, var(--buttonDefaultBackground) 85%, var(--textColorPrimary)); border-color: var(--borderColor); }
|
|
49
|
+
.power-operational-summary .power-resource-action:active { filter: brightness(1.12); }
|
|
50
|
+
.power-operational-summary .power-resource-action:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
|
|
51
|
+
` }),
|
|
52
|
+
/* @__PURE__ */ require_jsx_runtime.jsx(DrawerTitle, {
|
|
53
|
+
className: "power-operational-title",
|
|
54
|
+
children: "Operational summary"
|
|
55
|
+
}),
|
|
56
|
+
/* @__PURE__ */ require_jsx_runtime.jsx(DrawerItem, {
|
|
57
|
+
name: "Health",
|
|
58
|
+
children: /* @__PURE__ */ require_jsx_runtime.jsxs("span", {
|
|
59
|
+
style: {
|
|
60
|
+
color: health.state === "healthy" ? "var(--colorOk)" : health.state === "warning" ? "var(--colorWarning)" : "var(--textColorSecondary)",
|
|
61
|
+
display: "inline-flex",
|
|
62
|
+
alignItems: "center",
|
|
63
|
+
gap: 6
|
|
64
|
+
},
|
|
65
|
+
children: [/* @__PURE__ */ require_jsx_runtime.jsx(Icon, { material: health.state === "healthy" ? "check_circle" : health.state === "warning" ? "warning" : "help_outline" }), health.state === "healthy" ? "Healthy" : health.state === "warning" ? "Needs attention" : "Unknown"]
|
|
66
|
+
})
|
|
67
|
+
}),
|
|
68
|
+
health.rows.map((row) => /* @__PURE__ */ require_jsx_runtime.jsx(DrawerItem, {
|
|
69
|
+
name: row.name,
|
|
70
|
+
children: row.value
|
|
71
|
+
}, row.name)),
|
|
72
|
+
health.issue && /* @__PURE__ */ require_jsx_runtime.jsx(DrawerItem, {
|
|
73
|
+
name: "Key issue",
|
|
74
|
+
children: health.issue
|
|
75
|
+
}),
|
|
76
|
+
namespace && object.kind !== "Namespace" && /* @__PURE__ */ require_jsx_runtime.jsx(DrawerItem, {
|
|
77
|
+
name: "Namespace",
|
|
78
|
+
children: /* @__PURE__ */ require_jsx_runtime.jsx("button", {
|
|
79
|
+
type: "button",
|
|
80
|
+
className: "link",
|
|
81
|
+
onClick: () => open(require_extensions.Renderer.K8sApi.namespacesApi.getUrl({ name: namespace })),
|
|
82
|
+
children: namespace
|
|
83
|
+
})
|
|
84
|
+
}),
|
|
85
|
+
/* @__PURE__ */ require_jsx_runtime.jsx(DrawerItem, {
|
|
86
|
+
name: "Investigate",
|
|
87
|
+
children: /* @__PURE__ */ require_jsx_runtime.jsxs("span", {
|
|
88
|
+
style: {
|
|
89
|
+
display: "flex",
|
|
90
|
+
flexWrap: "wrap",
|
|
91
|
+
gap: 12
|
|
92
|
+
},
|
|
93
|
+
children: [onOpenDiagnostics && /* @__PURE__ */ require_jsx_runtime.jsxs(Button, {
|
|
94
|
+
className: "power-resource-action",
|
|
95
|
+
onClick: () => onOpenDiagnostics(namespace, {
|
|
96
|
+
kind: object.kind,
|
|
97
|
+
name: object.metadata.name ?? object.getName(),
|
|
98
|
+
uid: object.metadata.uid
|
|
99
|
+
}),
|
|
100
|
+
style: actionStyle,
|
|
101
|
+
children: [/* @__PURE__ */ require_jsx_runtime.jsx(Icon, {
|
|
102
|
+
material: "insights",
|
|
103
|
+
size: 14,
|
|
104
|
+
"aria-hidden": "true"
|
|
105
|
+
}), " Open Diagnostics"]
|
|
106
|
+
}), /* @__PURE__ */ require_jsx_runtime.jsxs(Button, {
|
|
107
|
+
className: "power-resource-action",
|
|
108
|
+
onClick: askAi,
|
|
109
|
+
disabled: !aiEnabled || !clusterId,
|
|
110
|
+
title: !aiEnabled ? "Enable the AI assistant in settings" : !clusterId ? "Select a connected cluster" : "Attach this summary to the AI chat",
|
|
111
|
+
style: actionStyle,
|
|
112
|
+
children: [/* @__PURE__ */ require_jsx_runtime.jsx(Icon, {
|
|
113
|
+
material: "auto_awesome",
|
|
114
|
+
size: 14,
|
|
115
|
+
"aria-hidden": "true"
|
|
116
|
+
}), " Ask AI"]
|
|
117
|
+
})]
|
|
118
|
+
})
|
|
119
|
+
}),
|
|
120
|
+
node && /* @__PURE__ */ require_jsx_runtime.jsx(DrawerItem, {
|
|
121
|
+
name: "Node",
|
|
122
|
+
children: /* @__PURE__ */ require_jsx_runtime.jsx("button", {
|
|
123
|
+
type: "button",
|
|
124
|
+
className: "link",
|
|
125
|
+
onClick: () => open(require_extensions.Renderer.K8sApi.nodesApi.getUrl({ name: node })),
|
|
126
|
+
children: node
|
|
127
|
+
})
|
|
128
|
+
})
|
|
129
|
+
]
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
//#endregion
|
|
133
|
+
exports.ResourceHealthDetails = ResourceHealthDetails;
|
|
134
|
+
|
|
135
|
+
//# sourceMappingURL=resource-health-details.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-health-details.js","names":[],"sources":["../../../src/renderer/details/resource-health-details.tsx"],"sourcesContent":["import { Renderer } from \"@freelensapp/extensions\";\nimport { observer } from \"mobx-react\";\nimport { type HealthObject, summarizeObjectHealth } from \"../../common/resource-health\";\nimport { AiPreferencesStore } from \"../../common/store/ai-preferences-store\";\nimport { explainDiagnosticFinding } from \"../ai-diagnostic-handoff\";\n\nconst { Button, DrawerItem, DrawerTitle, Icon } = Renderer.Component;\nconst actionStyle = {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 6,\n minHeight: 28,\n padding: \"4px 8px\",\n} as const;\n\nexport type ResourceHealthDetailsProps = Renderer.Component.KubeObjectDetailsProps & {\n onOpenDiagnostics?: (namespace?: string, resource?: { kind: string; name: string; uid?: string }) => void;\n};\n\nexport const ResourceHealthDetails = observer(({ object, onOpenDiagnostics }: ResourceHealthDetailsProps) => {\n const health = summarizeObjectHealth(object as HealthObject);\n const namespace = object.getNs();\n const clusterId = Renderer.Catalog.activeCluster.get()?.metadata.uid;\n const aiEnabled = AiPreferencesStore.getInstanceOrCreate<AiPreferencesStore>().enabled;\n const askAi = () => {\n if (!clusterId || !AiPreferencesStore.getInstanceOrCreate<AiPreferencesStore>().enabled) return;\n const name = object.getName();\n explainDiagnosticFinding({\n clusterId,\n title: `${object.kind} ${name}: operational summary`.slice(0, 160),\n summary: [\n ...health.rows.map((row) => `${row.name}: ${row.value}`),\n ...(health.issue ? [`Key issue: ${health.issue}`] : []),\n ]\n .join(\"\\n\")\n .slice(0, 6000),\n resource: { kind: object.kind, name, ...(namespace ? { namespace } : {}) },\n });\n };\n const node = (object as HealthObject).spec?.nodeName;\n const open = (path: string) => {\n void Promise.resolve(Renderer.Navigation.showDetails(path)).catch(() => {});\n };\n return (\n <section className=\"power-operational-summary\" style={{ marginBottom: 16 }}>\n <style>{`\n .power-operational-summary > .DrawerTitle.power-operational-title { margin-bottom: 10px; }\n .power-operational-summary .power-resource-action::before { content: none; }\n .power-operational-summary .power-resource-action { border: 1px solid var(--borderFaintColor); background: var(--buttonDefaultBackground); transition: background-color 140ms, border-color 140ms; }\n .power-operational-summary .power-resource-action:not(:disabled):hover { background: color-mix(in srgb, var(--buttonDefaultBackground) 85%, var(--textColorPrimary)); border-color: var(--borderColor); }\n .power-operational-summary .power-resource-action:active { filter: brightness(1.12); }\n .power-operational-summary .power-resource-action:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }\n `}</style>\n <DrawerTitle className=\"power-operational-title\">Operational summary</DrawerTitle>\n <DrawerItem name=\"Health\">\n <span\n style={{\n color:\n health.state === \"healthy\"\n ? \"var(--colorOk)\"\n : health.state === \"warning\"\n ? \"var(--colorWarning)\"\n : \"var(--textColorSecondary)\",\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 6,\n }}\n >\n <Icon\n material={\n health.state === \"healthy\" ? \"check_circle\" : health.state === \"warning\" ? \"warning\" : \"help_outline\"\n }\n />\n {health.state === \"healthy\" ? \"Healthy\" : health.state === \"warning\" ? \"Needs attention\" : \"Unknown\"}\n </span>\n </DrawerItem>\n {health.rows.map((row) => (\n <DrawerItem key={row.name} name={row.name}>\n {row.value}\n </DrawerItem>\n ))}\n {health.issue && <DrawerItem name=\"Key issue\">{health.issue}</DrawerItem>}\n {namespace && object.kind !== \"Namespace\" && (\n <DrawerItem name=\"Namespace\">\n <button\n type=\"button\"\n className=\"link\"\n onClick={() => open(Renderer.K8sApi.namespacesApi.getUrl({ name: namespace }))}\n >\n {namespace}\n </button>\n </DrawerItem>\n )}\n <DrawerItem name=\"Investigate\">\n <span style={{ display: \"flex\", flexWrap: \"wrap\", gap: 12 }}>\n {onOpenDiagnostics && (\n <Button\n className=\"power-resource-action\"\n onClick={() =>\n onOpenDiagnostics(namespace, {\n kind: object.kind,\n name: object.metadata.name ?? object.getName(),\n uid: object.metadata.uid,\n })\n }\n style={actionStyle}\n >\n <Icon material=\"insights\" size={14} aria-hidden=\"true\" /> Open Diagnostics\n </Button>\n )}\n <Button\n className=\"power-resource-action\"\n onClick={askAi}\n disabled={!aiEnabled || !clusterId}\n title={\n !aiEnabled\n ? \"Enable the AI assistant in settings\"\n : !clusterId\n ? \"Select a connected cluster\"\n : \"Attach this summary to the AI chat\"\n }\n style={actionStyle}\n >\n <Icon material=\"auto_awesome\" size={14} aria-hidden=\"true\" /> Ask AI\n </Button>\n </span>\n </DrawerItem>\n {node && (\n <DrawerItem name=\"Node\">\n <button type=\"button\" className=\"link\" onClick={() => open(Renderer.K8sApi.nodesApi.getUrl({ name: node }))}>\n {node}\n </button>\n </DrawerItem>\n )}\n </section>\n );\n});\n"],"mappings":"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"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
const require_extensions = require("../_virtual/_global-external_@freelensapp/extensions.js");
|
|
2
|
+
const require__global_external_mobx_react = require("../_virtual/_global-external_mobx-react.js");
|
|
3
|
+
const require__global_external_react = require("../_virtual/_global-external_react.js");
|
|
4
|
+
const require_jsx_runtime = require("../_virtual/_global-external_react/jsx-runtime.js");
|
|
5
|
+
const require_service_diagnostics = require("../src/common/service-diagnostics.js");
|
|
6
|
+
//#region src/renderer/details/service-diagnostics-details.tsx
|
|
7
|
+
var { DrawerTitle, DrawerItem, Icon } = require_extensions.Renderer.Component;
|
|
8
|
+
var ServiceDiagnosticsDetails = require__global_external_mobx_react.observer(({ object }) => {
|
|
9
|
+
const [expanded, setExpanded] = require__global_external_react.useState(false);
|
|
10
|
+
const [refresh, setRefresh] = require__global_external_react.useState(0);
|
|
11
|
+
const [evidence, setEvidence] = require__global_external_react.useState({ loaded: false });
|
|
12
|
+
const namespace = object.getNs();
|
|
13
|
+
const name = object.getName();
|
|
14
|
+
const external = object.spec.type === "ExternalName";
|
|
15
|
+
require__global_external_react.useEffect(() => {
|
|
16
|
+
let active = true;
|
|
17
|
+
setEvidence({ loaded: false });
|
|
18
|
+
setExpanded(false);
|
|
19
|
+
if (external) {
|
|
20
|
+
setEvidence({ loaded: true });
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const load = async () => {
|
|
24
|
+
const [pods, slices] = await Promise.allSettled([require_extensions.Renderer.K8sApi.podsApi.list({ namespace }), require_extensions.Renderer.K8sApi.endpointSliceApi.list({ namespace }, { labelSelector: `kubernetes.io/service-name=${name}` })]);
|
|
25
|
+
if (active) setEvidence({
|
|
26
|
+
loaded: true,
|
|
27
|
+
pods: pods.status === "fulfilled" ? pods.value ?? void 0 : void 0,
|
|
28
|
+
slices: slices.status === "fulfilled" ? slices.value ?? void 0 : void 0
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
load();
|
|
32
|
+
return () => {
|
|
33
|
+
active = false;
|
|
34
|
+
};
|
|
35
|
+
}, [
|
|
36
|
+
namespace,
|
|
37
|
+
name,
|
|
38
|
+
external,
|
|
39
|
+
refresh
|
|
40
|
+
]);
|
|
41
|
+
const result = require_service_diagnostics.diagnoseService(object, evidence.pods, evidence.slices);
|
|
42
|
+
const partial = !evidence.loaded || evidence.pods === void 0 || evidence.slices === void 0 || !!result.readyEndpoints && result.missingEndpointPorts;
|
|
43
|
+
const warning = !partial && !external && !!result.matchingPods && (!result.matchingPods.length || !result.readyEndpoints || result.readyPods?.length !== result.matchingPods.length || result.ports.some((port) => port.unresolved || port.numericMismatch));
|
|
44
|
+
const healthy = !partial && !external && !!result.matchingPods?.length && !warning;
|
|
45
|
+
const summaryColor = warning ? "var(--colorWarning)" : healthy ? "var(--colorOk)" : "var(--textColorSecondary)";
|
|
46
|
+
const listLimit = expanded ? Infinity : 5;
|
|
47
|
+
const hidden = Math.max(0, (result.matchingPods?.length ?? 0) - 5) + Math.max(0, (result.matchingSlices?.length ?? 0) - 5);
|
|
48
|
+
return /* @__PURE__ */ require_jsx_runtime.jsxs(require_jsx_runtime.Fragment, { children: [
|
|
49
|
+
/* @__PURE__ */ require_jsx_runtime.jsx(DrawerTitle, { children: /* @__PURE__ */ require_jsx_runtime.jsxs("span", {
|
|
50
|
+
style: {
|
|
51
|
+
display: "flex",
|
|
52
|
+
alignItems: "center",
|
|
53
|
+
justifyContent: "space-between",
|
|
54
|
+
gap: 8,
|
|
55
|
+
width: "100%"
|
|
56
|
+
},
|
|
57
|
+
children: [/* @__PURE__ */ require_jsx_runtime.jsx("span", {
|
|
58
|
+
style: {
|
|
59
|
+
flex: 1,
|
|
60
|
+
minWidth: 0
|
|
61
|
+
},
|
|
62
|
+
children: "Service backend diagnostics"
|
|
63
|
+
}), !external && /* @__PURE__ */ require_jsx_runtime.jsx("button", {
|
|
64
|
+
type: "button",
|
|
65
|
+
title: "Refresh backend evidence",
|
|
66
|
+
"aria-label": "Refresh evidence",
|
|
67
|
+
disabled: !evidence.loaded,
|
|
68
|
+
style: {
|
|
69
|
+
display: "inline-flex",
|
|
70
|
+
alignItems: "center",
|
|
71
|
+
justifyContent: "center",
|
|
72
|
+
width: 32,
|
|
73
|
+
height: 32,
|
|
74
|
+
flexShrink: 0,
|
|
75
|
+
padding: 0,
|
|
76
|
+
background: "transparent",
|
|
77
|
+
border: 0,
|
|
78
|
+
color: "var(--textColorSecondary)",
|
|
79
|
+
cursor: evidence.loaded ? "pointer" : "default",
|
|
80
|
+
opacity: evidence.loaded ? 1 : .4
|
|
81
|
+
},
|
|
82
|
+
onClick: () => setRefresh((value) => value + 1),
|
|
83
|
+
children: /* @__PURE__ */ require_jsx_runtime.jsx(Icon, {
|
|
84
|
+
material: "refresh",
|
|
85
|
+
tooltip: "Refresh backend evidence",
|
|
86
|
+
size: 18
|
|
87
|
+
})
|
|
88
|
+
})]
|
|
89
|
+
}) }),
|
|
90
|
+
/* @__PURE__ */ require_jsx_runtime.jsx(DrawerItem, {
|
|
91
|
+
name: "Summary",
|
|
92
|
+
children: /* @__PURE__ */ require_jsx_runtime.jsxs("span", {
|
|
93
|
+
style: { color: summaryColor },
|
|
94
|
+
children: [
|
|
95
|
+
/* @__PURE__ */ require_jsx_runtime.jsx(Icon, { material: warning ? "warning" : healthy ? "check_circle" : "info" }),
|
|
96
|
+
" ",
|
|
97
|
+
evidence.loaded ? result.summary : "Loading backend evidence…"
|
|
98
|
+
]
|
|
99
|
+
})
|
|
100
|
+
}),
|
|
101
|
+
evidence.loaded && /* @__PURE__ */ require_jsx_runtime.jsxs(require_jsx_runtime.Fragment, { children: [
|
|
102
|
+
/* @__PURE__ */ require_jsx_runtime.jsx(DrawerItem, {
|
|
103
|
+
name: "Selector",
|
|
104
|
+
children: Object.entries(object.spec.selector ?? {}).map(([k, v]) => `${k}=${v}`).join(", ") || "None"
|
|
105
|
+
}),
|
|
106
|
+
result.ports.map((p) => /* @__PURE__ */ require_jsx_runtime.jsxs(DrawerItem, {
|
|
107
|
+
name: `Port ${p.name}`,
|
|
108
|
+
children: [
|
|
109
|
+
p.protocol,
|
|
110
|
+
" → ",
|
|
111
|
+
p.target,
|
|
112
|
+
" · EndpointSlice ports: ",
|
|
113
|
+
p.endpointPorts.join(", ") || "unavailable",
|
|
114
|
+
p.unresolved ? ` · named target unresolved in ${p.unresolved} selected pods` : "",
|
|
115
|
+
p.numericMismatch ? " · EndpointSlice port differs from numeric target" : ""
|
|
116
|
+
]
|
|
117
|
+
}, p.name)),
|
|
118
|
+
result.matchingPods?.slice(0, listLimit).map((pod) => /* @__PURE__ */ require_jsx_runtime.jsx(DrawerItem, {
|
|
119
|
+
name: "Selected pod",
|
|
120
|
+
children: /* @__PURE__ */ require_jsx_runtime.jsx("button", {
|
|
121
|
+
type: "button",
|
|
122
|
+
onClick: () => require_extensions.Renderer.Navigation.showDetails(pod.selfLink),
|
|
123
|
+
style: {
|
|
124
|
+
background: "transparent",
|
|
125
|
+
border: 0,
|
|
126
|
+
padding: 0,
|
|
127
|
+
color: "var(--primary)",
|
|
128
|
+
cursor: "pointer"
|
|
129
|
+
},
|
|
130
|
+
children: pod.getName()
|
|
131
|
+
})
|
|
132
|
+
}, pod.metadata.uid)),
|
|
133
|
+
result.matchingSlices?.slice(0, listLimit).map((slice) => /* @__PURE__ */ require_jsx_runtime.jsx(DrawerItem, {
|
|
134
|
+
name: `EndpointSlice (${slice.addressType})`,
|
|
135
|
+
children: /* @__PURE__ */ require_jsx_runtime.jsx("button", {
|
|
136
|
+
type: "button",
|
|
137
|
+
onClick: () => require_extensions.Renderer.Navigation.showDetails(slice.selfLink),
|
|
138
|
+
style: {
|
|
139
|
+
background: "transparent",
|
|
140
|
+
border: 0,
|
|
141
|
+
padding: 0,
|
|
142
|
+
color: "var(--primary)",
|
|
143
|
+
cursor: "pointer"
|
|
144
|
+
},
|
|
145
|
+
children: slice.getName()
|
|
146
|
+
})
|
|
147
|
+
}, slice.metadata.uid)),
|
|
148
|
+
hidden > 0 && /* @__PURE__ */ require_jsx_runtime.jsx("button", {
|
|
149
|
+
type: "button",
|
|
150
|
+
onClick: () => setExpanded((value) => !value),
|
|
151
|
+
children: expanded ? "Show fewer resources" : `Show ${hidden} more resources`
|
|
152
|
+
}),
|
|
153
|
+
result.limitations.map((item) => /* @__PURE__ */ require_jsx_runtime.jsx(DrawerItem, {
|
|
154
|
+
name: "Scope",
|
|
155
|
+
children: item
|
|
156
|
+
}, item))
|
|
157
|
+
] })
|
|
158
|
+
] });
|
|
159
|
+
});
|
|
160
|
+
//#endregion
|
|
161
|
+
exports.ServiceDiagnosticsDetails = ServiceDiagnosticsDetails;
|
|
162
|
+
|
|
163
|
+
//# sourceMappingURL=service-diagnostics-details.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-diagnostics-details.js","names":[],"sources":["../../../src/renderer/details/service-diagnostics-details.tsx"],"sourcesContent":["import { Renderer } from \"@freelensapp/extensions\";\nimport { observer } from \"mobx-react\";\nimport { useEffect, useState } from \"react\";\nimport { diagnoseService } from \"../../common/service-diagnostics\";\n\nconst { DrawerTitle, DrawerItem, Icon } = Renderer.Component;\ntype Evidence = { pods?: Renderer.K8sApi.Pod[]; slices?: Renderer.K8sApi.EndpointSlice[]; loaded: boolean };\nexport const ServiceDiagnosticsDetails = observer(\n ({ object }: Renderer.Component.KubeObjectDetailsProps<Renderer.K8sApi.Service>) => {\n const [expanded, setExpanded] = useState(false);\n const [refresh, setRefresh] = useState(0);\n const [evidence, setEvidence] = useState<Evidence>({ loaded: false });\n const namespace = object.getNs();\n const name = object.getName();\n const external = object.spec.type === \"ExternalName\";\n useEffect(() => {\n let active = true;\n setEvidence({ loaded: false });\n setExpanded(false);\n if (external) {\n setEvidence({ loaded: true });\n return;\n }\n const load = async () => {\n const [pods, slices] = await Promise.allSettled([\n Renderer.K8sApi.podsApi.list({ namespace }),\n Renderer.K8sApi.endpointSliceApi.list({ namespace }, { labelSelector: `kubernetes.io/service-name=${name}` }),\n ]);\n if (active)\n setEvidence({\n loaded: true,\n pods: pods.status === \"fulfilled\" ? (pods.value ?? undefined) : undefined,\n slices: slices.status === \"fulfilled\" ? (slices.value ?? undefined) : undefined,\n });\n };\n void load();\n return () => {\n active = false;\n };\n }, [namespace, name, external, refresh]);\n const result = diagnoseService(object, evidence.pods, evidence.slices);\n const partial =\n !evidence.loaded ||\n evidence.pods === undefined ||\n evidence.slices === undefined ||\n (!!result.readyEndpoints && result.missingEndpointPorts);\n const warning =\n !partial &&\n !external &&\n !!result.matchingPods &&\n (!result.matchingPods.length ||\n !result.readyEndpoints ||\n result.readyPods?.length !== result.matchingPods.length ||\n result.ports.some((port) => port.unresolved || port.numericMismatch));\n const healthy = !partial && !external && !!result.matchingPods?.length && !warning;\n const summaryColor = warning ? \"var(--colorWarning)\" : healthy ? \"var(--colorOk)\" : \"var(--textColorSecondary)\";\n const listLimit = expanded ? Infinity : 5;\n const hidden =\n Math.max(0, (result.matchingPods?.length ?? 0) - 5) + Math.max(0, (result.matchingSlices?.length ?? 0) - 5);\n return (\n <>\n <DrawerTitle>\n <span\n style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 8, width: \"100%\" }}\n >\n <span style={{ flex: 1, minWidth: 0 }}>Service backend diagnostics</span>\n {!external && (\n <button\n type=\"button\"\n title=\"Refresh backend evidence\"\n aria-label=\"Refresh evidence\"\n disabled={!evidence.loaded}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 32,\n height: 32,\n flexShrink: 0,\n padding: 0,\n background: \"transparent\",\n border: 0,\n color: \"var(--textColorSecondary)\",\n cursor: evidence.loaded ? \"pointer\" : \"default\",\n opacity: evidence.loaded ? 1 : 0.4,\n }}\n onClick={() => setRefresh((value) => value + 1)}\n >\n <Icon material=\"refresh\" tooltip=\"Refresh backend evidence\" size={18} />\n </button>\n )}\n </span>\n </DrawerTitle>\n <DrawerItem name=\"Summary\">\n <span style={{ color: summaryColor }}>\n <Icon material={warning ? \"warning\" : healthy ? \"check_circle\" : \"info\"} />{\" \"}\n {evidence.loaded ? result.summary : \"Loading backend evidence…\"}\n </span>\n </DrawerItem>\n {evidence.loaded && (\n <>\n <DrawerItem name=\"Selector\">\n {Object.entries(object.spec.selector ?? {})\n .map(([k, v]) => `${k}=${v}`)\n .join(\", \") || \"None\"}\n </DrawerItem>\n {result.ports.map((p) => (\n <DrawerItem key={p.name} name={`Port ${p.name}`}>\n {p.protocol} → {p.target} · EndpointSlice ports: {p.endpointPorts.join(\", \") || \"unavailable\"}\n {p.unresolved ? ` · named target unresolved in ${p.unresolved} selected pods` : \"\"}\n {p.numericMismatch ? \" · EndpointSlice port differs from numeric target\" : \"\"}\n </DrawerItem>\n ))}\n {result.matchingPods?.slice(0, listLimit).map((pod) => (\n <DrawerItem key={pod.metadata.uid} name=\"Selected pod\">\n <button\n type=\"button\"\n onClick={() => Renderer.Navigation.showDetails(pod.selfLink)}\n style={{\n background: \"transparent\",\n border: 0,\n padding: 0,\n color: \"var(--primary)\",\n cursor: \"pointer\",\n }}\n >\n {pod.getName()}\n </button>\n </DrawerItem>\n ))}\n {result.matchingSlices?.slice(0, listLimit).map((slice) => (\n <DrawerItem key={slice.metadata.uid} name={`EndpointSlice (${slice.addressType})`}>\n <button\n type=\"button\"\n onClick={() => Renderer.Navigation.showDetails(slice.selfLink)}\n style={{\n background: \"transparent\",\n border: 0,\n padding: 0,\n color: \"var(--primary)\",\n cursor: \"pointer\",\n }}\n >\n {slice.getName()}\n </button>\n </DrawerItem>\n ))}\n {hidden > 0 && (\n <button type=\"button\" onClick={() => setExpanded((value) => !value)}>\n {expanded ? \"Show fewer resources\" : `Show ${hidden} more resources`}\n </button>\n )}\n {result.limitations.map((item) => (\n <DrawerItem key={item} name=\"Scope\">\n {item}\n </DrawerItem>\n ))}\n </>\n )}\n </>\n );\n },\n);\n"],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const require__global_external_mobx_react = require("./_virtual/_global-external_mobx-react.js");
|
|
2
|
+
const require_ai_preferences_store = require("./src/common/store/ai-preferences-store.js");
|
|
3
|
+
const require_jsx_runtime = require("./_virtual/_global-external_react/jsx-runtime.js");
|
|
4
|
+
//#region src/renderer/diagnostic-explain-button.tsx
|
|
5
|
+
var DiagnosticExplainButton = require__global_external_mobx_react.observer(function DiagnosticExplainButton(props) {
|
|
6
|
+
const enabled = require_ai_preferences_store.AiPreferencesStore.getInstanceOrCreate().enabled;
|
|
7
|
+
return /* @__PURE__ */ require_jsx_runtime.jsx("button", {
|
|
8
|
+
...props,
|
|
9
|
+
disabled: !enabled || props.disabled,
|
|
10
|
+
title: enabled ? props.title : "Enable AI in Power settings to explain this finding"
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
//#endregion
|
|
14
|
+
exports.DiagnosticExplainButton = DiagnosticExplainButton;
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=diagnostic-explain-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostic-explain-button.js","names":[],"sources":["../../src/renderer/diagnostic-explain-button.tsx"],"sourcesContent":["import { observer } from \"mobx-react\";\nimport { AiPreferencesStore } from \"../common/store/ai-preferences-store\";\n\nimport type { ButtonHTMLAttributes } from \"react\";\n\nexport const DiagnosticExplainButton = observer(function DiagnosticExplainButton(\n props: ButtonHTMLAttributes<HTMLButtonElement>,\n) {\n const enabled = AiPreferencesStore.getInstanceOrCreate<AiPreferencesStore>().enabled;\n return (\n <button\n {...props}\n disabled={!enabled || props.disabled}\n title={enabled ? props.title : \"Enable AI in Power settings to explain this finding\"}\n />\n );\n});\n"],"mappings":";;;;AAKA,IAAa,0BAA0B,oCAAA,SAAS,SAAS,wBACvD,OACA;CACA,MAAM,UAAU,6BAAA,mBAAmB,oBAAwC,CAAC,CAAC;CAC7E,OACE,oCAAA,IAAC,UAAD;EACE,GAAI;EACJ,UAAU,CAAC,WAAW,MAAM;EAC5B,OAAO,UAAU,MAAM,QAAQ;CAChC,CAAA;AAEL,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
//#region src/renderer/diagnostics-state.ts
|
|
2
|
+
var states = /* @__PURE__ */ new Map();
|
|
3
|
+
function readDiagnosticsState(clusterId) {
|
|
4
|
+
return states.get(clusterId) ?? {
|
|
5
|
+
tab: "Consumers",
|
|
6
|
+
filter: "",
|
|
7
|
+
needsAttention: true,
|
|
8
|
+
groupMode: "workload",
|
|
9
|
+
namespacesOpen: [],
|
|
10
|
+
sort: "cpu",
|
|
11
|
+
expanded: [],
|
|
12
|
+
selected: "",
|
|
13
|
+
pendingUid: "",
|
|
14
|
+
reason: "",
|
|
15
|
+
warningOnly: true,
|
|
16
|
+
groupedTimeline: true,
|
|
17
|
+
openTimeline: [],
|
|
18
|
+
scrollTop: 0
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function saveDiagnosticsState(clusterId, state) {
|
|
22
|
+
if (!clusterId) return;
|
|
23
|
+
states.delete(clusterId);
|
|
24
|
+
states.set(clusterId, state);
|
|
25
|
+
if (states.size > 30) states.delete(states.keys().next().value);
|
|
26
|
+
}
|
|
27
|
+
var DIAGNOSTICS_NAMESPACE_EVENT = "power-diagnostics-namespace";
|
|
28
|
+
function focusDiagnosticsNamespace(clusterId, namespace, resourceScope) {
|
|
29
|
+
if (!clusterId || !namespace && !resourceScope) return;
|
|
30
|
+
saveDiagnosticsState(clusterId, {
|
|
31
|
+
...readDiagnosticsState(clusterId),
|
|
32
|
+
tab: "Consumers",
|
|
33
|
+
namespaceScope: namespace,
|
|
34
|
+
resourceScope,
|
|
35
|
+
filter: "",
|
|
36
|
+
needsAttention: false,
|
|
37
|
+
groupMode: namespace ? "namespace" : "workload",
|
|
38
|
+
namespacesOpen: namespace ? [namespace] : [],
|
|
39
|
+
scrollTop: 0
|
|
40
|
+
});
|
|
41
|
+
window.dispatchEvent(new CustomEvent(DIAGNOSTICS_NAMESPACE_EVENT, { detail: {
|
|
42
|
+
clusterId,
|
|
43
|
+
namespace,
|
|
44
|
+
resourceScope
|
|
45
|
+
} }));
|
|
46
|
+
}
|
|
47
|
+
//#endregion
|
|
48
|
+
exports.DIAGNOSTICS_NAMESPACE_EVENT = DIAGNOSTICS_NAMESPACE_EVENT;
|
|
49
|
+
exports.focusDiagnosticsNamespace = focusDiagnosticsNamespace;
|
|
50
|
+
exports.readDiagnosticsState = readDiagnosticsState;
|
|
51
|
+
exports.saveDiagnosticsState = saveDiagnosticsState;
|
|
52
|
+
|
|
53
|
+
//# sourceMappingURL=diagnostics-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics-state.js","names":[],"sources":["../../src/renderer/diagnostics-state.ts"],"sourcesContent":["export interface DiagnosticsResourceScope {\n kind: string;\n name: string;\n uid?: string;\n}\n\nexport interface DiagnosticsViewState {\n tab: \"Consumers\" | \"Timeline\" | \"Pending\" | \"Not ready\";\n filter: string;\n namespaceScope?: string;\n resourceScope?: DiagnosticsResourceScope;\n needsAttention: boolean;\n groupMode: string;\n namespacesOpen: string[];\n sort: string;\n expanded: string[];\n selected: string;\n pendingUid: string;\n notReadyUid?: string;\n reason: string;\n warningOnly: boolean;\n groupedTimeline: boolean;\n openTimeline: string[];\n scrollTop: number;\n}\n// renderer memory stores view preferences only, never snapshots or resource contents\nconst states = new Map<string, DiagnosticsViewState>();\nexport function readDiagnosticsState(clusterId: string): DiagnosticsViewState {\n return (\n states.get(clusterId) ?? {\n tab: \"Consumers\",\n filter: \"\",\n needsAttention: true,\n groupMode: \"workload\",\n namespacesOpen: [],\n sort: \"cpu\",\n expanded: [],\n selected: \"\",\n pendingUid: \"\",\n reason: \"\",\n warningOnly: true,\n groupedTimeline: true,\n openTimeline: [],\n scrollTop: 0,\n }\n );\n}\nexport function saveDiagnosticsState(clusterId: string, state: DiagnosticsViewState): void {\n if (!clusterId) return;\n states.delete(clusterId);\n states.set(clusterId, state);\n if (states.size > 30) states.delete(states.keys().next().value!);\n}\nexport function clearDiagnosticsStates(): void {\n states.clear();\n}\n\nexport const DIAGNOSTICS_NAMESPACE_EVENT = \"power-diagnostics-namespace\";\nexport function focusDiagnosticsNamespace(\n clusterId: string,\n namespace?: string,\n resourceScope?: DiagnosticsResourceScope,\n): void {\n if (!clusterId || (!namespace && !resourceScope)) return;\n saveDiagnosticsState(clusterId, {\n ...readDiagnosticsState(clusterId),\n tab: \"Consumers\",\n namespaceScope: namespace,\n resourceScope,\n filter: \"\",\n needsAttention: false,\n groupMode: namespace ? \"namespace\" : \"workload\",\n namespacesOpen: namespace ? [namespace] : [],\n scrollTop: 0,\n });\n window.dispatchEvent(\n new CustomEvent(DIAGNOSTICS_NAMESPACE_EVENT, { detail: { clusterId, namespace, resourceScope } }),\n );\n}\n"],"mappings":";AA0BA,IAAM,yBAAS,IAAI,IAAkC;AACrD,SAAgB,qBAAqB,WAAyC;CAC5E,OACE,OAAO,IAAI,SAAS,KAAK;EACvB,KAAK;EACL,QAAQ;EACR,gBAAgB;EAChB,WAAW;EACX,gBAAgB,CAAC;EACjB,MAAM;EACN,UAAU,CAAC;EACX,UAAU;EACV,YAAY;EACZ,QAAQ;EACR,aAAa;EACb,iBAAiB;EACjB,cAAc,CAAC;EACf,WAAW;CACb;AAEJ;AACA,SAAgB,qBAAqB,WAAmB,OAAmC;CACzF,IAAI,CAAC,WAAW;CAChB,OAAO,OAAO,SAAS;CACvB,OAAO,IAAI,WAAW,KAAK;CAC3B,IAAI,OAAO,OAAO,IAAI,OAAO,OAAO,OAAO,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAM;AACjE;AAKA,IAAa,8BAA8B;AAC3C,SAAgB,0BACd,WACA,WACA,eACM;CACN,IAAI,CAAC,aAAc,CAAC,aAAa,CAAC,eAAgB;CAClD,qBAAqB,WAAW;EAC9B,GAAG,qBAAqB,SAAS;EACjC,KAAK;EACL,gBAAgB;EAChB;EACA,QAAQ;EACR,gBAAgB;EAChB,WAAW,YAAY,cAAc;EACrC,gBAAgB,YAAY,CAAC,SAAS,IAAI,CAAC;EAC3C,WAAW;CACb,CAAC;CACD,OAAO,cACL,IAAI,YAAY,6BAA6B,EAAE,QAAQ;EAAE;EAAW;EAAW;CAAc,EAAE,CAAC,CAClG;AACF"}
|
|
@@ -12,7 +12,7 @@ var diagnosticsStyles = `
|
|
|
12
12
|
.power-diagnostics .diagnostics-summary>button.summary-card{margin:0;width:100%;text-align:left;line-height:inherit;font:inherit}.power-diagnostics .diagnostics-summary>button.summary-card:hover{border-color:var(--colorWarning,#e0a134);background:color-mix(in srgb,var(--colorWarning,#e0a134) 5%,var(--contentColor))}
|
|
13
13
|
@container diagnostics (min-width:701px) and (max-width:900px){.power-diagnostics .consumers-toolbar{grid-template-columns:160px minmax(160px,1fr) 180px}.power-diagnostics .consumers-toolbar>.warning-filter{grid-column:1/-1}}
|
|
14
14
|
.power-diagnostics .consumer-identity-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;margin-bottom:4px}.power-diagnostics .consumer-identity-label{min-width:0;font-weight:500;overflow-wrap:anywhere}.power-diagnostics .consumer-identity-row .consumer-resource-link{display:inline-flex;align-items:center;justify-content:flex-start;gap:6px;min-width:0;margin:0;padding:0;border:0;background:transparent;text-align:left;font-weight:500;overflow-wrap:anywhere}.power-diagnostics .consumer-resource-link:hover{color:var(--primary)}.power-diagnostics .consumer-resource-link>.Icon{flex-shrink:0;opacity:.65}.power-diagnostics .consumer-expand-slot{display:flex;justify-content:flex-end;flex-shrink:0;padding-left:10px;border-left:1px solid var(--borderColor)}.power-diagnostics .consumer-identity-row .consumer-expand{display:flex;align-items:center;justify-content:center;width:28px;height:28px;min-width:28px;margin:0;padding:0;border:1px solid var(--borderColor);border-radius:4px;background:var(--contentColor);color:var(--textColorSecondary)}.power-diagnostics .consumer-identity-row .consumer-expand:hover{color:var(--primary);border-color:var(--primary)}
|
|
15
|
-
.power-diagnostics .consumer-depth-1>td:first-child{padding-left:32px;position:relative}.power-diagnostics .consumer-depth-2>td:first-child{padding-left:48px;position:relative}.power-diagnostics .consumer-depth-1>td:first-child:before,.power-diagnostics .consumer-depth-2>td:first-child:before{content:"";position:absolute;top:0;bottom:0;left:16px;width:1px;background:var(--borderColor)}.power-diagnostics .consumer-depth-2>td:first-child:before{left:32px}.power-diagnostics .consumer-pod-row>td{background:color-mix(in srgb,var(--textColorSecondary) 3%,transparent)}.power-diagnostics .consumer-namespace-row>td:first-child{font-weight:500}.power-diagnostics .namespace-identity{display:inline-flex;align-items:center;gap:7px;font-size:14px}.power-diagnostics .namespace-identity>.Icon{color:var(--primary)}
|
|
15
|
+
.power-diagnostics .consumer-depth-1>td:first-child{padding-left:32px;position:relative}.power-diagnostics .consumer-depth-2>td:first-child{padding-left:48px;position:relative}.power-diagnostics .consumer-depth-1>td:first-child:before,.power-diagnostics .consumer-depth-2>td:first-child:before{content:"";position:absolute;top:0;bottom:0;left:16px;width:1px;background:var(--borderColor)}.power-diagnostics .consumer-depth-2>td:first-child:before{left:32px}.power-diagnostics .consumer-pod-row>td{background:color-mix(in srgb,var(--textColorSecondary) 3%,transparent)}.power-diagnostics .consumer-namespace-row>td:first-child{font-weight:500}.power-diagnostics .namespace-identity{min-width:0;max-width:100%;display:inline-flex;align-items:center;gap:7px;font-size:14px}.power-diagnostics .namespace-identity>.Icon{color:var(--primary)}
|
|
16
16
|
.power-diagnostics .consumers-table{table-layout:fixed;min-width:900px}.power-diagnostics .consumers-table .metric-column{width:205px}.power-diagnostics .consumers-table .unscheduled-column{width:165px}.power-diagnostics .consumers-table th{white-space:nowrap;overflow-wrap:normal}.power-diagnostics .consumers-table th:last-child{white-space:normal;word-break:normal;overflow-wrap:normal}.power-diagnostics .consumers-table td{padding-top:12px;padding-bottom:12px}.power-diagnostics .consumer-identity-main{flex:1;min-width:0}.power-diagnostics .consumer-title-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}.power-diagnostics .consumer-title-line .consumer-status{margin-left:0}.power-diagnostics .consumer-subtitle{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:5px;line-height:1.4}.power-diagnostics .consumer-subtitle>.Icon{flex-shrink:0}.power-diagnostics .consumer-row-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.power-diagnostics .consumer-identity-row{align-items:flex-start;margin-bottom:0}.power-diagnostics .consumer-identity-row .consumer-resource-link{font-size:14px;color:var(--textColorPrimary)}.power-diagnostics .resource-value,.power-diagnostics .resource-request{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.power-diagnostics .resource-value small,.power-diagnostics .resource-request small{font-size:11px;white-space:nowrap}.power-diagnostics .resource-cell .resource-value strong{font-size:15px;font-weight:600}.power-diagnostics .resource-request{margin-top:3px}.power-diagnostics .resource-request>span{font-size:12px}.power-diagnostics .resource-cell .resource-coverage{margin-top:4px;font-size:10px;line-height:1.4}.power-diagnostics .unscheduled-cell>div{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.power-diagnostics .unscheduled-cell>div+div{margin-top:5px}.power-diagnostics .unscheduled-cell small{font-size:11px}.power-diagnostics .unscheduled-cell span{font-size:12px}.power-diagnostics .unscheduled-cell.has-requests span{color:var(--colorWarning,#e0a134)}.power-diagnostics .unscheduled-empty{color:var(--textColorSecondary);font-size:12px}.power-diagnostics .timeline-entry{color:var(--textColorPrimary)}.power-diagnostics .timeline-entry.warning .timeline-content h4{color:var(--colorWarning,#e0a134)}.power-diagnostics .pending-heading{padding:14px}.power-diagnostics .pending-heading>p{color:var(--textColorSecondary);margin-bottom:0}.power-diagnostics .diagnostics-summary{gap:10px;margin-bottom:16px}.power-diagnostics .diagnostics-summary>.summary-card{padding:10px 14px}.power-diagnostics .diagnostics-summary strong{font-size:22px}.power-diagnostics .diagnostics-summary .summary-icon{width:36px;height:36px;border-radius:8px}.power-diagnostics .diagnostics-summary .summary-card>div>span{font-size:12px}.power-diagnostics .diagnostics-explainer{padding:9px 12px}.power-diagnostics .view-intro{margin:12px 0}.power-diagnostics .view-intro p{font-size:12px}
|
|
17
17
|
.power-diagnostics .pending-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.power-diagnostics .pending-title-row>div{min-width:0}.power-diagnostics .pending-title-row strong{font-size:12px;color:var(--textColorSecondary);overflow-wrap:anywhere}.power-diagnostics .pending-state-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:6px}.power-diagnostics .pending-state-row h3{margin:0}.power-diagnostics .pending-title-row .pending-open-action{margin:0;flex-shrink:0;min-height:28px;padding:3px 8px;font-size:12px;white-space:nowrap}.power-diagnostics .pending-request-badges{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.power-diagnostics .pending-request-badges>span{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;background:var(--contentColor);color:var(--textColorSecondary);font-size:12px}.power-diagnostics .pending-request-badges strong{color:var(--textColorPrimary);font-weight:500;font-variant-numeric:tabular-nums}
|
|
18
18
|
.power-diagnostics .attention-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:20px}.power-diagnostics .attention-empty strong{font-size:15px;color:var(--textColorPrimary)}.power-diagnostics .attention-empty small{max-width:520px;line-height:1.5}.power-diagnostics .attention-empty>.Icon{color:var(--textColorSecondary)}.power-diagnostics .attention-empty.all-ready>.Icon,.power-diagnostics .attention-empty.all-ready strong{color:var(--colorSuccess,#67b58b)}.power-diagnostics .attention-empty.all-ready{border-color:color-mix(in srgb,var(--colorSuccess,#67b58b) 35%,var(--borderColor));background:color-mix(in srgb,var(--colorSuccess,#67b58b) 3%,transparent)}.power-diagnostics .consumer-tone-error>td{background:color-mix(in srgb,var(--colorError,#e56d79) 4%,transparent)}.power-diagnostics .consumer-tone-warning>td{background:color-mix(in srgb,var(--colorWarning,#e0a134) 3%,transparent)}.power-diagnostics .consumer-tone-error>td:first-child{box-shadow:inset 3px 0 var(--colorError,#e56d79)}.power-diagnostics .consumer-tone-warning>td:first-child{box-shadow:inset 3px 0 var(--colorWarning,#e0a134)}
|
|
@@ -32,6 +32,15 @@ var diagnosticsStyles = `
|
|
|
32
32
|
.power-diagnostics .pending-heading.error{border-left:3px solid var(--colorError,#e56d79);background:color-mix(in srgb,var(--colorError,#e56d79) 4%,transparent)}
|
|
33
33
|
.power-diagnostics .pending-heading.warning{border-left:3px solid var(--colorWarning,#e0a134);background:color-mix(in srgb,var(--colorWarning,#e0a134) 3%,transparent)}
|
|
34
34
|
.power-diagnostics .pending-heading>.consumer-status{margin:0 0 10px}
|
|
35
|
+
.power-diagnostics .consumers-table .consumer-column{width:380px}.power-diagnostics .consumer-title-line{flex-wrap:wrap;white-space:normal}.power-diagnostics .consumer-identity-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.power-diagnostics .consumer-title-line .consumer-resource-link{display:inline-flex;max-width:100%;transition:color 160ms ease}.power-diagnostics .consumer-link-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.power-diagnostics .consumer-identity-row .consumer-resource-link:hover,.power-diagnostics .consumer-identity-row .consumer-resource-link:focus-visible{color:var(--primary)}.power-diagnostics .consumer-resource-link:focus-visible{outline:2px solid var(--primary);outline-offset:3px}.power-diagnostics .consumer-pod-row .consumer-resource-link,.power-diagnostics .consumer-pod-row .consumer-subtitle{padding-left:8px}@media(prefers-reduced-motion:reduce){.power-diagnostics .consumer-title-line .consumer-resource-link{transition:none}}.power-diagnostics .consumer-subtitle{flex-wrap:nowrap;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.power-diagnostics .consumer-status{flex-shrink:1;min-width:0;white-space:normal;overflow-wrap:anywhere}.power-diagnostics .consumers-table td{padding-top:8px;padding-bottom:8px}.power-diagnostics .resource-cell .request-burst{display:inline-flex;margin-top:3px;font-size:10px;white-space:nowrap}.power-diagnostics .explain-finding{font-size:11px;padding:3px 6px}.power-diagnostics .consumer-row-actions .explain-finding{width:26px;height:26px;padding:3px;margin:0}.power-diagnostics .timeline-content details{margin-top:6px}.power-diagnostics .timeline-content details li{margin:8px 0}
|
|
36
|
+
.power-diagnostics .incident-copy{display:inline-flex;align-items:center;gap:8px;margin-right:8px}.power-diagnostics .incident-copy button{min-width:28px;min-height:28px;padding:4px;margin:0}.power-diagnostics .incident-copy [role=status]{font-size:11px;max-width:150px}.power-diagnostics .consumer-row-actions .incident-copy{margin-right:0}.power-diagnostics .consumer-row-actions .explain-finding{min-width:28px;min-height:28px}
|
|
37
|
+
.power-diagnostics .explain-finding{min-width:28px;min-height:28px}.power-diagnostics .consumer-row-actions .incident-copy{position:relative}.power-diagnostics .consumer-row-actions .incident-copy [role=status]{position:absolute;right:0;top:100%;white-space:nowrap;background:var(--contentColor);padding:3px 6px;border:1px solid var(--borderColor);z-index:2;max-width:none}
|
|
38
|
+
|
|
39
|
+
.power-diagnostics .incident-copy button,.power-diagnostics .consumer-row-actions .explain-finding{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:28px;height:28px;min-width:28px;min-height:28px;gap:0;padding:0;line-height:1;vertical-align:middle}.power-diagnostics .incident-copy button>.Icon,.power-diagnostics .consumer-row-actions .explain-finding>.Icon{margin:0;flex-shrink:0}
|
|
40
|
+
|
|
41
|
+
.power-diagnostics .timeline-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.power-diagnostics .timeline-card-top>.timeline-card-heading{flex:1;min-width:0;padding-right:0}.power-diagnostics .timeline-card-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.power-diagnostics .timeline-card-actions .incident-copy{position:relative;margin:0}.power-diagnostics .timeline-card-actions .incident-copy [role=status]{position:absolute;right:0;top:calc(100% + 6px);white-space:nowrap;max-width:260px;background:var(--contentColor);border:1px solid var(--borderColor);padding:4px 6px;z-index:2}.power-diagnostics .timeline-content .timeline-card-actions .timeline-resource-action{position:static;width:28px;height:28px;min-width:28px;margin:0}.power-diagnostics .timeline-card-actions .explain-finding{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:28px;margin:0;padding:0 8px;line-height:1}.power-diagnostics .timeline-card-actions .explain-finding>.Icon{margin:0;flex-shrink:0}
|
|
42
|
+
.power-diagnostics .namespace-scope{display:flex;align-items:center;flex-wrap:wrap;column-gap:20px;row-gap:6px;margin:4px 0 16px;min-height:32px}.power-diagnostics .namespace-scope-label{overflow-wrap:anywhere}.power-diagnostics .namespace-scope button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:32px;padding:4px 0;margin:0;border:0;background:transparent;box-shadow:none;color:var(--textColorSecondary)}.power-diagnostics .namespace-scope button:hover{color:var(--primary);background:transparent}.power-diagnostics .namespace-scope button:focus-visible{outline:2px solid var(--primary);outline-offset:3px}
|
|
43
|
+
@container diagnostics (max-width:700px){.power-diagnostics .timeline-card-actions .timeline-action-label{display:none}.power-diagnostics .timeline-card-actions .explain-finding{width:28px;min-width:28px;padding:0}.power-diagnostics .timeline-card-top{gap:12px}}
|
|
35
44
|
`;
|
|
36
45
|
//#endregion
|
|
37
46
|
exports.diagnosticsStyles = diagnosticsStyles;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.css.js","names":[],"sources":["../../src/renderer/diagnostics.css.ts"],"sourcesContent":["export const diagnosticsStyles = `\n.power-diagnostics{container-type:inline-size;container-name:diagnostics;box-sizing:border-box;color:var(--textColorPrimary);max-width:100%;line-height:1.5}\n.power-diagnostics *{box-sizing:border-box}.power-diagnostics h2{margin:0 0 6px;font-size:24px}.power-diagnostics h3{margin:0 0 6px;font-size:18px}.power-diagnostics p{margin:8px 0 16px}.power-diagnostics .page-intro,.power-diagnostics small,.power-diagnostics .view-intro p{color:var(--textColorSecondary)}\n.power-diagnostics nav{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px;border-bottom:1px solid var(--borderColor);padding-bottom:8px}.power-diagnostics button{cursor:pointer;display:inline-flex;align-items:center;gap:6px;border-radius:5px;border:1px solid var(--borderColor);background:var(--contentColor);color:var(--textColorPrimary);font:inherit;padding:6px 10px;margin:3px 4px 3px 0}.power-diagnostics button:hover{border-color:var(--primary)}.power-diagnostics button[aria-pressed=true]{color:var(--primary);border-color:var(--primary)}.power-diagnostics button:disabled{opacity:.5;cursor:default}.power-diagnostics :is(button,input,summary):focus-visible{outline:2px solid var(--primary);outline-offset:2px}\n.power-diagnostics .diagnostics-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.power-diagnostics .snapshot-meta{white-space:pre-wrap;font-size:12px;color:var(--textColorSecondary)}.power-diagnostics .view-intro{margin:16px 0}.power-diagnostics .view-intro p{margin:4px 0 0}.power-diagnostics .diagnostics-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:22px}.power-diagnostics .diagnostics-summary>.summary-card{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--borderColor);border-radius:8px;background:var(--contentColor)}.power-diagnostics .diagnostics-summary strong{display:block;font-size:25px;font-variant-numeric:tabular-nums}.power-diagnostics .diagnostics-summary span{color:var(--textColorSecondary)}.power-diagnostics .summary-card{--summary-color:var(--textColorSecondary)}.power-diagnostics .summary-card.workloads{--summary-color:#bc86df}.power-diagnostics .summary-card.pods{--summary-color:var(--primary,#609ee8)}.power-diagnostics .summary-card.pending{--summary-color:var(--colorSuccess,#67b58b)}.power-diagnostics .summary-card.pending.unavailable{--summary-color:var(--textColorSecondary)}.power-diagnostics .summary-card.unavailable strong{font-size:18px}.power-diagnostics .summary-card.attention{--summary-color:var(--colorWarning,#e0a134)}.power-diagnostics .summary-card strong{color:var(--summary-color)}.power-diagnostics .diagnostics-summary .summary-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:42px;height:42px;border-radius:10px;color:var(--summary-color);background:color-mix(in srgb,var(--summary-color) 12%,transparent)}.power-diagnostics .summary-icon .Icon{color:inherit}\n.power-diagnostics .toolbar{display:grid;align-items:end;gap:16px;margin-bottom:16px}.power-diagnostics .consumers-toolbar{grid-template-columns:160px minmax(160px,1fr) 180px max-content}.power-diagnostics .timeline-toolbar{grid-template-columns:minmax(200px,1fr) 240px max-content}.power-diagnostics .toolbar>label{display:flex;flex-direction:column;gap:6px;min-width:0;color:var(--textColorSecondary)}.power-diagnostics .diagnostics-select{display:block;min-width:180px;max-width:100%;vertical-align:middle}.power-diagnostics .toolbar .diagnostics-select{min-width:0;width:100%}.power-diagnostics .diagnostics-select>div{width:100%}.power-diagnostics .diagnostics-select .Select{min-width:0;width:100%}.power-diagnostics .diagnostics-select .Select__control{min-height:32px;height:32px}.power-diagnostics .diagnostics-select .Select__value-container{padding:0 8px;min-width:0}.power-diagnostics .diagnostics-select .Select__single-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.power-diagnostics .diagnostics-select .Select__input-container{margin:0;padding:0}.power-diagnostics .diagnostics-select .Select__indicator{padding:5px 8px}.power-diagnostics .diagnostics-input{display:block;min-width:0;height:32px}.power-diagnostics .diagnostics-input .Input{height:32px;min-height:32px;margin:0;border:1px solid var(--borderColor);border-radius:4px;background:var(--contentColor);padding:0 9px}.power-diagnostics .diagnostics-input .Input>.input-area{height:30px;min-height:0;min-width:0;padding:0;border:0;border-bottom:0}.power-diagnostics .diagnostics-input .Input>.input-area:after,.power-diagnostics .diagnostics-input .Input>.input-area:before{display:none}.power-diagnostics .diagnostics-input .Input:focus-within{border-color:var(--primary)}.power-diagnostics .diagnostics-input input{width:100%;max-width:100%;height:30px;min-height:0;padding:0;border:0;border-bottom:0;outline:none;background:transparent;color:var(--textColorPrimary);font:inherit}.power-diagnostics .diagnostics-input .Input:after,.power-diagnostics .diagnostics-input .Input:before{display:none}.power-diagnostics .warning-filter{display:flex;align-items:center;min-height:32px;padding:0 0 1px}.power-diagnostics .warning-filter .Checkbox{margin:0;white-space:nowrap}.power-diagnostics .warning-filter label{display:inline-flex;align-items:center;flex-direction:row;color:var(--textColorPrimary)}\n.power-diagnostics .evidence-table{min-width:660px;table-layout:fixed}.power-diagnostics .evidence-source{width:180px}.power-diagnostics .evidence-node{width:160px}.power-diagnostics .evidence-finding{width:auto}.power-diagnostics .evidence-table th{white-space:nowrap;overflow-wrap:normal}.power-diagnostics .evidence-table td:first-child{min-width:0;overflow-wrap:normal;word-break:normal}.power-diagnostics .evidence-table td:nth-child(2){overflow-wrap:break-word;word-break:normal}.power-diagnostics .evidence-table td:nth-child(3){overflow-wrap:anywhere}.power-diagnostics .diagnostics-table{overflow-x:auto;max-width:100%;border:1px solid var(--borderColor);border-radius:7px;margin:16px 0}.power-diagnostics table{width:100%;border-collapse:collapse}.power-diagnostics th,.power-diagnostics td{text-align:left;padding:14px 16px;border-bottom:1px solid var(--borderColor);vertical-align:top;overflow-wrap:anywhere}.power-diagnostics th{color:var(--textColorSecondary);font-weight:500;background:var(--contentColor)}.power-diagnostics td:first-child{min-width:240px}.power-diagnostics .numeric{text-align:right;min-width:170px;font-variant-numeric:tabular-nums}.power-diagnostics small{display:block;font-size:12px}.power-diagnostics .resource-cell strong{display:block;font-size:16px}.power-diagnostics .resource-cell>span{display:block;margin-top:8px}.power-diagnostics .diagnostics-explainer{margin:14px 0;padding:12px 16px;border:1px solid var(--borderColor);border-radius:6px;overflow-wrap:anywhere}.power-diagnostics summary{cursor:pointer;color:var(--textColorSecondary)}.power-diagnostics .diagnostics-empty{padding:28px;text-align:center;border:1px dashed var(--borderColor);border-radius:8px;color:var(--textColorSecondary)}.power-diagnostics .diagnostics-notice{padding:12px 16px;border-left:3px solid var(--colorWarning,#d49a35);background:var(--contentColor)}.power-diagnostics .pending-heading{padding:18px;border:1px solid var(--borderColor);border-radius:8px;margin-top:20px}.power-diagnostics .pending-heading>strong{display:block;color:var(--textColorSecondary);margin-bottom:8px}\n.power-diagnostics .timeline-legend{display:flex;flex-wrap:wrap;gap:14px;margin:18px 0}.power-diagnostics .timeline-type{--event-color:var(--textColorSecondary);display:inline-flex;align-items:center;gap:7px;font-size:12px;color:var(--textColorSecondary)}.power-diagnostics .timeline-type:before{content:\"\";width:8px;height:8px;border-radius:50%;background:var(--event-color);flex-shrink:0}.power-diagnostics .observed{--event-color:#7eacb5}.power-diagnostics .warning{--event-color:var(--colorWarning,#e0a134)}.power-diagnostics .rollout{--event-color:var(--primary,#609ee8)}.power-diagnostics .restart{--event-color:#bc86df}.power-diagnostics .readiness{--event-color:var(--colorSuccess,#67b58b)}\n.power-diagnostics .diagnostics-timeline{list-style:none;padding:0;margin:24px 0}.power-diagnostics .timeline-entry{display:grid;grid-template-columns:170px minmax(0,1fr);gap:30px;position:relative;padding-bottom:24px;--event-color:var(--textColorSecondary)}.power-diagnostics .timeline-entry.observed{--event-color:#7eacb5}.power-diagnostics .timeline-entry.warning{--event-color:var(--colorWarning,#e0a134)}.power-diagnostics .timeline-entry.rollout{--event-color:var(--primary,#609ee8)}.power-diagnostics .timeline-entry.restart{--event-color:#bc86df}.power-diagnostics .timeline-entry.readiness{--event-color:var(--colorSuccess,#67b58b)}.power-diagnostics .timeline-time time{white-space:pre-wrap}.power-diagnostics .timeline-time{padding-top:12px;text-align:right;font-variant-numeric:tabular-nums}.power-diagnostics .timeline-content{position:relative;min-width:0;padding:12px 16px;border:1px solid var(--borderColor);border-radius:7px;overflow-wrap:anywhere}.power-diagnostics .timeline-content:before{content:\"\";position:absolute;left:-22px;top:20px;width:11px;height:11px;background:var(--event-color);border:2px solid var(--mainBackground,var(--contentColor));border-radius:50%;z-index:1}.power-diagnostics .timeline-entry:before{content:\"\";position:absolute;left:183px;top:24px;bottom:-24px;width:2px;background:var(--borderColor)}.power-diagnostics .timeline-entry:last-child:before{display:none}.power-diagnostics .timeline-card-heading{padding-right:32px}.power-diagnostics .timeline-content .timeline-resource-action{position:absolute;top:10px;right:10px;display:flex;align-items:center;justify-content:center;width:26px;height:26px;min-width:26px;padding:0;margin:0;border-color:transparent;background:transparent;color:var(--textColorSecondary)}.power-diagnostics .timeline-content .timeline-resource-action:hover{color:var(--primary);background:var(--contentColor);border-color:var(--borderColor)}.power-diagnostics .timeline-content small{white-space:pre-wrap}.power-diagnostics .timeline-resource-identity{display:flex;align-items:center;gap:5px;overflow-wrap:anywhere}.power-diagnostics .timeline-content h4{margin:5px 0;font-size:15px}.power-diagnostics .timeline-content p{margin:4px 0 10px}\n.power-diagnostics .consumer-status{display:inline-flex;align-items:center;gap:4px;padding:1px 6px;margin-left:4px;border-radius:4px;font-size:11px;vertical-align:middle;color:var(--textColorSecondary);background:color-mix(in srgb,var(--textColorSecondary) 8%,transparent)}.power-diagnostics .consumer-status.warning{color:var(--colorWarning,#e0a134);background:color-mix(in srgb,var(--colorWarning,#e0a134) 10%,transparent)}.power-diagnostics .consumer-status.error{color:var(--colorError,#e56d79);background:color-mix(in srgb,var(--colorError,#e56d79) 10%,transparent)}.power-diagnostics .consumer-status.healthy{color:var(--colorSuccess,#67b58b);background:color-mix(in srgb,var(--colorSuccess,#67b58b) 10%,transparent)}.power-diagnostics .resource-cell .request-burst{display:inline-flex;align-items:center;gap:4px;margin-top:4px;padding:1px 5px;border-radius:4px;font-size:11px;color:var(--textColorSecondary);background:color-mix(in srgb,var(--colorWarning,#e0a134) 10%,transparent)}.power-diagnostics .timeline-content{border-left:2px solid color-mix(in srgb,var(--event-color) 60%,var(--borderColor))}.power-diagnostics .timeline-entry.warning .timeline-content{border-color:color-mix(in srgb,var(--event-color) 35%,var(--borderColor));border-left-color:var(--event-color);background:color-mix(in srgb,var(--event-color) 4%,transparent)}.power-diagnostics .evidence-badge{display:inline-flex;align-items:center;gap:5px;border-radius:4px;padding:2px 6px;font-size:12px;color:var(--primary,#609ee8);background:color-mix(in srgb,var(--primary,#609ee8) 9%,transparent);margin-bottom:4px}.power-diagnostics .evidence-badge.inferred{color:var(--colorWarning,#e0a134);background:color-mix(in srgb,var(--colorWarning,#e0a134) 9%,transparent)}\n.power-diagnostics .diagnostics-summary>button.summary-card{margin:0;width:100%;text-align:left;line-height:inherit;font:inherit}.power-diagnostics .diagnostics-summary>button.summary-card:hover{border-color:var(--colorWarning,#e0a134);background:color-mix(in srgb,var(--colorWarning,#e0a134) 5%,var(--contentColor))}\n@container diagnostics (min-width:701px) and (max-width:900px){.power-diagnostics .consumers-toolbar{grid-template-columns:160px minmax(160px,1fr) 180px}.power-diagnostics .consumers-toolbar>.warning-filter{grid-column:1/-1}}\n.power-diagnostics .consumer-identity-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;margin-bottom:4px}.power-diagnostics .consumer-identity-label{min-width:0;font-weight:500;overflow-wrap:anywhere}.power-diagnostics .consumer-identity-row .consumer-resource-link{display:inline-flex;align-items:center;justify-content:flex-start;gap:6px;min-width:0;margin:0;padding:0;border:0;background:transparent;text-align:left;font-weight:500;overflow-wrap:anywhere}.power-diagnostics .consumer-resource-link:hover{color:var(--primary)}.power-diagnostics .consumer-resource-link>.Icon{flex-shrink:0;opacity:.65}.power-diagnostics .consumer-expand-slot{display:flex;justify-content:flex-end;flex-shrink:0;padding-left:10px;border-left:1px solid var(--borderColor)}.power-diagnostics .consumer-identity-row .consumer-expand{display:flex;align-items:center;justify-content:center;width:28px;height:28px;min-width:28px;margin:0;padding:0;border:1px solid var(--borderColor);border-radius:4px;background:var(--contentColor);color:var(--textColorSecondary)}.power-diagnostics .consumer-identity-row .consumer-expand:hover{color:var(--primary);border-color:var(--primary)}\n.power-diagnostics .consumer-depth-1>td:first-child{padding-left:32px;position:relative}.power-diagnostics .consumer-depth-2>td:first-child{padding-left:48px;position:relative}.power-diagnostics .consumer-depth-1>td:first-child:before,.power-diagnostics .consumer-depth-2>td:first-child:before{content:\"\";position:absolute;top:0;bottom:0;left:16px;width:1px;background:var(--borderColor)}.power-diagnostics .consumer-depth-2>td:first-child:before{left:32px}.power-diagnostics .consumer-pod-row>td{background:color-mix(in srgb,var(--textColorSecondary) 3%,transparent)}.power-diagnostics .consumer-namespace-row>td:first-child{font-weight:500}.power-diagnostics .namespace-identity{display:inline-flex;align-items:center;gap:7px;font-size:14px}.power-diagnostics .namespace-identity>.Icon{color:var(--primary)}\n.power-diagnostics .consumers-table{table-layout:fixed;min-width:900px}.power-diagnostics .consumers-table .metric-column{width:205px}.power-diagnostics .consumers-table .unscheduled-column{width:165px}.power-diagnostics .consumers-table th{white-space:nowrap;overflow-wrap:normal}.power-diagnostics .consumers-table th:last-child{white-space:normal;word-break:normal;overflow-wrap:normal}.power-diagnostics .consumers-table td{padding-top:12px;padding-bottom:12px}.power-diagnostics .consumer-identity-main{flex:1;min-width:0}.power-diagnostics .consumer-title-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}.power-diagnostics .consumer-title-line .consumer-status{margin-left:0}.power-diagnostics .consumer-subtitle{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:5px;line-height:1.4}.power-diagnostics .consumer-subtitle>.Icon{flex-shrink:0}.power-diagnostics .consumer-row-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.power-diagnostics .consumer-identity-row{align-items:flex-start;margin-bottom:0}.power-diagnostics .consumer-identity-row .consumer-resource-link{font-size:14px;color:var(--textColorPrimary)}.power-diagnostics .resource-value,.power-diagnostics .resource-request{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.power-diagnostics .resource-value small,.power-diagnostics .resource-request small{font-size:11px;white-space:nowrap}.power-diagnostics .resource-cell .resource-value strong{font-size:15px;font-weight:600}.power-diagnostics .resource-request{margin-top:3px}.power-diagnostics .resource-request>span{font-size:12px}.power-diagnostics .resource-cell .resource-coverage{margin-top:4px;font-size:10px;line-height:1.4}.power-diagnostics .unscheduled-cell>div{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.power-diagnostics .unscheduled-cell>div+div{margin-top:5px}.power-diagnostics .unscheduled-cell small{font-size:11px}.power-diagnostics .unscheduled-cell span{font-size:12px}.power-diagnostics .unscheduled-cell.has-requests span{color:var(--colorWarning,#e0a134)}.power-diagnostics .unscheduled-empty{color:var(--textColorSecondary);font-size:12px}.power-diagnostics .timeline-entry{color:var(--textColorPrimary)}.power-diagnostics .timeline-entry.warning .timeline-content h4{color:var(--colorWarning,#e0a134)}.power-diagnostics .pending-heading{padding:14px}.power-diagnostics .pending-heading>p{color:var(--textColorSecondary);margin-bottom:0}.power-diagnostics .diagnostics-summary{gap:10px;margin-bottom:16px}.power-diagnostics .diagnostics-summary>.summary-card{padding:10px 14px}.power-diagnostics .diagnostics-summary strong{font-size:22px}.power-diagnostics .diagnostics-summary .summary-icon{width:36px;height:36px;border-radius:8px}.power-diagnostics .diagnostics-summary .summary-card>div>span{font-size:12px}.power-diagnostics .diagnostics-explainer{padding:9px 12px}.power-diagnostics .view-intro{margin:12px 0}.power-diagnostics .view-intro p{font-size:12px}\n.power-diagnostics .pending-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.power-diagnostics .pending-title-row>div{min-width:0}.power-diagnostics .pending-title-row strong{font-size:12px;color:var(--textColorSecondary);overflow-wrap:anywhere}.power-diagnostics .pending-state-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:6px}.power-diagnostics .pending-state-row h3{margin:0}.power-diagnostics .pending-title-row .pending-open-action{margin:0;flex-shrink:0;min-height:28px;padding:3px 8px;font-size:12px;white-space:nowrap}.power-diagnostics .pending-request-badges{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.power-diagnostics .pending-request-badges>span{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;background:var(--contentColor);color:var(--textColorSecondary);font-size:12px}.power-diagnostics .pending-request-badges strong{color:var(--textColorPrimary);font-weight:500;font-variant-numeric:tabular-nums}\n.power-diagnostics .attention-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:20px}.power-diagnostics .attention-empty strong{font-size:15px;color:var(--textColorPrimary)}.power-diagnostics .attention-empty small{max-width:520px;line-height:1.5}.power-diagnostics .attention-empty>.Icon{color:var(--textColorSecondary)}.power-diagnostics .attention-empty.all-ready>.Icon,.power-diagnostics .attention-empty.all-ready strong{color:var(--colorSuccess,#67b58b)}.power-diagnostics .attention-empty.all-ready{border-color:color-mix(in srgb,var(--colorSuccess,#67b58b) 35%,var(--borderColor));background:color-mix(in srgb,var(--colorSuccess,#67b58b) 3%,transparent)}.power-diagnostics .consumer-tone-error>td{background:color-mix(in srgb,var(--colorError,#e56d79) 4%,transparent)}.power-diagnostics .consumer-tone-warning>td{background:color-mix(in srgb,var(--colorWarning,#e0a134) 3%,transparent)}.power-diagnostics .consumer-tone-error>td:first-child{box-shadow:inset 3px 0 var(--colorError,#e56d79)}.power-diagnostics .consumer-tone-warning>td:first-child{box-shadow:inset 3px 0 var(--colorWarning,#e0a134)}\n@media(max-width:700px){.power-diagnostics .diagnostics-summary{grid-template-columns:1fr}.power-diagnostics .toolbar{grid-template-columns:minmax(0,1fr);align-items:stretch}.power-diagnostics .toolbar>*,.power-diagnostics .diagnostics-select{width:100%;min-width:0}.power-diagnostics .warning-filter{padding:0}.power-diagnostics .timeline-entry{grid-template-columns:minmax(0,1fr);gap:6px;padding-left:24px}.power-diagnostics .timeline-time{text-align:left;padding:0}.power-diagnostics .timeline-entry:before{left:5px;top:44px}.power-diagnostics .timeline-content:before{left:-24px}.power-diagnostics .timeline-content{margin-left:0}}\n\n@container diagnostics (max-width:700px){.power-diagnostics .diagnostics-summary{grid-template-columns:1fr}.power-diagnostics .toolbar{grid-template-columns:minmax(0,1fr);align-items:stretch}.power-diagnostics .toolbar>*,.power-diagnostics .diagnostics-select{width:100%;min-width:0}.power-diagnostics .warning-filter{padding:0}.power-diagnostics .timeline-entry{grid-template-columns:minmax(0,1fr);gap:6px;padding-left:24px}.power-diagnostics .timeline-time{text-align:left;padding:0}.power-diagnostics .timeline-entry:before{left:5px;top:44px}.power-diagnostics .timeline-content:before{left:-24px}.power-diagnostics .timeline-content{margin-left:0}}\n\n.power-diagnostics .diagnostics-select .Select__control{background:color-mix(in srgb,var(--textColorPrimary) 5%,var(--contentColor));border:1px solid var(--inputControlBorder,var(--halfGray));box-shadow:none;cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s}\n.power-diagnostics .diagnostics-select .Select__control:hover{border-color:var(--textColorSecondary);background:color-mix(in srgb,var(--textColorPrimary) 8%,var(--contentColor))}\n.power-diagnostics .diagnostics-select .Select__control--is-focused{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}\n.power-diagnostics .diagnostics-select .Select__single-value{color:var(--textColorPrimary)}\n.power-diagnostics .diagnostics-select .Select__indicators{border-left:1px solid var(--borderFaintColor);align-self:stretch;padding:0 3px}\n.power-diagnostics .diagnostics-select .Select__dropdown-indicator{opacity:.85;color:var(--textColorSecondary)}\n@media(prefers-reduced-motion:reduce){.power-diagnostics .diagnostics-select .Select__control{transition:none}}\n\n.power-diagnostics .diagnostics-summary .summary-icon .Icon,.power-diagnostics .diagnostics-summary .summary-icon .Icon>.icon{color:var(--summary-color)}\n.power-diagnostics .pending-heading.error{border-left:3px solid var(--colorError,#e56d79);background:color-mix(in srgb,var(--colorError,#e56d79) 4%,transparent)}\n.power-diagnostics .pending-heading.warning{border-left:3px solid var(--colorWarning,#e0a134);background:color-mix(in srgb,var(--colorWarning,#e0a134) 3%,transparent)}\n.power-diagnostics .pending-heading>.consumer-status{margin:0 0 10px}\n`;\n"],"mappings":";AAAA,IAAa,oBAAoB"}
|
|
1
|
+
{"version":3,"file":"diagnostics.css.js","names":[],"sources":["../../src/renderer/diagnostics.css.ts"],"sourcesContent":["export const diagnosticsStyles = `\n.power-diagnostics{container-type:inline-size;container-name:diagnostics;box-sizing:border-box;color:var(--textColorPrimary);max-width:100%;line-height:1.5}\n.power-diagnostics *{box-sizing:border-box}.power-diagnostics h2{margin:0 0 6px;font-size:24px}.power-diagnostics h3{margin:0 0 6px;font-size:18px}.power-diagnostics p{margin:8px 0 16px}.power-diagnostics .page-intro,.power-diagnostics small,.power-diagnostics .view-intro p{color:var(--textColorSecondary)}\n.power-diagnostics nav{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px;border-bottom:1px solid var(--borderColor);padding-bottom:8px}.power-diagnostics button{cursor:pointer;display:inline-flex;align-items:center;gap:6px;border-radius:5px;border:1px solid var(--borderColor);background:var(--contentColor);color:var(--textColorPrimary);font:inherit;padding:6px 10px;margin:3px 4px 3px 0}.power-diagnostics button:hover{border-color:var(--primary)}.power-diagnostics button[aria-pressed=true]{color:var(--primary);border-color:var(--primary)}.power-diagnostics button:disabled{opacity:.5;cursor:default}.power-diagnostics :is(button,input,summary):focus-visible{outline:2px solid var(--primary);outline-offset:2px}\n.power-diagnostics .diagnostics-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.power-diagnostics .snapshot-meta{white-space:pre-wrap;font-size:12px;color:var(--textColorSecondary)}.power-diagnostics .view-intro{margin:16px 0}.power-diagnostics .view-intro p{margin:4px 0 0}.power-diagnostics .diagnostics-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:22px}.power-diagnostics .diagnostics-summary>.summary-card{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--borderColor);border-radius:8px;background:var(--contentColor)}.power-diagnostics .diagnostics-summary strong{display:block;font-size:25px;font-variant-numeric:tabular-nums}.power-diagnostics .diagnostics-summary span{color:var(--textColorSecondary)}.power-diagnostics .summary-card{--summary-color:var(--textColorSecondary)}.power-diagnostics .summary-card.workloads{--summary-color:#bc86df}.power-diagnostics .summary-card.pods{--summary-color:var(--primary,#609ee8)}.power-diagnostics .summary-card.pending{--summary-color:var(--colorSuccess,#67b58b)}.power-diagnostics .summary-card.pending.unavailable{--summary-color:var(--textColorSecondary)}.power-diagnostics .summary-card.unavailable strong{font-size:18px}.power-diagnostics .summary-card.attention{--summary-color:var(--colorWarning,#e0a134)}.power-diagnostics .summary-card strong{color:var(--summary-color)}.power-diagnostics .diagnostics-summary .summary-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:42px;height:42px;border-radius:10px;color:var(--summary-color);background:color-mix(in srgb,var(--summary-color) 12%,transparent)}.power-diagnostics .summary-icon .Icon{color:inherit}\n.power-diagnostics .toolbar{display:grid;align-items:end;gap:16px;margin-bottom:16px}.power-diagnostics .consumers-toolbar{grid-template-columns:160px minmax(160px,1fr) 180px max-content}.power-diagnostics .timeline-toolbar{grid-template-columns:minmax(200px,1fr) 240px max-content}.power-diagnostics .toolbar>label{display:flex;flex-direction:column;gap:6px;min-width:0;color:var(--textColorSecondary)}.power-diagnostics .diagnostics-select{display:block;min-width:180px;max-width:100%;vertical-align:middle}.power-diagnostics .toolbar .diagnostics-select{min-width:0;width:100%}.power-diagnostics .diagnostics-select>div{width:100%}.power-diagnostics .diagnostics-select .Select{min-width:0;width:100%}.power-diagnostics .diagnostics-select .Select__control{min-height:32px;height:32px}.power-diagnostics .diagnostics-select .Select__value-container{padding:0 8px;min-width:0}.power-diagnostics .diagnostics-select .Select__single-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.power-diagnostics .diagnostics-select .Select__input-container{margin:0;padding:0}.power-diagnostics .diagnostics-select .Select__indicator{padding:5px 8px}.power-diagnostics .diagnostics-input{display:block;min-width:0;height:32px}.power-diagnostics .diagnostics-input .Input{height:32px;min-height:32px;margin:0;border:1px solid var(--borderColor);border-radius:4px;background:var(--contentColor);padding:0 9px}.power-diagnostics .diagnostics-input .Input>.input-area{height:30px;min-height:0;min-width:0;padding:0;border:0;border-bottom:0}.power-diagnostics .diagnostics-input .Input>.input-area:after,.power-diagnostics .diagnostics-input .Input>.input-area:before{display:none}.power-diagnostics .diagnostics-input .Input:focus-within{border-color:var(--primary)}.power-diagnostics .diagnostics-input input{width:100%;max-width:100%;height:30px;min-height:0;padding:0;border:0;border-bottom:0;outline:none;background:transparent;color:var(--textColorPrimary);font:inherit}.power-diagnostics .diagnostics-input .Input:after,.power-diagnostics .diagnostics-input .Input:before{display:none}.power-diagnostics .warning-filter{display:flex;align-items:center;min-height:32px;padding:0 0 1px}.power-diagnostics .warning-filter .Checkbox{margin:0;white-space:nowrap}.power-diagnostics .warning-filter label{display:inline-flex;align-items:center;flex-direction:row;color:var(--textColorPrimary)}\n.power-diagnostics .evidence-table{min-width:660px;table-layout:fixed}.power-diagnostics .evidence-source{width:180px}.power-diagnostics .evidence-node{width:160px}.power-diagnostics .evidence-finding{width:auto}.power-diagnostics .evidence-table th{white-space:nowrap;overflow-wrap:normal}.power-diagnostics .evidence-table td:first-child{min-width:0;overflow-wrap:normal;word-break:normal}.power-diagnostics .evidence-table td:nth-child(2){overflow-wrap:break-word;word-break:normal}.power-diagnostics .evidence-table td:nth-child(3){overflow-wrap:anywhere}.power-diagnostics .diagnostics-table{overflow-x:auto;max-width:100%;border:1px solid var(--borderColor);border-radius:7px;margin:16px 0}.power-diagnostics table{width:100%;border-collapse:collapse}.power-diagnostics th,.power-diagnostics td{text-align:left;padding:14px 16px;border-bottom:1px solid var(--borderColor);vertical-align:top;overflow-wrap:anywhere}.power-diagnostics th{color:var(--textColorSecondary);font-weight:500;background:var(--contentColor)}.power-diagnostics td:first-child{min-width:240px}.power-diagnostics .numeric{text-align:right;min-width:170px;font-variant-numeric:tabular-nums}.power-diagnostics small{display:block;font-size:12px}.power-diagnostics .resource-cell strong{display:block;font-size:16px}.power-diagnostics .resource-cell>span{display:block;margin-top:8px}.power-diagnostics .diagnostics-explainer{margin:14px 0;padding:12px 16px;border:1px solid var(--borderColor);border-radius:6px;overflow-wrap:anywhere}.power-diagnostics summary{cursor:pointer;color:var(--textColorSecondary)}.power-diagnostics .diagnostics-empty{padding:28px;text-align:center;border:1px dashed var(--borderColor);border-radius:8px;color:var(--textColorSecondary)}.power-diagnostics .diagnostics-notice{padding:12px 16px;border-left:3px solid var(--colorWarning,#d49a35);background:var(--contentColor)}.power-diagnostics .pending-heading{padding:18px;border:1px solid var(--borderColor);border-radius:8px;margin-top:20px}.power-diagnostics .pending-heading>strong{display:block;color:var(--textColorSecondary);margin-bottom:8px}\n.power-diagnostics .timeline-legend{display:flex;flex-wrap:wrap;gap:14px;margin:18px 0}.power-diagnostics .timeline-type{--event-color:var(--textColorSecondary);display:inline-flex;align-items:center;gap:7px;font-size:12px;color:var(--textColorSecondary)}.power-diagnostics .timeline-type:before{content:\"\";width:8px;height:8px;border-radius:50%;background:var(--event-color);flex-shrink:0}.power-diagnostics .observed{--event-color:#7eacb5}.power-diagnostics .warning{--event-color:var(--colorWarning,#e0a134)}.power-diagnostics .rollout{--event-color:var(--primary,#609ee8)}.power-diagnostics .restart{--event-color:#bc86df}.power-diagnostics .readiness{--event-color:var(--colorSuccess,#67b58b)}\n.power-diagnostics .diagnostics-timeline{list-style:none;padding:0;margin:24px 0}.power-diagnostics .timeline-entry{display:grid;grid-template-columns:170px minmax(0,1fr);gap:30px;position:relative;padding-bottom:24px;--event-color:var(--textColorSecondary)}.power-diagnostics .timeline-entry.observed{--event-color:#7eacb5}.power-diagnostics .timeline-entry.warning{--event-color:var(--colorWarning,#e0a134)}.power-diagnostics .timeline-entry.rollout{--event-color:var(--primary,#609ee8)}.power-diagnostics .timeline-entry.restart{--event-color:#bc86df}.power-diagnostics .timeline-entry.readiness{--event-color:var(--colorSuccess,#67b58b)}.power-diagnostics .timeline-time time{white-space:pre-wrap}.power-diagnostics .timeline-time{padding-top:12px;text-align:right;font-variant-numeric:tabular-nums}.power-diagnostics .timeline-content{position:relative;min-width:0;padding:12px 16px;border:1px solid var(--borderColor);border-radius:7px;overflow-wrap:anywhere}.power-diagnostics .timeline-content:before{content:\"\";position:absolute;left:-22px;top:20px;width:11px;height:11px;background:var(--event-color);border:2px solid var(--mainBackground,var(--contentColor));border-radius:50%;z-index:1}.power-diagnostics .timeline-entry:before{content:\"\";position:absolute;left:183px;top:24px;bottom:-24px;width:2px;background:var(--borderColor)}.power-diagnostics .timeline-entry:last-child:before{display:none}.power-diagnostics .timeline-card-heading{padding-right:32px}.power-diagnostics .timeline-content .timeline-resource-action{position:absolute;top:10px;right:10px;display:flex;align-items:center;justify-content:center;width:26px;height:26px;min-width:26px;padding:0;margin:0;border-color:transparent;background:transparent;color:var(--textColorSecondary)}.power-diagnostics .timeline-content .timeline-resource-action:hover{color:var(--primary);background:var(--contentColor);border-color:var(--borderColor)}.power-diagnostics .timeline-content small{white-space:pre-wrap}.power-diagnostics .timeline-resource-identity{display:flex;align-items:center;gap:5px;overflow-wrap:anywhere}.power-diagnostics .timeline-content h4{margin:5px 0;font-size:15px}.power-diagnostics .timeline-content p{margin:4px 0 10px}\n.power-diagnostics .consumer-status{display:inline-flex;align-items:center;gap:4px;padding:1px 6px;margin-left:4px;border-radius:4px;font-size:11px;vertical-align:middle;color:var(--textColorSecondary);background:color-mix(in srgb,var(--textColorSecondary) 8%,transparent)}.power-diagnostics .consumer-status.warning{color:var(--colorWarning,#e0a134);background:color-mix(in srgb,var(--colorWarning,#e0a134) 10%,transparent)}.power-diagnostics .consumer-status.error{color:var(--colorError,#e56d79);background:color-mix(in srgb,var(--colorError,#e56d79) 10%,transparent)}.power-diagnostics .consumer-status.healthy{color:var(--colorSuccess,#67b58b);background:color-mix(in srgb,var(--colorSuccess,#67b58b) 10%,transparent)}.power-diagnostics .resource-cell .request-burst{display:inline-flex;align-items:center;gap:4px;margin-top:4px;padding:1px 5px;border-radius:4px;font-size:11px;color:var(--textColorSecondary);background:color-mix(in srgb,var(--colorWarning,#e0a134) 10%,transparent)}.power-diagnostics .timeline-content{border-left:2px solid color-mix(in srgb,var(--event-color) 60%,var(--borderColor))}.power-diagnostics .timeline-entry.warning .timeline-content{border-color:color-mix(in srgb,var(--event-color) 35%,var(--borderColor));border-left-color:var(--event-color);background:color-mix(in srgb,var(--event-color) 4%,transparent)}.power-diagnostics .evidence-badge{display:inline-flex;align-items:center;gap:5px;border-radius:4px;padding:2px 6px;font-size:12px;color:var(--primary,#609ee8);background:color-mix(in srgb,var(--primary,#609ee8) 9%,transparent);margin-bottom:4px}.power-diagnostics .evidence-badge.inferred{color:var(--colorWarning,#e0a134);background:color-mix(in srgb,var(--colorWarning,#e0a134) 9%,transparent)}\n.power-diagnostics .diagnostics-summary>button.summary-card{margin:0;width:100%;text-align:left;line-height:inherit;font:inherit}.power-diagnostics .diagnostics-summary>button.summary-card:hover{border-color:var(--colorWarning,#e0a134);background:color-mix(in srgb,var(--colorWarning,#e0a134) 5%,var(--contentColor))}\n@container diagnostics (min-width:701px) and (max-width:900px){.power-diagnostics .consumers-toolbar{grid-template-columns:160px minmax(160px,1fr) 180px}.power-diagnostics .consumers-toolbar>.warning-filter{grid-column:1/-1}}\n.power-diagnostics .consumer-identity-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;margin-bottom:4px}.power-diagnostics .consumer-identity-label{min-width:0;font-weight:500;overflow-wrap:anywhere}.power-diagnostics .consumer-identity-row .consumer-resource-link{display:inline-flex;align-items:center;justify-content:flex-start;gap:6px;min-width:0;margin:0;padding:0;border:0;background:transparent;text-align:left;font-weight:500;overflow-wrap:anywhere}.power-diagnostics .consumer-resource-link:hover{color:var(--primary)}.power-diagnostics .consumer-resource-link>.Icon{flex-shrink:0;opacity:.65}.power-diagnostics .consumer-expand-slot{display:flex;justify-content:flex-end;flex-shrink:0;padding-left:10px;border-left:1px solid var(--borderColor)}.power-diagnostics .consumer-identity-row .consumer-expand{display:flex;align-items:center;justify-content:center;width:28px;height:28px;min-width:28px;margin:0;padding:0;border:1px solid var(--borderColor);border-radius:4px;background:var(--contentColor);color:var(--textColorSecondary)}.power-diagnostics .consumer-identity-row .consumer-expand:hover{color:var(--primary);border-color:var(--primary)}\n.power-diagnostics .consumer-depth-1>td:first-child{padding-left:32px;position:relative}.power-diagnostics .consumer-depth-2>td:first-child{padding-left:48px;position:relative}.power-diagnostics .consumer-depth-1>td:first-child:before,.power-diagnostics .consumer-depth-2>td:first-child:before{content:\"\";position:absolute;top:0;bottom:0;left:16px;width:1px;background:var(--borderColor)}.power-diagnostics .consumer-depth-2>td:first-child:before{left:32px}.power-diagnostics .consumer-pod-row>td{background:color-mix(in srgb,var(--textColorSecondary) 3%,transparent)}.power-diagnostics .consumer-namespace-row>td:first-child{font-weight:500}.power-diagnostics .namespace-identity{min-width:0;max-width:100%;display:inline-flex;align-items:center;gap:7px;font-size:14px}.power-diagnostics .namespace-identity>.Icon{color:var(--primary)}\n.power-diagnostics .consumers-table{table-layout:fixed;min-width:900px}.power-diagnostics .consumers-table .metric-column{width:205px}.power-diagnostics .consumers-table .unscheduled-column{width:165px}.power-diagnostics .consumers-table th{white-space:nowrap;overflow-wrap:normal}.power-diagnostics .consumers-table th:last-child{white-space:normal;word-break:normal;overflow-wrap:normal}.power-diagnostics .consumers-table td{padding-top:12px;padding-bottom:12px}.power-diagnostics .consumer-identity-main{flex:1;min-width:0}.power-diagnostics .consumer-title-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}.power-diagnostics .consumer-title-line .consumer-status{margin-left:0}.power-diagnostics .consumer-subtitle{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:5px;line-height:1.4}.power-diagnostics .consumer-subtitle>.Icon{flex-shrink:0}.power-diagnostics .consumer-row-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.power-diagnostics .consumer-identity-row{align-items:flex-start;margin-bottom:0}.power-diagnostics .consumer-identity-row .consumer-resource-link{font-size:14px;color:var(--textColorPrimary)}.power-diagnostics .resource-value,.power-diagnostics .resource-request{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.power-diagnostics .resource-value small,.power-diagnostics .resource-request small{font-size:11px;white-space:nowrap}.power-diagnostics .resource-cell .resource-value strong{font-size:15px;font-weight:600}.power-diagnostics .resource-request{margin-top:3px}.power-diagnostics .resource-request>span{font-size:12px}.power-diagnostics .resource-cell .resource-coverage{margin-top:4px;font-size:10px;line-height:1.4}.power-diagnostics .unscheduled-cell>div{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.power-diagnostics .unscheduled-cell>div+div{margin-top:5px}.power-diagnostics .unscheduled-cell small{font-size:11px}.power-diagnostics .unscheduled-cell span{font-size:12px}.power-diagnostics .unscheduled-cell.has-requests span{color:var(--colorWarning,#e0a134)}.power-diagnostics .unscheduled-empty{color:var(--textColorSecondary);font-size:12px}.power-diagnostics .timeline-entry{color:var(--textColorPrimary)}.power-diagnostics .timeline-entry.warning .timeline-content h4{color:var(--colorWarning,#e0a134)}.power-diagnostics .pending-heading{padding:14px}.power-diagnostics .pending-heading>p{color:var(--textColorSecondary);margin-bottom:0}.power-diagnostics .diagnostics-summary{gap:10px;margin-bottom:16px}.power-diagnostics .diagnostics-summary>.summary-card{padding:10px 14px}.power-diagnostics .diagnostics-summary strong{font-size:22px}.power-diagnostics .diagnostics-summary .summary-icon{width:36px;height:36px;border-radius:8px}.power-diagnostics .diagnostics-summary .summary-card>div>span{font-size:12px}.power-diagnostics .diagnostics-explainer{padding:9px 12px}.power-diagnostics .view-intro{margin:12px 0}.power-diagnostics .view-intro p{font-size:12px}\n.power-diagnostics .pending-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.power-diagnostics .pending-title-row>div{min-width:0}.power-diagnostics .pending-title-row strong{font-size:12px;color:var(--textColorSecondary);overflow-wrap:anywhere}.power-diagnostics .pending-state-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:6px}.power-diagnostics .pending-state-row h3{margin:0}.power-diagnostics .pending-title-row .pending-open-action{margin:0;flex-shrink:0;min-height:28px;padding:3px 8px;font-size:12px;white-space:nowrap}.power-diagnostics .pending-request-badges{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.power-diagnostics .pending-request-badges>span{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;background:var(--contentColor);color:var(--textColorSecondary);font-size:12px}.power-diagnostics .pending-request-badges strong{color:var(--textColorPrimary);font-weight:500;font-variant-numeric:tabular-nums}\n.power-diagnostics .attention-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:20px}.power-diagnostics .attention-empty strong{font-size:15px;color:var(--textColorPrimary)}.power-diagnostics .attention-empty small{max-width:520px;line-height:1.5}.power-diagnostics .attention-empty>.Icon{color:var(--textColorSecondary)}.power-diagnostics .attention-empty.all-ready>.Icon,.power-diagnostics .attention-empty.all-ready strong{color:var(--colorSuccess,#67b58b)}.power-diagnostics .attention-empty.all-ready{border-color:color-mix(in srgb,var(--colorSuccess,#67b58b) 35%,var(--borderColor));background:color-mix(in srgb,var(--colorSuccess,#67b58b) 3%,transparent)}.power-diagnostics .consumer-tone-error>td{background:color-mix(in srgb,var(--colorError,#e56d79) 4%,transparent)}.power-diagnostics .consumer-tone-warning>td{background:color-mix(in srgb,var(--colorWarning,#e0a134) 3%,transparent)}.power-diagnostics .consumer-tone-error>td:first-child{box-shadow:inset 3px 0 var(--colorError,#e56d79)}.power-diagnostics .consumer-tone-warning>td:first-child{box-shadow:inset 3px 0 var(--colorWarning,#e0a134)}\n@media(max-width:700px){.power-diagnostics .diagnostics-summary{grid-template-columns:1fr}.power-diagnostics .toolbar{grid-template-columns:minmax(0,1fr);align-items:stretch}.power-diagnostics .toolbar>*,.power-diagnostics .diagnostics-select{width:100%;min-width:0}.power-diagnostics .warning-filter{padding:0}.power-diagnostics .timeline-entry{grid-template-columns:minmax(0,1fr);gap:6px;padding-left:24px}.power-diagnostics .timeline-time{text-align:left;padding:0}.power-diagnostics .timeline-entry:before{left:5px;top:44px}.power-diagnostics .timeline-content:before{left:-24px}.power-diagnostics .timeline-content{margin-left:0}}\n\n@container diagnostics (max-width:700px){.power-diagnostics .diagnostics-summary{grid-template-columns:1fr}.power-diagnostics .toolbar{grid-template-columns:minmax(0,1fr);align-items:stretch}.power-diagnostics .toolbar>*,.power-diagnostics .diagnostics-select{width:100%;min-width:0}.power-diagnostics .warning-filter{padding:0}.power-diagnostics .timeline-entry{grid-template-columns:minmax(0,1fr);gap:6px;padding-left:24px}.power-diagnostics .timeline-time{text-align:left;padding:0}.power-diagnostics .timeline-entry:before{left:5px;top:44px}.power-diagnostics .timeline-content:before{left:-24px}.power-diagnostics .timeline-content{margin-left:0}}\n\n.power-diagnostics .diagnostics-select .Select__control{background:color-mix(in srgb,var(--textColorPrimary) 5%,var(--contentColor));border:1px solid var(--inputControlBorder,var(--halfGray));box-shadow:none;cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s}\n.power-diagnostics .diagnostics-select .Select__control:hover{border-color:var(--textColorSecondary);background:color-mix(in srgb,var(--textColorPrimary) 8%,var(--contentColor))}\n.power-diagnostics .diagnostics-select .Select__control--is-focused{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}\n.power-diagnostics .diagnostics-select .Select__single-value{color:var(--textColorPrimary)}\n.power-diagnostics .diagnostics-select .Select__indicators{border-left:1px solid var(--borderFaintColor);align-self:stretch;padding:0 3px}\n.power-diagnostics .diagnostics-select .Select__dropdown-indicator{opacity:.85;color:var(--textColorSecondary)}\n@media(prefers-reduced-motion:reduce){.power-diagnostics .diagnostics-select .Select__control{transition:none}}\n\n.power-diagnostics .diagnostics-summary .summary-icon .Icon,.power-diagnostics .diagnostics-summary .summary-icon .Icon>.icon{color:var(--summary-color)}\n.power-diagnostics .pending-heading.error{border-left:3px solid var(--colorError,#e56d79);background:color-mix(in srgb,var(--colorError,#e56d79) 4%,transparent)}\n.power-diagnostics .pending-heading.warning{border-left:3px solid var(--colorWarning,#e0a134);background:color-mix(in srgb,var(--colorWarning,#e0a134) 3%,transparent)}\n.power-diagnostics .pending-heading>.consumer-status{margin:0 0 10px}\n.power-diagnostics .consumers-table .consumer-column{width:380px}.power-diagnostics .consumer-title-line{flex-wrap:wrap;white-space:normal}.power-diagnostics .consumer-identity-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.power-diagnostics .consumer-title-line .consumer-resource-link{display:inline-flex;max-width:100%;transition:color 160ms ease}.power-diagnostics .consumer-link-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.power-diagnostics .consumer-identity-row .consumer-resource-link:hover,.power-diagnostics .consumer-identity-row .consumer-resource-link:focus-visible{color:var(--primary)}.power-diagnostics .consumer-resource-link:focus-visible{outline:2px solid var(--primary);outline-offset:3px}.power-diagnostics .consumer-pod-row .consumer-resource-link,.power-diagnostics .consumer-pod-row .consumer-subtitle{padding-left:8px}@media(prefers-reduced-motion:reduce){.power-diagnostics .consumer-title-line .consumer-resource-link{transition:none}}.power-diagnostics .consumer-subtitle{flex-wrap:nowrap;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.power-diagnostics .consumer-status{flex-shrink:1;min-width:0;white-space:normal;overflow-wrap:anywhere}.power-diagnostics .consumers-table td{padding-top:8px;padding-bottom:8px}.power-diagnostics .resource-cell .request-burst{display:inline-flex;margin-top:3px;font-size:10px;white-space:nowrap}.power-diagnostics .explain-finding{font-size:11px;padding:3px 6px}.power-diagnostics .consumer-row-actions .explain-finding{width:26px;height:26px;padding:3px;margin:0}.power-diagnostics .timeline-content details{margin-top:6px}.power-diagnostics .timeline-content details li{margin:8px 0}\n.power-diagnostics .incident-copy{display:inline-flex;align-items:center;gap:8px;margin-right:8px}.power-diagnostics .incident-copy button{min-width:28px;min-height:28px;padding:4px;margin:0}.power-diagnostics .incident-copy [role=status]{font-size:11px;max-width:150px}.power-diagnostics .consumer-row-actions .incident-copy{margin-right:0}.power-diagnostics .consumer-row-actions .explain-finding{min-width:28px;min-height:28px}\n.power-diagnostics .explain-finding{min-width:28px;min-height:28px}.power-diagnostics .consumer-row-actions .incident-copy{position:relative}.power-diagnostics .consumer-row-actions .incident-copy [role=status]{position:absolute;right:0;top:100%;white-space:nowrap;background:var(--contentColor);padding:3px 6px;border:1px solid var(--borderColor);z-index:2;max-width:none}\n\n.power-diagnostics .incident-copy button,.power-diagnostics .consumer-row-actions .explain-finding{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:28px;height:28px;min-width:28px;min-height:28px;gap:0;padding:0;line-height:1;vertical-align:middle}.power-diagnostics .incident-copy button>.Icon,.power-diagnostics .consumer-row-actions .explain-finding>.Icon{margin:0;flex-shrink:0}\n\n.power-diagnostics .timeline-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.power-diagnostics .timeline-card-top>.timeline-card-heading{flex:1;min-width:0;padding-right:0}.power-diagnostics .timeline-card-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.power-diagnostics .timeline-card-actions .incident-copy{position:relative;margin:0}.power-diagnostics .timeline-card-actions .incident-copy [role=status]{position:absolute;right:0;top:calc(100% + 6px);white-space:nowrap;max-width:260px;background:var(--contentColor);border:1px solid var(--borderColor);padding:4px 6px;z-index:2}.power-diagnostics .timeline-content .timeline-card-actions .timeline-resource-action{position:static;width:28px;height:28px;min-width:28px;margin:0}.power-diagnostics .timeline-card-actions .explain-finding{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:28px;margin:0;padding:0 8px;line-height:1}.power-diagnostics .timeline-card-actions .explain-finding>.Icon{margin:0;flex-shrink:0}\n.power-diagnostics .namespace-scope{display:flex;align-items:center;flex-wrap:wrap;column-gap:20px;row-gap:6px;margin:4px 0 16px;min-height:32px}.power-diagnostics .namespace-scope-label{overflow-wrap:anywhere}.power-diagnostics .namespace-scope button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:32px;padding:4px 0;margin:0;border:0;background:transparent;box-shadow:none;color:var(--textColorSecondary)}.power-diagnostics .namespace-scope button:hover{color:var(--primary);background:transparent}.power-diagnostics .namespace-scope button:focus-visible{outline:2px solid var(--primary);outline-offset:3px}\n@container diagnostics (max-width:700px){.power-diagnostics .timeline-card-actions .timeline-action-label{display:none}.power-diagnostics .timeline-card-actions .explain-finding{width:28px;min-width:28px;padding:0}.power-diagnostics .timeline-card-top{gap:12px}}\n`;\n"],"mappings":";AAAA,IAAa,oBAAoB"}
|