ktx/packages/cli/test
Andrey Avtomonov cb6a67c2d7 Make telemetry reliable across interrupts and headless installs
Three reliability gaps surfaced while auditing why PostHog numbers were
untrustworthy:

1. Interrupted commands lost their events. capture() is fire-and-forget and the
   only flush guarantee lived in a finally block, which SIGINT/SIGTERM skip — so
   Ctrl-C'ing a long ingest or an MCP client killing 'ktx mcp stdio' dropped the
   command event and any queued events. Add SIGINT/SIGTERM handlers (real-process
   entry only; never under test/programmatic io) that mark the active command
   span aborted, emit it, drain the emitter, then exit. Idempotent with the
   normal finally path via the single-consume command span.

2. Headless-first installs were invisible. loadTelemetryIdentity refused to mint
   an installId unless stdout was a TTY, so a machine whose first run was an
   IDE-launched MCP server or a script emitted nothing, ever. Mint on first run
   regardless of surface (still honoring CI/DO_NOT_TRACK/KTX_TELEMETRY_DISABLED),
   writing the one-time notice to stderr — safe under the MCP stdio protocol,
   which reserves stdout. Drop the now-unused stdoutIsTTY option.

3. No guard against silent emit regressions (the 0.7.0 scan_completed blackout).
   Add tests: the shared executePublicIngestTarget chokepoint emits exactly one
   ingest_completed on success and on the preflight-failure branch, and a
   database target invokes the scan that emits scan_completed; plus coverage for
   the aborted-flush helper.

Identity is unchanged otherwise: every event still attributes to the installId
in ~/.ktx/telemetry.json. No event/field changes, so Node<->Python schema parity
is untouched. Docs updated to reflect first-run-on-any-surface activation.
2026-06-02 23:19:37 +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 test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
context feat: add codex llm backend for ktx runtime work (#253) 2026-06-02 13:57:11 +02:00
fixtures test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
io test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
llm feat: add codex llm backend for ktx runtime work (#253) 2026-06-02 13:57:11 +02:00
telemetry Make telemetry reliable across interrupts and headless installs 2026-06-02 23:19:37 +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 feat(cli): shell completion for commands, flags, and entity names (#244) 2026-05-31 23:44:33 +02:00
cli-program.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
command-tree.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
connection.test.ts feat(telemetry): include error details for failures (#254) 2026-06-02 17:23:51 +02:00
context-build-view.test.ts Emit ingest_completed once per target on every ingest path 2026-06-02 20:03:27 +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 test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +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(cli): shell completion for commands, flags, and entity names (#244) 2026-05-31 23:44:33 +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: add codex llm backend for ktx runtime work (#253) 2026-06-02 13:57:11 +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 test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +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 test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +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 test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
memory-flow-tui.test.tsx test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
next-steps.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +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 Make telemetry reliable across interrupts and headless installs 2026-06-02 23:19:37 +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): include error details for failures (#254) 2026-06-02 17:23:51 +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(telemetry): include error details for failures (#254) 2026-06-02 17:23:51 +02:00
setup-databases.test.ts feat(cli)!: remove fast mode; ktx ingest always builds enriched context (KLO-721) (#237) 2026-05-29 17:41:04 +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: add codex llm backend for ktx runtime work (#253) 2026-06-02 13:57:11 +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 test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
setup-ready-menu.test.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +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 fix(cli): align Notion setup credential to --source-auth-token-ref (#236) 2026-05-29 17:23:46 +02:00
setup.test.ts fix(cli): treat artifact-producing ingests with failures as partial (#238) 2026-05-30 00:42:59 +02:00
sl.test.ts feat(cli): shell completion for commands, flags, and entity names (#244) 2026-05-31 23:44:33 +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 test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +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