@kb-labs/qa-entry 2.15.0 → 2.18.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/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/manifest.js +5 -5
- package/dist/manifest.js.map +1 -1
- package/dist/widgets/370.js +1 -1
- package/dist/widgets/370.js.map +1 -1
- package/dist/widgets/@mf-types.zip +0 -0
- package/dist/widgets/mf-manifest.json +5 -5
- package/dist/widgets/mf-stats.json +5 -5
- package/dist/widgets/remoteEntry.js +3 -3
- package/dist/widgets/remoteEntry.js.map +1 -1
- package/package.json +8 -8
package/dist/index.js
CHANGED
|
@@ -125,7 +125,7 @@ var manifest = {
|
|
|
125
125
|
cli: {
|
|
126
126
|
commands: [
|
|
127
127
|
{
|
|
128
|
-
id: "
|
|
128
|
+
id: "run",
|
|
129
129
|
group: "qa",
|
|
130
130
|
describe: "Run all QA checks (build, lint, types, tests)",
|
|
131
131
|
longDescription: "Runs comprehensive QA checks across the monorepo: build, lint, type check, and tests. Compares with baseline if available. Supports incremental builds and package filtering.",
|
|
@@ -135,7 +135,7 @@ var manifest = {
|
|
|
135
135
|
permissions: pluginPermissions
|
|
136
136
|
},
|
|
137
137
|
{
|
|
138
|
-
id: "
|
|
138
|
+
id: "save",
|
|
139
139
|
group: "qa",
|
|
140
140
|
describe: "Run QA checks and save results to history",
|
|
141
141
|
longDescription: "Runs all QA checks and saves the results as a history entry. History is stored in .kb/qa/history.json (max 50 entries).",
|
|
@@ -145,7 +145,7 @@ var manifest = {
|
|
|
145
145
|
permissions: pluginPermissions
|
|
146
146
|
},
|
|
147
147
|
{
|
|
148
|
-
id: "
|
|
148
|
+
id: "history",
|
|
149
149
|
group: "qa",
|
|
150
150
|
describe: "Show QA run history",
|
|
151
151
|
longDescription: "Displays the QA run history with pass/fail status for each check type.",
|
|
@@ -155,7 +155,7 @@ var manifest = {
|
|
|
155
155
|
permissions: pluginPermissions
|
|
156
156
|
},
|
|
157
157
|
{
|
|
158
|
-
id: "
|
|
158
|
+
id: "trends",
|
|
159
159
|
group: "qa",
|
|
160
160
|
describe: "Show QA quality trends over time",
|
|
161
161
|
longDescription: "Analyzes quality trends by comparing failure counts over a sliding window of history entries.",
|
|
@@ -165,7 +165,7 @@ var manifest = {
|
|
|
165
165
|
permissions: pluginPermissions
|
|
166
166
|
},
|
|
167
167
|
{
|
|
168
|
-
id: "
|
|
168
|
+
id: "regressions",
|
|
169
169
|
group: "qa",
|
|
170
170
|
describe: "Detect regressions since last QA save",
|
|
171
171
|
longDescription: "Compares the last two history entries to detect new failures. Exits with code 1 if regressions are found. Use before merging.",
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/commands/flags.ts","../src/manifest.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * QA Plugin CLI flag definitions.\n * DRY: Define once, use in manifest and command handlers.\n */\n\nconst JSON_FLAG_DESCRIPTION = 'Output JSON format';\n\nexport const qaRunFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n 'skip-check': {\n type: 'array',\n description: 'Skip specific check IDs (e.g. --skip-check build --skip-check lint)',\n },\n 'no-cache': {\n type: 'boolean',\n description: 'Disable caching (force full run)',\n default: false,\n },\n all: {\n type: 'boolean',\n description: 'Run all packages, ignoring affected analysis',\n default: false,\n },\n package: {\n type: 'string',\n description: 'Filter by package name',\n alias: 'p',\n },\n repo: {\n type: 'string',\n description: 'Filter by repo name',\n alias: 'r',\n },\n scope: {\n type: 'string',\n description: 'Filter by npm scope',\n alias: 's',\n },\n summary: {\n type: 'boolean',\n description: 'Show summary-only report (legacy flat format)',\n default: false,\n },\n} as const;\n\nexport type QARunFlags = typeof qaRunFlags;\n\nexport const qaSaveFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n} as const;\n\nexport type QASaveFlags = typeof qaSaveFlags;\n\nexport const qaHistoryFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n limit: {\n type: 'number',\n description: 'Number of entries to show',\n default: 20,\n },\n} as const;\n\nexport type QAHistoryFlags = typeof qaHistoryFlags;\n\nexport const qaTrendsFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n window: {\n type: 'number',\n description: 'Number of entries for trend window',\n default: 10,\n },\n} as const;\n\nexport type QATrendsFlags = typeof qaTrendsFlags;\n\nexport const qaRegressionsFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n} as const;\n\nexport type QARegressionsFlags = typeof qaRegressionsFlags;\n\nexport const baselineUpdateFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n} as const;\n\nexport type BaselineUpdateFlags = typeof baselineUpdateFlags;\n\nexport const baselineStatusFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n} as const;\n\nexport type BaselineStatusFlags = typeof baselineStatusFlags;\n","/**\n * QA Plugin Manifest V3\n *\n * Automated quality checks, baseline tracking, and regression detection.\n */\n\nimport {\n combinePermissions,\n kbPlatformPreset,\n defineCommandFlags,\n} from '@kb-labs/sdk';\nimport {\n qaRunFlags,\n qaSaveFlags,\n qaHistoryFlags,\n qaTrendsFlags,\n qaRegressionsFlags,\n baselineUpdateFlags,\n baselineStatusFlags,\n} from './cli/commands/flags.js';\nimport {\n QA_BASE_PATH,\n QA_ROUTES,\n} from '@kb-labs/qa-contracts';\n\nconst pluginPermissions = combinePermissions()\n .with(kbPlatformPreset)\n .withFs({\n mode: 'readWrite',\n allow: ['**'],\n })\n .withPlatform({\n cache: ['qa:'],\n analytics: true,\n })\n .withQuotas({\n timeoutMs: 600000,\n memoryMb: 2048,\n })\n .build();\n\nexport const manifest = {\n schema: 'kb.plugin/3',\n id: '@kb-labs/qa',\n version: '0.1.0',\n\n configSection: 'qa',\n\n display: {\n name: 'QA Plugin',\n description: 'Automated quality checks, baseline tracking, and regression detection',\n tags: ['qa', 'quality', 'baseline', 'regression', 'testing'],\n },\n\n platform: {\n requires: ['storage'],\n optional: ['cache', 'analytics', 'logger'],\n },\n\n cli: {\n commands: [\n {\n id: 'qa:run',\n group: 'qa',\n describe: 'Run all QA checks (build, lint, types, tests)',\n longDescription:\n 'Runs comprehensive QA checks across the monorepo: build, lint, type check, and tests. ' +\n 'Compares with baseline if available. Supports incremental builds and package filtering.',\n handler: './cli/commands/qa-run.js#default',\n handlerPath: './cli/commands/qa-run.js',\n flags: defineCommandFlags(qaRunFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'qa:save',\n group: 'qa',\n describe: 'Run QA checks and save results to history',\n longDescription:\n 'Runs all QA checks and saves the results as a history entry. ' +\n 'History is stored in .kb/qa/history.json (max 50 entries).',\n handler: './cli/commands/qa-save.js#default',\n handlerPath: './cli/commands/qa-save.js',\n flags: defineCommandFlags(qaSaveFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'qa:history',\n group: 'qa',\n describe: 'Show QA run history',\n longDescription: 'Displays the QA run history with pass/fail status for each check type.',\n handler: './cli/commands/qa-history.js#default',\n handlerPath: './cli/commands/qa-history.js',\n flags: defineCommandFlags(qaHistoryFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'qa:trends',\n group: 'qa',\n describe: 'Show QA quality trends over time',\n longDescription:\n 'Analyzes quality trends by comparing failure counts over a sliding window of history entries.',\n handler: './cli/commands/qa-trends.js#default',\n handlerPath: './cli/commands/qa-trends.js',\n flags: defineCommandFlags(qaTrendsFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'qa:regressions',\n group: 'qa',\n describe: 'Detect regressions since last QA save',\n longDescription:\n 'Compares the last two history entries to detect new failures. ' +\n 'Exits with code 1 if regressions are found. Use before merging.',\n handler: './cli/commands/qa-regressions.js#default',\n handlerPath: './cli/commands/qa-regressions.js',\n flags: defineCommandFlags(qaRegressionsFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'baseline:update',\n group: 'qa',\n describe: 'Run full QA and save as new baseline',\n longDescription:\n 'Runs all QA checks and saves the results as the current baseline. ' +\n 'Future qa:run calls will compare against this baseline.',\n handler: './cli/commands/baseline-update.js#default',\n handlerPath: './cli/commands/baseline-update.js',\n flags: defineCommandFlags(baselineUpdateFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'baseline:status',\n group: 'qa',\n describe: 'Show current baseline status',\n longDescription: 'Displays the current baseline snapshot with pass/fail counts per check type.',\n handler: './cli/commands/baseline-status.js#default',\n handlerPath: './cli/commands/baseline-status.js',\n flags: defineCommandFlags(baselineStatusFlags),\n permissions: pluginPermissions,\n },\n ],\n },\n\n // REST API routes\n rest: {\n basePath: QA_BASE_PATH,\n routes: [\n // GET /summary\n {\n method: 'GET',\n path: QA_ROUTES.SUMMARY,\n handler: './rest/handlers/summary-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QASummaryRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QASummaryResponseSchema',\n },\n },\n // GET /latest\n {\n method: 'GET',\n path: QA_ROUTES.LATEST,\n handler: './rest/handlers/latest-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QALatestRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QALatestResponseSchema',\n },\n },\n // GET /history\n {\n method: 'GET',\n path: QA_ROUTES.HISTORY,\n handler: './rest/handlers/history-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QAHistoryRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QAHistoryResponseSchema',\n },\n },\n // GET /trends\n {\n method: 'GET',\n path: QA_ROUTES.TRENDS,\n handler: './rest/handlers/trends-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QATrendsRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QATrendsResponseSchema',\n },\n },\n // GET /regressions\n {\n method: 'GET',\n path: QA_ROUTES.REGRESSIONS,\n handler: './rest/handlers/regressions-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QARegressionsRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QARegressionsResponseSchema',\n },\n },\n // GET /baseline\n {\n method: 'GET',\n path: QA_ROUTES.BASELINE,\n handler: './rest/handlers/baseline-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QABaselineRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QABaselineResponseSchema',\n },\n },\n // POST /run\n {\n method: 'POST',\n path: QA_ROUTES.RUN,\n handler: './rest/handlers/run-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QARunRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QARunResponseSchema',\n },\n },\n // GET /details — per-package details with error text\n {\n method: 'GET',\n path: QA_ROUTES.DETAILS,\n handler: './rest/handlers/details-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QADetailsRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QADetailsResponseSchema',\n },\n },\n // POST /run/check — run a single check type\n {\n method: 'POST',\n path: QA_ROUTES.RUN_CHECK,\n handler: './rest/handlers/run-check-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QARunCheckRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QARunCheckResponseSchema',\n },\n },\n // POST /baseline/update — update baseline from last run\n {\n method: 'POST',\n path: QA_ROUTES.BASELINE_UPDATE,\n handler: './rest/handlers/baseline-update-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QABaselineUpdateRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QABaselineUpdateResponseSchema',\n },\n },\n // GET /baseline/diff — diff current state vs baseline\n {\n method: 'GET',\n path: QA_ROUTES.BASELINE_DIFF,\n handler: './rest/handlers/baseline-diff-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QABaselineDiffRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QABaselineDiffResponseSchema',\n },\n },\n // GET /packages/:name/timeline — per-package QA timeline\n {\n method: 'GET',\n path: QA_ROUTES.PACKAGE_TIMELINE,\n handler: './rest/handlers/package-timeline-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QAPackageTimelineRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QAPackageTimelineResponseSchema',\n },\n },\n // GET /errors/groups — grouped errors by pattern\n {\n method: 'GET',\n path: QA_ROUTES.ERROR_GROUPS,\n handler: './rest/handlers/error-groups-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QAErrorGroupsRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QAErrorGroupsResponseSchema',\n },\n },\n ],\n },\n\n // Studio V2 — Module Federation pages\n studio: {\n version: 2 as const,\n remoteName: 'qaPlugin',\n pages: [\n {\n id: 'qa.overview',\n title: 'QA',\n icon: 'ExperimentOutlined',\n route: '/p/qa',\n entry: './QADashboard',\n order: 1,\n },\n ],\n menus: [\n {\n id: 'qa',\n label: 'QA',\n icon: 'ExperimentOutlined',\n target: 'qa.overview',\n order: 50,\n },\n ],\n },\n\n permissions: pluginPermissions,\n};\n\nexport default manifest;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/flags.ts","../src/manifest.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * QA Plugin CLI flag definitions.\n * DRY: Define once, use in manifest and command handlers.\n */\n\nconst JSON_FLAG_DESCRIPTION = 'Output JSON format';\n\nexport const qaRunFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n 'skip-check': {\n type: 'array',\n description: 'Skip specific check IDs (e.g. --skip-check build --skip-check lint)',\n },\n 'no-cache': {\n type: 'boolean',\n description: 'Disable caching (force full run)',\n default: false,\n },\n all: {\n type: 'boolean',\n description: 'Run all packages, ignoring affected analysis',\n default: false,\n },\n package: {\n type: 'string',\n description: 'Filter by package name',\n alias: 'p',\n },\n repo: {\n type: 'string',\n description: 'Filter by repo name',\n alias: 'r',\n },\n scope: {\n type: 'string',\n description: 'Filter by npm scope',\n alias: 's',\n },\n summary: {\n type: 'boolean',\n description: 'Show summary-only report (legacy flat format)',\n default: false,\n },\n} as const;\n\nexport type QARunFlags = typeof qaRunFlags;\n\nexport const qaSaveFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n} as const;\n\nexport type QASaveFlags = typeof qaSaveFlags;\n\nexport const qaHistoryFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n limit: {\n type: 'number',\n description: 'Number of entries to show',\n default: 20,\n },\n} as const;\n\nexport type QAHistoryFlags = typeof qaHistoryFlags;\n\nexport const qaTrendsFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n window: {\n type: 'number',\n description: 'Number of entries for trend window',\n default: 10,\n },\n} as const;\n\nexport type QATrendsFlags = typeof qaTrendsFlags;\n\nexport const qaRegressionsFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n} as const;\n\nexport type QARegressionsFlags = typeof qaRegressionsFlags;\n\nexport const baselineUpdateFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n} as const;\n\nexport type BaselineUpdateFlags = typeof baselineUpdateFlags;\n\nexport const baselineStatusFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n} as const;\n\nexport type BaselineStatusFlags = typeof baselineStatusFlags;\n","/**\n * QA Plugin Manifest V3\n *\n * Automated quality checks, baseline tracking, and regression detection.\n */\n\nimport {\n combinePermissions,\n kbPlatformPreset,\n defineCommandFlags,\n} from '@kb-labs/sdk';\nimport {\n qaRunFlags,\n qaSaveFlags,\n qaHistoryFlags,\n qaTrendsFlags,\n qaRegressionsFlags,\n baselineUpdateFlags,\n baselineStatusFlags,\n} from './cli/commands/flags.js';\nimport {\n QA_BASE_PATH,\n QA_ROUTES,\n} from '@kb-labs/qa-contracts';\n\nconst pluginPermissions = combinePermissions()\n .with(kbPlatformPreset)\n .withFs({\n mode: 'readWrite',\n allow: ['**'],\n })\n .withPlatform({\n cache: ['qa:'],\n analytics: true,\n })\n .withQuotas({\n timeoutMs: 600000,\n memoryMb: 2048,\n })\n .build();\n\nexport const manifest = {\n schema: 'kb.plugin/3',\n id: '@kb-labs/qa',\n version: '0.1.0',\n\n configSection: 'qa',\n\n display: {\n name: 'QA Plugin',\n description: 'Automated quality checks, baseline tracking, and regression detection',\n tags: ['qa', 'quality', 'baseline', 'regression', 'testing'],\n },\n\n platform: {\n requires: ['storage'],\n optional: ['cache', 'analytics', 'logger'],\n },\n\n cli: {\n commands: [\n {\n id: 'run',\n group: 'qa',\n describe: 'Run all QA checks (build, lint, types, tests)',\n longDescription:\n 'Runs comprehensive QA checks across the monorepo: build, lint, type check, and tests. ' +\n 'Compares with baseline if available. Supports incremental builds and package filtering.',\n handler: './cli/commands/qa-run.js#default',\n handlerPath: './cli/commands/qa-run.js',\n flags: defineCommandFlags(qaRunFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'save',\n group: 'qa',\n describe: 'Run QA checks and save results to history',\n longDescription:\n 'Runs all QA checks and saves the results as a history entry. ' +\n 'History is stored in .kb/qa/history.json (max 50 entries).',\n handler: './cli/commands/qa-save.js#default',\n handlerPath: './cli/commands/qa-save.js',\n flags: defineCommandFlags(qaSaveFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'history',\n group: 'qa',\n describe: 'Show QA run history',\n longDescription: 'Displays the QA run history with pass/fail status for each check type.',\n handler: './cli/commands/qa-history.js#default',\n handlerPath: './cli/commands/qa-history.js',\n flags: defineCommandFlags(qaHistoryFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'trends',\n group: 'qa',\n describe: 'Show QA quality trends over time',\n longDescription:\n 'Analyzes quality trends by comparing failure counts over a sliding window of history entries.',\n handler: './cli/commands/qa-trends.js#default',\n handlerPath: './cli/commands/qa-trends.js',\n flags: defineCommandFlags(qaTrendsFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'regressions',\n group: 'qa',\n describe: 'Detect regressions since last QA save',\n longDescription:\n 'Compares the last two history entries to detect new failures. ' +\n 'Exits with code 1 if regressions are found. Use before merging.',\n handler: './cli/commands/qa-regressions.js#default',\n handlerPath: './cli/commands/qa-regressions.js',\n flags: defineCommandFlags(qaRegressionsFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'baseline:update',\n group: 'qa',\n describe: 'Run full QA and save as new baseline',\n longDescription:\n 'Runs all QA checks and saves the results as the current baseline. ' +\n 'Future qa:run calls will compare against this baseline.',\n handler: './cli/commands/baseline-update.js#default',\n handlerPath: './cli/commands/baseline-update.js',\n flags: defineCommandFlags(baselineUpdateFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'baseline:status',\n group: 'qa',\n describe: 'Show current baseline status',\n longDescription: 'Displays the current baseline snapshot with pass/fail counts per check type.',\n handler: './cli/commands/baseline-status.js#default',\n handlerPath: './cli/commands/baseline-status.js',\n flags: defineCommandFlags(baselineStatusFlags),\n permissions: pluginPermissions,\n },\n ],\n },\n\n // REST API routes\n rest: {\n basePath: QA_BASE_PATH,\n routes: [\n // GET /summary\n {\n method: 'GET',\n path: QA_ROUTES.SUMMARY,\n handler: './rest/handlers/summary-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QASummaryRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QASummaryResponseSchema',\n },\n },\n // GET /latest\n {\n method: 'GET',\n path: QA_ROUTES.LATEST,\n handler: './rest/handlers/latest-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QALatestRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QALatestResponseSchema',\n },\n },\n // GET /history\n {\n method: 'GET',\n path: QA_ROUTES.HISTORY,\n handler: './rest/handlers/history-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QAHistoryRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QAHistoryResponseSchema',\n },\n },\n // GET /trends\n {\n method: 'GET',\n path: QA_ROUTES.TRENDS,\n handler: './rest/handlers/trends-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QATrendsRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QATrendsResponseSchema',\n },\n },\n // GET /regressions\n {\n method: 'GET',\n path: QA_ROUTES.REGRESSIONS,\n handler: './rest/handlers/regressions-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QARegressionsRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QARegressionsResponseSchema',\n },\n },\n // GET /baseline\n {\n method: 'GET',\n path: QA_ROUTES.BASELINE,\n handler: './rest/handlers/baseline-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QABaselineRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QABaselineResponseSchema',\n },\n },\n // POST /run\n {\n method: 'POST',\n path: QA_ROUTES.RUN,\n handler: './rest/handlers/run-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QARunRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QARunResponseSchema',\n },\n },\n // GET /details — per-package details with error text\n {\n method: 'GET',\n path: QA_ROUTES.DETAILS,\n handler: './rest/handlers/details-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QADetailsRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QADetailsResponseSchema',\n },\n },\n // POST /run/check — run a single check type\n {\n method: 'POST',\n path: QA_ROUTES.RUN_CHECK,\n handler: './rest/handlers/run-check-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QARunCheckRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QARunCheckResponseSchema',\n },\n },\n // POST /baseline/update — update baseline from last run\n {\n method: 'POST',\n path: QA_ROUTES.BASELINE_UPDATE,\n handler: './rest/handlers/baseline-update-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QABaselineUpdateRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QABaselineUpdateResponseSchema',\n },\n },\n // GET /baseline/diff — diff current state vs baseline\n {\n method: 'GET',\n path: QA_ROUTES.BASELINE_DIFF,\n handler: './rest/handlers/baseline-diff-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QABaselineDiffRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QABaselineDiffResponseSchema',\n },\n },\n // GET /packages/:name/timeline — per-package QA timeline\n {\n method: 'GET',\n path: QA_ROUTES.PACKAGE_TIMELINE,\n handler: './rest/handlers/package-timeline-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QAPackageTimelineRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QAPackageTimelineResponseSchema',\n },\n },\n // GET /errors/groups — grouped errors by pattern\n {\n method: 'GET',\n path: QA_ROUTES.ERROR_GROUPS,\n handler: './rest/handlers/error-groups-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QAErrorGroupsRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QAErrorGroupsResponseSchema',\n },\n },\n ],\n },\n\n // Studio V2 — Module Federation pages\n studio: {\n version: 2 as const,\n remoteName: 'qaPlugin',\n pages: [\n {\n id: 'qa.overview',\n title: 'QA',\n icon: 'ExperimentOutlined',\n route: '/p/qa',\n entry: './QADashboard',\n order: 1,\n },\n ],\n menus: [\n {\n id: 'qa',\n label: 'QA',\n icon: 'ExperimentOutlined',\n target: 'qa.overview',\n order: 50,\n },\n ],\n },\n\n permissions: pluginPermissions,\n};\n\nexport default manifest;\n"]}
|
package/dist/manifest.js
CHANGED
|
@@ -125,7 +125,7 @@ var manifest = {
|
|
|
125
125
|
cli: {
|
|
126
126
|
commands: [
|
|
127
127
|
{
|
|
128
|
-
id: "
|
|
128
|
+
id: "run",
|
|
129
129
|
group: "qa",
|
|
130
130
|
describe: "Run all QA checks (build, lint, types, tests)",
|
|
131
131
|
longDescription: "Runs comprehensive QA checks across the monorepo: build, lint, type check, and tests. Compares with baseline if available. Supports incremental builds and package filtering.",
|
|
@@ -135,7 +135,7 @@ var manifest = {
|
|
|
135
135
|
permissions: pluginPermissions
|
|
136
136
|
},
|
|
137
137
|
{
|
|
138
|
-
id: "
|
|
138
|
+
id: "save",
|
|
139
139
|
group: "qa",
|
|
140
140
|
describe: "Run QA checks and save results to history",
|
|
141
141
|
longDescription: "Runs all QA checks and saves the results as a history entry. History is stored in .kb/qa/history.json (max 50 entries).",
|
|
@@ -145,7 +145,7 @@ var manifest = {
|
|
|
145
145
|
permissions: pluginPermissions
|
|
146
146
|
},
|
|
147
147
|
{
|
|
148
|
-
id: "
|
|
148
|
+
id: "history",
|
|
149
149
|
group: "qa",
|
|
150
150
|
describe: "Show QA run history",
|
|
151
151
|
longDescription: "Displays the QA run history with pass/fail status for each check type.",
|
|
@@ -155,7 +155,7 @@ var manifest = {
|
|
|
155
155
|
permissions: pluginPermissions
|
|
156
156
|
},
|
|
157
157
|
{
|
|
158
|
-
id: "
|
|
158
|
+
id: "trends",
|
|
159
159
|
group: "qa",
|
|
160
160
|
describe: "Show QA quality trends over time",
|
|
161
161
|
longDescription: "Analyzes quality trends by comparing failure counts over a sliding window of history entries.",
|
|
@@ -165,7 +165,7 @@ var manifest = {
|
|
|
165
165
|
permissions: pluginPermissions
|
|
166
166
|
},
|
|
167
167
|
{
|
|
168
|
-
id: "
|
|
168
|
+
id: "regressions",
|
|
169
169
|
group: "qa",
|
|
170
170
|
describe: "Detect regressions since last QA save",
|
|
171
171
|
longDescription: "Compares the last two history entries to detect new failures. Exits with code 1 if regressions are found. Use before merging.",
|
package/dist/manifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/commands/flags.ts","../src/manifest.ts"],"names":[],"mappings":"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","file":"manifest.js","sourcesContent":["/**\n * QA Plugin CLI flag definitions.\n * DRY: Define once, use in manifest and command handlers.\n */\n\nconst JSON_FLAG_DESCRIPTION = 'Output JSON format';\n\nexport const qaRunFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n 'skip-check': {\n type: 'array',\n description: 'Skip specific check IDs (e.g. --skip-check build --skip-check lint)',\n },\n 'no-cache': {\n type: 'boolean',\n description: 'Disable caching (force full run)',\n default: false,\n },\n all: {\n type: 'boolean',\n description: 'Run all packages, ignoring affected analysis',\n default: false,\n },\n package: {\n type: 'string',\n description: 'Filter by package name',\n alias: 'p',\n },\n repo: {\n type: 'string',\n description: 'Filter by repo name',\n alias: 'r',\n },\n scope: {\n type: 'string',\n description: 'Filter by npm scope',\n alias: 's',\n },\n summary: {\n type: 'boolean',\n description: 'Show summary-only report (legacy flat format)',\n default: false,\n },\n} as const;\n\nexport type QARunFlags = typeof qaRunFlags;\n\nexport const qaSaveFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n} as const;\n\nexport type QASaveFlags = typeof qaSaveFlags;\n\nexport const qaHistoryFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n limit: {\n type: 'number',\n description: 'Number of entries to show',\n default: 20,\n },\n} as const;\n\nexport type QAHistoryFlags = typeof qaHistoryFlags;\n\nexport const qaTrendsFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n window: {\n type: 'number',\n description: 'Number of entries for trend window',\n default: 10,\n },\n} as const;\n\nexport type QATrendsFlags = typeof qaTrendsFlags;\n\nexport const qaRegressionsFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n} as const;\n\nexport type QARegressionsFlags = typeof qaRegressionsFlags;\n\nexport const baselineUpdateFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n} as const;\n\nexport type BaselineUpdateFlags = typeof baselineUpdateFlags;\n\nexport const baselineStatusFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n} as const;\n\nexport type BaselineStatusFlags = typeof baselineStatusFlags;\n","/**\n * QA Plugin Manifest V3\n *\n * Automated quality checks, baseline tracking, and regression detection.\n */\n\nimport {\n combinePermissions,\n kbPlatformPreset,\n defineCommandFlags,\n} from '@kb-labs/sdk';\nimport {\n qaRunFlags,\n qaSaveFlags,\n qaHistoryFlags,\n qaTrendsFlags,\n qaRegressionsFlags,\n baselineUpdateFlags,\n baselineStatusFlags,\n} from './cli/commands/flags.js';\nimport {\n QA_BASE_PATH,\n QA_ROUTES,\n} from '@kb-labs/qa-contracts';\n\nconst pluginPermissions = combinePermissions()\n .with(kbPlatformPreset)\n .withFs({\n mode: 'readWrite',\n allow: ['**'],\n })\n .withPlatform({\n cache: ['qa:'],\n analytics: true,\n })\n .withQuotas({\n timeoutMs: 600000,\n memoryMb: 2048,\n })\n .build();\n\nexport const manifest = {\n schema: 'kb.plugin/3',\n id: '@kb-labs/qa',\n version: '0.1.0',\n\n configSection: 'qa',\n\n display: {\n name: 'QA Plugin',\n description: 'Automated quality checks, baseline tracking, and regression detection',\n tags: ['qa', 'quality', 'baseline', 'regression', 'testing'],\n },\n\n platform: {\n requires: ['storage'],\n optional: ['cache', 'analytics', 'logger'],\n },\n\n cli: {\n commands: [\n {\n id: 'qa:run',\n group: 'qa',\n describe: 'Run all QA checks (build, lint, types, tests)',\n longDescription:\n 'Runs comprehensive QA checks across the monorepo: build, lint, type check, and tests. ' +\n 'Compares with baseline if available. Supports incremental builds and package filtering.',\n handler: './cli/commands/qa-run.js#default',\n handlerPath: './cli/commands/qa-run.js',\n flags: defineCommandFlags(qaRunFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'qa:save',\n group: 'qa',\n describe: 'Run QA checks and save results to history',\n longDescription:\n 'Runs all QA checks and saves the results as a history entry. ' +\n 'History is stored in .kb/qa/history.json (max 50 entries).',\n handler: './cli/commands/qa-save.js#default',\n handlerPath: './cli/commands/qa-save.js',\n flags: defineCommandFlags(qaSaveFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'qa:history',\n group: 'qa',\n describe: 'Show QA run history',\n longDescription: 'Displays the QA run history with pass/fail status for each check type.',\n handler: './cli/commands/qa-history.js#default',\n handlerPath: './cli/commands/qa-history.js',\n flags: defineCommandFlags(qaHistoryFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'qa:trends',\n group: 'qa',\n describe: 'Show QA quality trends over time',\n longDescription:\n 'Analyzes quality trends by comparing failure counts over a sliding window of history entries.',\n handler: './cli/commands/qa-trends.js#default',\n handlerPath: './cli/commands/qa-trends.js',\n flags: defineCommandFlags(qaTrendsFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'qa:regressions',\n group: 'qa',\n describe: 'Detect regressions since last QA save',\n longDescription:\n 'Compares the last two history entries to detect new failures. ' +\n 'Exits with code 1 if regressions are found. Use before merging.',\n handler: './cli/commands/qa-regressions.js#default',\n handlerPath: './cli/commands/qa-regressions.js',\n flags: defineCommandFlags(qaRegressionsFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'baseline:update',\n group: 'qa',\n describe: 'Run full QA and save as new baseline',\n longDescription:\n 'Runs all QA checks and saves the results as the current baseline. ' +\n 'Future qa:run calls will compare against this baseline.',\n handler: './cli/commands/baseline-update.js#default',\n handlerPath: './cli/commands/baseline-update.js',\n flags: defineCommandFlags(baselineUpdateFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'baseline:status',\n group: 'qa',\n describe: 'Show current baseline status',\n longDescription: 'Displays the current baseline snapshot with pass/fail counts per check type.',\n handler: './cli/commands/baseline-status.js#default',\n handlerPath: './cli/commands/baseline-status.js',\n flags: defineCommandFlags(baselineStatusFlags),\n permissions: pluginPermissions,\n },\n ],\n },\n\n // REST API routes\n rest: {\n basePath: QA_BASE_PATH,\n routes: [\n // GET /summary\n {\n method: 'GET',\n path: QA_ROUTES.SUMMARY,\n handler: './rest/handlers/summary-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QASummaryRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QASummaryResponseSchema',\n },\n },\n // GET /latest\n {\n method: 'GET',\n path: QA_ROUTES.LATEST,\n handler: './rest/handlers/latest-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QALatestRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QALatestResponseSchema',\n },\n },\n // GET /history\n {\n method: 'GET',\n path: QA_ROUTES.HISTORY,\n handler: './rest/handlers/history-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QAHistoryRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QAHistoryResponseSchema',\n },\n },\n // GET /trends\n {\n method: 'GET',\n path: QA_ROUTES.TRENDS,\n handler: './rest/handlers/trends-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QATrendsRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QATrendsResponseSchema',\n },\n },\n // GET /regressions\n {\n method: 'GET',\n path: QA_ROUTES.REGRESSIONS,\n handler: './rest/handlers/regressions-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QARegressionsRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QARegressionsResponseSchema',\n },\n },\n // GET /baseline\n {\n method: 'GET',\n path: QA_ROUTES.BASELINE,\n handler: './rest/handlers/baseline-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QABaselineRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QABaselineResponseSchema',\n },\n },\n // POST /run\n {\n method: 'POST',\n path: QA_ROUTES.RUN,\n handler: './rest/handlers/run-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QARunRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QARunResponseSchema',\n },\n },\n // GET /details — per-package details with error text\n {\n method: 'GET',\n path: QA_ROUTES.DETAILS,\n handler: './rest/handlers/details-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QADetailsRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QADetailsResponseSchema',\n },\n },\n // POST /run/check — run a single check type\n {\n method: 'POST',\n path: QA_ROUTES.RUN_CHECK,\n handler: './rest/handlers/run-check-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QARunCheckRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QARunCheckResponseSchema',\n },\n },\n // POST /baseline/update — update baseline from last run\n {\n method: 'POST',\n path: QA_ROUTES.BASELINE_UPDATE,\n handler: './rest/handlers/baseline-update-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QABaselineUpdateRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QABaselineUpdateResponseSchema',\n },\n },\n // GET /baseline/diff — diff current state vs baseline\n {\n method: 'GET',\n path: QA_ROUTES.BASELINE_DIFF,\n handler: './rest/handlers/baseline-diff-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QABaselineDiffRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QABaselineDiffResponseSchema',\n },\n },\n // GET /packages/:name/timeline — per-package QA timeline\n {\n method: 'GET',\n path: QA_ROUTES.PACKAGE_TIMELINE,\n handler: './rest/handlers/package-timeline-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QAPackageTimelineRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QAPackageTimelineResponseSchema',\n },\n },\n // GET /errors/groups — grouped errors by pattern\n {\n method: 'GET',\n path: QA_ROUTES.ERROR_GROUPS,\n handler: './rest/handlers/error-groups-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QAErrorGroupsRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QAErrorGroupsResponseSchema',\n },\n },\n ],\n },\n\n // Studio V2 — Module Federation pages\n studio: {\n version: 2 as const,\n remoteName: 'qaPlugin',\n pages: [\n {\n id: 'qa.overview',\n title: 'QA',\n icon: 'ExperimentOutlined',\n route: '/p/qa',\n entry: './QADashboard',\n order: 1,\n },\n ],\n menus: [\n {\n id: 'qa',\n label: 'QA',\n icon: 'ExperimentOutlined',\n target: 'qa.overview',\n order: 50,\n },\n ],\n },\n\n permissions: pluginPermissions,\n};\n\nexport default manifest;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/flags.ts","../src/manifest.ts"],"names":[],"mappings":"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","file":"manifest.js","sourcesContent":["/**\n * QA Plugin CLI flag definitions.\n * DRY: Define once, use in manifest and command handlers.\n */\n\nconst JSON_FLAG_DESCRIPTION = 'Output JSON format';\n\nexport const qaRunFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n 'skip-check': {\n type: 'array',\n description: 'Skip specific check IDs (e.g. --skip-check build --skip-check lint)',\n },\n 'no-cache': {\n type: 'boolean',\n description: 'Disable caching (force full run)',\n default: false,\n },\n all: {\n type: 'boolean',\n description: 'Run all packages, ignoring affected analysis',\n default: false,\n },\n package: {\n type: 'string',\n description: 'Filter by package name',\n alias: 'p',\n },\n repo: {\n type: 'string',\n description: 'Filter by repo name',\n alias: 'r',\n },\n scope: {\n type: 'string',\n description: 'Filter by npm scope',\n alias: 's',\n },\n summary: {\n type: 'boolean',\n description: 'Show summary-only report (legacy flat format)',\n default: false,\n },\n} as const;\n\nexport type QARunFlags = typeof qaRunFlags;\n\nexport const qaSaveFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n} as const;\n\nexport type QASaveFlags = typeof qaSaveFlags;\n\nexport const qaHistoryFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n limit: {\n type: 'number',\n description: 'Number of entries to show',\n default: 20,\n },\n} as const;\n\nexport type QAHistoryFlags = typeof qaHistoryFlags;\n\nexport const qaTrendsFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n window: {\n type: 'number',\n description: 'Number of entries for trend window',\n default: 10,\n },\n} as const;\n\nexport type QATrendsFlags = typeof qaTrendsFlags;\n\nexport const qaRegressionsFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n} as const;\n\nexport type QARegressionsFlags = typeof qaRegressionsFlags;\n\nexport const baselineUpdateFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n} as const;\n\nexport type BaselineUpdateFlags = typeof baselineUpdateFlags;\n\nexport const baselineStatusFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n} as const;\n\nexport type BaselineStatusFlags = typeof baselineStatusFlags;\n","/**\n * QA Plugin Manifest V3\n *\n * Automated quality checks, baseline tracking, and regression detection.\n */\n\nimport {\n combinePermissions,\n kbPlatformPreset,\n defineCommandFlags,\n} from '@kb-labs/sdk';\nimport {\n qaRunFlags,\n qaSaveFlags,\n qaHistoryFlags,\n qaTrendsFlags,\n qaRegressionsFlags,\n baselineUpdateFlags,\n baselineStatusFlags,\n} from './cli/commands/flags.js';\nimport {\n QA_BASE_PATH,\n QA_ROUTES,\n} from '@kb-labs/qa-contracts';\n\nconst pluginPermissions = combinePermissions()\n .with(kbPlatformPreset)\n .withFs({\n mode: 'readWrite',\n allow: ['**'],\n })\n .withPlatform({\n cache: ['qa:'],\n analytics: true,\n })\n .withQuotas({\n timeoutMs: 600000,\n memoryMb: 2048,\n })\n .build();\n\nexport const manifest = {\n schema: 'kb.plugin/3',\n id: '@kb-labs/qa',\n version: '0.1.0',\n\n configSection: 'qa',\n\n display: {\n name: 'QA Plugin',\n description: 'Automated quality checks, baseline tracking, and regression detection',\n tags: ['qa', 'quality', 'baseline', 'regression', 'testing'],\n },\n\n platform: {\n requires: ['storage'],\n optional: ['cache', 'analytics', 'logger'],\n },\n\n cli: {\n commands: [\n {\n id: 'run',\n group: 'qa',\n describe: 'Run all QA checks (build, lint, types, tests)',\n longDescription:\n 'Runs comprehensive QA checks across the monorepo: build, lint, type check, and tests. ' +\n 'Compares with baseline if available. Supports incremental builds and package filtering.',\n handler: './cli/commands/qa-run.js#default',\n handlerPath: './cli/commands/qa-run.js',\n flags: defineCommandFlags(qaRunFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'save',\n group: 'qa',\n describe: 'Run QA checks and save results to history',\n longDescription:\n 'Runs all QA checks and saves the results as a history entry. ' +\n 'History is stored in .kb/qa/history.json (max 50 entries).',\n handler: './cli/commands/qa-save.js#default',\n handlerPath: './cli/commands/qa-save.js',\n flags: defineCommandFlags(qaSaveFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'history',\n group: 'qa',\n describe: 'Show QA run history',\n longDescription: 'Displays the QA run history with pass/fail status for each check type.',\n handler: './cli/commands/qa-history.js#default',\n handlerPath: './cli/commands/qa-history.js',\n flags: defineCommandFlags(qaHistoryFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'trends',\n group: 'qa',\n describe: 'Show QA quality trends over time',\n longDescription:\n 'Analyzes quality trends by comparing failure counts over a sliding window of history entries.',\n handler: './cli/commands/qa-trends.js#default',\n handlerPath: './cli/commands/qa-trends.js',\n flags: defineCommandFlags(qaTrendsFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'regressions',\n group: 'qa',\n describe: 'Detect regressions since last QA save',\n longDescription:\n 'Compares the last two history entries to detect new failures. ' +\n 'Exits with code 1 if regressions are found. Use before merging.',\n handler: './cli/commands/qa-regressions.js#default',\n handlerPath: './cli/commands/qa-regressions.js',\n flags: defineCommandFlags(qaRegressionsFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'baseline:update',\n group: 'qa',\n describe: 'Run full QA and save as new baseline',\n longDescription:\n 'Runs all QA checks and saves the results as the current baseline. ' +\n 'Future qa:run calls will compare against this baseline.',\n handler: './cli/commands/baseline-update.js#default',\n handlerPath: './cli/commands/baseline-update.js',\n flags: defineCommandFlags(baselineUpdateFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'baseline:status',\n group: 'qa',\n describe: 'Show current baseline status',\n longDescription: 'Displays the current baseline snapshot with pass/fail counts per check type.',\n handler: './cli/commands/baseline-status.js#default',\n handlerPath: './cli/commands/baseline-status.js',\n flags: defineCommandFlags(baselineStatusFlags),\n permissions: pluginPermissions,\n },\n ],\n },\n\n // REST API routes\n rest: {\n basePath: QA_BASE_PATH,\n routes: [\n // GET /summary\n {\n method: 'GET',\n path: QA_ROUTES.SUMMARY,\n handler: './rest/handlers/summary-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QASummaryRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QASummaryResponseSchema',\n },\n },\n // GET /latest\n {\n method: 'GET',\n path: QA_ROUTES.LATEST,\n handler: './rest/handlers/latest-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QALatestRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QALatestResponseSchema',\n },\n },\n // GET /history\n {\n method: 'GET',\n path: QA_ROUTES.HISTORY,\n handler: './rest/handlers/history-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QAHistoryRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QAHistoryResponseSchema',\n },\n },\n // GET /trends\n {\n method: 'GET',\n path: QA_ROUTES.TRENDS,\n handler: './rest/handlers/trends-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QATrendsRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QATrendsResponseSchema',\n },\n },\n // GET /regressions\n {\n method: 'GET',\n path: QA_ROUTES.REGRESSIONS,\n handler: './rest/handlers/regressions-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QARegressionsRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QARegressionsResponseSchema',\n },\n },\n // GET /baseline\n {\n method: 'GET',\n path: QA_ROUTES.BASELINE,\n handler: './rest/handlers/baseline-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QABaselineRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QABaselineResponseSchema',\n },\n },\n // POST /run\n {\n method: 'POST',\n path: QA_ROUTES.RUN,\n handler: './rest/handlers/run-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QARunRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QARunResponseSchema',\n },\n },\n // GET /details — per-package details with error text\n {\n method: 'GET',\n path: QA_ROUTES.DETAILS,\n handler: './rest/handlers/details-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QADetailsRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QADetailsResponseSchema',\n },\n },\n // POST /run/check — run a single check type\n {\n method: 'POST',\n path: QA_ROUTES.RUN_CHECK,\n handler: './rest/handlers/run-check-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QARunCheckRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QARunCheckResponseSchema',\n },\n },\n // POST /baseline/update — update baseline from last run\n {\n method: 'POST',\n path: QA_ROUTES.BASELINE_UPDATE,\n handler: './rest/handlers/baseline-update-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QABaselineUpdateRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QABaselineUpdateResponseSchema',\n },\n },\n // GET /baseline/diff — diff current state vs baseline\n {\n method: 'GET',\n path: QA_ROUTES.BASELINE_DIFF,\n handler: './rest/handlers/baseline-diff-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QABaselineDiffRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QABaselineDiffResponseSchema',\n },\n },\n // GET /packages/:name/timeline — per-package QA timeline\n {\n method: 'GET',\n path: QA_ROUTES.PACKAGE_TIMELINE,\n handler: './rest/handlers/package-timeline-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QAPackageTimelineRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QAPackageTimelineResponseSchema',\n },\n },\n // GET /errors/groups — grouped errors by pattern\n {\n method: 'GET',\n path: QA_ROUTES.ERROR_GROUPS,\n handler: './rest/handlers/error-groups-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QAErrorGroupsRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QAErrorGroupsResponseSchema',\n },\n },\n ],\n },\n\n // Studio V2 — Module Federation pages\n studio: {\n version: 2 as const,\n remoteName: 'qaPlugin',\n pages: [\n {\n id: 'qa.overview',\n title: 'QA',\n icon: 'ExperimentOutlined',\n route: '/p/qa',\n entry: './QADashboard',\n order: 1,\n },\n ],\n menus: [\n {\n id: 'qa',\n label: 'QA',\n icon: 'ExperimentOutlined',\n target: 'qa.overview',\n order: 50,\n },\n ],\n },\n\n permissions: pluginPermissions,\n};\n\nexport default manifest;\n"]}
|
package/dist/widgets/370.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_kb_labs_qa_entry=self.webpackChunk_kb_labs_qa_entry||[]).push([["370"],{3481(r,e,o){o.r(e),o.d(e,{PageContextProvider:()=>d,getAntDesignComponents:()=>w,getAntDesignTokens:()=>P,useData:()=>b,useEventBus:()=>y,useInfiniteData:()=>S,useMutateData:()=>m,useNavigation:()=>F,useNotification:()=>E,usePage:()=>u,usePageContext:()=>g,usePermissions:()=>T,useSSE:()=>p,useTheme:()=>A,useWebSocket:()=>h});var t=o(5259),a=o(8048),c=o(5997),n=o(2317),i=o(4391),l=o(4984),v=o(5783),s=(0,t.createContext)(null);function d({children:r,value:e}){return(0,a.jsx)(s.Provider,{value:e,children:r})}function g(){let r=(0,t.useContext)(s);if(!r)throw Error("usePage() must be used inside a PageContextProvider (are you inside a Studio page?)");return r}function u(){return g()}function y(){let r=(0,c.useEventBusContext)(),{pluginId:e,pageId:o}=g(),a=(0,t.useRef)([]);return(0,t.useEffect)(()=>()=>{for(let r of a.current)r();a.current=[]},[]),{publish:(0,t.useCallback)((t,a)=>{r.publish(t,a,e,o)},[r,e,o]),subscribe:(0,t.useCallback)((t,c)=>{let n=r.subscribe(t,c,e,o);return a.current.push(n),n},[r,e,o])}}function b(r,e){let o=function(r,e){if(!e||0===Object.keys(e).length)return r;let o=new URLSearchParams;for(let[r,t]of Object.entries(e))null!=t&&o.set(r,String(t));let t=r.includes("?")?"&":"?";return`${r}${t}${o.toString()}`}(r,e?.params),t=(0,n.useQuery)({queryKey:["studio-data",o],queryFn:()=>x(o),enabled:e?.enabled,staleTime:e?.staleTime,refetchInterval:e?.pollingMs||void 0,select:e?.select});return{data:t.data,isLoading:t.isLoading,isError:t.isError,error:t.error,refetch:t.refetch,isFetching:t.isFetching}}function m(r,e="POST"){let o=(0,n.useMutation)({mutationFn:async o=>{let t=null!=o,a=await fetch(`/api${r}`,{method:e,headers:t?{"Content-Type":"application/json"}:{},body:t?JSON.stringify(o):void 0});if(!a.ok)throw Error(`${e} ${r} failed: ${a.status} ${a.statusText}`);return a.json()}});return{mutate:o.mutate,mutateAsync:o.mutateAsync,isLoading:o.isPending,isError:o.isError,error:o.error,data:o.data}}async function x(r){let e=await fetch(`/api${r}`);if(!e.ok)throw Error(`GET ${r} failed: ${e.status} ${e.statusText}`);let o=await e.json();return o&&"object"==typeof o&&"ok"in o&&"data"in o?o.data:o}function p(r,e={}){let{events:o="message",doneEvent:a,enabled:c=!0,reconnect:n=!1,maxReconnects:i=5,reconnectIntervalMs:l=2e3,maxEvents:v=0,parse:s=B,params:d,onEvent:g,onOpen:u,onError:y,onDone:b}=e,[m,x]=(0,t.useState)([]),[S,f]=(0,t.useState)(void 0),[h,k]=(0,t.useState)(null),[C,T]=(0,t.useState)(!1),[F,E]=(0,t.useState)(0),H=(0,t.useRef)(null),A=(0,t.useRef)(null),P=(0,t.useRef)(!1),w=(0,t.useRef)(g),I=(0,t.useRef)(u),D=(0,t.useRef)(y),L=(0,t.useRef)(b),W=(0,t.useRef)(s);w.current=g,I.current=u,D.current=y,L.current=b,W.current=s;let R=JSON.stringify(o),$=JSON.stringify(d),M=(0,t.useCallback)(()=>{P.current=!0,A.current&&(clearTimeout(A.current),A.current=null),H.current&&(H.current.close(),H.current=null),T(!1)},[]),O=(0,t.useCallback)(()=>{x([]),f(void 0)},[]);return(0,t.useEffect)(()=>{if(!r||!c){H.current&&(H.current.close(),H.current=null),T(!1);return}P.current=!1,x([]),f(void 0),k(null),E(0);let e=0;return!function t(){let c=new EventSource(function(r,e){let o=r.startsWith("http")?r:`/api${r}`;if(!e||0===Object.keys(e).length)return o;let t=new URLSearchParams;for(let[r,o]of Object.entries(e))null!=o&&t.set(r,String(o));let a=o.includes("?")?"&":"?";return`${o}${a}${t.toString()}`}(r,d));H.current=c;let s=Array.isArray(o)?o:[o],g=r=>{try{let e=W.current(r.data);f(e),x(r=>{let o=[...r,e];return v>0&&o.length>v?o.slice(-v):o}),w.current?.(e)}catch(e){let r=e instanceof Error?e:Error("Failed to parse SSE event data");k(r),D.current?.(r)}};for(let r of s)c.addEventListener(r,g);a&&c.addEventListener(a,()=>{c.close(),H.current=null,T(!1),L.current?.()}),c.onopen=()=>{e=0,E(0),T(!0),k(null),I.current?.()},c.onerror=()=>{if(c.close(),H.current=null,T(!1),P.current)return;let r=Error("SSE connection lost");k(r),D.current?.(r),n&&e<i&&(E(++e),A.current=setTimeout(t,l*Math.pow(2,e-1)))}}(),()=>{P.current=!0,A.current&&(clearTimeout(A.current),A.current=null),H.current&&(H.current.close(),H.current=null)}},[r,c,a,n,i,l,v,R,$]),{events:m,latest:S,isConnected:C,error:h,close:M,clear:O,reconnectCount:F}}function B(r){return JSON.parse(r)}function S(r,e){let{getNextCursor:o,params:t,enabled:a,staleTime:c,cursorParam:i="cursor",initialCursor:l}=e,v=(0,n.useInfiniteQuery)({queryKey:["studio-infinite",r,t],queryFn:async({pageParam:e})=>f(function(r,e,o,t){let a=new URLSearchParams;if(e)for(let[r,o]of Object.entries(e))null!=o&&a.set(r,String(o));null!=t&&a.set(o,String(t));let c=a.toString(),n=r.startsWith("http")?r:`/api${r}`;return c?`${n}?${c}`:n}(r,t,i,e)),initialPageParam:l,getNextPageParam:o,enabled:a,staleTime:c}),s=v.data?.pages??[],d=s.flatMap(r=>Array.isArray(r)?r:[r]);return{pages:s,data:d,isLoading:v.isLoading,isFetching:v.isFetching,isFetchingNextPage:v.isFetchingNextPage,hasNextPage:v.hasNextPage,fetchNextPage:v.fetchNextPage,error:v.error,isError:v.isError,refetch:v.refetch}}async function f(r){let e=await fetch(r);if(!e.ok)throw Error(`GET ${r} failed: ${e.status} ${e.statusText}`);let o=await e.json();return o&&"object"==typeof o&&"ok"in o&&"data"in o?o.data:o}function h(r,e={}){let{enabled:o=!0,reconnect:a=!1,maxReconnects:c=5,reconnectIntervalMs:n=2e3,protocols:i,parse:l=k,serialize:v=C,maxMessages:s=100,onMessage:d,onOpen:g,onClose:u,onError:y}=e,[b,m]=(0,t.useState)([]),[x,p]=(0,t.useState)(void 0),[B,S]=(0,t.useState)("disconnected"),[f,T]=(0,t.useState)(null),[F,E]=(0,t.useState)(0),H=(0,t.useRef)(null),A=(0,t.useRef)(null),P=(0,t.useRef)(!1),w=(0,t.useRef)(d),I=(0,t.useRef)(g),D=(0,t.useRef)(u),L=(0,t.useRef)(y),W=(0,t.useRef)(l),R=(0,t.useRef)(v);w.current=d,I.current=g,D.current=u,L.current=y,W.current=l,R.current=v;let $=(0,t.useCallback)(()=>{A.current&&(clearTimeout(A.current),A.current=null),H.current&&(H.current.close(),H.current=null)},[]),M=(0,t.useCallback)(()=>{if(!r)return;$(),P.current=!1,S("connecting"),T(null);let e=0;!function o(){let t=function(r){if(r.startsWith("ws://")||r.startsWith("wss://"))return r;let e="https:"===window.location.protocol?"wss:":"ws:",o=r.startsWith("/")?r:`/${r}`;return`${e}//${window.location.host}${o}`}(r),l=i?new WebSocket(t,i):new WebSocket(t);H.current=l,l.onopen=r=>{e=0,E(0),S("connected"),T(null),I.current?.(r)},l.onmessage=r=>{try{let e=W.current(r.data);p(e),m(r=>{let o=[...r,e];return s>0&&o.length>s?o.slice(-s):o}),w.current?.(e)}catch{}},l.onclose=r=>{H.current=null,S("disconnected"),D.current?.(r),!P.current&&a&&e<c&&1e3!==r.code&&(E(++e),A.current=setTimeout(o,n*Math.pow(2,e-1)))},l.onerror=r=>{S("error"),T(r),L.current?.(r)}}()},[r,i,a,c,n,s,$]),O=(0,t.useCallback)((r,e)=>{P.current=!0,A.current&&(clearTimeout(A.current),A.current=null),H.current&&(H.current.close(r,e),H.current=null),S("disconnected")},[]),N=(0,t.useCallback)(r=>{H.current?.readyState===WebSocket.OPEN&&H.current.send(R.current(r))},[]),z=(0,t.useCallback)(r=>{H.current?.readyState===WebSocket.OPEN&&H.current.send(r)},[]),X=(0,t.useCallback)(()=>{m([]),p(void 0)},[]);return(0,t.useEffect)(()=>{if(!r||!o){$(),S("disconnected");return}return m([]),p(void 0),M(),()=>{P.current=!0,$()}},[r,o]),{send:N,sendRaw:z,messages:b,latest:x,status:B,isConnected:"connected"===B,error:f,connect:M,disconnect:O,clear:X,reconnectCount:F}}function k(r){return JSON.parse(r)}function C(r){return JSON.stringify(r)}function T(){let{permissions:r}=g();return{hasPermission:(0,t.useCallback)(e=>r.includes(e),[r]),permissions:r}}function F(){let r=(0,i.useNavigate)(),e=(0,i.useLocation)(),o=(0,t.useCallback)(e=>r(e),[r]),a=(0,t.useCallback)(()=>r(-1),[r]),c=(0,t.useCallback)(r=>window.open(r,"_blank","noopener"),[]);return{navigate:o,currentPath:e.pathname,goBack:a,openExternal:c}}function E(){let r=(0,t.useCallback)(r=>{l.notification[r.type]({message:r.message,description:r.description,duration:r.duration??4.5})},[]),e=(0,t.useCallback)((e,o)=>r({type:"success",message:e,description:o}),[r]),o=(0,t.useCallback)((e,o)=>r({type:"error",message:e,description:o}),[r]),a=(0,t.useCallback)((e,o)=>r({type:"warning",message:e,description:o}),[r]),c=(0,t.useCallback)((e,o)=>r({type:"info",message:e,description:o}),[r]);return{notify:r,success:e,error:o,warning:a,info:c}}var H={bgPrimary:v.lightSemanticColors["bg-primary"],bgSecondary:v.lightSemanticColors["bg-secondary"],bgTertiary:v.lightSemanticColors["bg-tertiary"],textPrimary:v.lightSemanticColors["text-primary"],textSecondary:v.lightSemanticColors["text-secondary"],textTertiary:v.lightSemanticColors["text-tertiary"],textInverse:v.lightSemanticColors["text-inverse"],borderPrimary:v.lightSemanticColors["border-primary"],borderSecondary:v.lightSemanticColors["border-secondary"],link:v.lightSemanticColors.link,linkHover:v.lightSemanticColors["link-hover"],accentSubtle:v.lightSemanticColors["accent-subtle"],success:v.lightSemanticColors.success,warning:v.lightSemanticColors.warning,error:v.lightSemanticColors.error,info:v.lightSemanticColors.info,disabled:v.lightSemanticColors.disabled,shadow:v.lightSemanticColors.shadow};function A(){let{token:r}=l.theme.useToken();return{mode:"light",antdToken:r,semantic:H,tokens:{colors:v.colors,spacing:v.spacing,typography:v.typography,radius:v.radius,shadows:v.shadows}}}function P(){return{colorPrimary:"var(--link, #0c66ff)",colorPrimaryHover:"var(--link-hover, #0050cc)",colorPrimaryActive:"var(--link-hover, #0050cc)",colorPrimaryBg:"var(--accent-subtle, #dbeafe)",colorPrimaryBgHover:"var(--accent-subtle, #dbeafe)",colorPrimaryBorder:"var(--link, #0c66ff)",colorPrimaryBorderHover:"var(--link-hover, #0050cc)",colorPrimaryText:"var(--link, #0c66ff)",colorPrimaryTextHover:"var(--link-hover, #0050cc)",colorPrimaryTextActive:"var(--link-hover, #0050cc)",colorSuccess:"var(--success, #16A34A)",colorSuccessHover:"var(--success, #16A34A)",colorSuccessActive:"var(--success, #16A34A)",colorSuccessBg:"var(--bg-tertiary, #F3F4F6)",colorSuccessBgHover:"var(--bg-tertiary, #F3F4F6)",colorSuccessBorder:"var(--success, #16A34A)",colorSuccessBorderHover:"var(--success, #16A34A)",colorSuccessText:"var(--success, #16A34A)",colorSuccessTextHover:"var(--success, #16A34A)",colorSuccessTextActive:"var(--success, #16A34A)",colorWarning:"var(--warning, #F59E0B)",colorWarningHover:"var(--warning, #F59E0B)",colorWarningActive:"var(--warning, #F59E0B)",colorWarningBg:"var(--bg-tertiary, #F3F4F6)",colorWarningBgHover:"var(--bg-tertiary, #F3F4F6)",colorWarningBorder:"var(--warning, #F59E0B)",colorWarningBorderHover:"var(--warning, #F59E0B)",colorWarningText:"var(--warning, #F59E0B)",colorWarningTextHover:"var(--warning, #F59E0B)",colorWarningTextActive:"var(--warning, #F59E0B)",colorWarningOutline:"rgba(245, 158, 11, 0.2)",colorError:"var(--error, #DC2626)",colorErrorHover:"var(--error, #DC2626)",colorErrorActive:"var(--error, #DC2626)",colorErrorBg:"var(--bg-tertiary, #F3F4F6)",colorErrorBgHover:"var(--bg-tertiary, #F3F4F6)",colorErrorBorder:"var(--error, #DC2626)",colorErrorBorderHover:"var(--error, #DC2626)",colorErrorText:"var(--error, #DC2626)",colorErrorTextHover:"var(--error, #DC2626)",colorErrorTextActive:"var(--error, #DC2626)",colorErrorOutline:"rgba(220, 38, 38, 0.2)",colorInfo:"var(--info, #0EA5E9)",colorInfoHover:"var(--info, #0EA5E9)",colorInfoActive:"var(--info, #0EA5E9)",colorInfoBg:"var(--bg-tertiary, #F3F4F6)",colorInfoBgHover:"var(--bg-tertiary, #F3F4F6)",colorInfoBorder:"var(--info, #0EA5E9)",colorInfoBorderHover:"var(--info, #0EA5E9)",colorInfoText:"var(--info, #0EA5E9)",colorInfoTextHover:"var(--info, #0EA5E9)",colorInfoTextActive:"var(--info, #0EA5E9)",colorBgContainer:"var(--bg-secondary, #FFFFFF)",colorBgBase:"var(--bg-primary, #F9FAFB)",colorBgElevated:"var(--bg-secondary, #FFFFFF)",colorBgLayout:"var(--bg-primary, #F9FAFB)",colorBgSpotlight:"var(--bg-tertiary, #F3F4F6)",colorBgMask:"rgba(0, 0, 0, 0.45)",colorBgTextHover:"var(--bg-hover, #F3F4F6)",colorBgTextActive:"var(--bg-hover, #F3F4F6)",colorBgContainerDisabled:"var(--bg-tertiary, #F3F4F6)",colorText:"var(--text-primary, #111827)",colorTextBase:"var(--text-primary, #111827)",colorTextSecondary:"var(--text-secondary, #6B7280)",colorTextTertiary:"var(--text-tertiary, #6B7280)",colorTextQuaternary:"var(--text-tertiary, #6B7280)",colorTextDisabled:"var(--disabled, #9CA3AF)",colorTextHeading:"var(--text-primary, #111827)",colorTextLabel:"var(--text-secondary, #6B7280)",colorTextDescription:"var(--text-secondary, #6B7280)",colorTextPlaceholder:"var(--text-tertiary, #6B7280)",colorTextLightSolid:"var(--text-inverse, #FFFFFF)",colorBorder:"var(--border-primary, #E5E7EB)",colorBorderSecondary:"var(--border-secondary, #D4D4D4)",colorBorderBg:"var(--bg-secondary, #FFFFFF)",colorSplit:"var(--border-primary, #E5E7EB)",colorFill:"var(--bg-tertiary, #F3F4F6)",colorFillSecondary:"var(--bg-tertiary, #F3F4F6)",colorFillTertiary:"var(--bg-primary, #F9FAFB)",colorFillQuaternary:"var(--bg-primary, #F9FAFB)",colorFillContent:"var(--bg-hover, #F3F4F6)",colorFillContentHover:"var(--bg-hover, #F3F4F6)",colorFillAlter:"var(--bg-tertiary, #F3F4F6)",colorWhite:"#FFFFFF",boxShadow:"0 1px 3px rgba(0,0,0,0.08), 0 1px 2px rgba(0,0,0,0.04)",boxShadowSecondary:"0 4px 12px rgba(0,0,0,0.08)",boxShadowTertiary:"0 8px 24px rgba(0,0,0,0.08)",borderRadius:8,borderRadiusLG:12,borderRadiusSM:6,borderRadiusXS:4,borderRadiusOuter:6,controlHeight:36,controlHeightLG:40,controlHeightSM:28,controlHeightXS:22,fontFamily:"var(--font-body, 'Inter', 'Segoe UI', sans-serif)",fontSize:14,fontSizeLG:16,fontSizeSM:12,fontSizeXL:20,fontSizeHeading1:38,fontSizeHeading2:30,fontSizeHeading3:24,fontSizeHeading4:20,fontSizeHeading5:16,fontSizeIcon:12,fontWeightStrong:600,lineHeight:1.5714285714285714,lineHeightLG:1.5,lineHeightSM:1.6666666666666667,padding:16,paddingLG:24,paddingSM:12,paddingXS:8,paddingXXS:4,margin:16,marginLG:24,marginSM:12,marginXS:8,marginXXS:4,motionDurationFast:"0.1s",motionDurationMid:"0.2s",motionDurationSlow:"0.3s",motionEaseInOut:"cubic-bezier(0.645, 0.045, 0.355, 1)",motionEaseOut:"cubic-bezier(0.215, 0.61, 0.355, 1)",colorLink:"var(--link, #0c66ff)",colorLinkHover:"var(--link-hover, #0050cc)",colorLinkActive:"var(--link-hover, #0050cc)",colorIcon:"var(--text-secondary, #6B7280)",colorIconHover:"var(--text-primary, #111827)",colorHighlight:"var(--link, #0c66ff)",controlOutline:"rgba(12, 102, 255, 0.15)",controlOutlineWidth:2,controlInteractiveSize:16,controlItemBgHover:"var(--bg-hover, #F3F4F6)",controlItemBgActive:"var(--accent-subtle, #dbeafe)",controlItemBgActiveHover:"var(--accent-subtle, #dbeafe)",controlItemBgActiveDisabled:"var(--bg-tertiary, #F3F4F6)",controlTmpOutline:"rgba(12, 102, 255, 0.08)",screenXS:480,screenSM:576,screenMD:768,screenLG:992,screenXL:1200,screenXXL:1600}}function w(){return{Table:{headerBg:"var(--bg-tertiary)",headerColor:"var(--text-primary)",borderColor:"var(--border-primary)",colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",rowHoverBg:"var(--bg-hover)",rowSelectedBg:"var(--accent-subtle)",rowSelectedHoverBg:"var(--accent-subtle)",rowExpandedBg:"var(--bg-secondary)",bodySortBg:"var(--bg-tertiary)",headerSortActiveBg:"var(--bg-tertiary)",headerSortHoverBg:"var(--bg-tertiary)",headerFilterHoverBg:"var(--bg-tertiary)",fixedHeaderSortActiveBg:"var(--bg-tertiary)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)",expandIconBg:"var(--bg-secondary)",footerBg:"var(--bg-tertiary)",footerColor:"var(--text-primary)",selectionColumnWidth:60,stickyScrollBarBg:"var(--bg-tertiary)",stickyScrollBarBorderRadius:4},Tag:{defaultBg:"var(--bg-tertiary)",defaultColor:"var(--text-primary)",colorBorder:"var(--border-primary)",colorSuccess:"var(--success)",colorError:"var(--error)",colorWarning:"var(--warning)",colorInfo:"var(--info)"},Badge:{colorError:"var(--error)",colorSuccess:"var(--success)",colorWarning:"var(--warning)",colorInfo:"var(--info)",colorText:"var(--text-primary)"},Alert:{colorSuccess:"var(--success)",colorError:"var(--error)",colorWarning:"var(--warning)",colorInfo:"var(--info)",colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)",colorSuccessBg:"var(--bg-tertiary)",colorErrorBg:"var(--bg-tertiary)",colorWarningBg:"var(--bg-tertiary)",colorInfoBg:"var(--bg-tertiary)",colorSuccessBorder:"var(--success)",colorErrorBorder:"var(--error)",colorWarningBorder:"var(--warning)",colorInfoBorder:"var(--info)"},Card:{colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorBorderSecondary:"var(--border-primary)",headerBg:"var(--bg-secondary)",actionsBg:"var(--bg-tertiary)",extraColor:"var(--text-secondary)"},Descriptions:{colorText:"var(--text-primary)",colorTextLabel:"var(--text-secondary)",colorBorder:"var(--border-primary)"},Button:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorPrimary:"var(--link)",colorPrimaryHover:"var(--link-hover)",colorPrimaryActive:"var(--link-hover)",primaryColor:"var(--text-inverse)",primaryShadow:"0 2px 0 rgba(12, 102, 255, 0.15)",defaultBg:"var(--bg-secondary)",defaultColor:"var(--text-primary)",defaultBorderColor:"var(--border-primary)",defaultShadow:"0 2px 0 rgba(0, 0, 0, 0.015)",defaultHoverBg:"var(--bg-hover)",defaultHoverColor:"var(--text-primary)",defaultHoverBorderColor:"var(--border-secondary)",defaultActiveBg:"var(--bg-hover)",defaultActiveColor:"var(--text-primary)",defaultActiveBorderColor:"var(--border-secondary)",ghostBg:"transparent",defaultGhostColor:"var(--text-primary)",defaultGhostBorderColor:"var(--border-primary)",borderColorDisabled:"var(--border-primary)",colorBgContainerDisabled:"var(--bg-tertiary)",textTextColor:"var(--text-secondary)",textTextHoverColor:"var(--text-primary)",textTextActiveColor:"var(--text-primary)",textHoverBg:"var(--accent-subtle)",linkHoverBg:"transparent",colorLink:"var(--link)",colorLinkHover:"var(--link-hover)",colorLinkActive:"var(--link-hover)",solidTextColor:"var(--text-primary)",dangerColor:"var(--error)",dangerShadow:"0 2px 0 rgba(220, 38, 38, 0.1)",colorErrorBg:"transparent",colorErrorBgHover:"var(--bg-hover)",colorErrorBorder:"var(--error)",colorErrorBorderHover:"var(--error)",colorErrorHover:"var(--error)",colorErrorActive:"var(--error)"},Input:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorTextPlaceholder:"var(--text-tertiary)",hoverBorderColor:"var(--border-secondary)",activeBorderColor:"var(--link)",activeShadow:"0 0 0 3px rgba(12, 102, 255, 0.12)",errorActiveShadow:"0 0 0 2px rgba(220, 38, 38, 0.1)",warningActiveShadow:"0 0 0 2px rgba(245, 158, 11, 0.1)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)"},Select:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorBgElevated:"var(--bg-secondary)",colorTextPlaceholder:"var(--text-tertiary)",colorPrimary:"var(--link)",colorPrimaryHover:"var(--link-hover)",optionSelectedBg:"var(--accent-subtle)",optionSelectedColor:"var(--link)",optionActiveBg:"var(--bg-hover)",optionSelectedFontWeight:600,multipleItemBg:"var(--bg-tertiary)",multipleItemBorderColor:"var(--border-primary)",multipleItemColorDisabled:"var(--disabled)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)",selectorBg:"var(--bg-secondary)"},Dropdown:{colorText:"var(--text-primary)",colorBgElevated:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorTextDisabled:"var(--disabled)",controlItemBgHover:"var(--bg-hover)",controlItemBgActive:"var(--accent-subtle)",controlItemBgActiveHover:"var(--accent-subtle)",colorPrimary:"var(--link)",colorPrimaryHover:"var(--link-hover)",colorBgContainer:"var(--bg-secondary)",colorSplit:"var(--border-primary)",paddingBlock:8,controlPaddingHorizontal:12},Menu:{colorText:"var(--text-primary)",colorTextSecondary:"var(--text-secondary)",colorBgContainer:"var(--bg-sidebar)",colorBorder:"var(--border-primary)",colorSplit:"var(--border-primary)",itemColor:"var(--text-primary)",itemBg:"var(--bg-secondary)",itemHoverBg:"var(--bg-hover)",itemHoverColor:"var(--link)",itemSelectedBg:"var(--accent-subtle)",itemSelectedColor:"var(--link)",itemActiveBg:"var(--accent-subtle)",colorActiveBarBorderSize:0,darkItemBg:"var(--bg-secondary)",darkItemColor:"var(--text-primary)",darkItemHoverBg:"var(--bg-hover)",darkItemSelectedBg:"var(--accent-subtle)",darkItemSelectedColor:"var(--link)",darkSubMenuItemBg:"var(--bg-secondary)",subMenuItemBg:"var(--bg-secondary)",popupBg:"var(--bg-secondary)",colorPrimary:"var(--link)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)",groupTitleColor:"var(--text-tertiary)",groupTitleFontSize:11,itemBorderRadius:8,subMenuItemBorderRadius:6,itemPaddingInline:12},Tabs:{colorText:"var(--text-secondary)",colorTextHeading:"var(--text-primary)",colorBorder:"var(--border-primary)",colorBorderSecondary:"var(--border-primary)",colorPrimary:"var(--link)",itemHoverColor:"var(--link)",itemSelectedColor:"var(--link)",itemActiveColor:"var(--link)",inkBarColor:"var(--link)"},Modal:{colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorBgElevated:"var(--bg-secondary)",colorBorder:"var(--border-primary)",headerBg:"var(--bg-secondary)",footerBg:"var(--bg-tertiary)",contentBg:"var(--bg-secondary)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)"},Drawer:{colorText:"var(--text-primary)",colorBgElevated:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)"},Popover:{colorText:"var(--text-primary)",colorBgElevated:"var(--bg-secondary)",colorBorder:"var(--border-primary)"},Tooltip:{colorText:"var(--text-primary)",colorBgSpotlight:"var(--bg-secondary)",colorTextLightSolid:"var(--text-primary)"},List:{colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorBorder:"var(--border-primary)",colorSplit:"var(--border-primary)",metaMarginBottom:8,avatarMarginRight:16},Switch:{colorPrimary:"var(--link)",colorPrimaryHover:"var(--link-hover)"},Radio:{colorPrimary:"var(--link)",colorText:"var(--text-primary)",buttonCheckedBg:"var(--link)",buttonCheckedBgDisabled:"var(--disabled)",buttonColor:"var(--text-primary)",buttonSolidCheckedColor:"var(--text-inverse)",buttonSolidCheckedBg:"var(--link)",buttonSolidCheckedHoverBg:"var(--link-hover)",buttonSolidCheckedActiveBg:"var(--link-hover)"},Checkbox:{colorPrimary:"var(--link)",colorText:"var(--text-primary)"},DatePicker:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorBgElevated:"var(--bg-secondary)",colorTextPlaceholder:"var(--text-tertiary)",colorTextDisabled:"var(--disabled)",colorLink:"var(--link)",colorLinkHover:"var(--link-hover)",cellHoverBg:"var(--bg-hover)",cellActiveWithRangeBg:"var(--accent-subtle)",cellBgDisabled:"var(--bg-tertiary)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)"},Form:{colorText:"var(--text-primary)",colorTextLabel:"var(--text-secondary)",colorError:"var(--error)",colorWarning:"var(--warning)"},Pagination:{colorText:"var(--text-primary)",colorTextDisabled:"var(--disabled)",colorBgContainer:"var(--bg-secondary)",colorPrimary:"var(--link)",colorPrimaryHover:"var(--link-hover)",itemBg:"var(--bg-secondary)",itemActiveBg:"var(--link)",itemActiveBgDisabled:"var(--bg-tertiary)",itemInputBg:"var(--bg-secondary)",itemLinkBg:"var(--bg-secondary)",colorBgTextHover:"var(--bg-hover)"},Steps:{colorText:"var(--text-primary)",colorTextDescription:"var(--text-secondary)",colorPrimary:"var(--link)",colorBorder:"var(--border-primary)"},Breadcrumb:{colorText:"var(--text-secondary)",colorTextDescription:"var(--text-tertiary)",linkColor:"var(--link)",linkHoverColor:"var(--link-hover)",separatorColor:"var(--text-tertiary)"},Progress:{colorText:"var(--text-primary)",colorSuccess:"var(--success)",colorError:"var(--error)",remainingColor:"var(--bg-tertiary)"},Skeleton:{colorFill:"var(--bg-tertiary)",colorFillContent:"var(--bg-hover)"},Spin:{colorPrimary:"var(--link)",colorBgContainer:"var(--bg-secondary)"},Divider:{colorSplit:"var(--border-primary)",colorText:"var(--text-secondary)"},Layout:{headerBg:"var(--bg-secondary)",bodyBg:"var(--bg-primary)",triggerBg:"var(--bg-tertiary)",colorText:"var(--text-primary)"},Collapse:{colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorBorder:"var(--border-primary)",colorBgContainer:"var(--bg-secondary)",headerBg:"var(--bg-tertiary)"},Carousel:{colorBgContainer:"var(--bg-secondary)",dotActiveWidth:24},Anchor:{colorPrimary:"var(--link)",colorText:"var(--text-secondary)",linkPaddingBlock:4},Timeline:{colorText:"var(--text-primary)",colorTextDescription:"var(--text-secondary)",tailColor:"var(--border-primary)",dotBg:"var(--bg-secondary)"},Transfer:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",controlItemBgActive:"var(--bg-hover)"},Tree:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorPrimary:"var(--link)",nodeHoverBg:"var(--bg-hover)",nodeSelectedBg:"var(--accent-subtle)"},TreeSelect:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorBgElevated:"var(--bg-secondary)",nodeHoverBg:"var(--bg-hover)",nodeSelectedBg:"var(--accent-subtle)"},Cascader:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorBgElevated:"var(--bg-secondary)",optionSelectedBg:"var(--bg-hover)"},Segmented:{colorText:"var(--text-primary)",colorTextLabel:"var(--text-secondary)",colorBgLayout:"var(--bg-tertiary)",itemSelectedBg:"var(--bg-secondary)",itemSelectedColor:"var(--link)",itemHoverBg:"var(--bg-hover)"},Rate:{colorText:"var(--warning)"},Slider:{colorPrimary:"var(--link)",colorPrimaryBorder:"var(--link)",trackBg:"var(--bg-tertiary)",trackHoverBg:"var(--bg-hover)"},Upload:{colorText:"var(--text-primary)",colorTextDescription:"var(--text-secondary)",colorBorder:"var(--border-primary)",colorFillAlter:"var(--bg-tertiary)",colorPrimary:"var(--link)"},Calendar:{colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",itemActiveBg:"var(--accent-subtle)"},Image:{colorTextLightSolid:"var(--text-primary)",colorBgMask:"rgba(0, 0, 0, 0.45)"},Statistic:{colorText:"var(--text-primary)",colorTextDescription:"var(--text-secondary)"},Result:{colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorTextDescription:"var(--text-secondary)"},Empty:{colorText:"var(--text-secondary)",colorTextDescription:"var(--text-tertiary)"},Message:{colorText:"var(--text-primary)",colorBgElevated:"var(--bg-secondary)",contentBg:"var(--bg-secondary)",contentPadding:"10px 16px",colorSuccess:"var(--success)",colorError:"var(--error)",colorWarning:"var(--warning)",colorInfo:"var(--info)"},Notification:{colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorBgElevated:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)",colorSuccess:"var(--success)",colorError:"var(--error)",colorWarning:"var(--warning)",colorInfo:"var(--info)"}}}v.darkSemanticColors["bg-primary"],v.darkSemanticColors["bg-secondary"],v.darkSemanticColors["bg-tertiary"],v.darkSemanticColors["text-primary"],v.darkSemanticColors["text-secondary"],v.darkSemanticColors["text-tertiary"],v.darkSemanticColors["text-inverse"],v.darkSemanticColors["border-primary"],v.darkSemanticColors["border-secondary"],v.darkSemanticColors.link,v.darkSemanticColors["link-hover"],v.darkSemanticColors["accent-subtle"],v.darkSemanticColors.success,v.darkSemanticColors.warning,v.darkSemanticColors.error,v.darkSemanticColors.info,v.darkSemanticColors.disabled,v.darkSemanticColors.shadow}}]);
|
|
1
|
+
"use strict";(self.webpackChunk_kb_labs_qa_entry=self.webpackChunk_kb_labs_qa_entry||[]).push([["370"],{3481(r,e,o){o.r(e),o.d(e,{PageContextProvider:()=>d,getAntDesignComponents:()=>w,getAntDesignTokens:()=>P,useData:()=>b,useEventBus:()=>y,useInfiniteData:()=>S,useMutateData:()=>m,useNavigation:()=>F,useNotification:()=>E,usePage:()=>u,usePageContext:()=>g,usePermissions:()=>T,useSSE:()=>p,useTheme:()=>A,useWebSocket:()=>h});var t=o(5259),a=o(8048),c=o(5997),n=o(2317),i=o(4391),l=o(4984),v=o(5783),s=(0,t.createContext)(null);function d({children:r,value:e}){return(0,a.jsx)(s.Provider,{value:e,children:r})}function g(){let r=(0,t.useContext)(s);if(!r)throw Error("usePage() must be used inside a PageContextProvider (are you inside a Studio page?)");return r}function u(){return g()}function y(){let r=(0,c.useEventBusContext)(),{pluginId:e,pageId:o}=g(),a=(0,t.useRef)([]);return(0,t.useEffect)(()=>()=>{for(let r of a.current)r();a.current=[]},[]),{publish:(0,t.useCallback)((t,a)=>{r.publish(t,a,e,o)},[r,e,o]),subscribe:(0,t.useCallback)((t,c)=>{let n=r.subscribe(t,c,e,o);return a.current.push(n),n},[r,e,o])}}function b(r,e){let o=function(r,e){if(!e||0===Object.keys(e).length)return r;let o=new URLSearchParams;for(let[r,t]of Object.entries(e))null!=t&&o.set(r,String(t));let t=r.includes("?")?"&":"?";return`${r}${t}${o.toString()}`}(r,e?.params),t=(0,n.useQuery)({queryKey:["studio-data",o],queryFn:()=>x(o),enabled:e?.enabled,staleTime:e?.staleTime,refetchInterval:e?.pollingMs||void 0,select:e?.select});return{data:t.data,isLoading:t.isLoading,isError:t.isError,error:t.error,refetch:t.refetch,isFetching:t.isFetching}}function m(r,e="POST"){let o="string"==typeof e?{method:e}:e,t=o.method??"POST",a=o.mapBody,c=(0,n.useMutation)({mutationFn:async e=>{let o="function"==typeof r?r(e):r,c=a?a(e):e,n=null!=c,i=await fetch(`/api${o}`,{method:t,headers:n?{"Content-Type":"application/json"}:{},body:n?JSON.stringify(c):void 0});if(!i.ok)throw Error(`${t} ${o} failed: ${i.status} ${i.statusText}`);let l=await i.json();return l&&"object"==typeof l&&"ok"in l&&"data"in l?l.data:l}});return{mutate:c.mutate,mutateAsync:c.mutateAsync,isLoading:c.isPending,isError:c.isError,error:c.error,data:c.data}}async function x(r){let e=await fetch(`/api${r}`);if(!e.ok)throw Error(`GET ${r} failed: ${e.status} ${e.statusText}`);let o=await e.json();return o&&"object"==typeof o&&"ok"in o&&"data"in o?o.data:o}function p(r,e={}){let{events:o="message",doneEvent:a,enabled:c=!0,reconnect:n=!1,maxReconnects:i=5,reconnectIntervalMs:l=2e3,maxEvents:v=0,parse:s=B,params:d,onEvent:g,onOpen:u,onError:y,onDone:b}=e,[m,x]=(0,t.useState)([]),[S,f]=(0,t.useState)(void 0),[h,k]=(0,t.useState)(null),[C,T]=(0,t.useState)(!1),[F,E]=(0,t.useState)(0),H=(0,t.useRef)(null),A=(0,t.useRef)(null),P=(0,t.useRef)(!1),w=(0,t.useRef)(g),I=(0,t.useRef)(u),D=(0,t.useRef)(y),L=(0,t.useRef)(b),W=(0,t.useRef)(s);w.current=g,I.current=u,D.current=y,L.current=b,W.current=s;let R=JSON.stringify(o),$=JSON.stringify(d),M=(0,t.useCallback)(()=>{P.current=!0,A.current&&(clearTimeout(A.current),A.current=null),H.current&&(H.current.close(),H.current=null),T(!1)},[]),O=(0,t.useCallback)(()=>{x([]),f(void 0)},[]);return(0,t.useEffect)(()=>{if(!r||!c){H.current&&(H.current.close(),H.current=null),T(!1);return}P.current=!1,x([]),f(void 0),k(null),E(0);let e=0;return!function t(){let c=new EventSource(function(r,e){let o=r.startsWith("http")?r:`/api${r}`;if(!e||0===Object.keys(e).length)return o;let t=new URLSearchParams;for(let[r,o]of Object.entries(e))null!=o&&t.set(r,String(o));let a=o.includes("?")?"&":"?";return`${o}${a}${t.toString()}`}(r,d));H.current=c;let s=Array.isArray(o)?o:[o],g=r=>{try{let e=W.current(r.data);f(e),x(r=>{let o=[...r,e];return v>0&&o.length>v?o.slice(-v):o}),w.current?.(e)}catch(e){let r=e instanceof Error?e:Error("Failed to parse SSE event data");k(r),D.current?.(r)}};for(let r of s)c.addEventListener(r,g);a&&c.addEventListener(a,()=>{c.close(),H.current=null,T(!1),L.current?.()}),c.onopen=()=>{e=0,E(0),T(!0),k(null),I.current?.()},c.onerror=()=>{if(c.close(),H.current=null,T(!1),P.current)return;let r=Error("SSE connection lost");k(r),D.current?.(r),n&&e<i&&(E(++e),A.current=setTimeout(t,l*Math.pow(2,e-1)))}}(),()=>{P.current=!0,A.current&&(clearTimeout(A.current),A.current=null),H.current&&(H.current.close(),H.current=null)}},[r,c,a,n,i,l,v,R,$]),{events:m,latest:S,isConnected:C,error:h,close:M,clear:O,reconnectCount:F}}function B(r){return JSON.parse(r)}function S(r,e){let{getNextCursor:o,params:t,enabled:a,staleTime:c,cursorParam:i="cursor",initialCursor:l}=e,v=(0,n.useInfiniteQuery)({queryKey:["studio-infinite",r,t],queryFn:async({pageParam:e})=>f(function(r,e,o,t){let a=new URLSearchParams;if(e)for(let[r,o]of Object.entries(e))null!=o&&a.set(r,String(o));null!=t&&a.set(o,String(t));let c=a.toString(),n=r.startsWith("http")?r:`/api${r}`;return c?`${n}?${c}`:n}(r,t,i,e)),initialPageParam:l,getNextPageParam:o,enabled:a,staleTime:c}),s=v.data?.pages??[],d=s.flatMap(r=>Array.isArray(r)?r:[r]);return{pages:s,data:d,isLoading:v.isLoading,isFetching:v.isFetching,isFetchingNextPage:v.isFetchingNextPage,hasNextPage:v.hasNextPage,fetchNextPage:v.fetchNextPage,error:v.error,isError:v.isError,refetch:v.refetch}}async function f(r){let e=await fetch(r);if(!e.ok)throw Error(`GET ${r} failed: ${e.status} ${e.statusText}`);let o=await e.json();return o&&"object"==typeof o&&"ok"in o&&"data"in o?o.data:o}function h(r,e={}){let{enabled:o=!0,reconnect:a=!1,maxReconnects:c=5,reconnectIntervalMs:n=2e3,protocols:i,parse:l=k,serialize:v=C,maxMessages:s=100,onMessage:d,onOpen:g,onClose:u,onError:y}=e,[b,m]=(0,t.useState)([]),[x,p]=(0,t.useState)(void 0),[B,S]=(0,t.useState)("disconnected"),[f,T]=(0,t.useState)(null),[F,E]=(0,t.useState)(0),H=(0,t.useRef)(null),A=(0,t.useRef)(null),P=(0,t.useRef)(!1),w=(0,t.useRef)(d),I=(0,t.useRef)(g),D=(0,t.useRef)(u),L=(0,t.useRef)(y),W=(0,t.useRef)(l),R=(0,t.useRef)(v);w.current=d,I.current=g,D.current=u,L.current=y,W.current=l,R.current=v;let $=(0,t.useCallback)(()=>{A.current&&(clearTimeout(A.current),A.current=null),H.current&&(H.current.close(),H.current=null)},[]),M=(0,t.useCallback)(()=>{if(!r)return;$(),P.current=!1,S("connecting"),T(null);let e=0;!function o(){let t=function(r){if(r.startsWith("ws://")||r.startsWith("wss://"))return r;let e="https:"===window.location.protocol?"wss:":"ws:",o=r.startsWith("/")?r:`/${r}`;return`${e}//${window.location.host}${o}`}(r),l=i?new WebSocket(t,i):new WebSocket(t);H.current=l,l.onopen=r=>{e=0,E(0),S("connected"),T(null),I.current?.(r)},l.onmessage=r=>{try{let e=W.current(r.data);p(e),m(r=>{let o=[...r,e];return s>0&&o.length>s?o.slice(-s):o}),w.current?.(e)}catch{}},l.onclose=r=>{H.current=null,S("disconnected"),D.current?.(r),!P.current&&a&&e<c&&1e3!==r.code&&(E(++e),A.current=setTimeout(o,n*Math.pow(2,e-1)))},l.onerror=r=>{S("error"),T(r),L.current?.(r)}}()},[r,i,a,c,n,s,$]),O=(0,t.useCallback)((r,e)=>{P.current=!0,A.current&&(clearTimeout(A.current),A.current=null),H.current&&(H.current.close(r,e),H.current=null),S("disconnected")},[]),N=(0,t.useCallback)(r=>{H.current?.readyState===WebSocket.OPEN&&H.current.send(R.current(r))},[]),z=(0,t.useCallback)(r=>{H.current?.readyState===WebSocket.OPEN&&H.current.send(r)},[]),j=(0,t.useCallback)(()=>{m([]),p(void 0)},[]);return(0,t.useEffect)(()=>{if(!r||!o){$(),S("disconnected");return}return m([]),p(void 0),M(),()=>{P.current=!0,$()}},[r,o]),{send:N,sendRaw:z,messages:b,latest:x,status:B,isConnected:"connected"===B,error:f,connect:M,disconnect:O,clear:j,reconnectCount:F}}function k(r){return JSON.parse(r)}function C(r){return JSON.stringify(r)}function T(){let{permissions:r}=g();return{hasPermission:(0,t.useCallback)(e=>r.includes(e),[r]),permissions:r}}function F(){let r=(0,i.useNavigate)(),e=(0,i.useLocation)(),o=(0,t.useCallback)(e=>r(e),[r]),a=(0,t.useCallback)(()=>r(-1),[r]),c=(0,t.useCallback)(r=>window.open(r,"_blank","noopener"),[]);return{navigate:o,currentPath:e.pathname,goBack:a,openExternal:c}}function E(){let r=(0,t.useCallback)(r=>{l.notification[r.type]({message:r.message,description:r.description,duration:r.duration??4.5})},[]),e=(0,t.useCallback)((e,o)=>r({type:"success",message:e,description:o}),[r]),o=(0,t.useCallback)((e,o)=>r({type:"error",message:e,description:o}),[r]),a=(0,t.useCallback)((e,o)=>r({type:"warning",message:e,description:o}),[r]),c=(0,t.useCallback)((e,o)=>r({type:"info",message:e,description:o}),[r]);return{notify:r,success:e,error:o,warning:a,info:c}}var H={bgPrimary:v.lightSemanticColors["bg-primary"],bgSecondary:v.lightSemanticColors["bg-secondary"],bgTertiary:v.lightSemanticColors["bg-tertiary"],textPrimary:v.lightSemanticColors["text-primary"],textSecondary:v.lightSemanticColors["text-secondary"],textTertiary:v.lightSemanticColors["text-tertiary"],textInverse:v.lightSemanticColors["text-inverse"],borderPrimary:v.lightSemanticColors["border-primary"],borderSecondary:v.lightSemanticColors["border-secondary"],link:v.lightSemanticColors.link,linkHover:v.lightSemanticColors["link-hover"],accentSubtle:v.lightSemanticColors["accent-subtle"],success:v.lightSemanticColors.success,warning:v.lightSemanticColors.warning,error:v.lightSemanticColors.error,info:v.lightSemanticColors.info,disabled:v.lightSemanticColors.disabled,shadow:v.lightSemanticColors.shadow};function A(){let{token:r}=l.theme.useToken();return{mode:"light",antdToken:r,semantic:H,tokens:{colors:v.colors,spacing:v.spacing,typography:v.typography,radius:v.radius,shadows:v.shadows}}}function P(){return{colorPrimary:"var(--link, #0c66ff)",colorPrimaryHover:"var(--link-hover, #0050cc)",colorPrimaryActive:"var(--link-hover, #0050cc)",colorPrimaryBg:"var(--accent-subtle, #dbeafe)",colorPrimaryBgHover:"var(--accent-subtle, #dbeafe)",colorPrimaryBorder:"var(--link, #0c66ff)",colorPrimaryBorderHover:"var(--link-hover, #0050cc)",colorPrimaryText:"var(--link, #0c66ff)",colorPrimaryTextHover:"var(--link-hover, #0050cc)",colorPrimaryTextActive:"var(--link-hover, #0050cc)",colorSuccess:"var(--success, #16A34A)",colorSuccessHover:"var(--success, #16A34A)",colorSuccessActive:"var(--success, #16A34A)",colorSuccessBg:"var(--bg-tertiary, #F3F4F6)",colorSuccessBgHover:"var(--bg-tertiary, #F3F4F6)",colorSuccessBorder:"var(--success, #16A34A)",colorSuccessBorderHover:"var(--success, #16A34A)",colorSuccessText:"var(--success, #16A34A)",colorSuccessTextHover:"var(--success, #16A34A)",colorSuccessTextActive:"var(--success, #16A34A)",colorWarning:"var(--warning, #F59E0B)",colorWarningHover:"var(--warning, #F59E0B)",colorWarningActive:"var(--warning, #F59E0B)",colorWarningBg:"var(--bg-tertiary, #F3F4F6)",colorWarningBgHover:"var(--bg-tertiary, #F3F4F6)",colorWarningBorder:"var(--warning, #F59E0B)",colorWarningBorderHover:"var(--warning, #F59E0B)",colorWarningText:"var(--warning, #F59E0B)",colorWarningTextHover:"var(--warning, #F59E0B)",colorWarningTextActive:"var(--warning, #F59E0B)",colorWarningOutline:"rgba(245, 158, 11, 0.2)",colorError:"var(--error, #DC2626)",colorErrorHover:"var(--error, #DC2626)",colorErrorActive:"var(--error, #DC2626)",colorErrorBg:"var(--bg-tertiary, #F3F4F6)",colorErrorBgHover:"var(--bg-tertiary, #F3F4F6)",colorErrorBorder:"var(--error, #DC2626)",colorErrorBorderHover:"var(--error, #DC2626)",colorErrorText:"var(--error, #DC2626)",colorErrorTextHover:"var(--error, #DC2626)",colorErrorTextActive:"var(--error, #DC2626)",colorErrorOutline:"rgba(220, 38, 38, 0.2)",colorInfo:"var(--info, #0EA5E9)",colorInfoHover:"var(--info, #0EA5E9)",colorInfoActive:"var(--info, #0EA5E9)",colorInfoBg:"var(--bg-tertiary, #F3F4F6)",colorInfoBgHover:"var(--bg-tertiary, #F3F4F6)",colorInfoBorder:"var(--info, #0EA5E9)",colorInfoBorderHover:"var(--info, #0EA5E9)",colorInfoText:"var(--info, #0EA5E9)",colorInfoTextHover:"var(--info, #0EA5E9)",colorInfoTextActive:"var(--info, #0EA5E9)",colorBgContainer:"var(--bg-secondary, #FFFFFF)",colorBgBase:"var(--bg-primary, #F9FAFB)",colorBgElevated:"var(--bg-secondary, #FFFFFF)",colorBgLayout:"var(--bg-primary, #F9FAFB)",colorBgSpotlight:"var(--bg-tertiary, #F3F4F6)",colorBgMask:"rgba(0, 0, 0, 0.45)",colorBgTextHover:"var(--bg-hover, #F3F4F6)",colorBgTextActive:"var(--bg-hover, #F3F4F6)",colorBgContainerDisabled:"var(--bg-tertiary, #F3F4F6)",colorText:"var(--text-primary, #111827)",colorTextBase:"var(--text-primary, #111827)",colorTextSecondary:"var(--text-secondary, #6B7280)",colorTextTertiary:"var(--text-tertiary, #6B7280)",colorTextQuaternary:"var(--text-tertiary, #6B7280)",colorTextDisabled:"var(--disabled, #9CA3AF)",colorTextHeading:"var(--text-primary, #111827)",colorTextLabel:"var(--text-secondary, #6B7280)",colorTextDescription:"var(--text-secondary, #6B7280)",colorTextPlaceholder:"var(--text-tertiary, #6B7280)",colorTextLightSolid:"var(--text-inverse, #FFFFFF)",colorBorder:"var(--border-primary, #E5E7EB)",colorBorderSecondary:"var(--border-secondary, #D4D4D4)",colorBorderBg:"var(--bg-secondary, #FFFFFF)",colorSplit:"var(--border-primary, #E5E7EB)",colorFill:"var(--bg-tertiary, #F3F4F6)",colorFillSecondary:"var(--bg-tertiary, #F3F4F6)",colorFillTertiary:"var(--bg-primary, #F9FAFB)",colorFillQuaternary:"var(--bg-primary, #F9FAFB)",colorFillContent:"var(--bg-hover, #F3F4F6)",colorFillContentHover:"var(--bg-hover, #F3F4F6)",colorFillAlter:"var(--bg-tertiary, #F3F4F6)",colorWhite:"#FFFFFF",boxShadow:"0 1px 3px rgba(0,0,0,0.08), 0 1px 2px rgba(0,0,0,0.04)",boxShadowSecondary:"0 4px 12px rgba(0,0,0,0.08)",boxShadowTertiary:"0 8px 24px rgba(0,0,0,0.08)",borderRadius:8,borderRadiusLG:12,borderRadiusSM:6,borderRadiusXS:4,borderRadiusOuter:6,controlHeight:36,controlHeightLG:40,controlHeightSM:28,controlHeightXS:22,fontFamily:"var(--font-body, 'Inter', 'Segoe UI', sans-serif)",fontSize:14,fontSizeLG:16,fontSizeSM:12,fontSizeXL:20,fontSizeHeading1:38,fontSizeHeading2:30,fontSizeHeading3:24,fontSizeHeading4:20,fontSizeHeading5:16,fontSizeIcon:12,fontWeightStrong:600,lineHeight:1.5714285714285714,lineHeightLG:1.5,lineHeightSM:1.6666666666666667,padding:16,paddingLG:24,paddingSM:12,paddingXS:8,paddingXXS:4,margin:16,marginLG:24,marginSM:12,marginXS:8,marginXXS:4,motionDurationFast:"0.1s",motionDurationMid:"0.2s",motionDurationSlow:"0.3s",motionEaseInOut:"cubic-bezier(0.645, 0.045, 0.355, 1)",motionEaseOut:"cubic-bezier(0.215, 0.61, 0.355, 1)",colorLink:"var(--link, #0c66ff)",colorLinkHover:"var(--link-hover, #0050cc)",colorLinkActive:"var(--link-hover, #0050cc)",colorIcon:"var(--text-secondary, #6B7280)",colorIconHover:"var(--text-primary, #111827)",colorHighlight:"var(--link, #0c66ff)",controlOutline:"rgba(12, 102, 255, 0.15)",controlOutlineWidth:2,controlInteractiveSize:16,controlItemBgHover:"var(--bg-hover, #F3F4F6)",controlItemBgActive:"var(--accent-subtle, #dbeafe)",controlItemBgActiveHover:"var(--accent-subtle, #dbeafe)",controlItemBgActiveDisabled:"var(--bg-tertiary, #F3F4F6)",controlTmpOutline:"rgba(12, 102, 255, 0.08)",screenXS:480,screenSM:576,screenMD:768,screenLG:992,screenXL:1200,screenXXL:1600}}function w(){return{Table:{headerBg:"var(--bg-tertiary)",headerColor:"var(--text-primary)",borderColor:"var(--border-primary)",colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",rowHoverBg:"var(--bg-hover)",rowSelectedBg:"var(--accent-subtle)",rowSelectedHoverBg:"var(--accent-subtle)",rowExpandedBg:"var(--bg-secondary)",bodySortBg:"var(--bg-tertiary)",headerSortActiveBg:"var(--bg-tertiary)",headerSortHoverBg:"var(--bg-tertiary)",headerFilterHoverBg:"var(--bg-tertiary)",fixedHeaderSortActiveBg:"var(--bg-tertiary)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)",expandIconBg:"var(--bg-secondary)",footerBg:"var(--bg-tertiary)",footerColor:"var(--text-primary)",selectionColumnWidth:60,stickyScrollBarBg:"var(--bg-tertiary)",stickyScrollBarBorderRadius:4},Tag:{defaultBg:"var(--bg-tertiary)",defaultColor:"var(--text-primary)",colorBorder:"var(--border-primary)",colorSuccess:"var(--success)",colorError:"var(--error)",colorWarning:"var(--warning)",colorInfo:"var(--info)"},Badge:{colorError:"var(--error)",colorSuccess:"var(--success)",colorWarning:"var(--warning)",colorInfo:"var(--info)",colorText:"var(--text-primary)"},Alert:{colorSuccess:"var(--success)",colorError:"var(--error)",colorWarning:"var(--warning)",colorInfo:"var(--info)",colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)",colorSuccessBg:"var(--bg-tertiary)",colorErrorBg:"var(--bg-tertiary)",colorWarningBg:"var(--bg-tertiary)",colorInfoBg:"var(--bg-tertiary)",colorSuccessBorder:"var(--success)",colorErrorBorder:"var(--error)",colorWarningBorder:"var(--warning)",colorInfoBorder:"var(--info)"},Card:{colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorBorderSecondary:"var(--border-primary)",headerBg:"var(--bg-secondary)",actionsBg:"var(--bg-tertiary)",extraColor:"var(--text-secondary)"},Descriptions:{colorText:"var(--text-primary)",colorTextLabel:"var(--text-secondary)",colorBorder:"var(--border-primary)"},Button:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorPrimary:"var(--link)",colorPrimaryHover:"var(--link-hover)",colorPrimaryActive:"var(--link-hover)",primaryColor:"var(--text-inverse)",primaryShadow:"0 2px 0 rgba(12, 102, 255, 0.15)",defaultBg:"var(--bg-secondary)",defaultColor:"var(--text-primary)",defaultBorderColor:"var(--border-primary)",defaultShadow:"0 2px 0 rgba(0, 0, 0, 0.015)",defaultHoverBg:"var(--bg-hover)",defaultHoverColor:"var(--text-primary)",defaultHoverBorderColor:"var(--border-secondary)",defaultActiveBg:"var(--bg-hover)",defaultActiveColor:"var(--text-primary)",defaultActiveBorderColor:"var(--border-secondary)",ghostBg:"transparent",defaultGhostColor:"var(--text-primary)",defaultGhostBorderColor:"var(--border-primary)",borderColorDisabled:"var(--border-primary)",colorBgContainerDisabled:"var(--bg-tertiary)",textTextColor:"var(--text-secondary)",textTextHoverColor:"var(--text-primary)",textTextActiveColor:"var(--text-primary)",textHoverBg:"var(--accent-subtle)",linkHoverBg:"transparent",colorLink:"var(--link)",colorLinkHover:"var(--link-hover)",colorLinkActive:"var(--link-hover)",solidTextColor:"var(--text-primary)",dangerColor:"var(--error)",dangerShadow:"0 2px 0 rgba(220, 38, 38, 0.1)",colorErrorBg:"transparent",colorErrorBgHover:"var(--bg-hover)",colorErrorBorder:"var(--error)",colorErrorBorderHover:"var(--error)",colorErrorHover:"var(--error)",colorErrorActive:"var(--error)"},Input:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorTextPlaceholder:"var(--text-tertiary)",hoverBorderColor:"var(--border-secondary)",activeBorderColor:"var(--link)",activeShadow:"0 0 0 3px rgba(12, 102, 255, 0.12)",errorActiveShadow:"0 0 0 2px rgba(220, 38, 38, 0.1)",warningActiveShadow:"0 0 0 2px rgba(245, 158, 11, 0.1)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)"},Select:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorBgElevated:"var(--bg-secondary)",colorTextPlaceholder:"var(--text-tertiary)",colorPrimary:"var(--link)",colorPrimaryHover:"var(--link-hover)",optionSelectedBg:"var(--accent-subtle)",optionSelectedColor:"var(--link)",optionActiveBg:"var(--bg-hover)",optionSelectedFontWeight:600,multipleItemBg:"var(--bg-tertiary)",multipleItemBorderColor:"var(--border-primary)",multipleItemColorDisabled:"var(--disabled)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)",selectorBg:"var(--bg-secondary)"},Dropdown:{colorText:"var(--text-primary)",colorBgElevated:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorTextDisabled:"var(--disabled)",controlItemBgHover:"var(--bg-hover)",controlItemBgActive:"var(--accent-subtle)",controlItemBgActiveHover:"var(--accent-subtle)",colorPrimary:"var(--link)",colorPrimaryHover:"var(--link-hover)",colorBgContainer:"var(--bg-secondary)",colorSplit:"var(--border-primary)",paddingBlock:8,controlPaddingHorizontal:12},Menu:{colorText:"var(--text-primary)",colorTextSecondary:"var(--text-secondary)",colorBgContainer:"var(--bg-sidebar)",colorBorder:"var(--border-primary)",colorSplit:"var(--border-primary)",itemColor:"var(--text-primary)",itemBg:"var(--bg-secondary)",itemHoverBg:"var(--bg-hover)",itemHoverColor:"var(--link)",itemSelectedBg:"var(--accent-subtle)",itemSelectedColor:"var(--link)",itemActiveBg:"var(--accent-subtle)",colorActiveBarBorderSize:0,darkItemBg:"var(--bg-secondary)",darkItemColor:"var(--text-primary)",darkItemHoverBg:"var(--bg-hover)",darkItemSelectedBg:"var(--accent-subtle)",darkItemSelectedColor:"var(--link)",darkSubMenuItemBg:"var(--bg-secondary)",subMenuItemBg:"var(--bg-secondary)",popupBg:"var(--bg-secondary)",colorPrimary:"var(--link)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)",groupTitleColor:"var(--text-tertiary)",groupTitleFontSize:11,itemBorderRadius:8,subMenuItemBorderRadius:6,itemPaddingInline:12},Tabs:{colorText:"var(--text-secondary)",colorTextHeading:"var(--text-primary)",colorBorder:"var(--border-primary)",colorBorderSecondary:"var(--border-primary)",colorPrimary:"var(--link)",itemHoverColor:"var(--link)",itemSelectedColor:"var(--link)",itemActiveColor:"var(--link)",inkBarColor:"var(--link)"},Modal:{colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorBgElevated:"var(--bg-secondary)",colorBorder:"var(--border-primary)",headerBg:"var(--bg-secondary)",footerBg:"var(--bg-tertiary)",contentBg:"var(--bg-secondary)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)"},Drawer:{colorText:"var(--text-primary)",colorBgElevated:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)"},Popover:{colorText:"var(--text-primary)",colorBgElevated:"var(--bg-secondary)",colorBorder:"var(--border-primary)"},Tooltip:{colorText:"var(--text-primary)",colorBgSpotlight:"var(--bg-secondary)",colorTextLightSolid:"var(--text-primary)"},List:{colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorBorder:"var(--border-primary)",colorSplit:"var(--border-primary)",metaMarginBottom:8,avatarMarginRight:16},Switch:{colorPrimary:"var(--link)",colorPrimaryHover:"var(--link-hover)"},Radio:{colorPrimary:"var(--link)",colorText:"var(--text-primary)",buttonCheckedBg:"var(--link)",buttonCheckedBgDisabled:"var(--disabled)",buttonColor:"var(--text-primary)",buttonSolidCheckedColor:"var(--text-inverse)",buttonSolidCheckedBg:"var(--link)",buttonSolidCheckedHoverBg:"var(--link-hover)",buttonSolidCheckedActiveBg:"var(--link-hover)"},Checkbox:{colorPrimary:"var(--link)",colorText:"var(--text-primary)"},DatePicker:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorBgElevated:"var(--bg-secondary)",colorTextPlaceholder:"var(--text-tertiary)",colorTextDisabled:"var(--disabled)",colorLink:"var(--link)",colorLinkHover:"var(--link-hover)",cellHoverBg:"var(--bg-hover)",cellActiveWithRangeBg:"var(--accent-subtle)",cellBgDisabled:"var(--bg-tertiary)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)"},Form:{colorText:"var(--text-primary)",colorTextLabel:"var(--text-secondary)",colorError:"var(--error)",colorWarning:"var(--warning)"},Pagination:{colorText:"var(--text-primary)",colorTextDisabled:"var(--disabled)",colorBgContainer:"var(--bg-secondary)",colorPrimary:"var(--link)",colorPrimaryHover:"var(--link-hover)",itemBg:"var(--bg-secondary)",itemActiveBg:"var(--link)",itemActiveBgDisabled:"var(--bg-tertiary)",itemInputBg:"var(--bg-secondary)",itemLinkBg:"var(--bg-secondary)",colorBgTextHover:"var(--bg-hover)"},Steps:{colorText:"var(--text-primary)",colorTextDescription:"var(--text-secondary)",colorPrimary:"var(--link)",colorBorder:"var(--border-primary)"},Breadcrumb:{colorText:"var(--text-secondary)",colorTextDescription:"var(--text-tertiary)",linkColor:"var(--link)",linkHoverColor:"var(--link-hover)",separatorColor:"var(--text-tertiary)"},Progress:{colorText:"var(--text-primary)",colorSuccess:"var(--success)",colorError:"var(--error)",remainingColor:"var(--bg-tertiary)"},Skeleton:{colorFill:"var(--bg-tertiary)",colorFillContent:"var(--bg-hover)"},Spin:{colorPrimary:"var(--link)",colorBgContainer:"var(--bg-secondary)"},Divider:{colorSplit:"var(--border-primary)",colorText:"var(--text-secondary)"},Layout:{headerBg:"var(--bg-secondary)",bodyBg:"var(--bg-primary)",triggerBg:"var(--bg-tertiary)",colorText:"var(--text-primary)"},Collapse:{colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorBorder:"var(--border-primary)",colorBgContainer:"var(--bg-secondary)",headerBg:"var(--bg-tertiary)"},Carousel:{colorBgContainer:"var(--bg-secondary)",dotActiveWidth:24},Anchor:{colorPrimary:"var(--link)",colorText:"var(--text-secondary)",linkPaddingBlock:4},Timeline:{colorText:"var(--text-primary)",colorTextDescription:"var(--text-secondary)",tailColor:"var(--border-primary)",dotBg:"var(--bg-secondary)"},Transfer:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",controlItemBgActive:"var(--bg-hover)"},Tree:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorPrimary:"var(--link)",nodeHoverBg:"var(--bg-hover)",nodeSelectedBg:"var(--accent-subtle)"},TreeSelect:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorBgElevated:"var(--bg-secondary)",nodeHoverBg:"var(--bg-hover)",nodeSelectedBg:"var(--accent-subtle)"},Cascader:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorBgElevated:"var(--bg-secondary)",optionSelectedBg:"var(--bg-hover)"},Segmented:{colorText:"var(--text-primary)",colorTextLabel:"var(--text-secondary)",colorBgLayout:"var(--bg-tertiary)",itemSelectedBg:"var(--bg-secondary)",itemSelectedColor:"var(--link)",itemHoverBg:"var(--bg-hover)"},Rate:{colorText:"var(--warning)"},Slider:{colorPrimary:"var(--link)",colorPrimaryBorder:"var(--link)",trackBg:"var(--bg-tertiary)",trackHoverBg:"var(--bg-hover)"},Upload:{colorText:"var(--text-primary)",colorTextDescription:"var(--text-secondary)",colorBorder:"var(--border-primary)",colorFillAlter:"var(--bg-tertiary)",colorPrimary:"var(--link)"},Calendar:{colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",itemActiveBg:"var(--accent-subtle)"},Image:{colorTextLightSolid:"var(--text-primary)",colorBgMask:"rgba(0, 0, 0, 0.45)"},Statistic:{colorText:"var(--text-primary)",colorTextDescription:"var(--text-secondary)"},Result:{colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorTextDescription:"var(--text-secondary)"},Empty:{colorText:"var(--text-secondary)",colorTextDescription:"var(--text-tertiary)"},Message:{colorText:"var(--text-primary)",colorBgElevated:"var(--bg-secondary)",contentBg:"var(--bg-secondary)",contentPadding:"10px 16px",colorSuccess:"var(--success)",colorError:"var(--error)",colorWarning:"var(--warning)",colorInfo:"var(--info)"},Notification:{colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorBgElevated:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)",colorSuccess:"var(--success)",colorError:"var(--error)",colorWarning:"var(--warning)",colorInfo:"var(--info)"}}}v.darkSemanticColors["bg-primary"],v.darkSemanticColors["bg-secondary"],v.darkSemanticColors["bg-tertiary"],v.darkSemanticColors["text-primary"],v.darkSemanticColors["text-secondary"],v.darkSemanticColors["text-tertiary"],v.darkSemanticColors["text-inverse"],v.darkSemanticColors["border-primary"],v.darkSemanticColors["border-secondary"],v.darkSemanticColors.link,v.darkSemanticColors["link-hover"],v.darkSemanticColors["accent-subtle"],v.darkSemanticColors.success,v.darkSemanticColors.warning,v.darkSemanticColors.error,v.darkSemanticColors.info,v.darkSemanticColors.disabled,v.darkSemanticColors.shadow}}]);
|
|
2
2
|
//# sourceMappingURL=370.js.map
|