/** * Generate mode — component → GitLab CI YAML (#563, epic #551, Phase 3). * * The other half of "two modes, both anti-sprawl" (see * docs/src/content/docs/components/orchestration.mdx#generate-mode and epic * #551 §"5. Orchestrator → generate mode"): interpret mode (`../driver.ts`, * #556) runs components directly; generate mode synthesizes a **thin** * `.gitlab-ci.yml` from the same declarations for teams who want plain CI as * the trigger/runner. * * The generated pipeline is a trigger, not the deploy logic: * - Ordering + parallel-safe waves are resolved once, generically, by * `resolveComponentGraph` (../driver.ts) — the exact function the local * interpret driver uses. Generate mode does not re-derive or duplicate * that graph logic. * - Each wave becomes one GitLab CI `stage`; every component in a wave * becomes one job in that stage, so independent components run in * parallel and dependents wait for their dependencies via natural stage * ordering (mirrored explicitly with `needs:` for direct edges, so GitLab * can still parallelize across non-adjacent stages when safe). * - Each job's `script` is exactly one invocation that hands off to the * component's own composition (`chant run --components ...` by * default) — never inlined build/publish/apply steps. The deploy logic * lives in the component's `deploy` phases and the capabilities they * reference, not in this YAML. * * Cross-cutting changes (e.g. "sign every image before deploy") are made by * editing `GenerateGitlabOptions.extraScript`/`beforeScript` (or the * component's own composition) ONCE here — never per generated job. See * `generate-gitlab.test.ts`'s "cross-cutting change" case for a * demonstration: one generator-option edit reflects in every job without * touching the component declarations. */ import { type DriverComponent } from "@intentius/chant/components/driver"; import type { ComponentPipelineJob as GeneratedJob, ComponentPipelineOptions as GenerateGitlabOptions, ComponentPipelineResult as GenerateGitlabResult } from "@intentius/chant/lexicon"; export type { GeneratedJob, GenerateGitlabOptions, GenerateGitlabResult }; /** * Synthesize a `.gitlab-ci.yml` pipeline from a set of components: one stage * per parallel-safe wave (`resolveComponentGraph`), one thin trigger job per * component. Throws `DependencyCycleError`/`UnknownDependencyError` (from * core's driver) exactly like the interpret driver does, since both consume * the same graph resolution. Wired into core's generate mode via the gitlab * lexicon plugin's `generateComponentPipeline` (../plugin.ts). */ export declare function generateGitlabPipeline(components: DriverComponent[], options?: GenerateGitlabOptions): GenerateGitlabResult; //# sourceMappingURL=generate-pipeline.d.ts.map