ktx/packages/cli/test
Andrey Avtomonov 470802e58e
fix(cli): classify ktx setup abandonment as aborted, not a blank error (#278)
* fix(cli): classify ktx setup abandonment as aborted, not a blank error

ktx setup returned a non-zero exit code without throwing when a user
abandoned the interactive wizard, so the command telemetry recorded
outcome=error with no errorClass/errorDetail — an unactionable blank in
the errors dashboard, where most ktx setup "errors" were really people
backing out of the wizard.

Add annotateCommandOutcome() to the command span so the setup flow (the
decision-maker) records the true outcome: genuine step failures and
--no-input missing input become outcome=error with a self-diagnosing
reason, while interactive abandonment and project cancellation become
outcome=aborted and drop out of the error view.

Unify the exit code and telemetry through setupTerminalOutcome() so they
can never diverge: aborts now exit 0 (matching the entry-menu Exit,
project cancel, and a confirmed Ctrl+C), while failures and automation
errors still exit 1.

* fix(cli): treat non-TTY setup missing-input as an error, not an abort

setupTerminalOutcome classified `missing-input` by `args.inputMode`, but
`auto` only means "interactive if a TTY is attached". A piped/CI `ktx
setup` without `--no-input` and without `--yes` is still `auto`, yet the
project and agents steps return `missing-input` there without ever
prompting (e.g. "pass --yes to create a project outside an interactive
terminal"). Classifying that as `aborted` made a broken automation run
exit 0 — a silent failure.

Key the classification off actual interactivity instead: input enabled
AND `io.stdout.isTTY === true`. Non-interactive missing-input now exits
1 with a `KtxSetupMissingInput` reason; only a genuine interactive abort
exits 0. Adds a non-TTY regression test and fixes the abandonment test
to use a real TTY.
2026-06-09 12:53:15 +02:00
..
commands feat(cli): shell completion for commands, flags, and entity names (#244) 2026-05-31 23:44:33 +02:00
completion feat(cli): shell completion for commands, flags, and entity names (#244) 2026-05-31 23:44:33 +02:00
connectors feat(mysql): implement columnStats using INFORMATION_SCHEMA.STATISTICS (#233) 2026-06-08 12:21:19 +02:00
context fix(cli): ensure git committer identity during ktx setup (#276) 2026-06-09 12:10:02 +02:00
fixtures test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
io feat(cli): add Slack community CTA on errors, crashes, setup, and help (#277) 2026-06-09 12:22:56 +02:00
llm feat: add codex llm backend for ktx runtime work (#253) 2026-06-02 13:57:11 +02:00
star-prompt feat: add GitHub star nudges to CLI build view and docs sidebar (#271) 2026-06-08 16:14:56 +02:00
telemetry fix(cli): classify ktx setup abandonment as aborted, not a blank error (#278) 2026-06-09 12:53:15 +02:00
update-check feat(cli): add channel-aware update notifier (#265) 2026-06-06 10:42:10 +02:00
admin-reindex.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
admin.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
cli-program-telemetry.test.ts fix(cli): classify ktx setup abandonment as aborted, not a blank error (#278) 2026-06-09 12:53:15 +02:00
cli-program.test.ts feat(cli): add Slack community CTA on errors, crashes, setup, and help (#277) 2026-06-09 12:22:56 +02:00
cli-runtime.test.ts feat(cli): add Slack community CTA on errors, crashes, setup, and help (#277) 2026-06-09 12:22:56 +02:00
command-tree.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
community-cta.test.ts feat(cli): add Slack community CTA on errors, crashes, setup, and help (#277) 2026-06-09 12:22:56 +02:00
connection-recovery.test.ts feat(cli): consistent connection setup recovery and build-time gate (#257) 2026-06-03 11:08:46 +00:00
connection.test.ts feat(telemetry): collect PostHog $exception error reports in CLI and daemon (#262) 2026-06-05 19:36:21 +02:00
context-build-view.test.ts feat: add GitHub star nudges to CLI build view and docs sidebar (#271) 2026-06-08 16:14:56 +02:00
database-tree-picker.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
demo-assets.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
demo-metrics.test.ts fix(ingest): drive work-unit progress from tool calls, not turn counts (#269) 2026-06-08 15:30:35 +02:00
doctor.test.ts feat: add codex llm backend for ktx runtime work (#253) 2026-06-02 13:57:11 +02:00
embedding-resolution.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
example-smoke.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
index.test.ts feat(setup): apply per-role LLM model presets, remove --llm-model (#268) 2026-06-08 15:30:48 +02:00
ingest-query-executor.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
ingest-report-file.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
ingest-viz.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
ingest.test-utils.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
ingest.test.ts feat(setup): apply per-role LLM model presets, remove --llm-model (#268) 2026-06-08 15:30:48 +02:00
knowledge.test.ts feat(cli): shell completion for commands, flags, and entity names (#244) 2026-05-31 23:44:33 +02:00
local-adapters.test.ts feat(query-history): scope mining to modeled schemas by default (#258) 2026-06-03 17:19:42 +02:00
local-scan-connectors.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
managed-local-embeddings.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
managed-mcp-daemon.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
managed-python-command.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
managed-python-daemon.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
managed-python-http.test.ts feat(query-history): scope mining to modeled schemas by default (#258) 2026-06-03 17:19:42 +02:00
managed-python-runtime.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
mcp-http-server.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
mcp-server-factory.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
memory-flow-interactive.test.ts fix(ingest): drive work-unit progress from tool calls, not turn counts (#269) 2026-06-08 15:30:35 +02:00
memory-flow-tui.test.tsx fix(ingest): drive work-unit progress from tool calls, not turn counts (#269) 2026-06-08 15:30:35 +02:00
next-steps.test.ts feat(cli): guide next action at end of ktx setup, not reruns (#256) 2026-06-03 01:00:21 +02:00
notion-page-picker.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
print-command-tree.test.ts feat(cli): shell completion for commands, flags, and entity names (#244) 2026-05-31 23:44:33 +02:00
progress-port-adapter.test.ts feat(cli): stream plain ktx ingest progress to stderr (KLO-726) (#251) 2026-06-01 23:31:31 +02:00
project-dir.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
project-resolver.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
prompt-navigation.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
proxy-env.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
public-ingest-copy.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
public-ingest.test.ts feat(telemetry): collect PostHog $exception error reports in CLI and daemon (#262) 2026-06-05 19:36:21 +02:00
reveal-password-prompt.test.ts feat(setup): wizard prompt tweaks and quieter query-history filter output (#259) 2026-06-04 14:11:08 +02:00
runtime-requirements.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
runtime.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
scan.test.ts feat(telemetry): collect PostHog $exception error reports in CLI and daemon (#262) 2026-06-05 19:36:21 +02:00
setup-agents.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
setup-context.test.ts feat(cli): consistent connection setup recovery and build-time gate (#257) 2026-06-03 11:08:46 +00:00
setup-databases.test.ts feat(setup): wizard prompt tweaks and quieter query-history filter output (#259) 2026-06-04 14:11:08 +02:00
setup-demo-tour.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
setup-embeddings.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
setup-interrupt.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
setup-models.test.ts feat(setup): apply per-role LLM model presets, remove --llm-model (#268) 2026-06-08 15:30:48 +02:00
setup-project.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
setup-prompts.test.ts feat(setup): wizard prompt tweaks and quieter query-history filter output (#259) 2026-06-04 14:11:08 +02:00
setup-ready-menu.test.ts feat(cli): guide next action at end of ktx setup, not reruns (#256) 2026-06-03 01:00:21 +02:00
setup-runtime.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
setup-secrets.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
setup-sources-notion.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
setup-sources.test.ts feat(setup): wizard prompt tweaks and quieter query-history filter output (#259) 2026-06-04 14:11:08 +02:00
setup.test.ts fix(cli): classify ktx setup abandonment as aborted, not a blank error (#278) 2026-06-09 12:53:15 +02:00
sl.test.ts feat(telemetry): collect PostHog $exception error reports in CLI and daemon (#262) 2026-06-05 19:36:21 +02:00
source-mapping.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
sql.test.ts feat(telemetry): collect PostHog $exception error reports in CLI and daemon (#262) 2026-06-05 19:36:21 +02:00
standalone-smoke.test.ts feat(cli)!: remove fast mode; ktx ingest always builds enriched context (KLO-721) (#237) 2026-05-29 17:41:04 +02:00
status-project.test.ts feat: add codex llm backend for ktx runtime work (#253) 2026-06-02 13:57:11 +02:00
text-ingest.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
tree-picker-state.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
tree-picker-tui.test.tsx test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
viz-fallback.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00