trellis
Version:
Agentic State Engine — event-sourced causal graph with branching, decision traces, and realtime sync for AI-native applications
70 lines • 2.95 kB
TypeScript
/**
* Repo test manifest — `.trellis/tests.json`
*
* Suites define shell commands; issues reference suite ids on criteria.
* Promote gates read `promote.require`.
*/
export interface TestSuiteDef {
description?: string;
command: string;
timeoutMs?: number;
/** When `browser`, runs via desk relay + extension instead of shell exec. */
kind?: 'shell' | 'browser';
/** Path relative to repo root for browser verify steps JSON. */
stepsFile?: string;
}
/** Template for auto-attached acceptance criteria on `issue start`. */
export interface CriterionTemplate {
description: string;
command?: string;
suite?: string;
}
/** Reviewer / QA ladder — suite ids for static check then e2e. */
export interface ReviewLadderConfig {
check?: string;
e2e?: string;
}
export interface TestManifest {
version: number;
defaultSuite?: string;
suites: Record<string, TestSuiteDef>;
promote?: {
require?: string[];
};
/** Reviewer ladder: check suite then e2e suite (see resolveReviewLadder). */
review?: ReviewLadderConfig;
/** Base criteria added on `issue start` when the issue has none yet. */
issueStart?: {
default?: CriterionTemplate[];
};
/** Extra criteria per issue label (e.g. needs-e2e → e2e suite). */
issueLabels?: Record<string, CriterionTemplate[]>;
}
export interface ResolvedReviewLadder {
checkSuiteId: string;
e2eSuiteId: string;
check: TestSuiteDef;
e2e: TestSuiteDef;
}
export declare function testManifestPath(rootPath: string): string;
export declare function loadTestManifest(rootPath: string): TestManifest | null;
export declare function requireTestManifest(rootPath: string): TestManifest;
export declare function resolveSuite(manifest: TestManifest, suiteId: string): TestSuiteDef;
export declare function suiteTimeoutMs(suite: TestSuiteDef): number;
export declare function listSuiteIds(manifest: TestManifest): string[];
/** Suites required before lane promote when --require-test is set. */
export declare function getPromoteRequiredSuites(manifest: TestManifest): string[];
/**
* Resolve reviewer ladder suite ids from manifest.review or command heuristics.
*/
export declare function resolveReviewLadder(manifest: TestManifest): ResolvedReviewLadder;
export declare function resolveCriterionCommand(manifest: TestManifest | null, criterion: {
command?: string;
suite?: string;
}): string | undefined;
/** Deduped criteria templates for a new issue from manifest defaults + labels. */
export declare function resolveIssueStartCriteria(manifest: TestManifest | null, labels: string[]): CriterionTemplate[];
export declare const DEFAULT_TEST_MANIFEST: TestManifest;
/** Write `.trellis/tests.json` when missing (e.g. on `trellis init`). */
export declare function ensureDefaultTestManifest(rootPath: string, template?: TestManifest): boolean;
//# sourceMappingURL=test-manifest.d.ts.map