feat(cli): add --fast flag and Local data section to ktx status (#198)

Add --fast to skip checks requiring external communication (Claude Code
auth probe and Postgres pg_stat_statements probe); skipped checks render
as `-` and carry `"status": "skipped"` in JSON output. Always show a new
Local data section sourced from .ktx/db.sqlite (ingest run counts and
last-completed per connection, knowledge page counts by scope, semantic
layer source/dictionary value counts) plus on-disk sizes for .ktx/db.sqlite,
.ktx/cache/, raw-sources/, wiki/global/, and semantic-layer/. Wrap the
remaining slow probes in a @clack/prompts spinner when stdout is a TTY.
This commit is contained in:
Andrey Avtomonov 2026-05-21 14:13:03 +02:00 committed by GitHub
parent 50c7bbc957
commit 1c7131c6c2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 740 additions and 13 deletions

View file

@ -18,10 +18,11 @@ export function registerStatusCommands(program: Command, context: KtxCliCommandC
.option('--json', 'Print JSON output', false)
.option('-v, --verbose', 'Show every check, including passing ones', false)
.option('--validate', 'Only validate the ktx.yaml schema; skip readiness checks', false)
.option('--fast', 'Skip checks that require external communication (DB probes, auth probes)', false)
.option('--no-input', 'Disable interactive terminal input')
.action(
async (
options: { json?: boolean; verbose?: boolean; validate?: boolean; input?: boolean },
options: { json?: boolean; verbose?: boolean; validate?: boolean; fast?: boolean; input?: boolean },
command,
) => {
const runner = context.deps.doctor ?? (await import('../doctor.js')).runKtxDoctor;
@ -64,6 +65,7 @@ export function registerStatusCommands(program: Command, context: KtxCliCommandC
projectDir: resolveCommandProjectDir(command),
outputMode: outputMode(options),
verbose: options.verbose === true,
fast: options.fast === true,
...inputMode(options),
},
context.io,