@kb-labs/qa-entry 2.82.0 → 2.87.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/dist/widgets/117.js +1 -2
- package/dist/widgets/165.js +1 -2
- package/dist/widgets/326.js +1 -2
- package/dist/widgets/370.js +1 -2
- package/dist/widgets/405.js +1 -2
- package/dist/widgets/418.js +5 -6
- package/dist/widgets/451.js +1 -2
- package/dist/widgets/50.js +1 -2
- package/dist/widgets/546.js +1 -2
- package/dist/widgets/669.js +1 -2
- package/dist/widgets/694.js +1 -2
- package/dist/widgets/707.js +1 -2
- package/dist/widgets/775.js +1 -2
- package/dist/widgets/{162.js → 805.js} +10 -11
- package/dist/widgets/919.js +6 -7
- package/dist/widgets/945.js +1 -2
- package/dist/widgets/968.js +4 -5
- package/dist/widgets/__federation_expose_QADashboard.js +1 -2
- package/dist/widgets/mf-manifest.json +7 -7
- package/dist/widgets/mf-stats.json +25 -16
- package/dist/widgets/remoteEntry.js +4 -5
- package/package.json +7 -7
- package/dist/widgets/117.js.map +0 -1
- package/dist/widgets/162.js.map +0 -1
- package/dist/widgets/165.js.map +0 -1
- package/dist/widgets/326.js.map +0 -1
- package/dist/widgets/370.js.map +0 -1
- package/dist/widgets/405.js.map +0 -1
- package/dist/widgets/418.js.map +0 -1
- package/dist/widgets/451.js.map +0 -1
- package/dist/widgets/50.js.map +0 -1
- package/dist/widgets/546.js.map +0 -1
- package/dist/widgets/669.js.map +0 -1
- package/dist/widgets/694.js.map +0 -1
- package/dist/widgets/707.js.map +0 -1
- package/dist/widgets/775.js.map +0 -1
- package/dist/widgets/919.js.map +0 -1
- package/dist/widgets/945.js.map +0 -1
- package/dist/widgets/968.js.map +0 -1
- package/dist/widgets/__federation_expose_QADashboard.js.map +0 -1
- package/dist/widgets/remoteEntry.js.map +0 -1
package/dist/widgets/945.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"945.js","sources":["webpack://@kb-labs/qa-entry/../../../node_modules/.pnpm/react@19.2.5/node_modules/react/cjs/react-jsx-runtime.production.js","webpack://@kb-labs/qa-entry/../../../node_modules/.pnpm/react@19.2.5/node_modules/react/jsx-runtime.js"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n"],"names":["Symbol"],"mappings":"kHAWA,IAAI,EAAqBA,OAAO,GAAG,CAAC,8BAEpC,SAAS,EAAQ,CAAI,CAAE,CAAM,CAAE,CAAQ,EACrC,IAAI,EAAM,KAGV,GAFA,KAAK,IAAM,GAAa,GAAM,GAAK,CAAO,EAC1C,KAAK,IAAM,EAAO,GAAG,EAAK,GAAM,GAAK,EAAO,GAAG,AAAD,EAC1C,QAAS,EAEX,IAAK,IAAI,KADT,EAAW,CAAC,EACS,EACnB,QAAU,GAAa,EAAQ,CAAC,EAAS,CAAG,CAAM,CAAC,EAAS,AAAD,OACxD,EAAW,EAElB,MAAO,CACL,SAAU,EACV,KAAM,EACN,IAAK,EACL,IAAK,KAAK,IALZ,GAAS,EAAS,GAAG,AAAD,EAKO,EAAS,KAClC,MAAO,CACT,CACF,CACA,EAAQ,QAAQ,CAnBQA,OAAO,GAAG,CAAC,kBAoBnC,EAAQ,GAAG,CAAG,EACd,EAAQ,IAAI,CAAG,C,cC9Bb,EAAO,OAAO,CAAG,EAAjB,K"}
|
package/dist/widgets/968.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"968.js","sources":["webpack://@kb-labs/qa-entry/../../../studio/ui-core/dist/index.js"],"sourcesContent":["// src/tokens/colors.ts\nvar colors = {\n // Primary brand colors\n primary: {\n 50: \"#eff6ff\",\n 100: \"#dbeafe\",\n 200: \"#bfdbfe\",\n 300: \"#93c5fd\",\n 400: \"#60a5fa\",\n 500: \"#3b82f6\",\n 600: \"#2563eb\",\n 700: \"#1d4ed8\",\n 800: \"#1e40af\",\n 900: \"#1e3a8a\",\n 950: \"#172554\"\n },\n // Secondary accent colors\n secondary: {\n 50: \"#f0f9ff\",\n 100: \"#e0f2fe\",\n 200: \"#bae6fd\",\n 300: \"#7dd3fc\",\n 400: \"#38bdf8\",\n 500: \"#0ea5e9\",\n 600: \"#0284c7\",\n 700: \"#0369a1\",\n 800: \"#075985\",\n 900: \"#0c4a6e\",\n 950: \"#082f49\"\n },\n // Semantic colors\n success: {\n 50: \"#f0fdf4\",\n 500: \"#22c55e\",\n 600: \"#16a34a\",\n 700: \"#15803d\"\n },\n warning: {\n 50: \"#fffbeb\",\n 500: \"#f59e0b\",\n 600: \"#d97706\",\n 700: \"#b45309\"\n },\n error: {\n 50: \"#fef2f2\",\n 500: \"#ef4444\",\n 600: \"#dc2626\",\n 700: \"#b91c1c\"\n },\n // Neutral grays - updated to KB Labs UI Color Kit\n neutral: {\n 0: \"#ffffff\",\n // Light: Surface/Card\n 50: \"#f9fafb\",\n // Light: Background\n 100: \"#f3f4f6\",\n // Light: Muted Surface\n 200: \"#e5e7eb\",\n // Light: Border\n 300: \"#d4d4d4\",\n // Light: Lighter borders\n 400: \"#9ca3af\",\n // Light: Disabled\n 500: \"#6b7280\",\n // Light: Text Secondary\n 600: \"#525252\",\n // Light: Darker text\n 700: \"#404040\",\n // Dark: Lighter borders\n 800: \"#27272a\",\n // Dark: Muted Surface\n 900: \"#1a1a1c\",\n // Dark: Surface/Card\n 950: \"#0d0d0f\"\n // Dark: Background\n },\n // Muted/subtle colors - updated to KB Labs UI Color Kit\n muted: {\n background: \"#F3F4F6\",\n // Light: Muted Surface\n foreground: \"#6B7280\"\n // Light: Text Secondary\n }\n};\n\n// src/tokens/spacing.ts\nvar spacing = {\n 0: \"0\",\n 1: \"0.25rem\",\n // 4px\n 2: \"0.5rem\",\n // 8px\n 3: \"0.75rem\",\n // 12px\n 4: \"1rem\",\n // 16px\n 5: \"1.25rem\",\n // 20px\n 6: \"1.5rem\",\n // 24px\n 8: \"2rem\",\n // 32px\n 10: \"2.5rem\",\n // 40px\n 12: \"3rem\",\n // 48px\n 16: \"4rem\"\n // 64px\n};\n\n// src/tokens/typography.ts\nvar typography = {\n fontFamily: {\n sans: [\"Inter\", \"system-ui\", \"-apple-system\", \"sans-serif\"],\n mono: [\"Fira Code\", \"Courier New\", \"monospace\"]\n },\n fontSize: {\n xs: [\"0.75rem\", { lineHeight: \"1rem\" }],\n // 12px\n sm: [\"0.875rem\", { lineHeight: \"1.25rem\" }],\n // 14px\n base: [\"1rem\", { lineHeight: \"1.5rem\" }],\n // 16px\n lg: [\"1.125rem\", { lineHeight: \"1.75rem\" }],\n // 18px\n xl: [\"1.25rem\", { lineHeight: \"1.75rem\" }],\n // 20px\n \"2xl\": [\"1.5rem\", { lineHeight: \"2rem\" }],\n // 24px\n \"3xl\": [\"1.875rem\", { lineHeight: \"2.25rem\" }],\n // 30px\n \"4xl\": [\"2.25rem\", { lineHeight: \"2.5rem\" }]\n // 36px\n },\n fontWeight: {\n normal: \"400\",\n medium: \"500\",\n semibold: \"600\",\n bold: \"700\"\n }\n};\n\n// src/tokens/radius.ts\nvar radius = {\n none: \"0\",\n sm: \"0.125rem\",\n // 2px\n md: \"0.375rem\",\n // 6px\n lg: \"0.5rem\",\n // 8px\n xl: \"0.75rem\",\n // 12px\n full: \"9999px\"\n};\n\n// src/tokens/shadows.ts\nvar shadows = {\n sm: \"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\n md: \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)\",\n lg: \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)\",\n xl: \"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1)\",\n \"2xl\": \"0 25px 50px -12px rgba(0, 0, 0, 0.25)\",\n none: \"none\"\n};\n\n// src/themes/light.ts\nvar lightTheme = {\n colors,\n spacing,\n typography,\n radius,\n shadows\n};\n\n// src/themes/dark.ts\nvar darkTheme = {\n colors,\n spacing,\n typography,\n radius,\n shadows\n};\n\n// src/themes/semantic-colors.ts\nvar lightSemanticColors = {\n // Backgrounds\n \"bg-primary\": \"#F9FAFB\",\n // Background (почти белый, но не режет глаза)\n \"bg-secondary\": \"#FFFFFF\",\n // Surface / Card (карточки, панели, таблицы)\n \"bg-tertiary\": \"#F3F4F6\",\n // Muted Surface (вторичные блоки, фильтры, сайдбар)\n // Text\n \"text-primary\": \"#111827\",\n // Text Primary (почти чёрный, но мягкий)\n \"text-secondary\": \"#6B7280\",\n // Text Secondary (подписи, вторичный текст)\n \"text-tertiary\": \"#6B7280\",\n // Text Tertiary (вторичный текст)\n \"text-inverse\": \"#FFFFFF\",\n // Text Inverse (белый текст)\n // Borders\n \"border-primary\": \"#E5E7EB\",\n // Border (границы карточек, таблиц)\n \"border-secondary\": \"#D4D4D4\",\n // Border Secondary (более светлые границы)\n // Interactive\n \"link\": \"#2563EB\",\n // Accent Primary (KB Blue — кнопки, ссылки, активные табы)\n \"link-hover\": \"#1E40AF\",\n // Accent Hover (hover на синих элементах)\n \"accent-subtle\": \"#DBEAFE\",\n // Accent Subtle (фон и выделения для активных блоков)\n // Status\n \"success\": \"#16A34A\",\n // Success (успешные статусы, зелёные метрики)\n \"warning\": \"#F59E0B\",\n // Warning (предупреждения)\n \"error\": \"#DC2626\",\n // Error (ошибки)\n \"info\": \"#0EA5E9\",\n // Info (информационные состояния)\n // States\n \"disabled\": \"#9CA3AF\",\n // Disabled (неактивные элементы)\n // Effects\n \"shadow\": \"rgba(0, 0, 0, 0.05)\"\n // Shadow (тени для карточек и кнопок)\n};\nvar darkSemanticColors = {\n // Backgrounds\n \"bg-primary\": \"#0D0D0F\",\n // Background (глубокий, чуть теплее чистого чёрного)\n \"bg-secondary\": \"#1A1A1C\",\n // Surface / Card (карточки и панели)\n \"bg-tertiary\": \"#27272A\",\n // Muted Surface (вторичные зоны, hover-эффекты)\n // Text\n \"text-primary\": \"#F5F5F7\",\n // Text Primary (основной текст)\n \"text-secondary\": \"#A1A1AA\",\n // Text Secondary (вторичный текст)\n \"text-tertiary\": \"#A1A1AA\",\n // Text Tertiary (вторичный текст)\n \"text-inverse\": \"#1A1A1C\",\n // Text Inverse (тёмный текст)\n // Borders\n \"border-primary\": \"#3F3F46\",\n // Border (границы элементов)\n \"border-secondary\": \"#52525B\",\n // Border Secondary (более светлые границы)\n // Interactive\n \"link\": \"#3B82F6\",\n // Accent Primary (KB Blue)\n \"link-hover\": \"#60A5FA\",\n // Accent Hover (hover для кнопок/ссылок)\n \"accent-subtle\": \"#1E3A8A\",\n // Accent Subtle (тонкий фон подсветки)\n // Status\n \"success\": \"#22C55E\",\n // Success (успешные статусы)\n \"warning\": \"#EAB308\",\n // Warning (предупреждения)\n \"error\": \"#EF4444\",\n // Error (ошибки)\n \"info\": \"#38BDF8\",\n // Info (информационные элементы)\n // States\n \"disabled\": \"#52525B\",\n // Disabled (неактивные кнопки)\n // Effects\n \"shadow\": \"rgba(0, 0, 0, 0.4)\"\n // Shadow (глубокие тени для контраста)\n};\n\n// src/utils/css-vars.ts\nfunction generateCSSVars(theme, semanticColors) {\n const { colors: colors2, spacing: spacing2, typography: typography2, radius: radius2, shadows: shadows2 } = theme;\n const cssVars = [];\n Object.entries(semanticColors).forEach(([key, value]) => {\n cssVars.push(` --${key}: ${value};`);\n });\n Object.entries(colors2).forEach(([colorName, colorValue]) => {\n if (typeof colorValue === \"object\" && colorValue !== null) {\n Object.entries(colorValue).forEach(([shade, value]) => {\n cssVars.push(` --color-${colorName}-${shade}: ${value};`);\n });\n }\n });\n Object.entries(spacing2).forEach(([key, value]) => {\n cssVars.push(` --spacing-${key}: ${value};`);\n });\n Object.entries(typography2).forEach(([key, value]) => {\n if (typeof value === \"object\") {\n Object.entries(value).forEach(([prop, val]) => {\n cssVars.push(` --typography-${key}-${prop}: ${val};`);\n });\n } else {\n cssVars.push(` --typography-${key}: ${value};`);\n }\n });\n Object.entries(radius2).forEach(([key, value]) => {\n cssVars.push(` --radius-${key}: ${value};`);\n });\n Object.entries(shadows2).forEach(([key, value]) => {\n cssVars.push(` --shadow-${key}: ${value};`);\n });\n return cssVars.join(\"\\n\");\n}\nfunction generateThemeCSS(lightTheme2, darkTheme2) {\n return `\n:root {\n${generateCSSVars(lightTheme2, lightSemanticColors)}\n}\n\n.dark {\n${generateCSSVars(darkTheme2, darkSemanticColors)}\n}\n`.trim();\n}\n\nexport { colors, darkSemanticColors, darkTheme, generateCSSVars, generateThemeCSS, lightSemanticColors, lightTheme, radius, shadows, spacing, typography };\n//# sourceMappingURL=index.js.map\n//# sourceMappingURL=index.js.map"],"names":["s","Object"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"__federation_expose_QADashboard.js","sources":["webpack://@kb-labs/qa-entry/../../../node_modules/.pnpm/react@19.2.5/node_modules/react/cjs/react-jsx-runtime.production.js","webpack://@kb-labs/qa-entry/../../../node_modules/.pnpm/react@19.2.5/node_modules/react/jsx-runtime.js","webpack://@kb-labs/qa-entry/./src/studio/components/CheckDetailDrawer.tsx","webpack://@kb-labs/qa-entry/./src/studio/utils/check-display.tsx","webpack://@kb-labs/qa-entry/./src/studio/components/BaselineDiffCard.tsx","webpack://@kb-labs/qa-entry/./src/studio/components/ErrorGroupsPanel.tsx","webpack://@kb-labs/qa-entry/./src/studio/components/OverviewTab.tsx","webpack://@kb-labs/qa-entry/./src/studio/components/HistoryTab.tsx","webpack://@kb-labs/qa-entry/./src/studio/components/TrendsTab.tsx","webpack://@kb-labs/qa-entry/./src/studio/components/RegressionsTab.tsx","webpack://@kb-labs/qa-entry/./src/studio/pages/QADashboard.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * Drawer showing per-package details for a specific check type.\n * Opens when a check card is clicked on the overview tab.\n */\n\nimport * as React from 'react';\nimport {\n UIDrawer,\n UITable,\n UITag,\n UIInput,\n UISpace,\n UITypographyText,\n UIButton,\n UIMessage,\n UIAccordion,\n UIIcon,\n useData,\n useMutateData,\n useTheme,\n} from '@kb-labs/sdk/studio';\nimport type { QADetailsResponse, QARunCheckRequest, QARunCheckResponse } from '@kb-labs/qa-contracts';\n\ninterface CheckDetailDrawerProps {\n open: boolean;\n checkType: string | null;\n checkLabel: string;\n onClose: () => void;\n}\n\nconst STATUS_CONFIG: Record<string, { color: string; iconName: string }> = {\n passed: { color: 'success', iconName: 'CheckCircleOutlined' },\n failed: { color: 'error', iconName: 'CloseCircleOutlined' },\n skipped: { color: 'default', iconName: 'MinusCircleOutlined' },\n};\n\nexport function CheckDetailDrawer({ open, checkType, checkLabel, onClose }: CheckDetailDrawerProps) {\n const { antdToken: token } = useTheme();\n const { data: details, isLoading } = useData<QADetailsResponse>('/v1/plugins/qa/details');\n const { mutateAsync: runCheck, isLoading: isRunning } = useMutateData<QARunCheckRequest, QARunCheckResponse>(\n '/v1/plugins/qa/run/check',\n 'POST',\n );\n const [search, setSearch] = React.useState('');\n\n if (!checkType) { return null; }\n\n const checkData = details?.checks[checkType];\n\n const allPackages = [\n ...(checkData?.failed ?? []).map((p) => ({ ...p, status: 'failed' as const })),\n ...(checkData?.passed ?? []).map((p) => ({ ...p, status: 'passed' as const })),\n ...(checkData?.skipped ?? []).map((p) => ({ ...p, status: 'skipped' as const })),\n ].filter((p) =>\n !search || p.name.toLowerCase().includes(search.toLowerCase()) || p.repo.toLowerCase().includes(search.toLowerCase()),\n );\n\n const handleRunCheck = async () => {\n void UIMessage.loading(`Running ${checkLabel}...`, 0);\n try {\n const data = await runCheck({ checkType: checkType as 'lint' | 'typeCheck' | 'test' });\n UIMessage.destroy();\n if (data.status === 'passed') {\n UIMessage.success(`${checkLabel} passed in ${(data.durationMs / 1000).toFixed(1)}s`);\n } else {\n UIMessage.warning(`${checkLabel}: ${data.result.failed.length} failures in ${(data.durationMs / 1000).toFixed(1)}s`);\n }\n } catch (error) {\n UIMessage.destroy();\n UIMessage.error(`${checkLabel} failed: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n };\n\n const canRerun = checkType !== 'build';\n\n const columns = [\n {\n title: 'Status',\n dataIndex: 'status',\n key: 'status',\n width: 80,\n filters: [\n { text: 'Failed', value: 'failed' },\n { text: 'Passed', value: 'passed' },\n { text: 'Skipped', value: 'skipped' },\n ],\n onFilter: (value: unknown, record: { status: string }) => record.status === value,\n render: (status: keyof typeof STATUS_CONFIG) => {\n const cfg = STATUS_CONFIG[status];\n return <UITag color={cfg?.color} icon={cfg ? <UIIcon name={cfg.iconName} /> : undefined}>{status}</UITag>;\n },\n },\n {\n title: 'Package',\n dataIndex: 'name',\n key: 'name',\n sorter: (a: { name: string }, b: { name: string }) => a.name.localeCompare(b.name),\n render: (name: string) => (\n <UITypographyText code style={{ fontSize: token.fontSizeSM }}>{name}</UITypographyText>\n ),\n },\n {\n title: 'Repo',\n dataIndex: 'repo',\n key: 'repo',\n width: 180,\n filters: [...new Set(allPackages.map((p) => p.repo))].map((r) => ({ text: r, value: r })),\n onFilter: (value: unknown, record: { repo: string }) => record.repo === value,\n render: (repo: string) => <UITag>{repo}</UITag>,\n },\n ];\n\n const expandedRowRender = (record: { error?: string }) => {\n if (!record.error) { return null; }\n return (\n <UIAccordion\n ghost\n items={[{\n key: '1',\n label: 'Error output',\n children: (\n <pre style={{\n background: token.colorFillTertiary,\n color: token.colorText,\n padding: token.paddingSM,\n borderRadius: token.borderRadius,\n fontSize: token.fontSizeSM,\n maxHeight: 300,\n overflow: 'auto',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-all',\n }}>\n {record.error}\n </pre>\n ),\n }]}\n />\n );\n };\n\n return (\n <UIDrawer\n title={\n <UISpace>\n <span>{checkLabel} Details</span>\n <UITag color={checkData?.failed.length ? 'error' : 'success'}>\n {checkData?.failed.length ?? 0} failed\n </UITag>\n </UISpace>\n }\n placement=\"right\"\n width={720}\n open={open}\n onClose={onClose}\n extra={\n canRerun && (\n <UIButton\n variant=\"primary\"\n icon={<UIIcon name=\"PlayCircleOutlined\" />}\n onClick={() => void handleRunCheck()}\n loading={isRunning}\n size=\"small\"\n >\n Re-run {checkLabel}\n </UIButton>\n )\n }\n >\n <UIInput\n placeholder=\"Filter by package or repo...\"\n prefix={<UIIcon name=\"SearchOutlined\" />}\n value={search}\n onChange={(value) => setSearch(value)}\n style={{ marginBottom: token.marginMD }}\n allowClear\n />\n\n <UITable\n dataSource={allPackages}\n columns={columns}\n rowKey=\"name\"\n size=\"small\"\n loading={isLoading}\n pagination={{ pageSize: 50 }}\n expandable={{\n expandedRowRender,\n rowExpandable: (record) => !!record.error,\n }}\n />\n </UIDrawer>\n );\n}\n","/**\n * Shared utilities for rendering QA check icons and labels.\n */\n\nimport * as React from 'react';\nimport { UIIcon } from '@kb-labs/sdk/studio';\n\nconst KNOWN_ICONS: Record<string, string> = {\n build: 'BuildOutlined',\n lint: 'FileSearchOutlined',\n typeCheck: 'FileTextOutlined',\n test: 'ExperimentOutlined',\n};\n\nexport function getCheckIcon(checkType: string): React.ReactNode {\n return <UIIcon name={KNOWN_ICONS[checkType] ?? 'CheckCircleOutlined'} />;\n}\n\nexport function formatCheckLabel(checkType: string): string {\n return checkType.charAt(0).toUpperCase() + checkType.slice(1).replace(/([A-Z])/g, ' $1');\n}\n","/**\n * Baseline diff card — shows new failures, fixed packages, and delta per check type.\n * Includes \"Update Baseline\" button.\n */\n\nimport * as React from 'react';\nimport {\n UICard,\n UIRow,\n UICol,\n UITag,\n UITypographyText,\n UIAlert,\n UIButton,\n UIPopconfirm,\n UIMessage,\n UISpace,\n UIStatistic,\n UIIcon,\n useData,\n useMutateData,\n useTheme,\n} from '@kb-labs/sdk/studio';\nimport { formatCheckLabel } from '../utils/check-display';\nimport type { QABaselineDiffResponse } from '@kb-labs/qa-contracts';\n\nexport function BaselineDiffCard() {\n const { antdToken: token } = useTheme();\n const { data: diffData, isLoading } = useData<QABaselineDiffResponse>('/v1/plugins/qa/baseline/diff');\n const { mutateAsync: updateBaseline, isLoading: isUpdating } = useMutateData<undefined, void>(\n '/v1/plugins/qa/baseline/update',\n 'POST',\n );\n\n const handleUpdateBaseline = async () => {\n void UIMessage.loading('Updating baseline...', 0);\n try {\n await updateBaseline(undefined);\n UIMessage.destroy();\n UIMessage.success('Baseline updated successfully');\n } catch (error) {\n UIMessage.destroy();\n UIMessage.error(`Failed to update baseline: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n };\n\n if (isLoading) { return null; }\n\n if (!diffData?.baseline) {\n return (\n <UIAlert\n variant=\"warning\"\n showIcon\n message=\"No baseline set\"\n description=\"Run QA first, then update baseline to enable diff tracking.\"\n action={\n <UIButton\n variant=\"primary\"\n size=\"small\"\n icon={<UIIcon name=\"SaveOutlined\" />}\n onClick={() => void handleUpdateBaseline()}\n loading={isUpdating}\n >\n Create Baseline\n </UIButton>\n }\n />\n );\n }\n\n if (!diffData.hasDiff) {\n return (\n <UIAlert\n variant=\"success\"\n showIcon\n icon={<UIIcon name=\"CheckCircleOutlined\" />}\n message=\"No changes since baseline\"\n description={`Baseline from ${new Date(diffData.baseline.timestamp).toLocaleString()}`}\n action={\n <UIPopconfirm\n title=\"Update baseline?\"\n description=\"This will set the current QA state as the new baseline.\"\n onConfirm={() => void handleUpdateBaseline()}\n >\n <UIButton size=\"small\" icon={<UIIcon name=\"SaveOutlined\" />} loading={isUpdating}>\n Update\n </UIButton>\n </UIPopconfirm>\n }\n />\n );\n }\n\n let totalNew = 0;\n let totalFixed = 0;\n for (const d of Object.values(diffData.diff)) {\n totalNew += d.newFailures.length;\n totalFixed += d.fixed.length;\n }\n\n return (\n <UICard\n title={\n <UISpace>\n <UIIcon name=\"WarningOutlined\" style={{ color: totalNew > 0 ? token.colorError : token.colorSuccess }} />\n <span>Baseline Diff</span>\n {totalNew > 0 && <UITag color=\"error\">+{totalNew} new failures</UITag>}\n {totalFixed > 0 && <UITag color=\"success\">{totalFixed} fixed</UITag>}\n </UISpace>\n }\n extra={\n <UIPopconfirm\n title=\"Update baseline?\"\n description=\"This will set the current QA state as the new baseline.\"\n onConfirm={() => void handleUpdateBaseline()}\n >\n <UIButton variant=\"primary\" icon={<UIIcon name=\"SaveOutlined\" />} loading={isUpdating} size=\"small\">\n Update Baseline\n </UIButton>\n </UIPopconfirm>\n }\n >\n <UIRow gutter={[16, 16]}>\n {Object.entries(diffData.diff).map(([ct, d]) => (\n <UICol xs={24} sm={12} lg={6} key={ct}>\n <UICard size=\"small\" style={{ textAlign: 'center' }}>\n <UITypographyText strong>{formatCheckLabel(ct)}</UITypographyText>\n <div style={{ marginTop: token.marginXS }}>\n <UIStatistic\n value={Math.abs(d.delta)}\n prefix={d.delta > 0 ? <UIIcon name=\"ArrowUpOutlined\" /> : d.delta < 0 ? <UIIcon name=\"ArrowDownOutlined\" /> : null}\n valueStyle={{\n color: d.delta > 0 ? token.colorError : d.delta < 0 ? token.colorSuccess : token.colorTextSecondary,\n fontSize: token.fontSizeHeading3,\n }}\n suffix={d.delta > 0 ? 'more failures' : d.delta < 0 ? 'fewer failures' : 'no change'}\n />\n </div>\n {d.newFailures.length > 0 && (\n <div style={{ marginTop: token.marginXS, textAlign: 'left' }}>\n <UITypographyText type=\"danger\" style={{ fontSize: token.fontSizeSM }}>New failures:</UITypographyText>\n {d.newFailures.slice(0, 3).map((pkg) => (\n <div key={pkg}><UITag color=\"error\" style={{ fontSize: token.fontSizeSM }}>{pkg}</UITag></div>\n ))}\n {d.newFailures.length > 3 && (\n <UITypographyText type=\"secondary\" style={{ fontSize: token.fontSizeSM }}>\n +{d.newFailures.length - 3} more\n </UITypographyText>\n )}\n </div>\n )}\n {d.fixed.length > 0 && (\n <div style={{ marginTop: token.marginXS, textAlign: 'left' }}>\n <UITypographyText type=\"success\" style={{ fontSize: token.fontSizeSM }}>Fixed:</UITypographyText>\n {d.fixed.slice(0, 3).map((pkg) => (\n <div key={pkg}><UITag color=\"success\" style={{ fontSize: token.fontSizeSM }}>{pkg}</UITag></div>\n ))}\n {d.fixed.length > 3 && (\n <UITypographyText type=\"secondary\" style={{ fontSize: token.fontSizeSM }}>\n +{d.fixed.length - 3} more\n </UITypographyText>\n )}\n </div>\n )}\n </UICard>\n </UICol>\n ))}\n </UIRow>\n </UICard>\n );\n}\n","/**\n * Panel showing errors grouped by pattern (ESLint rules, TS codes, etc.)\n * Helps identify the most impactful errors to fix first.\n */\n\nimport * as React from 'react';\nimport {\n UICard,\n UITable,\n UITag,\n UITypographyText,\n UISpace,\n UIBadge,\n UISpin,\n UIIcon,\n useData,\n useTheme,\n} from '@kb-labs/sdk/studio';\nimport type { QAErrorGroupsResponse } from '@kb-labs/qa-contracts';\n\nconst CHECK_TYPE_CONFIG: Record<string, { color: string; iconName: string; label: string }> = {\n build: { color: 'red', iconName: 'BugOutlined', label: 'Build' },\n lint: { color: 'orange', iconName: 'FileSearchOutlined', label: 'Lint' },\n typeCheck: { color: 'blue', iconName: 'FileTextOutlined', label: 'Types' },\n test: { color: 'purple', iconName: 'ExperimentOutlined', label: 'Tests' },\n};\n\nexport function ErrorGroupsPanel() {\n const { antdToken: token } = useTheme();\n const { data, isLoading } = useData<QAErrorGroupsResponse>('/v1/plugins/qa/errors/groups');\n\n if (isLoading) {\n return <UISpin size=\"large\" style={{ display: 'block', margin: '48px auto' }} />;\n }\n\n if (!data || (data.groups.length === 0 && data.ungrouped === 0)) {\n return null;\n }\n\n const columns = [\n {\n title: 'Pattern',\n dataIndex: 'pattern',\n key: 'pattern',\n render: (pattern: string) => (\n <UITypographyText code style={{ fontSize: token.fontSizeSM }}>{pattern}</UITypographyText>\n ),\n },\n {\n title: 'Type',\n dataIndex: 'checkType',\n key: 'checkType',\n width: 100,\n filters: Object.entries(CHECK_TYPE_CONFIG).map(([key, cfg]) => ({\n text: cfg.label,\n value: key,\n })),\n onFilter: (value: unknown, record: { checkType: string }) => record.checkType === value,\n render: (ct: string) => {\n const cfg = CHECK_TYPE_CONFIG[ct];\n return cfg ? (\n <UITag color={cfg.color} icon={<UIIcon name={cfg.iconName} />}>{cfg.label}</UITag>\n ) : (\n <UITag>{ct}</UITag>\n );\n },\n },\n {\n title: 'Affected',\n dataIndex: 'count',\n key: 'count',\n width: 100,\n sorter: (a: { count: number }, b: { count: number }) => a.count - b.count,\n defaultSortOrder: 'descend' as const,\n render: (count: number) => (\n <UIBadge count={count} style={{ backgroundColor: count > 5 ? token.colorError : count > 2 ? token.colorWarning : token.colorSuccess }} />\n ),\n },\n {\n title: 'Packages',\n dataIndex: 'packages',\n key: 'packages',\n render: (packages: string[]) => (\n <UISpace wrap size={[4, 4]}>\n {packages.slice(0, 3).map((pkg) => (\n <UITag key={pkg} style={{ fontSize: token.fontSizeSM }}>{pkg}</UITag>\n ))}\n {packages.length > 3 && (\n <UITypographyText type=\"secondary\" style={{ fontSize: token.fontSizeSM }}>\n +{packages.length - 3} more\n </UITypographyText>\n )}\n </UISpace>\n ),\n },\n ];\n\n const expandedRowRender = (record: { example?: string; packages: string[] }) => (\n <div>\n <UITypographyText type=\"secondary\" style={{ fontSize: token.fontSizeSM }}>Example:</UITypographyText>\n <pre style={{\n background: token.colorFillTertiary,\n color: token.colorText,\n padding: token.paddingXS,\n borderRadius: token.borderRadiusSM,\n fontSize: token.fontSizeSM,\n maxHeight: 150,\n overflow: 'auto',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-all',\n marginTop: token.marginXXS,\n }}>\n {record.example}\n </pre>\n {record.packages.length > 3 && (\n <div style={{ marginTop: token.marginXS }}>\n <UITypographyText type=\"secondary\" style={{ fontSize: token.fontSizeSM }}>All affected packages:</UITypographyText>\n <div style={{ marginTop: token.marginXXS }}>\n <UISpace wrap size={[4, 4]}>\n {record.packages.map((pkg: string) => (\n <UITag key={pkg} style={{ fontSize: token.fontSizeSM }}>{pkg}</UITag>\n ))}\n </UISpace>\n </div>\n </div>\n )}\n </div>\n );\n\n return (\n <UICard\n title={\n <UISpace>\n <UIIcon name=\"BugOutlined\" />\n <span>Error Groups</span>\n <UITag>{data.groups.length} patterns</UITag>\n {data.ungrouped > 0 && (\n <UITag color=\"default\">{data.ungrouped} unique errors</UITag>\n )}\n </UISpace>\n }\n >\n <UITable\n dataSource={data.groups}\n columns={columns}\n rowKey=\"pattern\"\n size=\"small\"\n pagination={{ pageSize: 10 }}\n expandable={{\n expandedRowRender,\n rowExpandable: () => true,\n }}\n />\n </UICard>\n );\n}\n","/**\n * Overview tab - per-check pass rates, status badge, baseline diff, error groups.\n * Check cards are clickable — opens a drawer with per-package details.\n */\n\nimport * as React from 'react';\nimport {\n UIRow, UICol, UICard, UIStatistic, UIProgress, UITag, UIAlert,\n UISpin, UISpace, UIButton, UIMessage, UIIcon, UICheckbox, UIPopover,\n useData, useMutateData, useTheme,\n} from '@kb-labs/sdk/studio';\nimport { CheckDetailDrawer } from './CheckDetailDrawer';\nimport { BaselineDiffCard } from './BaselineDiffCard';\nimport { ErrorGroupsPanel } from './ErrorGroupsPanel';\nimport { getCheckIcon } from '../utils/check-display';\nimport type { QASummaryResponse, QARunResponse } from '@kb-labs/qa-contracts';\nfunction getPassRate(passed: number, total: number, skipped: number = 0): number {\n if (total === 0) {return 100;}\n return Math.round(((passed + skipped) / total) * 100);\n}\n\nfunction getProgressStatus(rate: number): 'success' | 'exception' | 'normal' {\n if (rate >= 100) {return 'success';}\n if (rate < 50) {return 'exception';}\n return 'normal';\n}\n\ntype AntToken = ReturnType<typeof useTheme>['antdToken'];\n\nfunction getProgressColor(rate: number, token: AntToken): string {\n if (rate >= 100) {return token.colorSuccess;}\n if (rate >= 80) {return token.colorSuccess;}\n if (rate >= 60) {return token.colorWarning;}\n return token.colorError;\n}\n\nexport function OverviewTab() {\n const { antdToken: token } = useTheme();\n const { data: summary, isLoading: summaryLoading } = useData<QASummaryResponse>(\n '/v1/plugins/qa/summary',\n );\n const { mutateAsync: runQA, isLoading: isRunning } = useMutateData<\n { skipChecks?: string[] },\n QARunResponse\n >('/v1/plugins/qa/run');\n\n const [drawerOpen, setDrawerOpen] = React.useState(false);\n const [selectedCheck, setSelectedCheck] = React.useState<{ type: string; label: string } | null>(null);\n const [skippedChecks, setSkippedChecks] = React.useState<Set<string>>(new Set());\n\n const toggleCheck = (id: string, enabled: boolean) => {\n setSkippedChecks(prev => {\n const next = new Set(prev);\n if (enabled) { next.delete(id); } else { next.add(id); }\n return next;\n });\n };\n\n const handleCheckClick = (checkType: string, label: string) => {\n setSelectedCheck({ type: checkType, label });\n setDrawerOpen(true);\n };\n\n const handleRunQA = async () => {\n void UIMessage.loading('Running QA checks...', 0);\n try {\n const data = await runQA({ skipChecks: skippedChecks.size > 0 ? [...skippedChecks] : undefined });\n UIMessage.destroy();\n if (data.status === 'passed') {\n UIMessage.success(`QA passed in ${(data.durationMs / 1000).toFixed(1)}s`);\n } else {\n const totalFailed = Object.values(data.results).reduce((sum, r) => sum + r.failed.length, 0);\n UIMessage.warning(`QA finished with ${totalFailed} failures in ${(data.durationMs / 1000).toFixed(1)}s`);\n }\n } catch (error) {\n UIMessage.destroy();\n UIMessage.error(`QA run failed: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n };\n\n if (summaryLoading) {\n return <UISpin size=\"large\" style={{ display: 'block', margin: '48px auto' }} />;\n }\n\n if (!summary) {\n return (\n <UIAlert\n variant=\"info\"\n showIcon\n message=\"No QA data\"\n description=\"Run 'pnpm qa:save' to generate QA history.\"\n style={{ marginBottom: token.marginLG }}\n />\n );\n }\n\n const overallPassed = summary.status === 'passed';\n\n return (\n <div>\n {/* Run QA Button */}\n <div style={{ marginBottom: token.marginMD }}>\n <UISpace>\n <UIButton\n variant=\"primary\"\n icon={<UIIcon name=\"PlayCircleOutlined\" />}\n onClick={() => void handleRunQA()}\n loading={isRunning}\n disabled={isRunning}\n >\n {isRunning ? 'Running QA Checks...' : 'Run QA'}\n </UIButton>\n <UIPopover\n trigger=\"click\"\n title=\"Checks to run\"\n content={\n <UISpace direction=\"vertical\">\n {(summary?.checks ?? []).map(c => (\n <UICheckbox\n key={c.checkType}\n checked={!skippedChecks.has(c.checkType)}\n onChange={(checked) => toggleCheck(c.checkType, checked)}\n >\n {getCheckIcon(c.checkType)}{' '}{c.label}\n </UICheckbox>\n ))}\n </UISpace>\n }\n >\n <UIButton icon={<UIIcon name=\"SettingOutlined\" />} disabled={isRunning} />\n </UIPopover>\n </UISpace>\n </div>\n\n {/* Status Banner */}\n <UIAlert\n variant={overallPassed ? 'success' : 'error'}\n showIcon\n icon={overallPassed ? <UIIcon name=\"CheckCircleOutlined\" /> : <UIIcon name=\"CloseCircleOutlined\" />}\n message={\n <UISpace>\n <span style={{ fontWeight: 600 }}>\n QA Status: {overallPassed ? 'All Checks Passing' : 'Checks Failing'}\n </span>\n <UITag color={overallPassed ? 'success' : 'error'}>\n {summary.status.toUpperCase()}\n </UITag>\n </UISpace>\n }\n description={\n summary.lastRunAt ? (\n <UISpace split={<span style={{ color: token.colorBorderSecondary }}>|</span>}>\n <span><UIIcon name=\"ClockCircleOutlined\" /> {new Date(summary.lastRunAt).toLocaleString()}</span>\n {summary.git && (\n <span><UIIcon name=\"BranchesOutlined\" /> {summary.git.branch} ({summary.git.commit.slice(0, 7)})</span>\n )}\n <span>{summary.historyCount} runs in history</span>\n </UISpace>\n ) : undefined\n }\n style={{ marginBottom: token.marginLG }}\n />\n\n {/* Check Cards */}\n <UIRow gutter={[16, 16]} style={{ marginBottom: token.marginLG }}>\n {summary.checks.map((check) => {\n const rate = getPassRate(check.passed, check.total, check.skipped);\n return (\n <UICol xs={24} sm={12} lg={6} key={check.checkType}>\n <UICard hoverable onClick={() => handleCheckClick(check.checkType, check.label)} style={{ cursor: 'pointer' }}>\n <div style={{ textAlign: 'center', marginBottom: token.marginMD }}>\n <UIProgress\n type=\"circle\"\n percent={rate}\n size={120}\n status={getProgressStatus(rate)}\n strokeColor={getProgressColor(rate, token)}\n format={() => `${rate}%`}\n />\n </div>\n <div style={{ textAlign: 'center', marginBottom: token.marginXS }}>\n <UISpace>\n {getCheckIcon(check.checkType)}\n <span style={{ fontWeight: 600, fontSize: token.fontSizeLG }}>{check.label}</span>\n </UISpace>\n </div>\n <UIRow gutter={8} justify=\"center\">\n <UICol><UIStatistic title=\"Passed\" value={check.passed} valueStyle={{ color: token.colorSuccess, fontSize: token.fontSize }} /></UICol>\n <UICol>\n <UIStatistic\n title=\"Failed\"\n value={check.failed}\n valueStyle={{ color: check.failed > 0 ? token.colorError : token.colorSuccess, fontSize: token.fontSize }}\n />\n </UICol>\n {check.skipped > 0 && (\n <UICol><UIStatistic title=\"Skipped\" value={check.skipped} valueStyle={{ color: token.colorTextSecondary, fontSize: token.fontSize }} /></UICol>\n )}\n </UIRow>\n </UICard>\n </UICol>\n );\n })}\n </UIRow>\n\n {/* Baseline Diff */}\n <div style={{ marginBottom: token.marginLG }}>\n <BaselineDiffCard />\n </div>\n\n {/* Error Groups */}\n <div style={{ marginBottom: token.marginLG }}>\n <ErrorGroupsPanel />\n </div>\n\n {/* Check Detail Drawer */}\n <CheckDetailDrawer\n open={drawerOpen}\n checkType={selectedCheck?.type ?? null}\n checkLabel={selectedCheck?.label ?? ''}\n onClose={() => setDrawerOpen(false)}\n />\n </div>\n );\n}\n","/**\n * History tab - table of past QA runs with expandable failure details\n */\n\nimport * as React from 'react';\nimport { UITable, UITag, UISpin, UIAlert, UISpace, UIIcon, UIFlex, useData, useTheme, type UITableColumn } from '@kb-labs/sdk/studio';\nimport type { QAHistoryResponse, HistoryEntry } from '@kb-labs/qa-contracts';\nimport { formatCheckLabel } from '../utils/check-display';\n\nfunction renderCheckColumn(entry: HistoryEntry, checkType: string) {\n const s = entry.summary[checkType];\n if (!s) {return '-';}\n const hasFailed = s.failed > 0;\n return (\n <UITag color={hasFailed ? 'error' : 'success'} style={{ fontVariantNumeric: 'tabular-nums' }}>\n {s.passed}/{s.passed + s.failed}\n </UITag>\n );\n}\n\nexport function HistoryTab() {\n const { antdToken: token } = useTheme();\n const { data, isLoading } = useData<QAHistoryResponse>('/v1/plugins/qa/history');\n\n if (isLoading) {\n return <UISpin size=\"large\" style={{ display: 'block', margin: '48px auto' }} />;\n }\n\n if (!data || data.entries.length === 0) {\n return (\n <UIAlert\n variant=\"info\"\n showIcon\n message=\"No QA history\"\n description=\"Run 'pnpm qa:save' to record QA results to history.\"\n />\n );\n }\n\n const columns: UITableColumn<HistoryEntry>[] = [\n {\n title: 'Date',\n dataIndex: 'timestamp',\n key: 'timestamp',\n width: 180,\n render: (ts: string) => new Date(ts).toLocaleString(),\n sorter: (a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime(),\n defaultSortOrder: 'descend',\n },\n {\n title: 'Status',\n dataIndex: 'status',\n key: 'status',\n width: 100,\n render: (status: string) => (\n <UITag\n color={status === 'passed' ? 'success' : 'error'}\n icon={status === 'passed' ? <UIIcon name=\"CheckCircleOutlined\" /> : <UIIcon name=\"CloseCircleOutlined\" />}\n >\n {status.toUpperCase()}\n </UITag>\n ),\n filters: [\n { text: 'Passed', value: 'passed' },\n { text: 'Failed', value: 'failed' },\n ],\n onFilter: (value, record) => record.status === value,\n },\n {\n title: 'Git',\n key: 'git',\n width: 220,\n render: (_, record) => (\n <UISpace direction=\"vertical\" size={0}>\n <span><UIIcon name=\"BranchesOutlined\" /> {record.git.branch}</span>\n <span style={{ color: token.colorTextSecondary, fontSize: token.fontSizeSM }}>\n {record.git.commit.slice(0, 7)} - {record.git.message.slice(0, 40)}\n {record.git.message.length > 40 ? '...' : ''}\n </span>\n </UISpace>\n ),\n },\n ...(data.entries[0] ? Object.keys(data.entries[0].summary) : []).map((ct) => ({\n title: formatCheckLabel(ct),\n key: ct,\n width: 90,\n align: 'center' as const,\n render: (_: unknown, record: HistoryEntry) => renderCheckColumn(record, ct),\n })),\n ];\n\n return (\n <UITable<HistoryEntry>\n columns={columns}\n dataSource={data.entries}\n rowKey=\"timestamp\"\n pagination={{ pageSize: 15 }}\n size=\"middle\"\n expandable={{\n expandedRowRender: (record) => (\n <div style={{ padding: `${token.paddingXS}px ${token.paddingMD}px` }}>\n {Object.keys(record.failedPackages).map((ct) => {\n const failed = record.failedPackages[ct];\n if (!failed || failed.length === 0) {return null;}\n return (\n <div key={ct} style={{ marginBottom: token.marginSM }}>\n <strong>{formatCheckLabel(ct)} failures ({failed.length}):</strong>\n <UIFlex wrap=\"wrap\" gap={1} style={{ marginTop: token.marginXXS }}>\n {failed.map((pkg) => (\n <UITag key={pkg} color=\"error\" style={{ fontSize: token.fontSizeSM }}>{pkg}</UITag>\n ))}\n </UIFlex>\n </div>\n );\n })}\n </div>\n ),\n rowExpandable: (record) =>\n Object.values(record.failedPackages).some((arr) => arr.length > 0),\n }}\n />\n );\n}\n","/**\n * Trends tab — time-series chart, summary cards with velocity, changelog timeline\n */\n\nimport * as React from 'react';\nimport {\n UICard, UIRow, UICol, UITag, UIStatistic, UISpin, UIAlert, UISpace, UISelect,\n UITimeline, UITimelineItem, UIEmptyState, UIIcon, UIStatisticsChart, UIFlex,\n useData, useTheme,\n} from '@kb-labs/sdk/studio';\nimport type { QAEnrichedTrendsResponse, EnrichedTrendResult, TrendChangelogEntry } from '@kb-labs/qa-contracts';\nimport { getCheckIcon, formatCheckLabel } from '../utils/check-display';\n\ntype AntToken = ReturnType<typeof useTheme>['antdToken'];\n\nfunction getTrendColor(trend: string, token: AntToken): string {\n switch (trend) {\n case 'regression': return token.colorError;\n case 'improvement': return token.colorSuccess;\n default: return token.colorTextSecondary;\n }\n}\n\nfunction getTrendIcon(trend: string): React.ReactNode {\n switch (trend) {\n case 'regression': return <UIIcon name=\"ArrowUpOutlined\" />;\n case 'improvement': return <UIIcon name=\"ArrowDownOutlined\" />;\n default: return <UIIcon name=\"MinusOutlined\" />;\n }\n}\n\nfunction getTrendTag(trend: string): React.ReactNode {\n switch (trend) {\n case 'regression': return <UITag color=\"error\">Regression</UITag>;\n case 'improvement': return <UITag color=\"success\">Improvement</UITag>;\n default: return <UITag>No Change</UITag>;\n }\n}\n\nfunction formatTimestamp(iso: string): string {\n const d = new Date(iso);\n const mo = String(d.getMonth() + 1).padStart(2, '0');\n const dd = String(d.getDate()).padStart(2, '0');\n const hh = String(d.getHours()).padStart(2, '0');\n const mm = String(d.getMinutes()).padStart(2, '0');\n return `${mo}-${dd} ${hh}:${mm}`;\n}\n\nfunction buildChartData(trends: EnrichedTrendResult[]) {\n const rows: Array<{ date: string; value: number; category: string }> = [];\n for (const trend of trends) {\n const label = trend.label ?? formatCheckLabel(trend.checkType);\n for (const point of trend.timeSeries) {\n rows.push({ date: formatTimestamp(point.timestamp), value: point.failed, category: label });\n }\n }\n return rows;\n}\n\nfunction buildMergedChangelog(trends: EnrichedTrendResult[]) {\n const byCommit = new Map<string, {\n timestamp: string;\n gitCommit: string;\n gitMessage: string;\n changes: Array<{ checkType: string; entry: TrendChangelogEntry }>;\n }>();\n\n for (const trend of trends) {\n for (const entry of trend.changelog) {\n let group = byCommit.get(entry.gitCommit);\n if (!group) {\n group = { timestamp: entry.timestamp, gitCommit: entry.gitCommit, gitMessage: entry.gitMessage, changes: [] };\n byCommit.set(entry.gitCommit, group);\n }\n group.changes.push({ checkType: trend.checkType, entry });\n }\n }\n\n return [...byCommit.values()].sort((a, b) => b.timestamp.localeCompare(a.timestamp));\n}\n\nexport function TrendsTab() {\n const { antdToken: token } = useTheme();\n const [window, setWindow] = React.useState<number | undefined>(undefined);\n\n const trendsUrl = window ? `/v1/plugins/qa/trends?window=${window}&enriched=true` : '/v1/plugins/qa/trends?enriched=true';\n const { data, isLoading } = useData<QAEnrichedTrendsResponse>(trendsUrl);\n\n if (isLoading) {\n return <UISpin size=\"large\" style={{ display: 'block', margin: '48px auto' }} />;\n }\n\n if (!data || data.trends.length === 0) {\n return (\n <UIAlert\n variant=\"info\"\n showIcon\n message=\"Not enough data for trend analysis\"\n description=\"Need at least 2 history entries. Run 'pnpm qa:save' multiple times.\"\n />\n );\n }\n\n const chartData = buildChartData(data.trends);\n const mergedChangelog = buildMergedChangelog(data.trends);\n\n return (\n <div>\n {/* Window selector */}\n <UIFlex justify=\"between\" align=\"center\" style={{ marginBottom: token.marginMD }}>\n <span style={{ color: token.colorTextSecondary }}>\n Analyzing {data.historyCount} history entries (window: {data.window})\n </span>\n <UISpace>\n <span>Window size:</span>\n <UISelect\n value={window ?? data.window}\n onChange={(val) => setWindow(val as number | undefined)}\n style={{ width: 80 }}\n options={[\n { label: '5', value: 5 },\n { label: '10', value: 10 },\n { label: '20', value: 20 },\n { label: '50', value: 50 },\n ]}\n />\n </UISpace>\n </UIFlex>\n\n {/* Time-series chart */}\n <UIStatisticsChart\n title=\"Failure Count Over Time\"\n data={chartData}\n loading={false}\n xField=\"date\"\n yField=\"value\"\n colorField=\"category\"\n height={300}\n showLegend={false}\n chartProps={{ legend: { position: 'top' } }}\n />\n\n {/* Summary Cards */}\n <UIRow gutter={[16, 16]} style={{ marginTop: token.marginMD }}>\n {data.trends.map((trend) => (\n <UICol xs={24} sm={12} key={trend.checkType}>\n <UICard size=\"small\">\n <UIRow align=\"middle\" gutter={16}>\n <UICol flex=\"auto\">\n <UISpace>\n {getCheckIcon(trend.checkType)}\n <span style={{ fontWeight: 600, fontSize: token.fontSizeLG }}>\n {trend.label ?? formatCheckLabel(trend.checkType)}\n </span>\n {getTrendTag(trend.trend)}\n </UISpace>\n </UICol>\n </UIRow>\n <UIRow gutter={16} style={{ marginTop: token.marginSM }}>\n <UICol span={6}><UIStatistic title=\"Previous\" value={trend.previous} valueStyle={{ fontSize: token.fontSizeHeading4 }} /></UICol>\n <UICol span={6}><UIStatistic title=\"Current\" value={trend.current} valueStyle={{ fontSize: token.fontSizeHeading4 }} /></UICol>\n <UICol span={6}>\n <UIStatistic\n title=\"Delta\"\n value={Math.abs(trend.delta)}\n prefix={getTrendIcon(trend.trend)}\n valueStyle={{ color: getTrendColor(trend.trend, token), fontSize: token.fontSizeHeading4 }}\n />\n </UICol>\n <UICol span={6}>\n <UIStatistic\n title=\"Velocity\"\n value={Math.abs(trend.velocity)}\n precision={1}\n prefix={trend.velocity > 0 ? <UIIcon name=\"ArrowUpOutlined\" /> : trend.velocity < 0 ? <UIIcon name=\"ArrowDownOutlined\" /> : <UIIcon name=\"MinusOutlined\" />}\n suffix=\"/run\"\n valueStyle={{ color: trend.velocity > 0 ? token.colorError : trend.velocity < 0 ? token.colorSuccess : token.colorTextSecondary, fontSize: token.fontSizeHeading4 }}\n />\n </UICol>\n </UIRow>\n </UICard>\n </UICol>\n ))}\n </UIRow>\n\n {/* Changelog Timeline */}\n <UICard title=\"Changelog — What Changed\" style={{ marginTop: token.marginMD }}>\n {mergedChangelog.length === 0 ? (\n <UIEmptyState description=\"No changes detected between entries\" />\n ) : (\n <UITimeline>\n {mergedChangelog.map((group) => {\n const totalNewFailures = group.changes.reduce((s, c) => s + c.entry.newFailures.length, 0);\n const totalFixed = group.changes.reduce((s, c) => s + c.entry.fixed.length, 0);\n const dotColor = totalNewFailures > totalFixed ? token.colorError : token.colorSuccess;\n\n return (\n <UITimelineItem key={group.gitCommit} color={dotColor}>\n <div style={{ marginBottom: token.marginXXS }}>\n <UITag style={{ fontFamily: 'monospace' }}>{group.gitCommit.slice(0, 7)}</UITag>\n <span style={{ color: token.colorTextSecondary, fontSize: token.fontSizeSM }}>\n {new Date(group.timestamp).toLocaleString()}\n </span>\n </div>\n <div style={{ fontSize: token.fontSize, color: token.colorTextSecondary, marginBottom: token.marginXS }}>{group.gitMessage}</div>\n {group.changes.map(({ checkType, entry }) => (\n <div key={checkType} style={{ marginBottom: token.marginXXS }}>\n <span style={{ fontWeight: 500 }}>{formatCheckLabel(checkType)}:</span>\n {entry.newFailures.length > 0 && (\n <span style={{ marginLeft: 8 }}>\n <UITag color=\"error\" style={{ fontSize: token.fontSizeSM }}>+{entry.newFailures.length} new</UITag>\n {entry.newFailures.map((pkg) => (\n <UITag key={pkg} color=\"red\" style={{ fontSize: token.fontSizeSM }}>{pkg}</UITag>\n ))}\n </span>\n )}\n {entry.fixed.length > 0 && (\n <span style={{ marginLeft: 8 }}>\n <UITag color=\"success\" style={{ fontSize: token.fontSizeSM }}>-{entry.fixed.length} fixed</UITag>\n {entry.fixed.map((pkg) => (\n <UITag key={pkg} color=\"green\" style={{ fontSize: token.fontSizeSM }}>{pkg}</UITag>\n ))}\n </span>\n )}\n </div>\n ))}\n </UITimelineItem>\n );\n })}\n </UITimeline>\n )}\n </UICard>\n </div>\n );\n}\n","/**\n * Regressions tab — detect and display new failures since last QA save\n */\n\nimport * as React from 'react';\nimport { UIAlert, UICard, UITag, UISpin, UISpace, UIEmptyState, UIIcon, UIFlex, useData, useTheme } from '@kb-labs/sdk/studio';\nimport { getCheckIcon, formatCheckLabel } from '../utils/check-display';\nimport type { QARegressionsResponse } from '@kb-labs/qa-contracts';\n\nexport function RegressionsTab() {\n const { antdToken: token } = useTheme();\n const { data, isLoading } = useData<QARegressionsResponse>('/v1/plugins/qa/regressions');\n\n if (isLoading) {\n return <UISpin size=\"large\" style={{ display: 'block', margin: '48px auto' }} />;\n }\n\n if (!data) {\n return (\n <UIAlert\n variant=\"info\"\n showIcon\n message=\"Not enough data for regression detection\"\n description=\"Need at least 2 history entries. Run 'pnpm qa:save' multiple times.\"\n />\n );\n }\n\n if (!data.hasRegressions) {\n return (\n <div>\n <UIAlert\n variant=\"success\"\n showIcon\n icon={<UIIcon name=\"CheckCircleOutlined\" />}\n message=\"No regressions detected\"\n description=\"All check types show the same or fewer failures compared to the previous QA run.\"\n style={{ marginBottom: token.marginLG }}\n />\n <UIEmptyState description=\"No regressions to display\" />\n </div>\n );\n }\n\n return (\n <div>\n <UIAlert\n variant=\"error\"\n showIcon\n icon={<UIIcon name=\"WarningOutlined\" />}\n message={`${data.regressions.length} regression${data.regressions.length > 1 ? 's' : ''} detected`}\n description=\"The following check types have new failures compared to the previous QA run.\"\n style={{ marginBottom: token.marginLG }}\n />\n\n {data.regressions.map((reg, idx) => (\n <UICard\n key={idx}\n title={\n <UISpace>\n {getCheckIcon(reg.checkType)}\n <span>{formatCheckLabel(reg.checkType)}</span>\n <UITag color=\"error\">+{reg.delta} new failure{reg.delta > 1 ? 's' : ''}</UITag>\n </UISpace>\n }\n style={{ marginBottom: token.marginMD }}\n >\n <div>\n <strong>New failures:</strong>\n <UIFlex wrap=\"wrap\" gap={1} style={{ marginTop: token.marginXS }}>\n {reg.newFailures.map((pkg) => (\n <UITag key={pkg} color=\"error\">\n {pkg}\n </UITag>\n ))}\n </UIFlex>\n </div>\n </UICard>\n ))}\n\n <UIAlert\n variant=\"warning\"\n showIcon\n message=\"Action required\"\n description={\n <div>\n <p>Fix the regressions above before merging. Recommendations:</p>\n <ol style={{ margin: 0, paddingLeft: 20 }}>\n <li>Run <code>pnpm qa --json</code> to see detailed error messages</li>\n <li>Fix the failing packages</li>\n <li>Re-run <code>pnpm qa:save</code> to verify fixes</li>\n <li>Update baseline if needed: <code>pnpm kb baseline:update</code></li>\n </ol>\n </div>\n }\n style={{ marginTop: token.marginMD }}\n />\n </div>\n );\n}\n","/**\n * QA plugin main page — build, lint, type check, and test results dashboard\n */\n\nimport { UIPage, UIPageHeader, UITabs } from '@kb-labs/sdk/studio';\nimport { OverviewTab } from '../components/OverviewTab';\nimport { HistoryTab } from '../components/HistoryTab';\nimport { TrendsTab } from '../components/TrendsTab';\nimport { RegressionsTab } from '../components/RegressionsTab';\n\nexport default function QADashboard() {\n const tabs = (\n <UITabs\n syncUrl=\"search\"\n items={[\n { key: 'overview', label: 'Overview', children: <OverviewTab /> },\n { key: 'history', label: 'History', children: <HistoryTab /> },\n { key: 'trends', label: 'Trends', children: <TrendsTab /> },\n { key: 'regressions', label: 'Regressions', children: <RegressionsTab /> },\n ]}\n />\n );\n\n return (\n <UIPage>\n <UIPageHeader\n title=\"QA\"\n description=\"Build, lint, type check, and test results with baseline tracking and regression detection\"\n tabs={tabs}\n />\n </UIPage>\n );\n}\n"],"names":["Symbol","STATUS_CONFIG","CheckDetailDrawer","param","open","checkType","checkLabel","onClose","token","_useTheme","_useData","details","isLoading","_useMutateData","runCheck","isRunning","_React_useState","search","setSearch","checkData","allPackages","p","handleRunCheck","data","error","UIMessage","_instanceof","Error","columns","onFilter","value","record","render","status","cfg","UITag","UIIcon","undefined","sorter","a","b","name","UITypographyText","Set","r","repo","UIDrawer","UISpace","canRerun","UIButton","onClick","UIInput","onChange","UITable","expandedRowRender","UIAccordion","rowExpandable","KNOWN_ICONS","getCheckIcon","_KNOWN_ICONS_checkType","formatCheckLabel","BaselineDiffCard","diffData","updateBaseline","isUpdating","handleUpdateBaseline","UIAlert","Date","UIPopconfirm","onConfirm","totalNew","totalFixed","_iteratorError","Object","d","UICard","UIRow","ct","UICol","UIStatistic","Math","pkg","CHECK_TYPE_CONFIG","ErrorGroupsPanel","UISpin","pattern","key","count","UIBadge","packages","OverviewTab","summary","summaryLoading","runQA","drawerOpen","setDrawerOpen","_React_useState1","selectedCheck","setSelectedCheck","_React_useState2","skippedChecks","setSkippedChecks","toggleCheck","id","enabled","prev","next","handleCheckClick","label","handleRunQA","totalFailed","sum","overallPassed","UIPopover","c","UICheckbox","checked","check","rate","getPassRate","passed","total","skipped","UIProgress","format","HistoryTab","ts","_","s","entry","hasFailed","failed","UIFlex","arr","TrendsTab","window","setWindow","chartData","buildChartData","trends","rows","trend","_trend_label","_iteratorError1","point","formatTimestamp","iso","mo","String","dd","hh","mm","mergedChangelog","buildMergedChangelog","byCommit","Map","group","UISelect","val","UIStatisticsChart","getTrendTag","getTrendIcon","getTrendColor","UIEmptyState","UITimeline","dotColor","totalNewFailures","UITimelineItem","RegressionsTab","reg","idx","QADashboard","tabs","UITabs","UIPage","UIPageHeader"],"mappings":"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"}
|