@kb-labs/qa-contracts 2.107.0 → 2.110.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.d.ts +122 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/package.json +16 -16
package/dist/index.d.ts
CHANGED
|
@@ -130,6 +130,13 @@ interface E2eCaseAttempt {
|
|
|
130
130
|
errorCategory?: E2eErrorCategory;
|
|
131
131
|
errorMessage?: string;
|
|
132
132
|
}
|
|
133
|
+
/** A pointer to the per-run CI dossier; raw evidence stays in CI artifacts. */
|
|
134
|
+
interface E2eEvidenceRef {
|
|
135
|
+
runId: string;
|
|
136
|
+
path: string;
|
|
137
|
+
summaryPath?: string;
|
|
138
|
+
manifestPath?: string;
|
|
139
|
+
}
|
|
133
140
|
interface E2eCaseResult {
|
|
134
141
|
suite: string;
|
|
135
142
|
spec: string;
|
|
@@ -137,6 +144,7 @@ interface E2eCaseResult {
|
|
|
137
144
|
title: string;
|
|
138
145
|
outcome: 'passed' | 'flaky' | 'failed' | 'skipped';
|
|
139
146
|
attempts: E2eCaseAttempt[];
|
|
147
|
+
evidence?: E2eEvidenceRef;
|
|
140
148
|
}
|
|
141
149
|
interface E2eFlakySnapshot extends SnapshotMeta {
|
|
142
150
|
kind: 'e2e-flaky';
|
|
@@ -279,6 +287,118 @@ interface QAPluginConfig {
|
|
|
279
287
|
historyMaxEntries?: number;
|
|
280
288
|
/** Default task list for `kb qa run`. Default: ["build", "lint", "type-check", "test"]. */
|
|
281
289
|
defaultTasks?: string[];
|
|
290
|
+
/** CI evidence collection and analysis settings. */
|
|
291
|
+
ci?: QACiConfig;
|
|
292
|
+
}
|
|
293
|
+
interface QACiConfig {
|
|
294
|
+
/** CI provider used when a command does not supply one. */
|
|
295
|
+
provider?: 'github-actions';
|
|
296
|
+
/** GitHub repository in owner/name form. Defaults to GITHUB_REPOSITORY. */
|
|
297
|
+
repository?: string;
|
|
298
|
+
/** Branch that contains durable QA snapshots. Default: ci-data. */
|
|
299
|
+
dataBranch?: string;
|
|
300
|
+
/** Retention used by the producer when publishing GitHub artifacts. Default: 90. */
|
|
301
|
+
artifactRetentionDays?: number;
|
|
302
|
+
/** Workflow names included in reliability analysis. */
|
|
303
|
+
workflows?: string[];
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
/** Provider-neutral evidence produced for one CI workflow run. */
|
|
307
|
+
interface CiRunDossier {
|
|
308
|
+
schemaVersion: 1;
|
|
309
|
+
provider: 'github-actions';
|
|
310
|
+
collectedAt: string;
|
|
311
|
+
collectionStatus: 'complete' | 'partial';
|
|
312
|
+
run: CiRunRef;
|
|
313
|
+
workflow: CiWorkflowRef;
|
|
314
|
+
jobs: CiJobEvidence[];
|
|
315
|
+
sourceRefs: CiSourceRef[];
|
|
316
|
+
}
|
|
317
|
+
interface CiRunRef {
|
|
318
|
+
id: string;
|
|
319
|
+
attempt: number;
|
|
320
|
+
event: string;
|
|
321
|
+
status: string;
|
|
322
|
+
conclusion: string | null;
|
|
323
|
+
startedAt: string | null;
|
|
324
|
+
completedAt: string | null;
|
|
325
|
+
headSha: string;
|
|
326
|
+
headBranch: string | null;
|
|
327
|
+
htmlUrl: string;
|
|
328
|
+
}
|
|
329
|
+
interface CiWorkflowRef {
|
|
330
|
+
name: string;
|
|
331
|
+
path?: string;
|
|
332
|
+
sha?: string;
|
|
333
|
+
}
|
|
334
|
+
interface CiJobEvidence {
|
|
335
|
+
id: string;
|
|
336
|
+
name: string;
|
|
337
|
+
conclusion: string | null;
|
|
338
|
+
startedAt: string | null;
|
|
339
|
+
completedAt: string | null;
|
|
340
|
+
durationMs: number | null;
|
|
341
|
+
runner?: {
|
|
342
|
+
name?: string;
|
|
343
|
+
group?: string;
|
|
344
|
+
os?: string;
|
|
345
|
+
};
|
|
346
|
+
steps: CiStepEvidence[];
|
|
347
|
+
failure?: CiFailureEvidence;
|
|
348
|
+
htmlUrl: string;
|
|
349
|
+
}
|
|
350
|
+
interface CiStepEvidence {
|
|
351
|
+
number: number;
|
|
352
|
+
name: string;
|
|
353
|
+
conclusion: string | null;
|
|
354
|
+
startedAt: string | null;
|
|
355
|
+
completedAt: string | null;
|
|
356
|
+
durationMs: number | null;
|
|
357
|
+
}
|
|
358
|
+
interface CiFailureEvidence {
|
|
359
|
+
phase: 'setup' | 'build' | 'test' | 'publish' | 'unknown';
|
|
360
|
+
fingerprint: string;
|
|
361
|
+
summary: string;
|
|
362
|
+
excerpt?: string;
|
|
363
|
+
confidence: number;
|
|
364
|
+
}
|
|
365
|
+
interface CiSourceRef {
|
|
366
|
+
kind: 'run' | 'job-log' | 'artifact';
|
|
367
|
+
url: string;
|
|
368
|
+
label: string;
|
|
369
|
+
}
|
|
370
|
+
interface CiReliabilityFinding {
|
|
371
|
+
fingerprint: string;
|
|
372
|
+
phase: CiFailureEvidence['phase'];
|
|
373
|
+
summary: string;
|
|
374
|
+
confidence: number;
|
|
375
|
+
occurrences: number;
|
|
376
|
+
affectedJobs: string[];
|
|
377
|
+
sampleRunIds: string[];
|
|
378
|
+
firstSeenAt: string;
|
|
379
|
+
lastSeenAt: string;
|
|
380
|
+
}
|
|
381
|
+
/** Compact, agent-ready result. It deliberately links to evidence instead of embedding logs. */
|
|
382
|
+
interface CiReliabilityOverview {
|
|
383
|
+
schemaVersion: 1;
|
|
384
|
+
generatedAt: string;
|
|
385
|
+
runsAnalyzed: number;
|
|
386
|
+
failedRuns: number;
|
|
387
|
+
failedBeforeTests: number;
|
|
388
|
+
collection: {
|
|
389
|
+
complete: number;
|
|
390
|
+
partial: number;
|
|
391
|
+
};
|
|
392
|
+
findings: CiReliabilityFinding[];
|
|
393
|
+
drillDown: {
|
|
394
|
+
runIds: string[];
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
interface CiEvidenceSyncResult {
|
|
398
|
+
requestedRuns: number;
|
|
399
|
+
downloadedRunIds: string[];
|
|
400
|
+
cachedRunIds: string[];
|
|
401
|
+
unavailableRunIds: string[];
|
|
282
402
|
}
|
|
283
403
|
|
|
284
404
|
declare const SnapshotGitSchema: z.ZodObject<{
|
|
@@ -3683,7 +3803,8 @@ declare const QA_ROUTES: {
|
|
|
3683
3803
|
readonly BASELINE_DIFF: "/baseline/diff";
|
|
3684
3804
|
readonly PACKAGE_TIMELINE: "/packages/:name/timeline";
|
|
3685
3805
|
readonly TASKS: "/tasks";
|
|
3806
|
+
readonly CI_OVERVIEW: "/ci/overview";
|
|
3686
3807
|
};
|
|
3687
3808
|
type QARoute = typeof QA_ROUTES[keyof typeof QA_ROUTES];
|
|
3688
3809
|
|
|
3689
|
-
export { type AnySnapshot, type BaselineCheckDiff, BaselineCheckDiffSchema, type BaselineData, BaselineDataSchema, type CaseHistoryEntry, type CaseTimeline, type CheckIssueDiff, type CheckSnapshot, CheckSnapshotSchema, DEFAULT_TASKS, type DevkitCheckIssue, DevkitCheckIssueSchema, type DevkitCheckOutput, DevkitCheckOutputSchema, type DevkitCheckPackage, type DevkitGateOutput, DevkitGateOutputSchema, type DevkitGateViolation, type DevkitRunOutput, DevkitRunOutputSchema, type DevkitRunResult, DevkitRunResultSchema, type DevkitRunSummary, type DevkitStatsCategoryBreakdown, type DevkitStatsCoverage, type DevkitStatsIssueType, type DevkitStatsOutput, DevkitStatsOutputSchema, type DevkitStatsSummary, type DevkitStatusOutput, type DevkitStatusPackage, type E2eCaseAttempt, type E2eCaseResult, type E2eErrorCategory, type E2eFlakySnapshot, type FlakyOverview, type FlakyOverviewDelta, type FlakyOverviewEntry, type GateSnapshot, GateSnapshotSchema, HISTORY_MAX_ENTRIES, PATHS, type PackageTaskHistory, type PackageTimeline, type QABaselineDiffResponse, QABaselineDiffResponseSchema, type QABaselineResponse, QABaselineResponseSchema, type QACheckRequest, QACheckRequestSchema, type QACheckResponse, QACheckResponseSchema, type QAGateRequest, QAGateRequestSchema, type QAGateResponse, QAGateResponseSchema, type QAHistoryResponse, QAHistoryResponseSchema, type QAPluginConfig, type QARoute, type QARunRequest, QARunRequestSchema, type QARunResponse, QARunResponseSchema, type QAStatsResponse, QAStatsResponseSchema, type QASummaryResponse, QASummaryResponseSchema, QA_BASE_PATH, QA_DATA_DIR, QA_ROUTES, type RegressionDetection, type RunRegression, type RunSnapshot, RunSnapshotSchema, type SnapshotGit, SnapshotGitSchema, type SnapshotMeta, SnapshotMetaSchema, type StatsSnapshot, StatsSnapshotSchema, TRENDS_WINDOW, type TaskTrend, type TaskTrendChangelog, type TaskTrendPoint, type TrendAnalysis };
|
|
3810
|
+
export { type AnySnapshot, type BaselineCheckDiff, BaselineCheckDiffSchema, type BaselineData, BaselineDataSchema, type CaseHistoryEntry, type CaseTimeline, type CheckIssueDiff, type CheckSnapshot, CheckSnapshotSchema, type CiEvidenceSyncResult, type CiFailureEvidence, type CiJobEvidence, type CiReliabilityFinding, type CiReliabilityOverview, type CiRunDossier, type CiRunRef, type CiSourceRef, type CiStepEvidence, type CiWorkflowRef, DEFAULT_TASKS, type DevkitCheckIssue, DevkitCheckIssueSchema, type DevkitCheckOutput, DevkitCheckOutputSchema, type DevkitCheckPackage, type DevkitGateOutput, DevkitGateOutputSchema, type DevkitGateViolation, type DevkitRunOutput, DevkitRunOutputSchema, type DevkitRunResult, DevkitRunResultSchema, type DevkitRunSummary, type DevkitStatsCategoryBreakdown, type DevkitStatsCoverage, type DevkitStatsIssueType, type DevkitStatsOutput, DevkitStatsOutputSchema, type DevkitStatsSummary, type DevkitStatusOutput, type DevkitStatusPackage, type E2eCaseAttempt, type E2eCaseResult, type E2eErrorCategory, type E2eEvidenceRef, type E2eFlakySnapshot, type FlakyOverview, type FlakyOverviewDelta, type FlakyOverviewEntry, type GateSnapshot, GateSnapshotSchema, HISTORY_MAX_ENTRIES, PATHS, type PackageTaskHistory, type PackageTimeline, type QABaselineDiffResponse, QABaselineDiffResponseSchema, type QABaselineResponse, QABaselineResponseSchema, type QACheckRequest, QACheckRequestSchema, type QACheckResponse, QACheckResponseSchema, type QACiConfig, type QAGateRequest, QAGateRequestSchema, type QAGateResponse, QAGateResponseSchema, type QAHistoryResponse, QAHistoryResponseSchema, type QAPluginConfig, type QARoute, type QARunRequest, QARunRequestSchema, type QARunResponse, QARunResponseSchema, type QAStatsResponse, QAStatsResponseSchema, type QASummaryResponse, QASummaryResponseSchema, QA_BASE_PATH, QA_DATA_DIR, QA_ROUTES, type RegressionDetection, type RunRegression, type RunSnapshot, RunSnapshotSchema, type SnapshotGit, SnapshotGitSchema, type SnapshotMeta, SnapshotMetaSchema, type StatsSnapshot, StatsSnapshotSchema, TRENDS_WINDOW, type TaskTrend, type TaskTrendChangelog, type TaskTrendPoint, type TrendAnalysis };
|
package/dist/index.js
CHANGED
|
@@ -223,7 +223,8 @@ var QA_ROUTES = {
|
|
|
223
223
|
BASELINE_UPDATE: "/baseline/update",
|
|
224
224
|
BASELINE_DIFF: "/baseline/diff",
|
|
225
225
|
PACKAGE_TIMELINE: "/packages/:name/timeline",
|
|
226
|
-
TASKS: "/tasks"
|
|
226
|
+
TASKS: "/tasks",
|
|
227
|
+
CI_OVERVIEW: "/ci/overview"
|
|
227
228
|
};
|
|
228
229
|
|
|
229
230
|
export { BaselineCheckDiffSchema, BaselineDataSchema, CheckSnapshotSchema, DEFAULT_TASKS, DevkitCheckIssueSchema, DevkitCheckOutputSchema, DevkitGateOutputSchema, DevkitRunOutputSchema, DevkitRunResultSchema, DevkitStatsOutputSchema, GateSnapshotSchema, HISTORY_MAX_ENTRIES, PATHS, QABaselineDiffResponseSchema, QABaselineResponseSchema, QACheckRequestSchema, QACheckResponseSchema, QAGateRequestSchema, QAGateResponseSchema, QAHistoryResponseSchema, QARunRequestSchema, QARunResponseSchema, QAStatsResponseSchema, QASummaryResponseSchema, QA_BASE_PATH, QA_DATA_DIR, QA_ROUTES, RunSnapshotSchema, SnapshotGitSchema, SnapshotMetaSchema, StatsSnapshotSchema, TRENDS_WINDOW };
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/rest-api.ts","../src/constants.ts","../src/routes.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { z } from 'zod';\n\n// ── Shared schemas ────────────────────────────────────────────────────────────\n\nexport const SnapshotGitSchema = z.object({\n commit: z.string(),\n branch: z.string(),\n message: z.string(),\n});\n\nexport const SnapshotMetaSchema = z.object({\n id: z.string(),\n timestamp: z.string(),\n git: SnapshotGitSchema.optional(),\n durationMs: z.number(),\n runContext: z.record(z.unknown()).optional(),\n});\n\n// DevkitRunOutput\nexport const DevkitRunResultSchema = z.object({\n Package: z.string(),\n Task: z.string(),\n OK: z.boolean(),\n Cached: z.boolean(),\n Elapsed: z.number(),\n ExitCode: z.number(),\n Stdout: z.string(),\n Stderr: z.string(),\n Error: z.string(),\n});\n\nexport const DevkitRunOutputSchema = z.object({\n elapsed: z.string(),\n ok: z.boolean(),\n results: z.array(DevkitRunResultSchema),\n summary: z.object({\n total: z.number(),\n passed: z.number(),\n failed: z.number(),\n cached: z.number(),\n }),\n});\n\n// DevkitCheckOutput\nexport const DevkitCheckIssueSchema = z.object({\n check: z.string(),\n severity: z.enum(['error', 'warning', 'info']),\n message: z.string(),\n file: z.string().optional(),\n fix: z.string().optional(),\n capability: z.string().optional(),\n});\n\nexport const DevkitCheckOutputSchema = z.object({\n ok: z.boolean(),\n packages: z.record(z.object({\n ok: z.boolean(),\n issues: z.array(DevkitCheckIssueSchema).nullable(),\n })),\n});\n\n// DevkitStatsOutput\nexport const DevkitStatsOutputSchema = z.object({\n ok: z.boolean(),\n score: z.number(),\n grade: z.string(),\n summary: z.object({\n total: z.number(),\n healthy: z.number(),\n warning: z.number(),\n error: z.number(),\n total_errors: z.number(),\n total_warnings: z.number(),\n }),\n by_category: z.record(z.object({\n total: z.number(),\n healthy: z.number(),\n issues: z.number(),\n grade: z.string(),\n })),\n issues_by_type: z.record(z.object({\n check: z.string(),\n errors: z.number(),\n warnings: z.number(),\n packages: z.number(),\n })),\n coverage: z.record(z.object({\n pass: z.number(),\n total: z.number(),\n pct: z.number(),\n })),\n});\n\n// DevkitGateOutput\nexport const DevkitGateOutputSchema = z.object({\n ok: z.boolean(),\n staged_files: z.number(),\n violations: z.array(z.object({\n package: z.string(),\n check: z.string(),\n severity: z.string(),\n message: z.string(),\n })),\n});\n\n// ── Snapshot schemas ──────────────────────────────────────────────────────────\n\nexport const RunSnapshotSchema = SnapshotMetaSchema.extend({\n kind: z.literal('run'),\n tasks: z.array(z.string()),\n raw: DevkitRunOutputSchema,\n});\n\nexport const CheckSnapshotSchema = SnapshotMetaSchema.extend({\n kind: z.literal('check'),\n raw: DevkitCheckOutputSchema,\n});\n\nexport const StatsSnapshotSchema = SnapshotMetaSchema.extend({\n kind: z.literal('stats'),\n raw: DevkitStatsOutputSchema,\n});\n\nexport const GateSnapshotSchema = SnapshotMetaSchema.extend({\n kind: z.literal('gate'),\n raw: DevkitGateOutputSchema,\n});\n\nexport const BaselineDataSchema = z.object({\n timestamp: z.string(),\n git: SnapshotGitSchema.optional(),\n check: DevkitCheckOutputSchema,\n stats: DevkitStatsOutputSchema,\n});\n\n// ── Analysis schemas ──────────────────────────────────────────────────────────\n\nexport const BaselineCheckDiffSchema = z.object({\n newIssues: z.array(z.object({\n pkg: z.string(),\n check: z.string(),\n status: z.enum(['new', 'fixed', 'persisting']),\n severity: z.string(),\n message: z.string(),\n })),\n fixedIssues: z.array(z.object({\n pkg: z.string(),\n check: z.string(),\n status: z.enum(['new', 'fixed', 'persisting']),\n severity: z.string(),\n message: z.string(),\n })),\n persistingIssues: z.array(z.object({\n pkg: z.string(),\n check: z.string(),\n status: z.enum(['new', 'fixed', 'persisting']),\n severity: z.string(),\n message: z.string(),\n })),\n newIssueCount: z.number(),\n fixedIssueCount: z.number(),\n scoreDelta: z.number(),\n gradeDelta: z.string(),\n});\n\n// ── Request/Response schemas ──────────────────────────────────────────────────\n\n// GET /summary\nexport const QASummaryResponseSchema = z.object({\n score: z.number().nullable(),\n grade: z.string().nullable(),\n ok: z.boolean().nullable(),\n lastRunAt: z.string().nullable(),\n lastCheckAt: z.string().nullable(),\n lastStatsAt: z.string().nullable(),\n git: SnapshotGitSchema.nullable(),\n hasBaseline: z.boolean(),\n baselineTimestamp: z.string().nullable(),\n runHistoryCount: z.number(),\n});\nexport type QASummaryResponse = z.infer<typeof QASummaryResponseSchema>;\n\n// POST /run\nexport const QARunRequestSchema = z.object({\n tasks: z.array(z.string()).optional(),\n save: z.boolean().optional(),\n runContext: z.record(z.unknown()).optional(),\n});\nexport type QARunRequest = z.infer<typeof QARunRequestSchema>;\n\nexport const QARunResponseSchema = z.object({\n ok: z.boolean(),\n snapshot: RunSnapshotSchema,\n durationMs: z.number(),\n});\nexport type QARunResponse = z.infer<typeof QARunResponseSchema>;\n\n// POST /check\nexport const QACheckRequestSchema = z.object({\n save: z.boolean().optional(),\n runContext: z.record(z.unknown()).optional(),\n});\nexport type QACheckRequest = z.infer<typeof QACheckRequestSchema>;\n\nexport const QACheckResponseSchema = z.object({\n ok: z.boolean(),\n snapshot: CheckSnapshotSchema,\n durationMs: z.number(),\n});\nexport type QACheckResponse = z.infer<typeof QACheckResponseSchema>;\n\n// GET /stats\nexport const QAStatsResponseSchema = z.object({\n snapshot: StatsSnapshotSchema.nullable(),\n});\nexport type QAStatsResponse = z.infer<typeof QAStatsResponseSchema>;\n\n// POST /gate\nexport const QAGateRequestSchema = z.object({\n save: z.boolean().optional(),\n});\nexport type QAGateRequest = z.infer<typeof QAGateRequestSchema>;\n\nexport const QAGateResponseSchema = z.object({\n ok: z.boolean(),\n snapshot: GateSnapshotSchema,\n durationMs: z.number(),\n});\nexport type QAGateResponse = z.infer<typeof QAGateResponseSchema>;\n\n// GET /history\nexport const QAHistoryResponseSchema = z.object({\n snapshots: z.array(RunSnapshotSchema),\n total: z.number(),\n});\nexport type QAHistoryResponse = z.infer<typeof QAHistoryResponseSchema>;\n\n// GET /baseline\nexport const QABaselineResponseSchema = z.object({\n baseline: BaselineDataSchema.nullable(),\n});\nexport type QABaselineResponse = z.infer<typeof QABaselineResponseSchema>;\n\n// GET /baseline/diff\nexport const QABaselineDiffResponseSchema = z.union([\n BaselineCheckDiffSchema,\n z.object({ error: z.enum(['no-baseline', 'no-check', 'no-stats']) }),\n]);\nexport type QABaselineDiffResponse = z.infer<typeof QABaselineDiffResponseSchema>;\n","export const QA_DATA_DIR = '.kb/qa';\n\nexport const PATHS = {\n SNAPSHOTS_RUN: '.kb/qa/snapshots/run.json',\n SNAPSHOTS_CHECK: '.kb/qa/snapshots/check.json',\n SNAPSHOTS_STATS: '.kb/qa/snapshots/stats.json',\n SNAPSHOTS_GATE: '.kb/qa/snapshots/gate.json',\n SNAPSHOTS_E2E_FLAKY: '.kb/qa/snapshots/e2e-flaky.json',\n BASELINE: '.kb/qa/baseline.json',\n} as const;\n\nexport const HISTORY_MAX_ENTRIES = 50;\nexport const TRENDS_WINDOW = 10;\nexport const DEFAULT_TASKS = ['build', 'lint', 'type-check', 'test'] as const;\n","export const QA_BASE_PATH = '/v1/plugins/qa' as const;\n\nexport const QA_ROUTES = {\n SUMMARY: '/summary',\n RUN: '/run',\n CHECK: '/check',\n STATS: '/stats',\n GATE: '/gate',\n HISTORY: '/history',\n TRENDS: '/trends',\n REGRESSIONS: '/regressions',\n BASELINE: '/baseline',\n BASELINE_UPDATE: '/baseline/update',\n BASELINE_DIFF: '/baseline/diff',\n PACKAGE_TIMELINE: '/packages/:name/timeline',\n TASKS: '/tasks',\n} as const;\n\nexport type QARoute = typeof QA_ROUTES[keyof typeof QA_ROUTES];\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/types/rest-api.ts","../src/constants.ts","../src/routes.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { z } from 'zod';\n\n// ── Shared schemas ────────────────────────────────────────────────────────────\n\nexport const SnapshotGitSchema = z.object({\n commit: z.string(),\n branch: z.string(),\n message: z.string(),\n});\n\nexport const SnapshotMetaSchema = z.object({\n id: z.string(),\n timestamp: z.string(),\n git: SnapshotGitSchema.optional(),\n durationMs: z.number(),\n runContext: z.record(z.unknown()).optional(),\n});\n\n// DevkitRunOutput\nexport const DevkitRunResultSchema = z.object({\n Package: z.string(),\n Task: z.string(),\n OK: z.boolean(),\n Cached: z.boolean(),\n Elapsed: z.number(),\n ExitCode: z.number(),\n Stdout: z.string(),\n Stderr: z.string(),\n Error: z.string(),\n});\n\nexport const DevkitRunOutputSchema = z.object({\n elapsed: z.string(),\n ok: z.boolean(),\n results: z.array(DevkitRunResultSchema),\n summary: z.object({\n total: z.number(),\n passed: z.number(),\n failed: z.number(),\n cached: z.number(),\n }),\n});\n\n// DevkitCheckOutput\nexport const DevkitCheckIssueSchema = z.object({\n check: z.string(),\n severity: z.enum(['error', 'warning', 'info']),\n message: z.string(),\n file: z.string().optional(),\n fix: z.string().optional(),\n capability: z.string().optional(),\n});\n\nexport const DevkitCheckOutputSchema = z.object({\n ok: z.boolean(),\n packages: z.record(z.object({\n ok: z.boolean(),\n issues: z.array(DevkitCheckIssueSchema).nullable(),\n })),\n});\n\n// DevkitStatsOutput\nexport const DevkitStatsOutputSchema = z.object({\n ok: z.boolean(),\n score: z.number(),\n grade: z.string(),\n summary: z.object({\n total: z.number(),\n healthy: z.number(),\n warning: z.number(),\n error: z.number(),\n total_errors: z.number(),\n total_warnings: z.number(),\n }),\n by_category: z.record(z.object({\n total: z.number(),\n healthy: z.number(),\n issues: z.number(),\n grade: z.string(),\n })),\n issues_by_type: z.record(z.object({\n check: z.string(),\n errors: z.number(),\n warnings: z.number(),\n packages: z.number(),\n })),\n coverage: z.record(z.object({\n pass: z.number(),\n total: z.number(),\n pct: z.number(),\n })),\n});\n\n// DevkitGateOutput\nexport const DevkitGateOutputSchema = z.object({\n ok: z.boolean(),\n staged_files: z.number(),\n violations: z.array(z.object({\n package: z.string(),\n check: z.string(),\n severity: z.string(),\n message: z.string(),\n })),\n});\n\n// ── Snapshot schemas ──────────────────────────────────────────────────────────\n\nexport const RunSnapshotSchema = SnapshotMetaSchema.extend({\n kind: z.literal('run'),\n tasks: z.array(z.string()),\n raw: DevkitRunOutputSchema,\n});\n\nexport const CheckSnapshotSchema = SnapshotMetaSchema.extend({\n kind: z.literal('check'),\n raw: DevkitCheckOutputSchema,\n});\n\nexport const StatsSnapshotSchema = SnapshotMetaSchema.extend({\n kind: z.literal('stats'),\n raw: DevkitStatsOutputSchema,\n});\n\nexport const GateSnapshotSchema = SnapshotMetaSchema.extend({\n kind: z.literal('gate'),\n raw: DevkitGateOutputSchema,\n});\n\nexport const BaselineDataSchema = z.object({\n timestamp: z.string(),\n git: SnapshotGitSchema.optional(),\n check: DevkitCheckOutputSchema,\n stats: DevkitStatsOutputSchema,\n});\n\n// ── Analysis schemas ──────────────────────────────────────────────────────────\n\nexport const BaselineCheckDiffSchema = z.object({\n newIssues: z.array(z.object({\n pkg: z.string(),\n check: z.string(),\n status: z.enum(['new', 'fixed', 'persisting']),\n severity: z.string(),\n message: z.string(),\n })),\n fixedIssues: z.array(z.object({\n pkg: z.string(),\n check: z.string(),\n status: z.enum(['new', 'fixed', 'persisting']),\n severity: z.string(),\n message: z.string(),\n })),\n persistingIssues: z.array(z.object({\n pkg: z.string(),\n check: z.string(),\n status: z.enum(['new', 'fixed', 'persisting']),\n severity: z.string(),\n message: z.string(),\n })),\n newIssueCount: z.number(),\n fixedIssueCount: z.number(),\n scoreDelta: z.number(),\n gradeDelta: z.string(),\n});\n\n// ── Request/Response schemas ──────────────────────────────────────────────────\n\n// GET /summary\nexport const QASummaryResponseSchema = z.object({\n score: z.number().nullable(),\n grade: z.string().nullable(),\n ok: z.boolean().nullable(),\n lastRunAt: z.string().nullable(),\n lastCheckAt: z.string().nullable(),\n lastStatsAt: z.string().nullable(),\n git: SnapshotGitSchema.nullable(),\n hasBaseline: z.boolean(),\n baselineTimestamp: z.string().nullable(),\n runHistoryCount: z.number(),\n});\nexport type QASummaryResponse = z.infer<typeof QASummaryResponseSchema>;\n\n// POST /run\nexport const QARunRequestSchema = z.object({\n tasks: z.array(z.string()).optional(),\n save: z.boolean().optional(),\n runContext: z.record(z.unknown()).optional(),\n});\nexport type QARunRequest = z.infer<typeof QARunRequestSchema>;\n\nexport const QARunResponseSchema = z.object({\n ok: z.boolean(),\n snapshot: RunSnapshotSchema,\n durationMs: z.number(),\n});\nexport type QARunResponse = z.infer<typeof QARunResponseSchema>;\n\n// POST /check\nexport const QACheckRequestSchema = z.object({\n save: z.boolean().optional(),\n runContext: z.record(z.unknown()).optional(),\n});\nexport type QACheckRequest = z.infer<typeof QACheckRequestSchema>;\n\nexport const QACheckResponseSchema = z.object({\n ok: z.boolean(),\n snapshot: CheckSnapshotSchema,\n durationMs: z.number(),\n});\nexport type QACheckResponse = z.infer<typeof QACheckResponseSchema>;\n\n// GET /stats\nexport const QAStatsResponseSchema = z.object({\n snapshot: StatsSnapshotSchema.nullable(),\n});\nexport type QAStatsResponse = z.infer<typeof QAStatsResponseSchema>;\n\n// POST /gate\nexport const QAGateRequestSchema = z.object({\n save: z.boolean().optional(),\n});\nexport type QAGateRequest = z.infer<typeof QAGateRequestSchema>;\n\nexport const QAGateResponseSchema = z.object({\n ok: z.boolean(),\n snapshot: GateSnapshotSchema,\n durationMs: z.number(),\n});\nexport type QAGateResponse = z.infer<typeof QAGateResponseSchema>;\n\n// GET /history\nexport const QAHistoryResponseSchema = z.object({\n snapshots: z.array(RunSnapshotSchema),\n total: z.number(),\n});\nexport type QAHistoryResponse = z.infer<typeof QAHistoryResponseSchema>;\n\n// GET /baseline\nexport const QABaselineResponseSchema = z.object({\n baseline: BaselineDataSchema.nullable(),\n});\nexport type QABaselineResponse = z.infer<typeof QABaselineResponseSchema>;\n\n// GET /baseline/diff\nexport const QABaselineDiffResponseSchema = z.union([\n BaselineCheckDiffSchema,\n z.object({ error: z.enum(['no-baseline', 'no-check', 'no-stats']) }),\n]);\nexport type QABaselineDiffResponse = z.infer<typeof QABaselineDiffResponseSchema>;\n","export const QA_DATA_DIR = '.kb/qa';\n\nexport const PATHS = {\n SNAPSHOTS_RUN: '.kb/qa/snapshots/run.json',\n SNAPSHOTS_CHECK: '.kb/qa/snapshots/check.json',\n SNAPSHOTS_STATS: '.kb/qa/snapshots/stats.json',\n SNAPSHOTS_GATE: '.kb/qa/snapshots/gate.json',\n SNAPSHOTS_E2E_FLAKY: '.kb/qa/snapshots/e2e-flaky.json',\n BASELINE: '.kb/qa/baseline.json',\n} as const;\n\nexport const HISTORY_MAX_ENTRIES = 50;\nexport const TRENDS_WINDOW = 10;\nexport const DEFAULT_TASKS = ['build', 'lint', 'type-check', 'test'] as const;\n","export const QA_BASE_PATH = '/v1/plugins/qa' as const;\n\nexport const QA_ROUTES = {\n SUMMARY: '/summary',\n RUN: '/run',\n CHECK: '/check',\n STATS: '/stats',\n GATE: '/gate',\n HISTORY: '/history',\n TRENDS: '/trends',\n REGRESSIONS: '/regressions',\n BASELINE: '/baseline',\n BASELINE_UPDATE: '/baseline/update',\n BASELINE_DIFF: '/baseline/diff',\n PACKAGE_TIMELINE: '/packages/:name/timeline',\n TASKS: '/tasks',\n CI_OVERVIEW: '/ci/overview',\n} as const;\n\nexport type QARoute = typeof QA_ROUTES[keyof typeof QA_ROUTES];\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kb-labs/qa-contracts",
|
|
3
3
|
"description": "Contracts for KB Labs QA Plugin — types, interfaces, and constants for QA checks, baselines, and history tracking.",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.110.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
@@ -17,31 +17,31 @@
|
|
|
17
17
|
"README.md",
|
|
18
18
|
"LICENSE"
|
|
19
19
|
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "tsup --config tsup.config.ts",
|
|
22
|
+
"clean": "rimraf dist",
|
|
23
|
+
"dev": "tsup --config tsup.config.ts --watch",
|
|
24
|
+
"lint": "eslint src --ext .ts",
|
|
25
|
+
"lint:fix": "eslint . --fix",
|
|
26
|
+
"pretype-check": "pnpm --filter @kb-labs/qa-contracts build",
|
|
27
|
+
"test": "vitest run --passWithNoTests",
|
|
28
|
+
"test:watch": "vitest",
|
|
29
|
+
"type-check": "tsc --noEmit"
|
|
30
|
+
},
|
|
20
31
|
"dependencies": {
|
|
21
32
|
"zod": "^3.25.76"
|
|
22
33
|
},
|
|
23
34
|
"devDependencies": {
|
|
35
|
+
"@kb-labs/devkit": "workspace:*",
|
|
24
36
|
"@types/node": "^24.3.3",
|
|
25
37
|
"rimraf": "^6.0.1",
|
|
26
38
|
"tsup": "^8.5.0",
|
|
27
39
|
"typescript": "^5.6.3",
|
|
28
|
-
"vitest": "^3.2.6"
|
|
29
|
-
"@kb-labs/devkit": "2.107.0"
|
|
40
|
+
"vitest": "^3.2.6"
|
|
30
41
|
},
|
|
31
42
|
"engines": {
|
|
32
43
|
"node": ">=22.0.0",
|
|
33
44
|
"pnpm": ">=9.0.0"
|
|
34
45
|
},
|
|
35
|
-
"sideEffects": false
|
|
36
|
-
|
|
37
|
-
"build": "tsup --config tsup.config.ts",
|
|
38
|
-
"clean": "rimraf dist",
|
|
39
|
-
"dev": "tsup --config tsup.config.ts --watch",
|
|
40
|
-
"lint": "eslint src --ext .ts",
|
|
41
|
-
"lint:fix": "eslint . --fix",
|
|
42
|
-
"pretype-check": "pnpm --filter @kb-labs/qa-contracts build",
|
|
43
|
-
"test": "vitest run --passWithNoTests",
|
|
44
|
-
"test:watch": "vitest",
|
|
45
|
-
"type-check": "tsc --noEmit"
|
|
46
|
-
}
|
|
47
|
-
}
|
|
46
|
+
"sideEffects": false
|
|
47
|
+
}
|