Exposes Bau operations behind CLI and MCP entry points.
Types
CompileCommandsMemberResult = object path*: string ## Workspace member path. name*: string ## Workspace member package name. entries*: int ## Number of compile command entries written.
- Per-member compile commands summary.
CompileCommandsResult = object workspace*: bool ## True when multiple workspace members were processed. root*: string ## Workspace or project root. path*: string ## Single-project compile commands path. entries*: int ## Single-project entry count. members*: seq[CompileCommandsMemberResult] ## Workspace member summaries.
- Result of generating compile commands.
OperationOptions = object profile*: string ## Build or documentation profile. features*: seq[string] ## Explicit feature names requested by the caller. allFeatures*: bool ## Enable every non-default feature. noDefaultFeatures*: bool ## Skip the default feature. since*: string ## Git revision or ref for affected analysis. taskName*: string ## Task name for task-oriented operations. queryKind*: string ## Query mode such as `deps` or `why`. queryName*: string ## Target, task, feature, or dependency being queried. runArgs*: seq[string] ## Arguments passed through to `run`. filter*: string ## Optional dependency or test filter. precise*: string ## Exact dependency revision for update operations. verbose*: bool ## Whether nested commands should print details. allTargets*: bool ## Select all eligible targets. update*: bool ## Request dependency update rather than sync. force*: bool ## Allow overwriting or bypass cached state. dryRun*: bool ## Plan the operation without writing when supported. targetName*: string ## Explicit build or install target name. installAction*: string ## Install action text such as `install` or `remove`. installDir*: string ## Installation directory override. depName*: string ## Dependency name for add/remove operations. depVersion*: string ## Dependency version requirement. depGit*: string ## Dependency Git URL. depTag*: string ## Dependency Git tag. depBranch*: string ## Dependency Git branch. depRev*: string ## Dependency exact Git revision. depPath*: string ## Dependency local path. depRegistry*: string ## Dependency registry source. depOptional*: bool ## Whether the dependency is optional. initName*: string ## Package name for project initialization. initKind*: string ## Project kind for initialization. initDir*: string ## Directory for project initialization. convertPath*: string ## Nimble file or directory to convert. formatVersion*: int ## Metadata JSON format version. docOutDir*: string ## Documentation output directory override. docEntrypoints*: seq[string] ## Additional documentation entrypoints. docSkipExamples*: bool ## Skip compiling runnable examples during docs. docIncludePrivate*: bool ## Include private symbols in docs. docNoIndex*: bool ## Suppress generated docs index. depsAction*: string ## Dependency action such as `sync`, `lock`, or `vendor`. cacheAction*: string ## Task cache action such as `list`, `clean`, or `explain`. affectedAction*: string ## Affected action such as `list`, `check`, `test`, or `build`. list*: bool ## Request list output for operations that support it. write*: bool ## Write discovered changes when supported. keepGoing*: bool ## Continue independent task dependencies after failures. taskArgs*: seq[string] ## Arguments passed to the root task. offline*: bool ## Avoid network dependency operations. locked*: bool ## Require an up-to-date lockfile before dependency work. bumpKind*: string ## Version component to bump. ciKind*: string ## CI template kind such as `github` or `gitlab`. shellName*: string ## Shell name for shell initialization. testChanged*: bool ## Limit tests to changed files. testFull*: bool ## Run the full configured test matrix. testFast*: bool ## Run the fast local test mode. testNoMatrix*: bool ## Run one test profile instead of the matrix. testNoRunner*: bool ## Discover test files instead of using a runner. testShowOutput*: string ## Test output mode override. jobs*: int ## Maximum parallel jobs for operations that support it. jobsExplicit*: bool ## True when jobs was provided explicitly. agentTargets*: seq[string] ## Agent hosts to configure for MCP setup.
- Shared options accepted by CLI and MCP operations.
OperationResult = object ok*: bool ## True when the operation succeeded. json*: JsonNode ## Machine-readable result payload. output*: string ## Human-readable or compiler output.
- Standard result returned by operation APIs.
Procs
proc addDependencyOperation(projectDir: string; opts: OperationOptions): OperationResult {. ...raises: [Exception, IOError, ValueError, OSError, TomlError, KeyError], tags: [ ReadIOEffect, RootEffect, WriteIOEffect, WriteDirEffect, ReadDirEffect, ReadEnvEffect, ExecIOEffect, TimeEffect], forbids: [].}
- Add a dependency to config, sync it, and refresh the lockfile.
proc affectedOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [ ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect, WriteDirEffect, ExecIOEffect, TimeEffect, WriteEnvEffect], forbids: [].}
- Return or run affected targets, tests, tasks, and source files.
proc agentSetupOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [], tags: [ReadDirEffect, ReadIOEffect, WriteDirEffect, WriteIOEffect, RootEffect], forbids: [].}
- Write project-local MCP and skill setup for coding agents.
proc buildOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [ ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect, WriteEnvEffect, WriteDirEffect, ExecIOEffect, TimeEffect], forbids: [].}
- Build project targets.
proc bumpOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [Exception], tags: [ReadIOEffect, RootEffect, WriteIOEffect, WriteDirEffect, ReadDirEffect], forbids: [].}
- Increment Package version intent.
proc cacheExplainOperation(projectDir: string; opts: OperationOptions): OperationResult {....raises: [ IOError, ValueError, OSError, TomlError, KeyError, Exception, LibraryError, SslError], tags: [ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect, TimeEffect], forbids: [].}
- Explain local and remote task-cache lookup state for one task.
proc cacheOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {....raises: [ IOError, ValueError, OSError, TomlError, KeyError, Exception, LibraryError, SslError], tags: [ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect, WriteDirEffect, TimeEffect], forbids: [].}
- List, clean, or explain task cache entries.
proc checkOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [ ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect, ExecIOEffect, TimeEffect], forbids: [].}
- Run nim check against configured main files.
proc ciOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [ ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect, ExecIOEffect, TimeEffect, WriteDirEffect], forbids: [].}
- Run validation-oriented CI checks without rewriting source files.
proc ciTemplateOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [OSError, IOError], tags: [WriteDirEffect, ReadDirEffect, WriteIOEffect], forbids: [].}
- Write a CI template file.
proc cleanOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [OSError], tags: [ReadDirEffect, WriteDirEffect], forbids: [].}
- Remove the project's build directory.
proc compileCommandEntries(projectDir: string; cfg: BauConfig; profile: string; selection: FeatureSelection): seq[JsonNode] {. ...raises: [ValueError, KeyError, OSError, IOError], tags: [ReadEnvEffect, ReadDirEffect, ReadIOEffect], forbids: [].}
- Build compile command entries for source and test Nim files.
proc compileCommandsOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [ ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect, WriteDirEffect], forbids: [].}
- Write compile_commands.json for a project or workspace.
proc convertOperation(projectDir: string; opts: OperationOptions): OperationResult {. ...raises: [ValueError, OSError], tags: [ReadDirEffect, ReadIOEffect, WriteDirEffect, WriteIOEffect], forbids: [].}
- Convert a Nimble project into Bau configuration.
proc defaultOperationOptions(): OperationOptions {....raises: [], tags: [], forbids: [].}
- Return default operation options shared by CLI and MCP callers.
proc dependencyStatusOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [ ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect, ExecIOEffect, TimeEffect], forbids: [].}
- Return dependency status data for a project or workspace.
proc dependencyTreeOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [ ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect], forbids: [].}
- Return dependency tree data for a project or workspace.
proc depsOperation(projectDir: string; opts: OperationOptions): OperationResult {. ...raises: [Exception], tags: [ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect, ExecIOEffect, TimeEffect, WriteDirEffect], forbids: [].}
- Run dependency sync, lock, update, verify, vendor, or patch operations.
proc depsVerifyOperation(projectDir: string; opts: OperationOptions): OperationResult {. ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [ ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect, ExecIOEffect, TimeEffect], forbids: [].}
proc docOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [ ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect, WriteDirEffect, ExecIOEffect, TimeEffect], forbids: [].}
- Build API documentation for a project or workspace.
proc doctorOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [Exception], tags: [ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect, ExecIOEffect, TimeEffect], forbids: [].}
- Check configured toolchain requirements.
proc envOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [Exception, ValueError, KeyError, OSError, IOError], tags: [ ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect], forbids: [].}
- Return the resolved Build Environment summary.
proc explainOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {....raises: [ IOError, ValueError, OSError, TomlError, KeyError, Exception, JsonParsingError], tags: [ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect], forbids: [].}
- Explain build fingerprint state for a project or workspace.
proc fmtOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [OSError, IOError, ValueError], tags: [ReadDirEffect, ReadEnvEffect, ReadIOEffect, ExecIOEffect, RootEffect, TimeEffect, WriteIOEffect], forbids: [].}
- Format Nim source files under src with nimpretty.
proc graphOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [ ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect], forbids: [].}
- Return project or workspace graph data.
proc initOperation(projectDir: string; opts: OperationOptions): OperationResult {. ...raises: [ValueError, OSError, IOError], tags: [ReadDirEffect, WriteDirEffect, WriteIOEffect], forbids: [].}
- Initialize a new Bau project.
proc installOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {....raises: [ IOError, ValueError, OSError, TomlError, KeyError, Exception, Exception], tags: [ ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect, WriteDirEffect, WriteEnvEffect, ExecIOEffect, TimeEffect], forbids: [].}
- Install, update, or remove built binary targets.
proc lintOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [ ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect, ExecIOEffect, TimeEffect], forbids: [].}
- Check Nim source style without rewriting files.
proc metadataOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [ ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect], forbids: [].}
- Return effective configuration metadata for a project or workspace.
proc packageOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [Exception], tags: [ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect, WriteDirEffect], forbids: [].}
- Validate Package Contents and optionally write a package manifest output.
proc publishOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [Exception], tags: [ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect, WriteDirEffect, ExecIOEffect, TimeEffect], forbids: [].}
- Validate or submit a Package Publication.
proc queryOperation(projectDir: string; opts: OperationOptions): OperationResult {. ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [ ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect], forbids: [].}
- Run dependency and explanation queries.
proc removeDependencyOperation(projectDir: string; opts: OperationOptions): OperationResult {. ...raises: [Exception, IOError, ValueError, OSError, TomlError, KeyError], tags: [ ReadIOEffect, RootEffect, WriteIOEffect, WriteDirEffect, ReadDirEffect, ReadEnvEffect, TimeEffect, ExecIOEffect], forbids: [].}
- Remove a dependency from config and refresh the lockfile.
proc resultJson(node: JsonNode): OperationResult {....raises: [], tags: [], forbids: [].}
- Wrap a JSON node in a successful operation result.
proc runOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [ ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect, WriteEnvEffect, WriteDirEffect, ExecIOEffect, TimeEffect], forbids: [].}
- Build and run a project target.
proc shellInitOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [], tags: [ReadEnvEffect, ReadIOEffect, ReadDirEffect, WriteDirEffect, WriteIOEffect], forbids: [].}
- Add Bau's binary directory to the selected shell startup file.
proc tailorOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [ ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect, WriteDirEffect], forbids: [].}
- Discover or write missing target declarations.
proc taskOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {....raises: [ IOError, ValueError, OSError, TomlError, KeyError, Exception, Exception], tags: [ ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect, WriteEnvEffect, WriteDirEffect, ExecIOEffect, TimeEffect], forbids: [].}
- List or run project tasks.
proc testOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {. ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [ ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect, WriteDirEffect, ExecIOEffect, TimeEffect], forbids: [].}
- Compile and run project tests, returning aggregate counts.