Node.js CLI for the MAIASS git workflow tool. Entry point is maiass.mjs. Built with ESM, distributed as a standalone binary via pkg / build.js.
nvm use # always first — project targets Node 23
node maiass.mjs # run directly
node maiass.mjs --setup # run setup wizard
npm run build # build standalone binary to dist/| File | Purpose |
|---|---|
maiass.mjs |
Entry point — CLI arg parsing, first-run detection, routes to commands |
lib/maiass-command.js |
Parses commit command args, calls runMaiassPipeline() |
lib/maiass-pipeline.js |
Main workflow: merge → version → changelog → tag → push |
lib/commit.js |
AI commit message generation — calls maiass-proxy, streams response |
lib/bootstrap.js |
--setup wizard: project type, version source, features, branches |
lib/version-manager.js |
Version file detection, parsing, bumping, writing |
lib/config-manager.js |
Reads .env.maiass + .env.maiass.local into process.env |
lib/git-info.js |
Git branch, status, diff helpers |
lib/colors.js |
Terminal colour helpers |
lib/logger.js |
Branded log output (log.info, log.success, etc.) |
lib/input-utils.js |
getSingleCharInput, getLineInput — interactive prompts |
maiass.mjs— first-run check, load config, parse argsmaiass-command.js— determine bump type, callrunMaiassPipeline()maiass-pipeline.js:- Commit phase →
commit.js(AI message, git add/commit) - Merge phase → merge feature → develop (if configured)
- Version phase →
version-manager.js(bump, write file) - Changelog phase →
changelog.js - Tag + push phase
- End: print "Thank you", credits remaining, top-up link
- Commit phase →
- If neither
.env.maiassnor.env.maiass.localexists → first run - Creates
.env.maiass.local, adds to.gitignore, setsMAIASS_MODE=ai_only, shows welcome message - Proceeds straight to commit — no blocking wizard
--setupflag triggers full wizard viabootstrapProject()inbootstrap.js
MAIASS_VERSION_PRIMARY_FILEin.env.maiasssets the version file- Supported types:
json(package.json),php(composer/WordPress),txt(VERSION),xcodeproj(.pbxproj) xcodeprojtype: managesMARKETING_VERSION(semver) + auto-incrementsCURRENT_PROJECT_VERSION(build integer)detectPbxproj()inbootstrap.jssearches 2 levels deep for.xcodeprojbundlesdetectVersionFiles()inversion-manager.jsdoes the same at runtimeparseVersion()accepts bothx.yandx.y.z
commit.jssetsprocess.env.MAIASS_CREDITS_REMAININGafter AI call- Credits shown once at end of pipeline in
maiass-pipeline.js, not inline during streaming - "Credit top-up link:" label (not "Need more credits?")
MAIASS_MODE, MAIASS_VERSION_PRIMARY_FILE, MAIASS_VERSION_PRIMARY_TYPE, MAIASS_DEVELOP_BRANCH, MAIASS_MAIN_BRANCH, MAIASS_AI_COMMITS, MAIASS_CHANGELOG, MAIASS_DEBUG