Spaces:
Sleeping
Sleeping
| // The controlled batch sequence of a Matrix build (mirrors agent-matrix/design's batches). | |
| // Shared by the builder flow (prompt per batch) and the persisted Build Timeline. | |
| export type BatchStatus = "passed" | "ready" | "planned" | "repair"; | |
| export type Stage = { n: string; title: string; short: string; goal: string }; | |
| export const STAGES: Stage[] = [ | |
| { n: "01", title: "Project skeleton", short: "Skeleton", goal: "Initialize the repository, folder structure, configs, and placeholder files." }, | |
| { n: "02", title: "Core feature", short: "Core feature", goal: "Implement the primary feature end to end, with tests." }, | |
| { n: "03", title: "Validation & tests", short: "Validation", goal: "Add validation, error handling, and a full test suite." }, | |
| { n: "04", title: "Publish to MatrixHub", short: "Publish", goal: "Package, sign, and publish the validated bundle to MatrixHub." }, | |
| ]; | |
| export type TimelineBatch = { | |
| n: string; | |
| title: string; | |
| short: string; | |
| status: BatchStatus; | |
| commit?: string; | |
| meta: string[]; | |
| issue?: string; | |
| }; | |
| // The batches a build has actually completed (a clean passed progression, oldest→newest). | |
| export function timelineBatches(passed: number): TimelineBatch[] { | |
| const count = Math.max(0, Math.min(passed, STAGES.length)); | |
| return STAGES.slice(0, count).map((stage) => ({ | |
| n: stage.n, | |
| title: stage.title, | |
| short: stage.short, | |
| status: "passed", | |
| commit: `#0${stage.n}`, | |
| meta: ["Prompt used", "Validation passed"], | |
| })); | |
| } | |