v1.6.0
llama-launcher is now importable as a Go library (ADR-0011). All launcher code lives in internal/launcher/, which other modules cannot import by Go rule, so driving the launcher from another program meant shelling out to the CLI. A new github.com/airiclenz/llama-launcher/launcher package exports a curated facade: type aliases for the domain types (Config, Profile, ProfileParams, ResolvedProfile, RunningInstance, StopResult, ProgressFunc, NoticeFunc), the two sentinel errors (ErrConfigNotFound, ErrNotRunning — the same values, so errors.Is works across the boundary), and one-line wrappers for the verbs: LoadConfig, DefaultConfigDir, DefaultConfigPath, DiscoverRunningInstances, LoadProfile, Stop, Unload. The documented symbols are the API, and notices are delivered as callbacks rather than written to the host's stderr. The facade adds no dependency to go.mod and leaves the CLI, the MCP adapter, and internal/launcher/'s behaviour untouched.
Also in this release:
- The two seams that used to print notices straight to stderr —
LoadConfig's non-fatal config warnings and the ADR-0007 drift notice — now deliver them to aNoticeFuncsink, the same shape as the existingProgressFunc.LoadConfigNotifyandLoadProfileNotifytake the caller's sink, while the exportedLoadConfig/LoadProfilekeep their signatures and bind the stderr printers they used before, so CLI output is byte-identical to 1.5.0. - A shipped loose end is gone from
TODO.md: the "stop/unload cannot target a still-loading (503) server" item was resolved by ADR-0010 in 1.5.0.
Usage in the README, the full contract in TDD §16. See CHANGELOG.md for the details.