Release Management
Automate the release process: aggregate changelogs from commits, determine the version bump, update version files, tag, and publish.
Workflow​
runPipeline(
pipe(
listCommitsSinceLastRelease,
all(
pipe(forEach(classifyCommit), determineVersionBump),
generateChangelog,
),
merge(),
applyVersionBump,
tryCatch(
(throwError) => pipe(
buildAndTest.unwrapOr(throwError).drop(),
tagRelease,
publish,
),
rollbackVersion,
),
),
);
Stages​
- List commits — get all commits since the last release tag.
- Parallel analysis:
- Classify commits — each commit is categorized (feature, fix, breaking, chore). The results determine the version bump (major/minor/patch).
- Generate changelog — an LLM writes human-readable release notes from the commit list.
- Apply version bump — update
package.json,Cargo.toml, or whatever version files exist. - Build, test, tag, publish — wrapped in
tryCatchso failures roll back the version bump.
Key points​
allruns version analysis and changelog generation concurrently — they don't depend on each other.- Commit classification is per-commit via
forEach, so the agent sees one commit at a time. - The changelog agent sees all commits but doesn't classify them — it writes prose.
tryCatchensures a failed publish doesn't leave the repo in a half-released state.