ktx/scripts/relationship-benchmark-report.mjs
Andrey Avtomonov 34d4a1e9e1 refactor(cli): delete internal barrel index.ts files
The 34 `index.ts` re-export barrels inside `packages/cli/src/` were
holdovers from the pre-fold multi-workspace structure. Post-fold-in they
served no production purpose: external consumers go through the single
package main entry, and in-repo callers mostly imported through them
only because the path was short. Internally, knip flagged most barrel
re-exports as production-dead (only reached via tests).

This change:
- Deletes every internal barrel except `packages/cli/src/index.ts`
  (the published package entry).
- Rewrites ~270 source/test files to import each name directly from
  the file that defines it.
- Moves `tools/warehouse-verification/index.ts` to
  `create-warehouse-verification-tools.ts` (the function it defined
  locally) and updates its single consumer.
- Renames `search/backend-conformance.ts` → `.test-utils.ts` to match
  the existing test-helper file convention.
- Deletes 13 dead test-only chains (dbt-descriptions/*,
  live-database/extracted-schema, live-database/structural-sync,
  relationship-* feedback/review chain) plus their tests and a
  cascading orphan integration test.
- Updates test mocks that pointed at deleted barrel paths
  (notion-client, connector barrels in scan/local-scan-connectors
  tests) to mock the source files instead.
- Points the maintainer benchmark script
  (`scripts/relationship-benchmark-report.mjs`) at source files
  instead of `dist/context/scan/index.js`.
- Drops the barrel `!` entries from `knip.json`; adds explicit
  production entries only for the benchmark code reached via dist by
  the maintainer script.

Net: 413 files changed, ~1.2k insertions, ~9.4k deletions.

`pnpm run dead-code` (Biome + knip default + knip production) and
`pnpm run type-check` are clean; 2277 tests pass.
2026-05-21 12:41:20 +02:00

54 lines
2 KiB
JavaScript

import { dirname, join, resolve } from 'node:path';
import { fileURLToPath } from 'node:url';
import {
buildKtxRelationshipBenchmarkReport,
formatKtxRelationshipBenchmarkReportMarkdown,
} from '../packages/cli/dist/context/scan/relationship-benchmark-report.js';
import {
KTX_RELATIONSHIP_BENCHMARK_MODES,
currentKtxRelationshipBenchmarkDetector,
ktxRelationshipBenchmarkDetectorWithLlm,
loadKtxRelationshipBenchmarkFixtures,
runKtxRelationshipBenchmarkSuite,
} from '../packages/cli/dist/context/scan/relationship-benchmarks.js';
const scriptDir = dirname(fileURLToPath(import.meta.url));
const ktxRoot = resolve(scriptDir, '..');
const fixtureRoot = join(ktxRoot, 'packages/cli/src/test/fixtures/relationship-benchmarks');
async function buildDetector() {
const backend = process.env.KTX_BENCHMARK_LLM_BACKEND;
if (!backend || backend === 'none') {
return currentKtxRelationshipBenchmarkDetector();
}
if (backend !== 'vertex') {
throw new Error(`Unsupported KTX_BENCHMARK_LLM_BACKEND: ${backend}`);
}
const project = process.env.KTX_BENCHMARK_VERTEX_PROJECT;
const location = process.env.KTX_BENCHMARK_VERTEX_LOCATION;
const model = process.env.KTX_BENCHMARK_LLM_MODEL ?? 'claude-sonnet-4-6';
if (!project || !location) {
throw new Error('KTX_BENCHMARK_VERTEX_PROJECT and KTX_BENCHMARK_VERTEX_LOCATION are required for vertex backend');
}
const { createKtxLlmProvider } = await import('../packages/cli/dist/llm/index.js');
const provider = createKtxLlmProvider({
backend: 'vertex',
vertex: { project, location },
modelSlots: { default: model },
});
return ktxRelationshipBenchmarkDetectorWithLlm(provider);
}
const fixtures = await loadKtxRelationshipBenchmarkFixtures(fixtureRoot);
const detector = await buildDetector();
const suite = await runKtxRelationshipBenchmarkSuite({
fixtures,
detector,
});
const report = buildKtxRelationshipBenchmarkReport({
fixtures,
suite,
modes: KTX_RELATIONSHIP_BENCHMARK_MODES,
});
process.stdout.write(formatKtxRelationshipBenchmarkReportMarkdown(report));