executable-stories-formatters 0.12.0 → 0.13.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.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { C as CIInfo, T as TestRunResult, a as TestCaseResult, S as StoryStep, D as DocEntry, b as TestStatus$1, N as NormalizedTicket, A as Attachment, c as DocPhase, O as OtelSpan, d as StepResult, e as CIProvider, R as RawStatus, f as RawAttachment, g as RawRun, h as RawCIInfo, i as adaptJestRun, j as adaptPlaywrightRun, k as adaptVitestRun } from './index-mrT6-JSt.cjs';
2
- export { l as CIInfo, m as CoverageSummary, J as JestAdapterOptions, n as JestAggregatedResult, o as JestFileResult, p as JestTestResult, q as OtelAttributeValue, P as PlaywrightAdapterOptions, r as PlaywrightAnnotation, s as PlaywrightAttachment, t as PlaywrightError, u as PlaywrightLocation, v as PlaywrightStatus, w as PlaywrightTestCase, x as PlaywrightTestResult, y as RawStepEvent, z as RawTestCase, B as STORY_META_KEY, E as StepKeyword, F as StepMode, G as StoryFileReport, H as StoryMeta, I as TestCaseAttempt, K as TestCaseEvidence, V as VitestAdapterOptions, L as VitestSerializedError, M as VitestState, Q as VitestTestCase, U as VitestTestModule, W as VitestTestResult, X as toCIInfo, Y as toRawCIInfo } from './index-mrT6-JSt.cjs';
1
+ import { C as CIInfo, T as TestRunResult, a as TestCaseResult, S as StoryStep, D as DocEntry, b as TestStatus$1, N as NormalizedTicket, A as Attachment, c as DocPhase, O as OtelSpan, d as StepResult, e as CIProvider, R as RawStatus, f as RawAttachment, g as RawRun, h as RawCIInfo, i as StepKeyword$1, j as adaptJestRun, k as adaptPlaywrightRun, l as adaptVitestRun } from './index-CXrzCk9p.cjs';
2
+ export { m as CIInfo, n as CoverageSummary, J as JestAdapterOptions, o as JestAggregatedResult, p as JestFileResult, q as JestTestResult, r as OtelAttributeValue, P as PlaywrightAdapterOptions, s as PlaywrightAnnotation, t as PlaywrightAttachment, u as PlaywrightError, v as PlaywrightLocation, w as PlaywrightStatus, x as PlaywrightTestCase, y as PlaywrightTestResult, z as RawStepEvent, B as RawTestCase, E as STORY_META_KEY, F as StepMode, G as StoryFileReport, H as StoryMeta, I as TestCaseAttempt, K as TestCaseEvidence, V as VitestAdapterOptions, L as VitestSerializedError, M as VitestState, Q as VitestTestCase, U as VitestTestModule, W as VitestTestResult, X as toCIInfo, Y as toRawCIInfo } from './index-CXrzCk9p.cjs';
3
3
 
4
4
  /**
5
5
  * Notification types for webhook integrations (Slack, Teams).
@@ -150,7 +150,7 @@ interface CanonicalizeOptions {
150
150
  };
151
151
  }
152
152
  /** Output format for report generation */
153
- type OutputFormat = "astro" | "behavior-manifest-json" | "confluence" | "cucumber-json" | "cucumber-messages" | "cucumber-html" | "html" | "junit" | "markdown" | "release-manifest" | "scenario-index-json" | "story-report-json";
153
+ type OutputFormat = "astro" | "behavior-manifest-json" | "confluence" | "cucumber-json" | "cucumber-messages" | "cucumber-html" | "html" | "junit" | "markdown" | "release-manifest" | "scenario-index-json" | "story-report-json" | "traceability-matrix";
154
154
  /** Sort order for test cases in reports (deterministic for diff-friendly output) */
155
155
  type SortTestCasesMode = "id" | "source" | "none";
156
156
  /** Output mode for report routing */
@@ -2959,6 +2959,176 @@ interface ListScenariosArgs {
2959
2959
  type ListScenariosDeps = Record<string, never>;
2960
2960
  declare function listScenarios(args: ListScenariosArgs, _deps: ListScenariosDeps): string;
2961
2961
 
2962
+ /**
2963
+ * `check` — context-efficient backpressure for coding agents.
2964
+ *
2965
+ * The principle (from "Stop Babysitting Your Coding Agent. Give It Backpressure."):
2966
+ * compress success, expand failure. Passing scenarios collapse to a single count
2967
+ * line. Each failing scenario expands to its Given/When/Then narrative, the step
2968
+ * that broke, the error, and the product code it `covers` — so the agent gets an
2969
+ * actionable, intent-carrying signal instead of a wall of green.
2970
+ *
2971
+ * When a baseline run is supplied, the report also folds in what *regressed* and
2972
+ * what got *fixed* since the last run — the "retained" property of effective
2973
+ * feedback. Reuses the same status-transition vocabulary as {@link classifyStatusChange}.
2974
+ */
2975
+
2976
+ interface CheckArgs {
2977
+ testCases: TestCaseResult[];
2978
+ /** Baseline scenario statuses keyed by scenario id, for regressed/fixed deltas. */
2979
+ baseline?: Map<string, TestStatus$1>;
2980
+ format: "text" | "json";
2981
+ }
2982
+ type CheckDeps = Record<string, never>;
2983
+ /** A single rendered step inside a failing scenario. */
2984
+ interface CheckStep {
2985
+ keyword: StepKeyword$1;
2986
+ text: string;
2987
+ /** True when this step is the one that failed. */
2988
+ failed: boolean;
2989
+ }
2990
+ /** Expanded detail for one failing scenario — the actionable payload. */
2991
+ interface CheckFailure {
2992
+ id: string;
2993
+ scenario: string;
2994
+ /** `sourceFile:sourceLine` */
2995
+ location: string;
2996
+ steps: CheckStep[];
2997
+ /** Failing step's error if isolated, else the scenario-level error. */
2998
+ errorMessage?: string;
2999
+ /** Product-code paths/globs this scenario exercises (what to fix). */
3000
+ covers: string[];
3001
+ tickets: string[];
3002
+ /** True when this scenario was passing in the baseline run. */
3003
+ regressed: boolean;
3004
+ }
3005
+ interface CheckReport {
3006
+ summary: {
3007
+ total: number;
3008
+ passed: number;
3009
+ failed: number;
3010
+ skipped: number;
3011
+ pending: number;
3012
+ };
3013
+ failures: CheckFailure[];
3014
+ /** Count of scenarios that went passed → failed vs. the baseline. */
3015
+ regressed: number;
3016
+ /** Count of scenarios that went failed → passed vs. the baseline. */
3017
+ fixed: number;
3018
+ /** Whether a baseline was supplied (so callers know if deltas are meaningful). */
3019
+ comparedToBaseline: boolean;
3020
+ }
3021
+ /**
3022
+ * Build a structured check report from canonical test cases.
3023
+ * Pure: no IO. Callers render it as text or JSON and decide the exit code.
3024
+ */
3025
+ declare function buildCheck(args: CheckArgs, _deps?: CheckDeps): CheckReport;
3026
+ /**
3027
+ * Render the check report. Text is the default agent/human surface
3028
+ * (compressed success, expanded failure); JSON is the machine contract.
3029
+ */
3030
+ declare function renderCheck(report: CheckReport, format: "text" | "json"): string;
3031
+
3032
+ /**
3033
+ * `goal` — a behavioral definition-of-done for autonomous agent loops.
3034
+ *
3035
+ * A `/goal`-style loop keeps working until a verifiable condition holds. This
3036
+ * expresses that condition in behavior, not "tests green and lint clean": the
3037
+ * required scenarios pass, nothing regressed, and nobody weakened a scenario to
3038
+ * fake done (the ratchet). It returns a clear met / not-met verdict and what is
3039
+ * left, so the loop and the human reading after it can both trust "done".
3040
+ */
3041
+
3042
+ /** Result of one required selector (a tag, ticket, or scenario that must pass). */
3043
+ interface GoalRequirementResult {
3044
+ /** Human-readable selector, e.g. "tag:US-101", "ticket:CART-9", "all scenarios". */
3045
+ selector: string;
3046
+ matched: number;
3047
+ passed: number;
3048
+ /** Titles of matched scenarios that did not pass. */
3049
+ failing: string[];
3050
+ /** matched > 0 and every matched scenario passed. */
3051
+ met: boolean;
3052
+ }
3053
+ /** A scenario that was removed or weakened versus the baseline (anti-fake-done). */
3054
+ interface RatchetViolation {
3055
+ id: string;
3056
+ title: string;
3057
+ kind: "removed" | "disabled" | "weakened";
3058
+ detail: string;
3059
+ }
3060
+ interface GoalReport {
3061
+ /** True only when every requirement is met and no enforced guard fired. */
3062
+ met: boolean;
3063
+ requirements: GoalRequirementResult[];
3064
+ /** Scenarios that went passed -> failed versus baseline (when --no-regressions). */
3065
+ regressions: Array<{
3066
+ id: string;
3067
+ title: string;
3068
+ }>;
3069
+ regressionsEnforced: boolean;
3070
+ ratchet: {
3071
+ enforced: boolean;
3072
+ violations: RatchetViolation[];
3073
+ };
3074
+ }
3075
+ interface GoalArgs {
3076
+ run: TestRunResult;
3077
+ baseline?: TestRunResult;
3078
+ requireTags: string[];
3079
+ requireTickets: string[];
3080
+ requireScenarios: string[];
3081
+ enforceNoRegressions: boolean;
3082
+ enforceRatchet: boolean;
3083
+ format: "text" | "json";
3084
+ }
3085
+ type GoalDeps = Record<string, never>;
3086
+ declare function buildGoal(args: GoalArgs, _deps?: GoalDeps): GoalReport;
3087
+ declare function renderGoal(report: GoalReport, format: "text" | "json"): string;
3088
+
3089
+ /**
3090
+ * `triage` — the discovery-phase worklist for an agent loop.
3091
+ *
3092
+ * The automation that runs on a schedule needs a ranked queue of what to work
3093
+ * on, not a full report. This emits failing scenarios, regressions first, each
3094
+ * carrying the product code it `covers` (where to send the fixer), the error,
3095
+ * and its tickets. Failures with no `covers` are flagged: the loop can't route
3096
+ * them to code, so a human or a covers annotation is needed first.
3097
+ */
3098
+
3099
+ interface TriageItem {
3100
+ rank: number;
3101
+ id: string;
3102
+ scenario: string;
3103
+ status: TestStatus$1;
3104
+ /** `sourceFile:sourceLine` */
3105
+ location: string;
3106
+ /** Product-code paths to fix. Empty when the scenario declared no `covers`. */
3107
+ covers: string[];
3108
+ tickets: string[];
3109
+ errorMessage?: string;
3110
+ /** Passed in the baseline, failing now. Ranked first. */
3111
+ regressed: boolean;
3112
+ reason: "regression" | "failing";
3113
+ }
3114
+ interface TriageReport {
3115
+ total: number;
3116
+ failing: number;
3117
+ regressions: number;
3118
+ /** Failing scenarios with no `covers` — the loop can't route them to code. */
3119
+ needsCovers: number;
3120
+ items: TriageItem[];
3121
+ }
3122
+ interface TriageArgs {
3123
+ testCases: TestCaseResult[];
3124
+ /** Baseline statuses by scenario id, to flag regressions and rank them first. */
3125
+ baseline?: Map<string, TestStatus$1>;
3126
+ format: "text" | "json";
3127
+ }
3128
+ type TriageDeps = Record<string, never>;
3129
+ declare function buildTriage(args: TriageArgs, _deps?: TriageDeps): TriageReport;
3130
+ declare function renderTriage(report: TriageReport, format: "text" | "json"): string;
3131
+
2962
3132
  declare function createPrCommentSummary(diff: RunDiffResult, maxScenarios?: number): string;
2963
3133
 
2964
3134
  declare function diffRuns(baseline: TestRunResult, current: TestRunResult): RunDiffResult;
@@ -3165,6 +3335,65 @@ declare class ReleaseManifestFormatter {
3165
3335
  }
3166
3336
  declare function toReleaseManifest(run: TestRunResult): ReleaseManifest;
3167
3337
 
3338
+ /**
3339
+ * Requirement-first view of a run. Groups scenarios under the ticket/user-story
3340
+ * they verify, rolls up the code each requirement covers and whether it passed,
3341
+ * and surfaces two gaps a scenario-keyed index hides: requirements with a failing
3342
+ * scenario, and scenarios linked to no requirement at all (untraced behavior).
3343
+ *
3344
+ * The set of requirements is derived from the tickets found on scenarios — the
3345
+ * tests are the source of truth, so a requirement only appears once a scenario
3346
+ * claims it.
3347
+ */
3348
+ interface TraceabilityRequirement {
3349
+ /** Ticket / user-story id (e.g. "US-101", "JIRA-42"). */
3350
+ ticket: string;
3351
+ /** Direct URL when a scenario supplied one. */
3352
+ url?: string;
3353
+ /** "verified" = every scenario passed; "failing" = at least one failed; "incomplete" = only skipped/pending. */
3354
+ status: "verified" | "failing" | "incomplete";
3355
+ scenarios: Array<{
3356
+ id: string;
3357
+ title: string;
3358
+ status: TestStatus$1;
3359
+ sourceFile: string;
3360
+ sourceLine: number;
3361
+ covers: string[];
3362
+ }>;
3363
+ /** Union of every covered path across this requirement's scenarios. */
3364
+ covers: string[];
3365
+ }
3366
+ interface TraceabilityMatrix {
3367
+ schemaVersion: "1.0";
3368
+ generatedAt: string;
3369
+ run: {
3370
+ startedAt: string;
3371
+ finishedAt: string;
3372
+ gitSha?: string;
3373
+ branch?: string;
3374
+ };
3375
+ summary: {
3376
+ requirements: number;
3377
+ requirementsVerified: number;
3378
+ requirementsFailing: number;
3379
+ scenarios: number;
3380
+ untracedScenarios: number;
3381
+ };
3382
+ requirements: TraceabilityRequirement[];
3383
+ /** Scenarios with no ticket — behavior verified but not linked to a requirement. */
3384
+ untraced: Array<{
3385
+ id: string;
3386
+ title: string;
3387
+ status: TestStatus$1;
3388
+ sourceFile: string;
3389
+ sourceLine: number;
3390
+ }>;
3391
+ }
3392
+ declare class TraceabilityMatrixFormatter {
3393
+ format(run: TestRunResult): string;
3394
+ }
3395
+ declare function toTraceabilityMatrix(run: TestRunResult): TraceabilityMatrix;
3396
+
3168
3397
  /**
3169
3398
  * @executable-stories/formatters
3170
3399
  *
@@ -3274,4 +3503,4 @@ declare function normalizeVitestResults(testModules: Parameters<typeof adaptVite
3274
3503
  */
3275
3504
  declare function normalizePlaywrightResults(testResults: Parameters<typeof adaptPlaywrightRun>[0], adapterOptions?: Parameters<typeof adaptPlaywrightRun>[1], canonicalizeOptions?: CanonicalizeOptions): TestRunResult;
3276
3505
 
3277
- export { type AstroAssetResult, AstroFormatter, type AstroFormatterOptions as AstroFormatterOpts, Attachment, type BehaviorDebuggerIssue, type BehaviorDiff, type BehaviorDiffEntry, type BehaviorManifest, BehaviorManifestJsonFormatter, type BehaviorManifestJsonOptions, type BehaviorSourceFile, type BehaviorTag, type BundleOptions, type BundleResult, CIProvider, type CanonicalizeOptions, type ChangeType, type ChangedFile, type ChangedFileReview, type ColocatedStyle, type CompareFormat, type CompareFormatterOptions, type ConfluenceAuth, ConfluenceFormatter, type ConfluenceFormatterOptions as ConfluenceFormatterOpts, type CopyMarkdownAssetsOptions, CucumberHtmlFormatter, type CucumberHtmlOptions, CucumberJsonFormatter, type CucumberJsonOptions, CucumberMessagesFormatter, type CucumberMessagesOptions, type DeploymentEntry, type DeploymentLedger, type DeploymentStatus, DocEntry, DocPhase, ES_THEME_TOKENS_CSS, ES_THEME_TOKEN_VALUES, type EnvironmentDrift, type EvidenceStrength, type ExecutableStoriesConfig, type FetchFn, type FileChangeKind, type FlakinessLevel, type Formatter, type FormatterOptions, type GenerateArgs, type GenerateCompareResult, type GenerateDeps, type GenerateResult, type GenericWebhookNotifierOptions, type HistoryEntry, type HistoryStore, type HtmlDocOptions, HtmlFormatter, type HtmlOptions, type HtmlTheme, type HtmlThemeName, type IJsonDataTable, type IJsonDocString, type IJsonEmbedding, type IJsonFeature, type IJsonScenario, type IJsonStep, type IJsonStepArgument, type IJsonStepResult, type IJsonTableRow, type IJsonTag, JUnitFormatter, type JUnitOptions, type JiraAuth, type JiraPublishMode, type ListScenariosArgs, type ListScenariosDeps, type Logger, MIN_FLAKINESS_SAMPLES, MIN_METRIC_SAMPLES, MIN_PERF_SAMPLES, MarkdownFormatter, type MarkdownFormatterOptions, type MarkdownOptions, type MarkdownRenderers, NormalizedTicket, type NotificationSummary, type NotifyCondition, OtelSpan, type OtelTraceContext, type OutputConfig, type OutputFormat, type OutputMode, type OutputRule, type PerformanceTrend, type PublishConfluenceArgs, type PublishConfluenceDeps, type PublishConfluenceResult, type PublishJiraArgs, type PublishJiraDeps, type PublishJiraResult, RawAttachment, RawCIInfo, RawRun, RawStatus, type RecordDeploymentArgs, type RecordDeploymentResult, type ReleaseManifest, ReleaseManifestFormatter, type ReportAttachment, type ReportCIInfo, type ReportCoverageSummary, type ReportDocCode, type ReportDocCustom, type ReportDocEntry, type ReportDocKv, type ReportDocLink, type ReportDocMermaid, type ReportDocNote, type ReportDocScreenshot, type ReportDocSection, type ReportDocTable, type ReportDocTag, type ReportFeature, ReportGenerator, type ReportScenario, type ReportStep, type ReportSummary, type ReportTicket, type ResolvedFormatterOptions, type ReviewAudience, type ReviewBand, type ReviewClaim, type ReviewContext, ReviewHtmlFormatter, type ReviewHtmlOptions, ReviewMarkdownFormatter, type ReviewMarkdownOptions, type ReviewResult, type ReviewSummary, RunDiffHtmlFormatter, type RunDiffHtmlOptions, RunDiffMarkdownFormatter, type RunDiffMarkdownOptions, type RunDiffResult, type RunDiffSummary, STORY_REPORT_SCHEMA_MAJOR, STORY_REPORT_SCHEMA_VERSION, type ScenarioChangeFlags, type ScenarioChangeKind, type ScenarioDiff, type ScenarioIndex, type ScenarioIndexFilters, type ScenarioIndexItem, ScenarioIndexJsonFormatter, type ScenarioIndexJsonOptions, type ScenarioIndexStep, type ScenarioSnapshot, type SortTestCasesMode, type StabilityGrade, type StarlightBadge, StepResult, type StoryReport, StoryReportJsonFormatter, type StoryReportJsonOptions, type StoryReportSchemaVersion, StoryStep, TestCaseResult, type TestHistory, type TestMetrics, TestRunResult, TestStatus$1 as TestStatus, CIInfo as TypedCIInfo, type ValidationResult, type WatchDeps, type WatchHandle, type WatchOptions, type WebhookPayload, type WebhookSignerHmac, type WriteFile, adaptJestRun, adaptPlaywrightRun, adaptVitestRun, assertValidRun, buildHtmlDocEntry, buildReview, bundleAssets, calculateFlakiness, calculateStability, canonicalizeRun, classifyStatusChange, clearVersionCache, computeTestMetrics, copyMarkdownAssets, createPrCommentSummary, createReportGenerator, deriveAudience, deriveChangeType, deriveStepResults, detectCI, detectPerformanceTrend, diffRuns, diffStoryReports, findGitDir, formatDuration, generateRunComparison, generateRunId, generateTestCaseId, getAvailableThemes, getCssOnlyThemes, getDeploymentStatus, getEnvironmentDrift, gradeEvidence, hasSufficientHistory, isReviewableSource, isTestFile, joinNameAndExt, listScenarios, loadHistory, mergeStepResults, msToNanoseconds, nanosecondsToMs, normalizeJestResults, normalizePlaywrightResults, normalizeStatus, normalizeVitestResults, parseEnvelopes, parseNdjson, publishConfluencePage, publishJiraIssue, readBranchName, readGitSha, readPackageVersion, recordDeployment, regenerateArtifacts, resolveAttachment, resolveAttachments, resolveTheme, resolveTraceUrl, rewriteAssetPaths, saveHistory, scenariosCoveringPaths, sendNotifications, sendSlackNotification, sendTeamsNotification, sendWebhookNotification, signBody, slugify, startWatch, stripAnsi, toBehaviorManifest, toReleaseManifest, toScenarioIndex, toStoryReport, tryGetActiveOtelContext, updateHistory, validateCanonicalRun };
3506
+ export { type AstroAssetResult, AstroFormatter, type AstroFormatterOptions as AstroFormatterOpts, Attachment, type BehaviorDebuggerIssue, type BehaviorDiff, type BehaviorDiffEntry, type BehaviorManifest, BehaviorManifestJsonFormatter, type BehaviorManifestJsonOptions, type BehaviorSourceFile, type BehaviorTag, type BundleOptions, type BundleResult, CIProvider, type CanonicalizeOptions, type ChangeType, type ChangedFile, type ChangedFileReview, type CheckArgs, type CheckDeps, type CheckFailure, type CheckReport, type CheckStep, type ColocatedStyle, type CompareFormat, type CompareFormatterOptions, type ConfluenceAuth, ConfluenceFormatter, type ConfluenceFormatterOptions as ConfluenceFormatterOpts, type CopyMarkdownAssetsOptions, CucumberHtmlFormatter, type CucumberHtmlOptions, CucumberJsonFormatter, type CucumberJsonOptions, CucumberMessagesFormatter, type CucumberMessagesOptions, type DeploymentEntry, type DeploymentLedger, type DeploymentStatus, DocEntry, DocPhase, ES_THEME_TOKENS_CSS, ES_THEME_TOKEN_VALUES, type EnvironmentDrift, type EvidenceStrength, type ExecutableStoriesConfig, type FetchFn, type FileChangeKind, type FlakinessLevel, type Formatter, type FormatterOptions, type GenerateArgs, type GenerateCompareResult, type GenerateDeps, type GenerateResult, type GenericWebhookNotifierOptions, type GoalArgs, type GoalDeps, type GoalReport, type GoalRequirementResult, type HistoryEntry, type HistoryStore, type HtmlDocOptions, HtmlFormatter, type HtmlOptions, type HtmlTheme, type HtmlThemeName, type IJsonDataTable, type IJsonDocString, type IJsonEmbedding, type IJsonFeature, type IJsonScenario, type IJsonStep, type IJsonStepArgument, type IJsonStepResult, type IJsonTableRow, type IJsonTag, JUnitFormatter, type JUnitOptions, type JiraAuth, type JiraPublishMode, type ListScenariosArgs, type ListScenariosDeps, type Logger, MIN_FLAKINESS_SAMPLES, MIN_METRIC_SAMPLES, MIN_PERF_SAMPLES, MarkdownFormatter, type MarkdownFormatterOptions, type MarkdownOptions, type MarkdownRenderers, NormalizedTicket, type NotificationSummary, type NotifyCondition, OtelSpan, type OtelTraceContext, type OutputConfig, type OutputFormat, type OutputMode, type OutputRule, type PerformanceTrend, type PublishConfluenceArgs, type PublishConfluenceDeps, type PublishConfluenceResult, type PublishJiraArgs, type PublishJiraDeps, type PublishJiraResult, type RatchetViolation, RawAttachment, RawCIInfo, RawRun, RawStatus, type RecordDeploymentArgs, type RecordDeploymentResult, type ReleaseManifest, ReleaseManifestFormatter, type ReportAttachment, type ReportCIInfo, type ReportCoverageSummary, type ReportDocCode, type ReportDocCustom, type ReportDocEntry, type ReportDocKv, type ReportDocLink, type ReportDocMermaid, type ReportDocNote, type ReportDocScreenshot, type ReportDocSection, type ReportDocTable, type ReportDocTag, type ReportFeature, ReportGenerator, type ReportScenario, type ReportStep, type ReportSummary, type ReportTicket, type ResolvedFormatterOptions, type ReviewAudience, type ReviewBand, type ReviewClaim, type ReviewContext, ReviewHtmlFormatter, type ReviewHtmlOptions, ReviewMarkdownFormatter, type ReviewMarkdownOptions, type ReviewResult, type ReviewSummary, RunDiffHtmlFormatter, type RunDiffHtmlOptions, RunDiffMarkdownFormatter, type RunDiffMarkdownOptions, type RunDiffResult, type RunDiffSummary, STORY_REPORT_SCHEMA_MAJOR, STORY_REPORT_SCHEMA_VERSION, type ScenarioChangeFlags, type ScenarioChangeKind, type ScenarioDiff, type ScenarioIndex, type ScenarioIndexFilters, type ScenarioIndexItem, ScenarioIndexJsonFormatter, type ScenarioIndexJsonOptions, type ScenarioIndexStep, type ScenarioSnapshot, type SortTestCasesMode, type StabilityGrade, type StarlightBadge, StepKeyword$1 as StepKeyword, StepResult, type StoryReport, StoryReportJsonFormatter, type StoryReportJsonOptions, type StoryReportSchemaVersion, StoryStep, TestCaseResult, type TestHistory, type TestMetrics, TestRunResult, TestStatus$1 as TestStatus, type TraceabilityMatrix, TraceabilityMatrixFormatter, type TraceabilityRequirement, type TriageArgs, type TriageDeps, type TriageItem, type TriageReport, CIInfo as TypedCIInfo, type ValidationResult, type WatchDeps, type WatchHandle, type WatchOptions, type WebhookPayload, type WebhookSignerHmac, type WriteFile, adaptJestRun, adaptPlaywrightRun, adaptVitestRun, assertValidRun, buildCheck, buildGoal, buildHtmlDocEntry, buildReview, buildTriage, bundleAssets, calculateFlakiness, calculateStability, canonicalizeRun, classifyStatusChange, clearVersionCache, computeTestMetrics, copyMarkdownAssets, createPrCommentSummary, createReportGenerator, deriveAudience, deriveChangeType, deriveStepResults, detectCI, detectPerformanceTrend, diffRuns, diffStoryReports, findGitDir, formatDuration, generateRunComparison, generateRunId, generateTestCaseId, getAvailableThemes, getCssOnlyThemes, getDeploymentStatus, getEnvironmentDrift, gradeEvidence, hasSufficientHistory, isReviewableSource, isTestFile, joinNameAndExt, listScenarios, loadHistory, mergeStepResults, msToNanoseconds, nanosecondsToMs, normalizeJestResults, normalizePlaywrightResults, normalizeStatus, normalizeVitestResults, parseEnvelopes, parseNdjson, publishConfluencePage, publishJiraIssue, readBranchName, readGitSha, readPackageVersion, recordDeployment, regenerateArtifacts, renderCheck, renderGoal, renderTriage, resolveAttachment, resolveAttachments, resolveTheme, resolveTraceUrl, rewriteAssetPaths, saveHistory, scenariosCoveringPaths, sendNotifications, sendSlackNotification, sendTeamsNotification, sendWebhookNotification, signBody, slugify, startWatch, stripAnsi, toBehaviorManifest, toReleaseManifest, toScenarioIndex, toStoryReport, toTraceabilityMatrix, tryGetActiveOtelContext, updateHistory, validateCanonicalRun };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { C as CIInfo, T as TestRunResult, a as TestCaseResult, S as StoryStep, D as DocEntry, b as TestStatus$1, N as NormalizedTicket, A as Attachment, c as DocPhase, O as OtelSpan, d as StepResult, e as CIProvider, R as RawStatus, f as RawAttachment, g as RawRun, h as RawCIInfo, i as adaptJestRun, j as adaptPlaywrightRun, k as adaptVitestRun } from './index-mrT6-JSt.js';
2
- export { l as CIInfo, m as CoverageSummary, J as JestAdapterOptions, n as JestAggregatedResult, o as JestFileResult, p as JestTestResult, q as OtelAttributeValue, P as PlaywrightAdapterOptions, r as PlaywrightAnnotation, s as PlaywrightAttachment, t as PlaywrightError, u as PlaywrightLocation, v as PlaywrightStatus, w as PlaywrightTestCase, x as PlaywrightTestResult, y as RawStepEvent, z as RawTestCase, B as STORY_META_KEY, E as StepKeyword, F as StepMode, G as StoryFileReport, H as StoryMeta, I as TestCaseAttempt, K as TestCaseEvidence, V as VitestAdapterOptions, L as VitestSerializedError, M as VitestState, Q as VitestTestCase, U as VitestTestModule, W as VitestTestResult, X as toCIInfo, Y as toRawCIInfo } from './index-mrT6-JSt.js';
1
+ import { C as CIInfo, T as TestRunResult, a as TestCaseResult, S as StoryStep, D as DocEntry, b as TestStatus$1, N as NormalizedTicket, A as Attachment, c as DocPhase, O as OtelSpan, d as StepResult, e as CIProvider, R as RawStatus, f as RawAttachment, g as RawRun, h as RawCIInfo, i as StepKeyword$1, j as adaptJestRun, k as adaptPlaywrightRun, l as adaptVitestRun } from './index-CXrzCk9p.js';
2
+ export { m as CIInfo, n as CoverageSummary, J as JestAdapterOptions, o as JestAggregatedResult, p as JestFileResult, q as JestTestResult, r as OtelAttributeValue, P as PlaywrightAdapterOptions, s as PlaywrightAnnotation, t as PlaywrightAttachment, u as PlaywrightError, v as PlaywrightLocation, w as PlaywrightStatus, x as PlaywrightTestCase, y as PlaywrightTestResult, z as RawStepEvent, B as RawTestCase, E as STORY_META_KEY, F as StepMode, G as StoryFileReport, H as StoryMeta, I as TestCaseAttempt, K as TestCaseEvidence, V as VitestAdapterOptions, L as VitestSerializedError, M as VitestState, Q as VitestTestCase, U as VitestTestModule, W as VitestTestResult, X as toCIInfo, Y as toRawCIInfo } from './index-CXrzCk9p.js';
3
3
 
4
4
  /**
5
5
  * Notification types for webhook integrations (Slack, Teams).
@@ -150,7 +150,7 @@ interface CanonicalizeOptions {
150
150
  };
151
151
  }
152
152
  /** Output format for report generation */
153
- type OutputFormat = "astro" | "behavior-manifest-json" | "confluence" | "cucumber-json" | "cucumber-messages" | "cucumber-html" | "html" | "junit" | "markdown" | "release-manifest" | "scenario-index-json" | "story-report-json";
153
+ type OutputFormat = "astro" | "behavior-manifest-json" | "confluence" | "cucumber-json" | "cucumber-messages" | "cucumber-html" | "html" | "junit" | "markdown" | "release-manifest" | "scenario-index-json" | "story-report-json" | "traceability-matrix";
154
154
  /** Sort order for test cases in reports (deterministic for diff-friendly output) */
155
155
  type SortTestCasesMode = "id" | "source" | "none";
156
156
  /** Output mode for report routing */
@@ -2959,6 +2959,176 @@ interface ListScenariosArgs {
2959
2959
  type ListScenariosDeps = Record<string, never>;
2960
2960
  declare function listScenarios(args: ListScenariosArgs, _deps: ListScenariosDeps): string;
2961
2961
 
2962
+ /**
2963
+ * `check` — context-efficient backpressure for coding agents.
2964
+ *
2965
+ * The principle (from "Stop Babysitting Your Coding Agent. Give It Backpressure."):
2966
+ * compress success, expand failure. Passing scenarios collapse to a single count
2967
+ * line. Each failing scenario expands to its Given/When/Then narrative, the step
2968
+ * that broke, the error, and the product code it `covers` — so the agent gets an
2969
+ * actionable, intent-carrying signal instead of a wall of green.
2970
+ *
2971
+ * When a baseline run is supplied, the report also folds in what *regressed* and
2972
+ * what got *fixed* since the last run — the "retained" property of effective
2973
+ * feedback. Reuses the same status-transition vocabulary as {@link classifyStatusChange}.
2974
+ */
2975
+
2976
+ interface CheckArgs {
2977
+ testCases: TestCaseResult[];
2978
+ /** Baseline scenario statuses keyed by scenario id, for regressed/fixed deltas. */
2979
+ baseline?: Map<string, TestStatus$1>;
2980
+ format: "text" | "json";
2981
+ }
2982
+ type CheckDeps = Record<string, never>;
2983
+ /** A single rendered step inside a failing scenario. */
2984
+ interface CheckStep {
2985
+ keyword: StepKeyword$1;
2986
+ text: string;
2987
+ /** True when this step is the one that failed. */
2988
+ failed: boolean;
2989
+ }
2990
+ /** Expanded detail for one failing scenario — the actionable payload. */
2991
+ interface CheckFailure {
2992
+ id: string;
2993
+ scenario: string;
2994
+ /** `sourceFile:sourceLine` */
2995
+ location: string;
2996
+ steps: CheckStep[];
2997
+ /** Failing step's error if isolated, else the scenario-level error. */
2998
+ errorMessage?: string;
2999
+ /** Product-code paths/globs this scenario exercises (what to fix). */
3000
+ covers: string[];
3001
+ tickets: string[];
3002
+ /** True when this scenario was passing in the baseline run. */
3003
+ regressed: boolean;
3004
+ }
3005
+ interface CheckReport {
3006
+ summary: {
3007
+ total: number;
3008
+ passed: number;
3009
+ failed: number;
3010
+ skipped: number;
3011
+ pending: number;
3012
+ };
3013
+ failures: CheckFailure[];
3014
+ /** Count of scenarios that went passed → failed vs. the baseline. */
3015
+ regressed: number;
3016
+ /** Count of scenarios that went failed → passed vs. the baseline. */
3017
+ fixed: number;
3018
+ /** Whether a baseline was supplied (so callers know if deltas are meaningful). */
3019
+ comparedToBaseline: boolean;
3020
+ }
3021
+ /**
3022
+ * Build a structured check report from canonical test cases.
3023
+ * Pure: no IO. Callers render it as text or JSON and decide the exit code.
3024
+ */
3025
+ declare function buildCheck(args: CheckArgs, _deps?: CheckDeps): CheckReport;
3026
+ /**
3027
+ * Render the check report. Text is the default agent/human surface
3028
+ * (compressed success, expanded failure); JSON is the machine contract.
3029
+ */
3030
+ declare function renderCheck(report: CheckReport, format: "text" | "json"): string;
3031
+
3032
+ /**
3033
+ * `goal` — a behavioral definition-of-done for autonomous agent loops.
3034
+ *
3035
+ * A `/goal`-style loop keeps working until a verifiable condition holds. This
3036
+ * expresses that condition in behavior, not "tests green and lint clean": the
3037
+ * required scenarios pass, nothing regressed, and nobody weakened a scenario to
3038
+ * fake done (the ratchet). It returns a clear met / not-met verdict and what is
3039
+ * left, so the loop and the human reading after it can both trust "done".
3040
+ */
3041
+
3042
+ /** Result of one required selector (a tag, ticket, or scenario that must pass). */
3043
+ interface GoalRequirementResult {
3044
+ /** Human-readable selector, e.g. "tag:US-101", "ticket:CART-9", "all scenarios". */
3045
+ selector: string;
3046
+ matched: number;
3047
+ passed: number;
3048
+ /** Titles of matched scenarios that did not pass. */
3049
+ failing: string[];
3050
+ /** matched > 0 and every matched scenario passed. */
3051
+ met: boolean;
3052
+ }
3053
+ /** A scenario that was removed or weakened versus the baseline (anti-fake-done). */
3054
+ interface RatchetViolation {
3055
+ id: string;
3056
+ title: string;
3057
+ kind: "removed" | "disabled" | "weakened";
3058
+ detail: string;
3059
+ }
3060
+ interface GoalReport {
3061
+ /** True only when every requirement is met and no enforced guard fired. */
3062
+ met: boolean;
3063
+ requirements: GoalRequirementResult[];
3064
+ /** Scenarios that went passed -> failed versus baseline (when --no-regressions). */
3065
+ regressions: Array<{
3066
+ id: string;
3067
+ title: string;
3068
+ }>;
3069
+ regressionsEnforced: boolean;
3070
+ ratchet: {
3071
+ enforced: boolean;
3072
+ violations: RatchetViolation[];
3073
+ };
3074
+ }
3075
+ interface GoalArgs {
3076
+ run: TestRunResult;
3077
+ baseline?: TestRunResult;
3078
+ requireTags: string[];
3079
+ requireTickets: string[];
3080
+ requireScenarios: string[];
3081
+ enforceNoRegressions: boolean;
3082
+ enforceRatchet: boolean;
3083
+ format: "text" | "json";
3084
+ }
3085
+ type GoalDeps = Record<string, never>;
3086
+ declare function buildGoal(args: GoalArgs, _deps?: GoalDeps): GoalReport;
3087
+ declare function renderGoal(report: GoalReport, format: "text" | "json"): string;
3088
+
3089
+ /**
3090
+ * `triage` — the discovery-phase worklist for an agent loop.
3091
+ *
3092
+ * The automation that runs on a schedule needs a ranked queue of what to work
3093
+ * on, not a full report. This emits failing scenarios, regressions first, each
3094
+ * carrying the product code it `covers` (where to send the fixer), the error,
3095
+ * and its tickets. Failures with no `covers` are flagged: the loop can't route
3096
+ * them to code, so a human or a covers annotation is needed first.
3097
+ */
3098
+
3099
+ interface TriageItem {
3100
+ rank: number;
3101
+ id: string;
3102
+ scenario: string;
3103
+ status: TestStatus$1;
3104
+ /** `sourceFile:sourceLine` */
3105
+ location: string;
3106
+ /** Product-code paths to fix. Empty when the scenario declared no `covers`. */
3107
+ covers: string[];
3108
+ tickets: string[];
3109
+ errorMessage?: string;
3110
+ /** Passed in the baseline, failing now. Ranked first. */
3111
+ regressed: boolean;
3112
+ reason: "regression" | "failing";
3113
+ }
3114
+ interface TriageReport {
3115
+ total: number;
3116
+ failing: number;
3117
+ regressions: number;
3118
+ /** Failing scenarios with no `covers` — the loop can't route them to code. */
3119
+ needsCovers: number;
3120
+ items: TriageItem[];
3121
+ }
3122
+ interface TriageArgs {
3123
+ testCases: TestCaseResult[];
3124
+ /** Baseline statuses by scenario id, to flag regressions and rank them first. */
3125
+ baseline?: Map<string, TestStatus$1>;
3126
+ format: "text" | "json";
3127
+ }
3128
+ type TriageDeps = Record<string, never>;
3129
+ declare function buildTriage(args: TriageArgs, _deps?: TriageDeps): TriageReport;
3130
+ declare function renderTriage(report: TriageReport, format: "text" | "json"): string;
3131
+
2962
3132
  declare function createPrCommentSummary(diff: RunDiffResult, maxScenarios?: number): string;
2963
3133
 
2964
3134
  declare function diffRuns(baseline: TestRunResult, current: TestRunResult): RunDiffResult;
@@ -3165,6 +3335,65 @@ declare class ReleaseManifestFormatter {
3165
3335
  }
3166
3336
  declare function toReleaseManifest(run: TestRunResult): ReleaseManifest;
3167
3337
 
3338
+ /**
3339
+ * Requirement-first view of a run. Groups scenarios under the ticket/user-story
3340
+ * they verify, rolls up the code each requirement covers and whether it passed,
3341
+ * and surfaces two gaps a scenario-keyed index hides: requirements with a failing
3342
+ * scenario, and scenarios linked to no requirement at all (untraced behavior).
3343
+ *
3344
+ * The set of requirements is derived from the tickets found on scenarios — the
3345
+ * tests are the source of truth, so a requirement only appears once a scenario
3346
+ * claims it.
3347
+ */
3348
+ interface TraceabilityRequirement {
3349
+ /** Ticket / user-story id (e.g. "US-101", "JIRA-42"). */
3350
+ ticket: string;
3351
+ /** Direct URL when a scenario supplied one. */
3352
+ url?: string;
3353
+ /** "verified" = every scenario passed; "failing" = at least one failed; "incomplete" = only skipped/pending. */
3354
+ status: "verified" | "failing" | "incomplete";
3355
+ scenarios: Array<{
3356
+ id: string;
3357
+ title: string;
3358
+ status: TestStatus$1;
3359
+ sourceFile: string;
3360
+ sourceLine: number;
3361
+ covers: string[];
3362
+ }>;
3363
+ /** Union of every covered path across this requirement's scenarios. */
3364
+ covers: string[];
3365
+ }
3366
+ interface TraceabilityMatrix {
3367
+ schemaVersion: "1.0";
3368
+ generatedAt: string;
3369
+ run: {
3370
+ startedAt: string;
3371
+ finishedAt: string;
3372
+ gitSha?: string;
3373
+ branch?: string;
3374
+ };
3375
+ summary: {
3376
+ requirements: number;
3377
+ requirementsVerified: number;
3378
+ requirementsFailing: number;
3379
+ scenarios: number;
3380
+ untracedScenarios: number;
3381
+ };
3382
+ requirements: TraceabilityRequirement[];
3383
+ /** Scenarios with no ticket — behavior verified but not linked to a requirement. */
3384
+ untraced: Array<{
3385
+ id: string;
3386
+ title: string;
3387
+ status: TestStatus$1;
3388
+ sourceFile: string;
3389
+ sourceLine: number;
3390
+ }>;
3391
+ }
3392
+ declare class TraceabilityMatrixFormatter {
3393
+ format(run: TestRunResult): string;
3394
+ }
3395
+ declare function toTraceabilityMatrix(run: TestRunResult): TraceabilityMatrix;
3396
+
3168
3397
  /**
3169
3398
  * @executable-stories/formatters
3170
3399
  *
@@ -3274,4 +3503,4 @@ declare function normalizeVitestResults(testModules: Parameters<typeof adaptVite
3274
3503
  */
3275
3504
  declare function normalizePlaywrightResults(testResults: Parameters<typeof adaptPlaywrightRun>[0], adapterOptions?: Parameters<typeof adaptPlaywrightRun>[1], canonicalizeOptions?: CanonicalizeOptions): TestRunResult;
3276
3505
 
3277
- export { type AstroAssetResult, AstroFormatter, type AstroFormatterOptions as AstroFormatterOpts, Attachment, type BehaviorDebuggerIssue, type BehaviorDiff, type BehaviorDiffEntry, type BehaviorManifest, BehaviorManifestJsonFormatter, type BehaviorManifestJsonOptions, type BehaviorSourceFile, type BehaviorTag, type BundleOptions, type BundleResult, CIProvider, type CanonicalizeOptions, type ChangeType, type ChangedFile, type ChangedFileReview, type ColocatedStyle, type CompareFormat, type CompareFormatterOptions, type ConfluenceAuth, ConfluenceFormatter, type ConfluenceFormatterOptions as ConfluenceFormatterOpts, type CopyMarkdownAssetsOptions, CucumberHtmlFormatter, type CucumberHtmlOptions, CucumberJsonFormatter, type CucumberJsonOptions, CucumberMessagesFormatter, type CucumberMessagesOptions, type DeploymentEntry, type DeploymentLedger, type DeploymentStatus, DocEntry, DocPhase, ES_THEME_TOKENS_CSS, ES_THEME_TOKEN_VALUES, type EnvironmentDrift, type EvidenceStrength, type ExecutableStoriesConfig, type FetchFn, type FileChangeKind, type FlakinessLevel, type Formatter, type FormatterOptions, type GenerateArgs, type GenerateCompareResult, type GenerateDeps, type GenerateResult, type GenericWebhookNotifierOptions, type HistoryEntry, type HistoryStore, type HtmlDocOptions, HtmlFormatter, type HtmlOptions, type HtmlTheme, type HtmlThemeName, type IJsonDataTable, type IJsonDocString, type IJsonEmbedding, type IJsonFeature, type IJsonScenario, type IJsonStep, type IJsonStepArgument, type IJsonStepResult, type IJsonTableRow, type IJsonTag, JUnitFormatter, type JUnitOptions, type JiraAuth, type JiraPublishMode, type ListScenariosArgs, type ListScenariosDeps, type Logger, MIN_FLAKINESS_SAMPLES, MIN_METRIC_SAMPLES, MIN_PERF_SAMPLES, MarkdownFormatter, type MarkdownFormatterOptions, type MarkdownOptions, type MarkdownRenderers, NormalizedTicket, type NotificationSummary, type NotifyCondition, OtelSpan, type OtelTraceContext, type OutputConfig, type OutputFormat, type OutputMode, type OutputRule, type PerformanceTrend, type PublishConfluenceArgs, type PublishConfluenceDeps, type PublishConfluenceResult, type PublishJiraArgs, type PublishJiraDeps, type PublishJiraResult, RawAttachment, RawCIInfo, RawRun, RawStatus, type RecordDeploymentArgs, type RecordDeploymentResult, type ReleaseManifest, ReleaseManifestFormatter, type ReportAttachment, type ReportCIInfo, type ReportCoverageSummary, type ReportDocCode, type ReportDocCustom, type ReportDocEntry, type ReportDocKv, type ReportDocLink, type ReportDocMermaid, type ReportDocNote, type ReportDocScreenshot, type ReportDocSection, type ReportDocTable, type ReportDocTag, type ReportFeature, ReportGenerator, type ReportScenario, type ReportStep, type ReportSummary, type ReportTicket, type ResolvedFormatterOptions, type ReviewAudience, type ReviewBand, type ReviewClaim, type ReviewContext, ReviewHtmlFormatter, type ReviewHtmlOptions, ReviewMarkdownFormatter, type ReviewMarkdownOptions, type ReviewResult, type ReviewSummary, RunDiffHtmlFormatter, type RunDiffHtmlOptions, RunDiffMarkdownFormatter, type RunDiffMarkdownOptions, type RunDiffResult, type RunDiffSummary, STORY_REPORT_SCHEMA_MAJOR, STORY_REPORT_SCHEMA_VERSION, type ScenarioChangeFlags, type ScenarioChangeKind, type ScenarioDiff, type ScenarioIndex, type ScenarioIndexFilters, type ScenarioIndexItem, ScenarioIndexJsonFormatter, type ScenarioIndexJsonOptions, type ScenarioIndexStep, type ScenarioSnapshot, type SortTestCasesMode, type StabilityGrade, type StarlightBadge, StepResult, type StoryReport, StoryReportJsonFormatter, type StoryReportJsonOptions, type StoryReportSchemaVersion, StoryStep, TestCaseResult, type TestHistory, type TestMetrics, TestRunResult, TestStatus$1 as TestStatus, CIInfo as TypedCIInfo, type ValidationResult, type WatchDeps, type WatchHandle, type WatchOptions, type WebhookPayload, type WebhookSignerHmac, type WriteFile, adaptJestRun, adaptPlaywrightRun, adaptVitestRun, assertValidRun, buildHtmlDocEntry, buildReview, bundleAssets, calculateFlakiness, calculateStability, canonicalizeRun, classifyStatusChange, clearVersionCache, computeTestMetrics, copyMarkdownAssets, createPrCommentSummary, createReportGenerator, deriveAudience, deriveChangeType, deriveStepResults, detectCI, detectPerformanceTrend, diffRuns, diffStoryReports, findGitDir, formatDuration, generateRunComparison, generateRunId, generateTestCaseId, getAvailableThemes, getCssOnlyThemes, getDeploymentStatus, getEnvironmentDrift, gradeEvidence, hasSufficientHistory, isReviewableSource, isTestFile, joinNameAndExt, listScenarios, loadHistory, mergeStepResults, msToNanoseconds, nanosecondsToMs, normalizeJestResults, normalizePlaywrightResults, normalizeStatus, normalizeVitestResults, parseEnvelopes, parseNdjson, publishConfluencePage, publishJiraIssue, readBranchName, readGitSha, readPackageVersion, recordDeployment, regenerateArtifacts, resolveAttachment, resolveAttachments, resolveTheme, resolveTraceUrl, rewriteAssetPaths, saveHistory, scenariosCoveringPaths, sendNotifications, sendSlackNotification, sendTeamsNotification, sendWebhookNotification, signBody, slugify, startWatch, stripAnsi, toBehaviorManifest, toReleaseManifest, toScenarioIndex, toStoryReport, tryGetActiveOtelContext, updateHistory, validateCanonicalRun };
3506
+ export { type AstroAssetResult, AstroFormatter, type AstroFormatterOptions as AstroFormatterOpts, Attachment, type BehaviorDebuggerIssue, type BehaviorDiff, type BehaviorDiffEntry, type BehaviorManifest, BehaviorManifestJsonFormatter, type BehaviorManifestJsonOptions, type BehaviorSourceFile, type BehaviorTag, type BundleOptions, type BundleResult, CIProvider, type CanonicalizeOptions, type ChangeType, type ChangedFile, type ChangedFileReview, type CheckArgs, type CheckDeps, type CheckFailure, type CheckReport, type CheckStep, type ColocatedStyle, type CompareFormat, type CompareFormatterOptions, type ConfluenceAuth, ConfluenceFormatter, type ConfluenceFormatterOptions as ConfluenceFormatterOpts, type CopyMarkdownAssetsOptions, CucumberHtmlFormatter, type CucumberHtmlOptions, CucumberJsonFormatter, type CucumberJsonOptions, CucumberMessagesFormatter, type CucumberMessagesOptions, type DeploymentEntry, type DeploymentLedger, type DeploymentStatus, DocEntry, DocPhase, ES_THEME_TOKENS_CSS, ES_THEME_TOKEN_VALUES, type EnvironmentDrift, type EvidenceStrength, type ExecutableStoriesConfig, type FetchFn, type FileChangeKind, type FlakinessLevel, type Formatter, type FormatterOptions, type GenerateArgs, type GenerateCompareResult, type GenerateDeps, type GenerateResult, type GenericWebhookNotifierOptions, type GoalArgs, type GoalDeps, type GoalReport, type GoalRequirementResult, type HistoryEntry, type HistoryStore, type HtmlDocOptions, HtmlFormatter, type HtmlOptions, type HtmlTheme, type HtmlThemeName, type IJsonDataTable, type IJsonDocString, type IJsonEmbedding, type IJsonFeature, type IJsonScenario, type IJsonStep, type IJsonStepArgument, type IJsonStepResult, type IJsonTableRow, type IJsonTag, JUnitFormatter, type JUnitOptions, type JiraAuth, type JiraPublishMode, type ListScenariosArgs, type ListScenariosDeps, type Logger, MIN_FLAKINESS_SAMPLES, MIN_METRIC_SAMPLES, MIN_PERF_SAMPLES, MarkdownFormatter, type MarkdownFormatterOptions, type MarkdownOptions, type MarkdownRenderers, NormalizedTicket, type NotificationSummary, type NotifyCondition, OtelSpan, type OtelTraceContext, type OutputConfig, type OutputFormat, type OutputMode, type OutputRule, type PerformanceTrend, type PublishConfluenceArgs, type PublishConfluenceDeps, type PublishConfluenceResult, type PublishJiraArgs, type PublishJiraDeps, type PublishJiraResult, type RatchetViolation, RawAttachment, RawCIInfo, RawRun, RawStatus, type RecordDeploymentArgs, type RecordDeploymentResult, type ReleaseManifest, ReleaseManifestFormatter, type ReportAttachment, type ReportCIInfo, type ReportCoverageSummary, type ReportDocCode, type ReportDocCustom, type ReportDocEntry, type ReportDocKv, type ReportDocLink, type ReportDocMermaid, type ReportDocNote, type ReportDocScreenshot, type ReportDocSection, type ReportDocTable, type ReportDocTag, type ReportFeature, ReportGenerator, type ReportScenario, type ReportStep, type ReportSummary, type ReportTicket, type ResolvedFormatterOptions, type ReviewAudience, type ReviewBand, type ReviewClaim, type ReviewContext, ReviewHtmlFormatter, type ReviewHtmlOptions, ReviewMarkdownFormatter, type ReviewMarkdownOptions, type ReviewResult, type ReviewSummary, RunDiffHtmlFormatter, type RunDiffHtmlOptions, RunDiffMarkdownFormatter, type RunDiffMarkdownOptions, type RunDiffResult, type RunDiffSummary, STORY_REPORT_SCHEMA_MAJOR, STORY_REPORT_SCHEMA_VERSION, type ScenarioChangeFlags, type ScenarioChangeKind, type ScenarioDiff, type ScenarioIndex, type ScenarioIndexFilters, type ScenarioIndexItem, ScenarioIndexJsonFormatter, type ScenarioIndexJsonOptions, type ScenarioIndexStep, type ScenarioSnapshot, type SortTestCasesMode, type StabilityGrade, type StarlightBadge, StepKeyword$1 as StepKeyword, StepResult, type StoryReport, StoryReportJsonFormatter, type StoryReportJsonOptions, type StoryReportSchemaVersion, StoryStep, TestCaseResult, type TestHistory, type TestMetrics, TestRunResult, TestStatus$1 as TestStatus, type TraceabilityMatrix, TraceabilityMatrixFormatter, type TraceabilityRequirement, type TriageArgs, type TriageDeps, type TriageItem, type TriageReport, CIInfo as TypedCIInfo, type ValidationResult, type WatchDeps, type WatchHandle, type WatchOptions, type WebhookPayload, type WebhookSignerHmac, type WriteFile, adaptJestRun, adaptPlaywrightRun, adaptVitestRun, assertValidRun, buildCheck, buildGoal, buildHtmlDocEntry, buildReview, buildTriage, bundleAssets, calculateFlakiness, calculateStability, canonicalizeRun, classifyStatusChange, clearVersionCache, computeTestMetrics, copyMarkdownAssets, createPrCommentSummary, createReportGenerator, deriveAudience, deriveChangeType, deriveStepResults, detectCI, detectPerformanceTrend, diffRuns, diffStoryReports, findGitDir, formatDuration, generateRunComparison, generateRunId, generateTestCaseId, getAvailableThemes, getCssOnlyThemes, getDeploymentStatus, getEnvironmentDrift, gradeEvidence, hasSufficientHistory, isReviewableSource, isTestFile, joinNameAndExt, listScenarios, loadHistory, mergeStepResults, msToNanoseconds, nanosecondsToMs, normalizeJestResults, normalizePlaywrightResults, normalizeStatus, normalizeVitestResults, parseEnvelopes, parseNdjson, publishConfluencePage, publishJiraIssue, readBranchName, readGitSha, readPackageVersion, recordDeployment, regenerateArtifacts, renderCheck, renderGoal, renderTriage, resolveAttachment, resolveAttachments, resolveTheme, resolveTraceUrl, rewriteAssetPaths, saveHistory, scenariosCoveringPaths, sendNotifications, sendSlackNotification, sendTeamsNotification, sendWebhookNotification, signBody, slugify, startWatch, stripAnsi, toBehaviorManifest, toReleaseManifest, toScenarioIndex, toStoryReport, toTraceabilityMatrix, tryGetActiveOtelContext, updateHistory, validateCanonicalRun };