1.9 KiB
CLI Internals
internal/cli parses terminal arguments, loads configuration, constructs app requests, and translates app results to bounded JSON summaries. The public contract belongs in the CLI reference.
The root --version flag reports the build version supplied by internal/buildinfo. Tagged release builds replace its development default at link time.
The executable derives its action context from SIGINT and SIGTERM and
passes it to Runner.Run. Signal cancellation therefore uses the same action,
summary, and error paths as other context cancellation.
For each generate, run, or compare action, Runner constructs one project-owned Promptkit executor after request preflight and configuration loading. It captures an absolute working directory, resolves only a relative explicit output override against it, and passes the working directory, loaded configuration, resolved override, and any --llm-debug-dir request to the app. The raw configured fallback remains in the configuration for app-owned destination selection. run uses the same explicit-resolution rule for --out-dir.
The CLI dispatches generation, batch, and comparison actions. It has no persisted-run or inspection dispatch. Generation and batch summaries include report identity, status, output path, effective profile/backend/model, source warnings, validation, requested debug path, and notification result when available. Comparison summaries retain their ordered profile results and published bundle paths when available. All summaries intentionally exclude prompt input, raw generated text, render context, endpoints, credentials, and full Distributor payloads. A failed action with a partial result still emits its safe summary before its error is returned unless --quiet is set.
CLI code owns no report policy, weather collection, output publication, provider execution, or notification policy. Focused checks:
go test ./internal/cli