@datatechsolutions/ui 2.11.57 → 2.11.59

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.
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
5
4
  var chunkS7KHTUHA_js = require('./chunk-S7KHTUHA.js');
6
5
  var chunkUZ3CMNUJ_js = require('./chunk-UZ3CMNUJ.js');
6
+ var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
7
7
  var Headless6 = require('@headlessui/react');
8
8
  var clsx = require('clsx');
9
9
  var React12 = require('react');
@@ -13866,6 +13866,288 @@ function FuelPipelineDemo({ defaultFuel = "gasolina", onFuelChange } = {}) {
13866
13866
  }, [onFuelChange]);
13867
13867
  return /* @__PURE__ */ jsxRuntime.jsx(FuelDashboardView, { activeFuel, onActiveFuelChange: handleFuelChange });
13868
13868
  }
13869
+ var INCIDENTS = [
13870
+ { id: "lambda-timeout", label: "Lambda Timeout", service: "kori-customers", severity: "critical", color: "text-red-400", bg: "bg-red-500/15" },
13871
+ { id: "db-pool", label: "DB Pool Exhausted", service: "fuel-analytics", severity: "critical", color: "text-orange-400", bg: "bg-orange-500/15" },
13872
+ { id: "deploy-fail", label: "Deploy Rollback", service: "windsock-auth", severity: "high", color: "text-amber-400", bg: "bg-amber-500/15" },
13873
+ { id: "memory-leak", label: "Memory Leak", service: "astrlabe-workflows", severity: "medium", color: "text-sky-400", bg: "bg-sky-500/15" }
13874
+ ];
13875
+ var INCIDENT_DETAILS = {
13876
+ "lambda-timeout": {
13877
+ rootCause: "Cold starts + unoptimized Sequelize query scanning 2.3M rows without index on organization_id",
13878
+ agentAnalysis: "Correlated Lambda Duration spike with Aurora slow query log. Found full table scan on customers table \u2014 missing index on (organization_id, created_at). Cold start adds 4.2s, query adds 24.8s = timeout.",
13879
+ remediation: "CREATE INDEX CONCURRENTLY idx_customers_org_created ON customers(organization_id, created_at); Set provisioned concurrency to 5.",
13880
+ result: "p99 latency: 29s \u2192 340ms. Zero timeouts in last 2 hours.",
13881
+ timeline: [
13882
+ { time: "03:14", event: "CloudWatch alarm: kori-customers Duration > 29s", color: "text-red-400" },
13883
+ { time: "03:14", event: "Agent triggered \u2014 pulling CloudWatch metrics + Aurora slow query log", color: "text-sky-400" },
13884
+ { time: "03:15", event: "Root cause identified: missing index on customers(organization_id)", color: "text-amber-400" },
13885
+ { time: "03:15", event: "Remediation: CREATE INDEX CONCURRENTLY executed", color: "text-purple-400" },
13886
+ { time: "03:16", event: "Provisioned concurrency set to 5 via CDK update", color: "text-purple-400" },
13887
+ { time: "03:18", event: "Verified: p99 latency 340ms, 0 timeouts", color: "text-emerald-400" }
13888
+ ]
13889
+ },
13890
+ "db-pool": {
13891
+ rootCause: "fuel-analytics Lambda opening new connections per invocation without reusing pool. 300 concurrent executions = 300 connections.",
13892
+ agentAnalysis: "Correlated RDS Proxy connection count with Lambda concurrency. Found pool initialization inside handler function (runs every invocation) instead of module scope (runs once per cold start).",
13893
+ remediation: "Moved pool init to module scope. Set Lambda reserved concurrency to 50. Enabled RDS Proxy idle connection pruning at 60s.",
13894
+ result: "Steady-state connections: 300 \u2192 12. Zero connection errors in last 4 hours.",
13895
+ timeline: [
13896
+ { time: "02:41", event: "CloudWatch alarm: fuel-analytics DatabaseConnections = 300", color: "text-red-400" },
13897
+ { time: "02:41", event: "Agent triggered \u2014 analyzing connection patterns + Lambda code", color: "text-sky-400" },
13898
+ { time: "02:42", event: "Root cause: pool created inside handler, not module scope", color: "text-amber-400" },
13899
+ { time: "02:43", event: "Fix applied: pool init moved to module scope", color: "text-purple-400" },
13900
+ { time: "02:43", event: "Reserved concurrency set to 50", color: "text-purple-400" },
13901
+ { time: "02:45", event: "Verified: 12 steady connections, 0 errors", color: "text-emerald-400" }
13902
+ ]
13903
+ },
13904
+ "deploy-fail": {
13905
+ rootCause: "New Lambda handler binary missing from S3 asset bucket. CDK synth succeeded but cargo-lambda build artifact was not uploaded due to CI timeout.",
13906
+ agentAnalysis: 'Traced CloudFormation events: Lambda function update failed with "S3 key not found". Cross-referenced with GitHub Actions run \u2014 cargo-lambda build step timed out at 10min limit. Build artifact never uploaded to cdk.out.',
13907
+ remediation: "Triggered rebuild with extended timeout (20min). Verified S3 asset uploaded. Re-deployed stack successfully.",
13908
+ result: "Stack status: UPDATE_COMPLETE. All 129 handlers healthy. CI timeout increased to 20min.",
13909
+ timeline: [
13910
+ { time: "14:22", event: "CDK deploy failed: UPDATE_ROLLBACK_COMPLETE", color: "text-red-400" },
13911
+ { time: "14:22", event: "Agent triggered \u2014 reading CloudFormation events", color: "text-sky-400" },
13912
+ { time: "14:23", event: "Root cause: S3 asset missing \u2014 CI build timeout", color: "text-amber-400" },
13913
+ { time: "14:24", event: "Rebuild triggered with 20min timeout", color: "text-purple-400" },
13914
+ { time: "14:38", event: "Build complete. Stack redeployed successfully.", color: "text-purple-400" },
13915
+ { time: "14:40", event: "Verified: all 129 handlers healthy", color: "text-emerald-400" }
13916
+ ]
13917
+ },
13918
+ "memory-leak": {
13919
+ rootCause: "Workflow execution SSE connections not closed on client disconnect. EventSource objects accumulate in Node.js heap across warm invocations.",
13920
+ agentAnalysis: "Memory usage trend shows linear growth correlated with SSE connection count. Found missing cleanup in workflow-runner SSE handler \u2014 no abort signal listener. Warm Lambda instances accumulate stale connections across invocations.",
13921
+ remediation: "Added AbortSignal listener to SSE handler. Implemented connection TTL of 5 minutes. Forced Lambda recycling at 90% memory threshold.",
13922
+ result: "Memory stable at 45-55%. Zero OOM kills in last 8 hours.",
13923
+ timeline: [
13924
+ { time: "10:00", event: "Memory trending alarm: 85% and rising", color: "text-amber-400" },
13925
+ { time: "10:00", event: "Agent triggered \u2014 analyzing memory trend + heap snapshots", color: "text-sky-400" },
13926
+ { time: "10:02", event: "Root cause: SSE connections not closed on disconnect", color: "text-amber-400" },
13927
+ { time: "10:03", event: "Fix: AbortSignal listener + 5min TTL added", color: "text-purple-400" },
13928
+ { time: "10:03", event: "Lambda recycling at 90% memory threshold", color: "text-purple-400" },
13929
+ { time: "10:10", event: "Verified: memory stable at 48%, 0 OOM kills", color: "text-emerald-400" }
13930
+ ]
13931
+ }
13932
+ };
13933
+ var AVATARS2 = {
13934
+ triage: "https://api.dicebear.com/9.x/lorelei/svg?seed=Sentinel&hair=variant31&beardProbability=0&mouth=happy01",
13935
+ debug: "https://api.dicebear.com/9.x/notionists/svg?seed=Debugger&hair=variant35&beardProbability=0&gestureProbability=0&glasses=variant03&glassesProbability=100",
13936
+ remediate: "https://api.dicebear.com/9.x/lorelei/svg?seed=Fixer&hair=variant31&beardProbability=0&glasses=variant01&glassesProbability=100&mouth=happy01"
13937
+ };
13938
+ function buildNodes(incident) {
13939
+ return [
13940
+ { id: "alert", label: "Alert Detected", subtitle: `${incident.service} \xB7 ${incident.severity}`, icon: HeroIcons.ExclamationTriangleIcon, color: "text-red-400", bg: "bg-red-500/15", glow: "rgba(239,68,68,0.5)", step: 0, badges: [{ text: incident.severity, color: "bg-red-500/20 text-red-300" }] },
13941
+ { id: "metrics", label: "Pull Metrics", subtitle: "CloudWatch \xB7 15min window", icon: HeroIcons.ChartBarIcon, color: "text-sky-400", bg: "bg-sky-500/15", glow: "rgba(14,165,233,0.5)", step: 1, badges: [{ text: "datasource", color: "bg-sky-500/20 text-sky-300" }] },
13942
+ { id: "logs", label: "Analyze Logs", subtitle: "CloudWatch Logs \xB7 error filter", icon: HeroIcons.CommandLineIcon, color: "text-sky-400", bg: "bg-sky-500/15", glow: "rgba(14,165,233,0.5)", step: 1, badges: [{ text: "datasource", color: "bg-sky-500/20 text-sky-300" }] },
13943
+ { id: "infra", label: "Infra State", subtitle: "CDK \xB7 stack status \xB7 config", icon: HeroIcons.CloudIcon, color: "text-sky-400", bg: "bg-sky-500/15", glow: "rgba(14,165,233,0.5)", step: 1, badges: [{ text: "datasource", color: "bg-sky-500/20 text-sky-300" }] },
13944
+ { id: "correlate", label: "Correlate", subtitle: "3 sources \u2192 unified context", icon: HeroIcons.BoltIcon, color: "text-amber-400", bg: "bg-amber-500/15", glow: "rgba(245,158,11,0.5)", step: 2, badges: [{ text: "aggregator", color: "bg-amber-500/20 text-amber-300" }] },
13945
+ { id: "debug-agent", label: "Debug Agent", subtitle: "Root cause analysis", icon: HeroIcons.CpuChipIcon, color: "text-purple-400", bg: "bg-purple-500/15", glow: "rgba(168,85,247,0.5)", step: 3, avatar: AVATARS2.debug, badges: [{ text: "agent", color: "bg-purple-500/20 text-purple-300" }, { text: "Claude", color: "bg-violet-500/20 text-violet-300" }] },
13946
+ { id: "plan", label: "Remediation Plan", subtitle: "Generate fix + rollback plan", icon: HeroIcons.DocumentMagnifyingGlassIcon, color: "text-amber-400", bg: "bg-amber-500/15", glow: "rgba(245,158,11,0.5)", step: 4, avatar: AVATARS2.triage, badges: [{ text: "agent", color: "bg-purple-500/20 text-purple-300" }, { text: "advanced", color: "bg-amber-500/20 text-amber-300" }] },
13947
+ { id: "execute", label: "Auto-Remediate", subtitle: "Apply fix \xB7 human-in-the-loop", icon: HeroIcons.WrenchScrewdriverIcon, color: "text-red-400", bg: "bg-red-500/15", glow: "rgba(239,68,68,0.5)", step: 5, avatar: AVATARS2.remediate, badges: [{ text: "agent", color: "bg-purple-500/20 text-purple-300" }, { text: "HITL", color: "bg-amber-500/20 text-amber-300" }] },
13948
+ { id: "verify", label: "Verify", subtitle: "Confirm resolution \xB7 metrics ok", icon: HeroIcons.ShieldCheckIcon, color: "text-emerald-400", bg: "bg-emerald-500/15", glow: "rgba(16,185,129,0.5)", step: 6, badges: [{ text: "check", color: "bg-emerald-500/20 text-emerald-300" }] },
13949
+ { id: "resolved", label: "Resolved", subtitle: "Incident closed \xB7 MTTR 4min", icon: HeroIcons.CheckCircleIcon, color: "text-emerald-400", bg: "bg-emerald-500/15", glow: "rgba(16,185,129,0.5)", step: 7 }
13950
+ ];
13951
+ }
13952
+ var STEP_LABELS2 = [
13953
+ "Alert detected \u2014 triaging",
13954
+ "Pulling metrics, logs, infra state (parallel)",
13955
+ "Correlating across sources",
13956
+ "Debug agent analyzing root cause",
13957
+ "Generating remediation plan",
13958
+ "Executing auto-remediation",
13959
+ "Verifying resolution",
13960
+ "Resolved \u2014 incident closed"
13961
+ ];
13962
+ function IncidentPipelineDemo({
13963
+ defaultIncident = "lambda-timeout",
13964
+ onIncidentChange
13965
+ } = {}) {
13966
+ const [activeIncident, setActiveIncident] = React12.useState(defaultIncident);
13967
+ const incident = INCIDENTS.find((i) => i.id === activeIncident);
13968
+ const detail = INCIDENT_DETAILS[activeIncident];
13969
+ const nodes = React12.useMemo(() => buildNodes(incident), [activeIncident]);
13970
+ const [activeStep, setActiveStep] = React12.useState(-1);
13971
+ const intervalRef = React12.useRef(null);
13972
+ const isIdle = activeStep === -1;
13973
+ const isRunning = activeStep >= 0 && activeStep < 7;
13974
+ const isComplete = activeStep === 7;
13975
+ const handleRun = React12.useCallback(() => {
13976
+ if (intervalRef.current) clearInterval(intervalRef.current);
13977
+ setActiveStep(0);
13978
+ let step = 0;
13979
+ intervalRef.current = setInterval(() => {
13980
+ step += 1;
13981
+ if (step > 7) {
13982
+ if (intervalRef.current) clearInterval(intervalRef.current);
13983
+ setActiveStep(7);
13984
+ } else {
13985
+ setActiveStep(step);
13986
+ }
13987
+ }, 1200);
13988
+ }, []);
13989
+ const handleStop = React12.useCallback(() => {
13990
+ if (intervalRef.current) clearInterval(intervalRef.current);
13991
+ setActiveStep(-1);
13992
+ }, []);
13993
+ const handleIncidentSelect = React12.useCallback((id) => {
13994
+ setActiveIncident(id);
13995
+ onIncidentChange?.(id);
13996
+ if (!isIdle) handleStop();
13997
+ }, [isIdle, handleStop, onIncidentChange]);
13998
+ React12.useEffect(() => () => {
13999
+ if (intervalRef.current) clearInterval(intervalRef.current);
14000
+ }, []);
14001
+ const getStatus = (node) => {
14002
+ if (activeStep < 0) return "idle";
14003
+ if (node.step < activeStep) return "complete";
14004
+ if (node.step === activeStep) return "active";
14005
+ return "idle";
14006
+ };
14007
+ const rows = React12.useMemo(() => {
14008
+ const result = [];
14009
+ let step = -1;
14010
+ for (const node of nodes) {
14011
+ if (node.step !== step) {
14012
+ result.push([]);
14013
+ step = node.step;
14014
+ }
14015
+ result[result.length - 1].push(node);
14016
+ }
14017
+ return result;
14018
+ }, [nodes]);
14019
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "liquid-surface rounded-2xl overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", children: [
14020
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 border-b border-white/5 px-3 py-2 shrink-0 overflow-x-auto", children: [
14021
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center rounded-lg bg-white/[0.03] p-0.5 gap-0.5 shrink-0", children: [
14022
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1.5 text-[7px] font-bold uppercase tracking-wider text-gray-600", children: "Incident" }),
14023
+ INCIDENTS.map((inc) => /* @__PURE__ */ jsxRuntime.jsx(
14024
+ "button",
14025
+ {
14026
+ type: "button",
14027
+ onClick: () => handleIncidentSelect(inc.id),
14028
+ className: `rounded-md px-2 py-1 text-[9px] font-semibold transition-all duration-200 ${activeIncident === inc.id ? `${inc.bg} ${inc.color} shadow-sm` : "text-gray-500 hover:text-gray-300 hover:bg-white/5"}`,
14029
+ children: inc.label
14030
+ },
14031
+ inc.id
14032
+ ))
14033
+ ] }),
14034
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-auto flex items-center gap-2 shrink-0", children: [
14035
+ activeStep >= 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-0.5", children: STEP_LABELS2.map((_, index) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: `h-1 w-2.5 rounded-full transition-all duration-500 ${index < activeStep || isComplete ? "bg-emerald-500" : index === activeStep ? "bg-red-500 animate-pulse" : "bg-white/10"}` }, index)) }),
14036
+ isComplete && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 rounded-full bg-emerald-500/10 px-2 py-0.5", children: [
14037
+ /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.CheckCircleIcon, { className: "h-3 w-3 text-emerald-400" }),
14038
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[8px] font-semibold text-emerald-400", children: "Resolved \xB7 MTTR 4min" })
14039
+ ] }),
14040
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `h-2 w-2 rounded-full ${isRunning ? "bg-red-500 animate-pulse" : isComplete ? "bg-emerald-500" : "bg-gray-600"}` }),
14041
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "max-w-[160px] truncate text-[9px] text-gray-500", children: activeStep >= 0 ? STEP_LABELS2[activeStep] : "Ready" }),
14042
+ isIdle ? /* @__PURE__ */ jsxRuntime.jsxs("button", { type: "button", onClick: handleRun, className: "flex items-center gap-1 rounded-lg bg-gradient-to-r from-red-600 to-rose-600 px-3 py-1 text-[10px] font-semibold text-white shadow-lg shadow-red-500/20 hover:shadow-red-500/30 hover:scale-105 active:scale-95 transition-all", children: [
14043
+ /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.PlayIcon, { className: "h-3 w-3" }),
14044
+ " Simulate"
14045
+ ] }) : isRunning ? /* @__PURE__ */ jsxRuntime.jsxs("button", { type: "button", onClick: handleStop, className: "flex items-center gap-1 rounded-lg bg-rose-600/80 px-3 py-1 text-[10px] font-semibold text-white", children: [
14046
+ /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.StopIcon, { className: "h-3 w-3" }),
14047
+ " Stop"
14048
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs("button", { type: "button", onClick: handleRun, className: "flex items-center gap-1 rounded-lg border border-white/10 px-3 py-1 text-[10px] font-medium text-gray-300 hover:bg-white/5", children: [
14049
+ /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.ArrowPathIcon, { className: "h-3 w-3" }),
14050
+ " Replay"
14051
+ ] })
14052
+ ] })
14053
+ ] }),
14054
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-0 overflow-x-auto px-6 py-4", children: [
14055
+ /* @__PURE__ */ jsxRuntime.jsx("style", { children: `
14056
+ @keyframes nodeGlow { 0%, 100% { box-shadow: 0 0 12px var(--glow); } 50% { box-shadow: 0 0 28px var(--glow); } }
14057
+ @keyframes edgeFlow { to { stroke-dashoffset: -12; } }
14058
+ ` }),
14059
+ rows.map((row, rowIndex) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex shrink-0 items-center gap-0", children: [
14060
+ rowIndex > 0 && /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "40", height: "2", className: "mx-1.5 shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "0", y1: "1", x2: "40", y2: "1", stroke: activeStep >= rows[rowIndex][0].step ? "#10b981" : "#374151", strokeWidth: "2", strokeDasharray: "4 3", style: { animation: activeStep === rows[rowIndex][0].step ? "edgeFlow 0.8s linear infinite" : "none" } }) }),
14061
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex ${row.length > 1 ? "flex-col gap-2" : ""}`, children: row.map((node) => {
14062
+ const status = getStatus(node);
14063
+ return /* @__PURE__ */ jsxRuntime.jsxs(
14064
+ "div",
14065
+ {
14066
+ className: `liquid-surface rounded-2xl px-4 py-3 transition-all duration-500 ${row.length > 1 ? "w-[180px]" : "w-[220px]"} ${status === "active" ? "scale-[1.03] ring-2 ring-red-500/50" : status === "complete" ? "ring-1 ring-emerald-500/30" : "opacity-40"}`,
14067
+ style: status === "active" ? { "--glow": node.glow, animation: "nodeGlow 1.5s ease-in-out infinite" } : void 0,
14068
+ children: [
14069
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1.5 flex items-center gap-2.5", children: [
14070
+ node.avatar ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: node.avatar, alt: "", className: "h-9 w-9 rounded-xl shrink-0" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex h-9 w-9 items-center justify-center rounded-xl shrink-0 ${node.bg}`, children: /* @__PURE__ */ jsxRuntime.jsx(node.icon, { className: `h-5 w-5 ${node.color}` }) }),
14071
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
14072
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate text-[13px] font-semibold text-white", children: node.label }),
14073
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate text-[9px] text-gray-500", children: node.subtitle })
14074
+ ] }),
14075
+ status === "complete" && /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.CheckCircleIcon, { className: "h-5 w-5 shrink-0 text-emerald-400" })
14076
+ ] }),
14077
+ node.badges && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1 mt-1", children: node.badges.map((badge) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: `rounded-full px-2 py-0.5 text-[8px] font-semibold ${badge.color}`, children: badge.text }, badge.text)) })
14078
+ ]
14079
+ },
14080
+ node.id
14081
+ );
14082
+ }) })
14083
+ ] }, rowIndex))
14084
+ ] }),
14085
+ activeStep >= 3 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-t border-white/5 px-3 py-2", children: [
14086
+ /* @__PURE__ */ jsxRuntime.jsx("style", { children: `
14087
+ .slide-active .fk-detail { opacity: 0; animation: fkDetailIn 0.4s ease forwards; }
14088
+ .slide-active .fk-detail:nth-child(1) { animation-delay: 0s; }
14089
+ .slide-active .fk-detail:nth-child(2) { animation-delay: 0.15s; }
14090
+ .slide-active .fk-detail:nth-child(3) { animation-delay: 0.3s; }
14091
+ .slide-active .fk-detail:nth-child(4) { animation-delay: 0.45s; }
14092
+ .slide-active .fk-detail:nth-child(5) { animation-delay: 0.6s; }
14093
+ @keyframes fkDetailIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
14094
+ ` }),
14095
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-3 gap-2", children: [
14096
+ activeStep >= 3 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "fk-detail liquid-surface rounded-xl p-3", children: [
14097
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1.5 flex items-center gap-2", children: [
14098
+ /* @__PURE__ */ jsxRuntime.jsx("img", { src: AVATARS2.debug, alt: "", className: "h-6 w-6 rounded-lg" }),
14099
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
14100
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[10px] font-semibold text-white", children: "Debug Agent" }),
14101
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[8px] text-gray-500", children: "Root cause analysis \xB7 1.2s" })
14102
+ ] }),
14103
+ /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.CheckCircleIcon, { className: "h-3.5 w-3.5 shrink-0 text-emerald-400" })
14104
+ ] }),
14105
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[9px] leading-relaxed text-gray-300", children: detail.rootCause }),
14106
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1.5 text-[8px] leading-relaxed text-gray-400", children: detail.agentAnalysis })
14107
+ ] }),
14108
+ activeStep >= 4 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "fk-detail liquid-surface rounded-xl p-3", children: [
14109
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1.5 flex items-center gap-2", children: [
14110
+ /* @__PURE__ */ jsxRuntime.jsx("img", { src: AVATARS2.triage, alt: "", className: "h-6 w-6 rounded-lg" }),
14111
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
14112
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[10px] font-semibold text-white", children: "Triage Agent" }),
14113
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[8px] text-gray-500", children: "Remediation plan \xB7 0.8s" })
14114
+ ] }),
14115
+ /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.CheckCircleIcon, { className: "h-3.5 w-3.5 shrink-0 text-emerald-400" })
14116
+ ] }),
14117
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-mono text-[8px] leading-relaxed text-gray-300", children: detail.remediation })
14118
+ ] }),
14119
+ activeStep >= 5 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "fk-detail liquid-surface rounded-xl p-3", children: [
14120
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1.5 flex items-center gap-2", children: [
14121
+ /* @__PURE__ */ jsxRuntime.jsx("img", { src: AVATARS2.remediate, alt: "", className: "h-6 w-6 rounded-lg" }),
14122
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
14123
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[10px] font-semibold text-white", children: "Remediate Agent" }),
14124
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[8px] text-gray-500", children: "Executing fix \xB7 human-in-the-loop" })
14125
+ ] }),
14126
+ activeStep >= 6 ? /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.CheckCircleIcon, { className: "h-3.5 w-3.5 shrink-0 text-emerald-400" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-3 w-3 shrink-0 rounded-full bg-amber-500 animate-pulse" })
14127
+ ] }),
14128
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[8px] leading-relaxed text-amber-300/80", children: "Applying changes with rollback plan ready. Awaiting verification..." })
14129
+ ] })
14130
+ ] }),
14131
+ activeStep >= 6 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 grid grid-cols-2 gap-2", children: [
14132
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "fk-detail rounded-xl border border-emerald-500/20 bg-emerald-500/[0.06] p-2.5", children: [
14133
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1 flex items-center gap-1.5", children: [
14134
+ /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.CheckCircleIcon, { className: "h-3.5 w-3.5 text-emerald-400" }),
14135
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-bold text-emerald-400", children: "Result" })
14136
+ ] }),
14137
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[9px] font-semibold text-emerald-300", children: detail.result })
14138
+ ] }),
14139
+ isComplete && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "fk-detail liquid-surface rounded-xl p-2.5", children: [
14140
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-1 block text-[10px] font-bold text-gray-400", children: "Timeline" }),
14141
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: detail.timeline.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-1.5", children: [
14142
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 font-mono text-[7px] text-gray-600", children: entry.time }),
14143
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: `h-1 w-1 mt-1 shrink-0 rounded-full ${entry.color.replace("text-", "bg-")}` }),
14144
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[7px] text-gray-400", children: entry.event })
14145
+ ] }, i)) })
14146
+ ] })
14147
+ ] })
14148
+ ] })
14149
+ ] }) });
14150
+ }
13869
14151
  function EntityDrawer({
13870
14152
  open,
13871
14153
  onClose,
@@ -21279,6 +21561,7 @@ exports.ITALY_REGION_PALETTES = ITALY_REGION_PALETTES;
21279
21561
  exports.IT_THEME_CONFIG = IT_THEME_CONFIG;
21280
21562
  exports.IconButton = IconButton;
21281
21563
  exports.ImageUpload = ImageUpload;
21564
+ exports.IncidentPipelineDemo = IncidentPipelineDemo;
21282
21565
  exports.InfoPopover = InfoPopover;
21283
21566
  exports.InlineForm = InlineForm;
21284
21567
  exports.InlineSpinner = InlineSpinner;
@@ -21790,5 +22073,5 @@ exports.usePullToRefresh = usePullToRefresh;
21790
22073
  exports.validateDashboardSpec = validateDashboardSpec;
21791
22074
  exports.xScale = xScale;
21792
22075
  exports.yScale = yScale;
21793
- //# sourceMappingURL=chunk-JGVH3R46.js.map
21794
- //# sourceMappingURL=chunk-JGVH3R46.js.map
22076
+ //# sourceMappingURL=chunk-GA72TPLH.js.map
22077
+ //# sourceMappingURL=chunk-GA72TPLH.js.map