mirror of
https://github.com/Kaelio/ktx.git
synced 2026-07-04 10:52:13 +02:00
fix: surface silent failures and drop unused dead-code paths (#193)
Address overengineering audit findings across cli/context/connector packages: - F1 Snowflake `query`: drop bare catch that flattened all errors to empty result - F2 memory-agent: treat LLM `stopReason === 'error'` as crash (skip squash-merge) - F3 WikiSearchTool: description honest about token-only fallback vs sqlite-fts5 hybrid - F5 Scan enrichment provider resolution: return discriminated status and surface distinct `llm_unavailable` / `embedding_unavailable` warnings per failure mode - F6 Relationship validation budget: drop dead `tableCount === undefined → 'all'` branch; update tests to pass `tableCount` like production - F8 `ktx sql`: use canonical `resolveOutputMode` (now honors KTX_OUTPUT/CI/TTY) - F9 MCP stdio server: default `protocolIo.stderr` to `process.stderr` so memory_ingest startup failures are visible - F13/F14 Scan/setup JSON readers: distinguish ENOENT from corruption instead of silently treating both as missing - F15 `createKtxCliScanConnector`: throw config-shape error when driver matches but type guard rejects, instead of "no native connector" - F16 ContextEvidenceSearchTool: surface `embedding_unhealthy:<reason>` instead of silently dropping the semantic lane - F17 PromptService: default partials to `[]` (removes stale `clinical_policy` reference from a prior product) - F20 `contextBuildCommands`: drop unused `runId` parameter Dead-code removal: - F4 Delete `AgentRunnerService` (duplicated `RuntimeAgentRunner`, only test-used); migrate tests to exercise `AiSdkKtxLlmRuntime.runAgentLoop` directly - F7 Delete `KtxScanOrchestrator` and its test (no production callers; the inline pipeline in `runLocalScan` is the single source of truth) - F18 Delete `generateKtxText`/`generateKtxObject` pass-through helpers; inline the single `runtime.generateObject` call at its caller Plus a clarifying comment on the SQLite `resolveStringReference` `file:` carve-out (load-bearing for SQLite URI form, not a bug).
This commit is contained in:
parent
7737ccaf1a
commit
0958bc03dc
27 changed files with 186 additions and 820 deletions
|
|
@ -115,6 +115,7 @@ describe('relationship validation', () => {
|
|||
profiles,
|
||||
executor,
|
||||
ctx: { runId: 'validate-test' },
|
||||
tableCount: testSchema.tables.length,
|
||||
});
|
||||
|
||||
expect(validated).toHaveLength(1);
|
||||
|
|
@ -163,6 +164,7 @@ describe('relationship validation', () => {
|
|||
profiles,
|
||||
executor,
|
||||
ctx: { runId: 'validate-test' },
|
||||
tableCount: testSchema.tables.length,
|
||||
settings: {
|
||||
minSourceCoverage: 0.9,
|
||||
maxViolationRatio: 0.01,
|
||||
|
|
@ -332,6 +334,7 @@ describe('relationship validation', () => {
|
|||
profiles,
|
||||
executor,
|
||||
ctx: { runId: 'llm-rejected-validation' },
|
||||
tableCount: testSchema.tables.length,
|
||||
});
|
||||
|
||||
expect(validated?.status).toBe('rejected');
|
||||
|
|
@ -385,6 +388,7 @@ describe('relationship validation', () => {
|
|||
profiles,
|
||||
executor: throttled,
|
||||
ctx: { runId: 'validation-concurrency' },
|
||||
tableCount: testSchema.tables.length,
|
||||
settings: { concurrency: 1 },
|
||||
});
|
||||
|
||||
|
|
@ -476,6 +480,7 @@ describe('relationship validation', () => {
|
|||
profiles,
|
||||
executor,
|
||||
ctx: { runId: 'rule-b-validation-score' },
|
||||
tableCount: 2,
|
||||
});
|
||||
|
||||
expect(validated).toMatchObject({
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue