ktx/packages/cli
Andrey Avtomonov 2334a4b6e3 Emit ingest_completed once per target on every ingest path
emitIngestCompleted was called only in runKtxPublicIngest's plain/json loop,
so the foreground 'ktx ingest' view and all of 'ktx setup' — which delegate to
runContextBuild -> executePublicIngestTarget — never emitted the event. That
left ingest_completed near-useless for measuring ingestion.

Move the emit into executePublicIngestTarget, the single per-target chokepoint
every entrypoint funnels through: a thin wrapper now captures timing, runs the
existing steps (extracted to runIngestTargetSteps), and emits exactly once. The
telemetry echo targets deps.runtimeIo (the real user stream) so a capture
buffer used for step output doesn't swallow it. Thread project through the
context-build call site. No schema/field changes, so Node<->Python telemetry
parity is unaffected.

Add tests: the shared chokepoint emits exactly one ingest_completed for any
caller, and a multi-target run emits one per target with no double-emit.
2026-06-02 20:03:27 +02:00
..
assets/demo/orbit Polish documentation copy (#98) 2026-05-14 12:43:14 -04:00
scripts chore(workspace): gate dead-code with knip production mode (#196) 2026-05-21 15:28:58 +02:00
src Emit ingest_completed once per target on every ingest path 2026-06-02 20:03:27 +02:00
test Emit ingest_completed once per target on every ingest path 2026-06-02 20:03:27 +02:00
package.json feat: add codex llm backend for ktx runtime work (#253) 2026-06-02 13:57:11 +02:00
tsconfig.json chore(workspace): gate dead-code with knip production mode (#196) 2026-05-21 15:28:58 +02:00
tsconfig.test.json test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00
vitest.config.ts test: split cli tests from source tree (#216) 2026-05-26 08:49:05 +02:00