@kaelio/ktx 0.4.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2122) hide show
  1. package/assets/python/kaelio_ktx-0.6.0-py3-none-any.whl +0 -0
  2. package/assets/python/manifest.json +4 -4
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/admin-reindex.d.ts +4 -1
  5. package/dist/admin-reindex.js +6 -3
  6. package/dist/admin.js +2 -1
  7. package/dist/clack.d.ts +8 -3
  8. package/dist/clack.js +15 -1
  9. package/dist/claude-code-prompt-caching.d.ts +1 -1
  10. package/dist/cli-program.d.ts +5 -1
  11. package/dist/cli-program.js +74 -8
  12. package/dist/cli-runtime.d.ts +0 -1
  13. package/dist/cli-runtime.js +2 -2
  14. package/dist/command-schemas.d.ts +2 -2
  15. package/dist/commands/status-commands.js +10 -1
  16. package/dist/connection.d.ts +5 -2
  17. package/dist/connection.js +77 -14
  18. package/dist/connectors/bigquery/connector.d.ts +151 -0
  19. package/dist/connectors/bigquery/connector.js +420 -0
  20. package/dist/connectors/bigquery/dialect.d.ts +31 -0
  21. package/dist/connectors/bigquery/dialect.js +158 -0
  22. package/dist/connectors/bigquery/live-database-introspection.d.ts +10 -0
  23. package/dist/connectors/bigquery/live-database-introspection.js +24 -0
  24. package/dist/connectors/clickhouse/connector.d.ts +121 -0
  25. package/dist/connectors/clickhouse/connector.js +438 -0
  26. package/dist/connectors/clickhouse/dialect.d.ts +32 -0
  27. package/dist/connectors/clickhouse/dialect.js +161 -0
  28. package/dist/connectors/clickhouse/live-database-introspection.d.ts +11 -0
  29. package/dist/connectors/clickhouse/live-database-introspection.js +25 -0
  30. package/dist/connectors/mysql/connector.d.ts +125 -0
  31. package/dist/connectors/mysql/connector.js +494 -0
  32. package/dist/connectors/mysql/dialect.d.ts +31 -0
  33. package/dist/connectors/mysql/dialect.js +153 -0
  34. package/dist/connectors/mysql/live-database-introspection.d.ts +11 -0
  35. package/dist/connectors/mysql/live-database-introspection.js +25 -0
  36. package/dist/connectors/postgres/connector.d.ts +147 -0
  37. package/dist/connectors/postgres/connector.js +566 -0
  38. package/dist/connectors/postgres/dialect.d.ts +31 -0
  39. package/dist/connectors/postgres/dialect.js +173 -0
  40. package/dist/connectors/postgres/historic-sql-query-client.d.ts +14 -0
  41. package/dist/connectors/postgres/live-database-introspection.d.ts +11 -0
  42. package/dist/connectors/postgres/live-database-introspection.js +25 -0
  43. package/dist/connectors/snowflake/connector.d.ts +143 -0
  44. package/dist/connectors/snowflake/connector.js +573 -0
  45. package/dist/connectors/snowflake/dialect.d.ts +31 -0
  46. package/dist/connectors/snowflake/dialect.js +157 -0
  47. package/dist/connectors/snowflake/historic-sql-query-client.d.ts +13 -0
  48. package/dist/connectors/snowflake/historic-sql-query-client.js +20 -0
  49. package/dist/connectors/snowflake/identifiers.d.ts +2 -0
  50. package/dist/connectors/snowflake/identifiers.js +10 -0
  51. package/dist/connectors/snowflake/live-database-introspection.d.ts +12 -0
  52. package/dist/connectors/snowflake/live-database-introspection.js +26 -0
  53. package/dist/connectors/snowflake/sdk-logger.d.ts +10 -0
  54. package/dist/connectors/snowflake/sdk-logger.js +29 -0
  55. package/dist/connectors/sqlite/connector.d.ts +63 -0
  56. package/dist/connectors/sqlite/connector.js +280 -0
  57. package/dist/connectors/sqlite/dialect.d.ts +31 -0
  58. package/dist/connectors/sqlite/dialect.js +142 -0
  59. package/dist/connectors/sqlite/live-database-introspection.d.ts +8 -0
  60. package/dist/connectors/sqlite/live-database-introspection.js +24 -0
  61. package/dist/connectors/sqlserver/connector.d.ts +145 -0
  62. package/dist/connectors/sqlserver/connector.js +581 -0
  63. package/dist/connectors/sqlserver/dialect.d.ts +31 -0
  64. package/dist/connectors/sqlserver/dialect.js +153 -0
  65. package/dist/connectors/sqlserver/live-database-introspection.d.ts +11 -0
  66. package/dist/connectors/sqlserver/live-database-introspection.js +25 -0
  67. package/dist/context/connections/bigquery-identifiers.d.ts +2 -0
  68. package/dist/context/connections/bigquery-identifiers.js +15 -0
  69. package/dist/context/connections/connection-type.d.ts +25 -0
  70. package/dist/context/connections/dialect-helpers.d.ts +9 -0
  71. package/dist/context/connections/dialect-helpers.js +67 -0
  72. package/dist/context/connections/dialects.d.ts +28 -0
  73. package/dist/context/connections/dialects.js +33 -0
  74. package/dist/context/connections/drivers.d.ts +23 -0
  75. package/dist/context/connections/drivers.js +171 -0
  76. package/dist/context/connections/local-query-executor.js +39 -0
  77. package/dist/context/connections/local-warehouse-descriptor.js +70 -0
  78. package/dist/context/connections/notion-config.d.ts +44 -0
  79. package/dist/context/connections/notion-config.js +134 -0
  80. package/dist/context/connections/postgres-query-executor.js +53 -0
  81. package/dist/context/connections/query-executor.d.ts +19 -0
  82. package/dist/context/connections/sqlite-query-executor.d.ts +4 -0
  83. package/dist/context/connections/sqlite-query-executor.js +74 -0
  84. package/dist/context/core/config-reference.d.ts +3 -0
  85. package/dist/context/core/config-reference.js +30 -0
  86. package/dist/context/core/config.d.ts +26 -0
  87. package/dist/context/core/redaction.d.ts +5 -0
  88. package/dist/context/core/redaction.js +40 -0
  89. package/dist/context/core/session-worktree.service.d.ts +31 -0
  90. package/dist/context/daemon/semantic-layer-compute.d.ts +84 -0
  91. package/dist/context/daemon/semantic-layer-compute.js +194 -0
  92. package/dist/context/index-sync/reindex.d.ts +3 -0
  93. package/dist/context/index-sync/reindex.js +144 -0
  94. package/dist/context/index-sync/types.d.ts +29 -0
  95. package/dist/context/ingest/action-identity.d.ts +3 -0
  96. package/dist/context/ingest/adapters/dbt/parse.d.ts +7 -0
  97. package/dist/context/ingest/adapters/dbt/parse.js +24 -0
  98. package/dist/context/ingest/adapters/dbt-descriptions/parse-schema.d.ts +65 -0
  99. package/dist/context/ingest/adapters/dbt-descriptions/parse-schema.js +426 -0
  100. package/dist/context/ingest/adapters/historic-sql/bigquery-query-history-reader.js +187 -0
  101. package/dist/context/ingest/adapters/historic-sql/chunk-unified.js +86 -0
  102. package/dist/context/ingest/adapters/historic-sql/connection-dialect.d.ts +8 -0
  103. package/dist/context/ingest/adapters/historic-sql/connection-dialect.js +34 -0
  104. package/dist/context/ingest/adapters/historic-sql/evidence-tool.d.ts +41 -0
  105. package/dist/context/ingest/adapters/historic-sql/evidence-tool.js +91 -0
  106. package/dist/context/ingest/adapters/historic-sql/evidence.d.ts +77 -0
  107. package/dist/context/ingest/adapters/historic-sql/evidence.js +34 -0
  108. package/dist/context/ingest/adapters/historic-sql/pattern-inputs.d.ts +21 -0
  109. package/dist/context/ingest/adapters/historic-sql/pattern-inputs.js +68 -0
  110. package/dist/context/ingest/adapters/historic-sql/projection.d.ts +24 -0
  111. package/dist/context/ingest/adapters/historic-sql/projection.js +323 -0
  112. package/dist/context/ingest/adapters/historic-sql/skill-schemas.d.ts +37 -0
  113. package/dist/context/ingest/adapters/historic-sql/skill-schemas.js +25 -0
  114. package/dist/context/ingest/adapters/historic-sql/stage-unified.d.ts +13 -0
  115. package/dist/context/ingest/adapters/historic-sql/types.d.ts +183 -0
  116. package/dist/context/ingest/adapters/live-database/daemon-introspection.d.ts +21 -0
  117. package/dist/context/ingest/adapters/live-database/daemon-introspection.js +198 -0
  118. package/dist/context/ingest/adapters/live-database/live-database.adapter.js +25 -0
  119. package/dist/context/ingest/adapters/live-database/manifest.d.ts +66 -0
  120. package/dist/context/ingest/adapters/live-database/stage.d.ts +15 -0
  121. package/dist/context/ingest/adapters/live-database/stage.js +115 -0
  122. package/dist/context/ingest/adapters/live-database/types.d.ts +12 -0
  123. package/dist/context/ingest/adapters/looker/factory.d.ts +23 -0
  124. package/dist/context/ingest/adapters/looker/factory.js +23 -0
  125. package/dist/context/ingest/adapters/looker/fetch.d.ts +31 -0
  126. package/dist/context/ingest/adapters/looker/local-looker.adapter.d.ts +9 -0
  127. package/dist/context/ingest/adapters/looker/local-looker.adapter.js +35 -0
  128. package/dist/context/ingest/adapters/looker/local-runtime-store.d.ts +50 -0
  129. package/dist/context/ingest/adapters/looker/mapping.d.ts +129 -0
  130. package/dist/context/ingest/adapters/looker/mapping.js +307 -0
  131. package/dist/context/ingest/adapters/looker/reconcile.d.ts +1 -0
  132. package/dist/context/ingest/adapters/looker/reconcile.js +8 -0
  133. package/dist/context/ingest/adapters/looker/scope.d.ts +7 -0
  134. package/dist/context/ingest/adapters/looker/scope.js +57 -0
  135. package/dist/context/ingest/adapters/looker/tools/looker-query-to-sl.tool.d.ts +107 -0
  136. package/dist/context/ingest/adapters/looker/tools/looker-query-to-sl.tool.js +237 -0
  137. package/dist/context/ingest/adapters/looker/types.d.ts +439 -0
  138. package/dist/context/ingest/adapters/looker/types.js +199 -0
  139. package/dist/context/ingest/adapters/lookml/fetch-report.d.ts +17 -0
  140. package/dist/context/ingest/adapters/lookml/fetch-report.js +100 -0
  141. package/dist/context/ingest/adapters/lookml/pull-config.d.ts +38 -0
  142. package/dist/context/ingest/adapters/lookml/pull-config.js +26 -0
  143. package/dist/context/ingest/adapters/metabase/client-port.d.ts +167 -0
  144. package/dist/context/ingest/adapters/metabase/client.d.ts +116 -0
  145. package/dist/context/ingest/adapters/metabase/client.js +673 -0
  146. package/dist/context/ingest/adapters/metabase/fanout-planner.d.ts +18 -0
  147. package/dist/context/ingest/adapters/metabase/local-metabase.adapter.d.ts +14 -0
  148. package/dist/context/ingest/adapters/metabase/local-metabase.adapter.js +41 -0
  149. package/dist/context/ingest/adapters/metabase/local-source-state-store.d.ts +43 -0
  150. package/dist/context/ingest/adapters/metabase/local-source-state-store.js +176 -0
  151. package/dist/context/ingest/adapters/metabase/mapping.d.ts +102 -0
  152. package/dist/context/ingest/adapters/metabase/mapping.js +225 -0
  153. package/dist/context/ingest/adapters/metabase/serialize-card.d.ts +56 -0
  154. package/dist/context/ingest/adapters/metabase/serialize-card.js +68 -0
  155. package/dist/context/ingest/adapters/metabase/source-state-port.d.ts +24 -0
  156. package/dist/context/ingest/adapters/metabase/types.d.ts +143 -0
  157. package/dist/context/ingest/adapters/metabase/types.js +107 -0
  158. package/dist/context/ingest/adapters/metricflow/deep-parse.d.ts +78 -0
  159. package/dist/context/ingest/adapters/metricflow/deep-parse.js +461 -0
  160. package/dist/context/ingest/adapters/metricflow/import-semantic-models.d.ts +30 -0
  161. package/dist/context/ingest/adapters/metricflow/import-semantic-models.js +136 -0
  162. package/dist/context/ingest/adapters/metricflow/parse.d.ts +43 -0
  163. package/dist/context/ingest/adapters/metricflow/pull-config.d.ts +38 -0
  164. package/dist/context/ingest/adapters/metricflow/pull-config.js +24 -0
  165. package/dist/context/ingest/adapters/metricflow/semantic-models.d.ts +37 -0
  166. package/dist/context/ingest/adapters/metricflow/semantic-models.js +283 -0
  167. package/dist/context/ingest/adapters/notion/chunk.d.ts +5 -0
  168. package/dist/context/ingest/adapters/notion/chunk.js +138 -0
  169. package/dist/context/ingest/adapters/notion/cluster.d.ts +11 -0
  170. package/dist/context/ingest/adapters/notion/cluster.js +83 -0
  171. package/dist/context/ingest/adapters/notion/normalize.d.ts +11 -0
  172. package/dist/context/ingest/adapters/notion/normalize.js +166 -0
  173. package/dist/context/ingest/adapters/notion/notion-client.d.ts +75 -0
  174. package/dist/context/ingest/adapters/notion/notion-client.js +108 -0
  175. package/dist/context/ingest/artifact-gates.d.ts +26 -0
  176. package/dist/context/ingest/context-candidates/candidate-dedup.service.d.ts +27 -0
  177. package/dist/context/ingest/context-candidates/candidate-dedup.service.js +234 -0
  178. package/dist/context/ingest/context-candidates/context-candidate-carryforward.service.d.ts +31 -0
  179. package/dist/context/ingest/context-candidates/context-candidate-carryforward.service.js +131 -0
  180. package/dist/context/ingest/context-candidates/curator-pagination.service.d.ts +64 -0
  181. package/dist/context/ingest/context-candidates/curator-pagination.service.js +240 -0
  182. package/dist/context/ingest/context-candidates/types.d.ts +93 -0
  183. package/dist/context/ingest/context-evidence/context-evidence-index.service.d.ts +53 -0
  184. package/dist/context/ingest/context-evidence/context-evidence-index.service.js +303 -0
  185. package/dist/context/ingest/context-evidence/sqlite-context-evidence-store.d.ts +90 -0
  186. package/dist/context/ingest/context-evidence/sqlite-context-evidence-store.js +1025 -0
  187. package/dist/context/ingest/dbt-shared/project-vars.d.ts +14 -0
  188. package/dist/context/ingest/dbt-shared/project-vars.js +88 -0
  189. package/dist/context/ingest/dbt-shared/schema-files.d.ts +4 -0
  190. package/dist/context/ingest/dbt-shared/schema-files.js +63 -0
  191. package/dist/context/ingest/final-gate-repair.d.ts +29 -0
  192. package/dist/context/ingest/finalization-scope.d.ts +22 -0
  193. package/dist/context/ingest/historic-sql-probes/bigquery-runner.d.ts +34 -0
  194. package/dist/context/ingest/historic-sql-probes/bigquery-runner.js +99 -0
  195. package/dist/context/ingest/historic-sql-probes/postgres-runner.d.ts +26 -0
  196. package/dist/context/ingest/historic-sql-probes/postgres-runner.js +76 -0
  197. package/dist/context/ingest/historic-sql-probes/snowflake-runner.d.ts +29 -0
  198. package/dist/context/ingest/historic-sql-probes/snowflake-runner.js +62 -0
  199. package/dist/context/ingest/historic-sql-probes.d.ts +46 -0
  200. package/dist/context/ingest/historic-sql-probes.js +62 -0
  201. package/dist/context/ingest/ingest-bundle.runner.js +2247 -0
  202. package/dist/context/ingest/ingest-trace.d.ts +25 -0
  203. package/dist/context/ingest/ingest-trace.js +74 -0
  204. package/dist/context/ingest/isolated-diff/git-patch.d.ts +17 -0
  205. package/dist/context/ingest/isolated-diff/git-patch.js +79 -0
  206. package/dist/context/ingest/isolated-diff/patch-integrator.d.ts +59 -0
  207. package/dist/context/ingest/isolated-diff/textual-conflict-resolver.d.ts +23 -0
  208. package/dist/context/ingest/local-adapters.d.ts +35 -0
  209. package/dist/context/ingest/local-adapters.js +241 -0
  210. package/dist/context/ingest/local-bundle-runtime.d.ts +35 -0
  211. package/dist/context/ingest/local-bundle-runtime.js +636 -0
  212. package/dist/context/ingest/local-ingest.d.ts +82 -0
  213. package/dist/context/ingest/local-ingest.js +297 -0
  214. package/dist/context/ingest/local-mapping-reconcile.d.ts +2 -0
  215. package/dist/context/ingest/local-mapping-reconcile.js +27 -0
  216. package/dist/context/ingest/local-stage-ingest.d.ts +56 -0
  217. package/dist/context/ingest/local-stage-ingest.js +290 -0
  218. package/dist/context/ingest/memory-flow/events.d.ts +10 -0
  219. package/dist/context/ingest/memory-flow/events.js +197 -0
  220. package/dist/context/ingest/memory-flow/interaction.d.ts +11 -0
  221. package/dist/context/ingest/memory-flow/interaction.js +317 -0
  222. package/dist/context/ingest/memory-flow/schema.d.ts +18 -0
  223. package/dist/context/ingest/memory-flow/schema.js +174 -0
  224. package/dist/context/ingest/memory-flow/visuals.d.ts +25 -0
  225. package/dist/context/ingest/memory-flow/visuals.js +46 -0
  226. package/dist/context/ingest/page-triage/page-triage.service.d.ts +84 -0
  227. package/dist/context/ingest/page-triage/page-triage.service.js +318 -0
  228. package/dist/context/ingest/ports.d.ts +328 -0
  229. package/dist/context/ingest/raw-sources-paths.d.ts +6 -0
  230. package/dist/context/ingest/raw-sources-paths.js +18 -0
  231. package/dist/context/ingest/repo-fetch.d.ts +41 -0
  232. package/dist/context/ingest/repo-fetch.js +138 -0
  233. package/dist/context/ingest/report-snapshot.d.ts +2 -0
  234. package/dist/context/ingest/report-snapshot.js +212 -0
  235. package/dist/context/ingest/reports.d.ts +120 -0
  236. package/dist/context/ingest/reports.js +30 -0
  237. package/dist/context/ingest/semantic-layer-target-policy.d.ts +14 -0
  238. package/dist/context/ingest/semantic-layer-target-policy.js +28 -0
  239. package/dist/context/ingest/stages/build-reconcile-context.d.ts +61 -0
  240. package/dist/context/ingest/stages/build-wu-context.d.ts +27 -0
  241. package/dist/context/ingest/stages/build-wu-context.js +87 -0
  242. package/dist/context/ingest/stages/stage-3-work-units.d.ts +49 -0
  243. package/dist/context/ingest/stages/stage-3-work-units.js +108 -0
  244. package/dist/context/ingest/stages/stage-4-reconciliation.d.ts +28 -0
  245. package/dist/context/ingest/stages/stage-index.types.d.ts +51 -0
  246. package/dist/context/ingest/stages/validate-wu-sources.d.ts +10 -0
  247. package/dist/context/ingest/tools/tool-call-logger.d.ts +33 -0
  248. package/dist/context/ingest/tools/verification-ledger.tool.d.ts +14 -0
  249. package/dist/context/ingest/tools/warehouse-verification/create-warehouse-verification-tools.d.ts +9 -0
  250. package/dist/context/ingest/tools/warehouse-verification/discover-data.tool.d.ts +36 -0
  251. package/dist/context/ingest/tools/warehouse-verification/discover-data.tool.js +94 -0
  252. package/dist/context/ingest/tools/warehouse-verification/entity-details.tool.d.ts +43 -0
  253. package/dist/context/ingest/tools/warehouse-verification/entity-details.tool.js +137 -0
  254. package/dist/context/ingest/tools/warehouse-verification/sql-execution.tool.d.ts +31 -0
  255. package/dist/context/ingest/tools/warehouse-verification/sql-execution.tool.js +84 -0
  256. package/dist/context/ingest/types.d.ts +203 -0
  257. package/dist/context/ingest/wiki-body-refs.d.ts +26 -0
  258. package/dist/context/ingest/wiki-body-refs.js +112 -0
  259. package/dist/context/ingest/wiki-sl-ref-repair.d.ts +19 -0
  260. package/dist/context/llm/ai-sdk-runtime.d.ts +24 -0
  261. package/dist/context/llm/ai-sdk-runtime.js +133 -0
  262. package/dist/context/llm/claude-code-env.d.ts +3 -0
  263. package/dist/context/llm/claude-code-env.js +22 -0
  264. package/dist/context/llm/claude-code-runtime.d.ts +37 -0
  265. package/dist/context/llm/claude-code-runtime.js +281 -0
  266. package/dist/context/llm/debug-request-recorder.d.ts +45 -0
  267. package/dist/context/llm/debug-request-recorder.js +80 -0
  268. package/dist/context/llm/embedding-port.d.ts +17 -0
  269. package/dist/context/llm/local-config.d.ts +24 -0
  270. package/dist/context/llm/local-config.js +136 -0
  271. package/dist/context/llm/runtime-port.d.ts +60 -0
  272. package/dist/context/llm/runtime-tools.d.ts +9 -0
  273. package/dist/context/llm/runtime-tools.js +65 -0
  274. package/dist/context/mcp/context-tools.d.ts +12 -0
  275. package/dist/context/mcp/context-tools.js +565 -0
  276. package/dist/context/mcp/local-project-ports.d.ts +16 -0
  277. package/dist/context/mcp/local-project-ports.js +199 -0
  278. package/dist/context/mcp/server.d.ts +8 -0
  279. package/dist/context/mcp/server.js +29 -0
  280. package/dist/context/mcp/types.d.ts +169 -0
  281. package/dist/context/memory/capture-signals.d.ts +9 -0
  282. package/dist/context/memory/capture-signals.js +104 -0
  283. package/dist/context/memory/local-memory.d.ts +24 -0
  284. package/dist/context/memory/local-memory.js +418 -0
  285. package/dist/context/memory/memory-agent.service.d.ts +60 -0
  286. package/dist/context/memory/memory-agent.service.js +540 -0
  287. package/dist/context/memory/memory-runs.d.ts +55 -0
  288. package/dist/context/memory/types.d.ts +145 -0
  289. package/dist/context/project/config.d.ts +470 -0
  290. package/dist/context/project/config.js +325 -0
  291. package/dist/context/project/driver-schemas.d.ts +101 -0
  292. package/dist/context/project/driver-schemas.js +182 -0
  293. package/dist/context/project/local-git-file-store.d.ts +24 -0
  294. package/dist/context/project/mappings-yaml-schema.d.ts +61 -0
  295. package/dist/context/project/mappings-yaml-schema.js +111 -0
  296. package/dist/context/project/project.d.ts +30 -0
  297. package/dist/context/project/project.js +94 -0
  298. package/dist/context/project/setup-config.d.ts +13 -0
  299. package/dist/context/project/setup-config.js +80 -0
  300. package/dist/context/prompts/prompt.service.d.ts +28 -0
  301. package/dist/context/prompts/prompt.service.js +84 -0
  302. package/dist/context/scan/constraint-discovery.d.ts +19 -0
  303. package/dist/context/scan/constraint-discovery.js +23 -0
  304. package/dist/context/scan/credentials.d.ts +10 -0
  305. package/dist/context/scan/credentials.js +41 -0
  306. package/dist/context/scan/data-dictionary.d.ts +26 -0
  307. package/dist/context/scan/data-dictionary.js +67 -0
  308. package/dist/context/scan/description-generation.d.ts +148 -0
  309. package/dist/context/scan/description-generation.js +760 -0
  310. package/dist/context/scan/embedding-text.d.ts +22 -0
  311. package/dist/context/scan/enabled-tables.d.ts +15 -0
  312. package/dist/context/scan/enabled-tables.js +48 -0
  313. package/dist/context/scan/enrichment-state.d.ts +47 -0
  314. package/dist/context/scan/enrichment-state.js +44 -0
  315. package/dist/context/scan/enrichment-types.d.ts +103 -0
  316. package/dist/context/scan/entity-details.d.ts +58 -0
  317. package/dist/context/scan/entity-details.js +186 -0
  318. package/dist/context/scan/local-enrichment-artifacts.d.ts +32 -0
  319. package/dist/context/scan/local-enrichment-artifacts.js +275 -0
  320. package/dist/context/scan/local-enrichment.d.ts +46 -0
  321. package/dist/context/scan/local-enrichment.js +479 -0
  322. package/dist/context/scan/local-scan.d.ts +62 -0
  323. package/dist/context/scan/local-scan.js +450 -0
  324. package/dist/context/scan/local-structural-artifacts.d.ts +10 -0
  325. package/dist/context/scan/local-structural-artifacts.js +137 -0
  326. package/dist/context/scan/relationship-benchmarks.d.ts +148 -0
  327. package/dist/context/scan/relationship-benchmarks.js +649 -0
  328. package/dist/context/scan/relationship-budget.d.ts +21 -0
  329. package/dist/context/scan/relationship-budget.js +35 -0
  330. package/dist/context/scan/relationship-candidates.d.ts +50 -0
  331. package/dist/context/scan/relationship-candidates.js +557 -0
  332. package/dist/context/scan/relationship-composite-candidates.d.ts +68 -0
  333. package/dist/context/scan/relationship-composite-candidates.js +410 -0
  334. package/dist/context/scan/relationship-diagnostics.d.ts +96 -0
  335. package/dist/context/scan/relationship-diagnostics.js +225 -0
  336. package/dist/context/scan/relationship-discovery.d.ts +28 -0
  337. package/dist/context/scan/relationship-discovery.js +248 -0
  338. package/dist/context/scan/relationship-graph-resolver.d.ts +49 -0
  339. package/dist/context/scan/relationship-llm-proposal.d.ts +26 -0
  340. package/dist/context/scan/relationship-llm-proposal.js +191 -0
  341. package/dist/context/scan/relationship-name-similarity.d.ts +15 -0
  342. package/dist/context/scan/relationship-name-similarity.js +124 -0
  343. package/dist/context/scan/relationship-profiling.d.ts +56 -0
  344. package/dist/context/scan/relationship-profiling.js +265 -0
  345. package/dist/context/scan/relationship-scoring.d.ts +34 -0
  346. package/dist/context/scan/relationship-scoring.js +98 -0
  347. package/dist/context/scan/relationship-validation.d.ts +47 -0
  348. package/dist/context/scan/relationship-validation.js +230 -0
  349. package/dist/context/scan/table-ref.d.ts +25 -0
  350. package/dist/context/scan/table-ref.js +35 -0
  351. package/dist/context/scan/type-normalization.d.ts +10 -0
  352. package/dist/context/scan/type-normalization.js +24 -0
  353. package/dist/context/scan/types.d.ts +332 -0
  354. package/dist/context/scan/warehouse-catalog.d.ts +69 -0
  355. package/dist/context/scan/warehouse-catalog.js +294 -0
  356. package/dist/context/search/discover.d.ts +31 -0
  357. package/dist/context/search/discover.js +341 -0
  358. package/dist/context/search/pglite-owner-process.d.ts +20 -0
  359. package/dist/context/search/pglite-owner-process.js +82 -0
  360. package/dist/context/search/types.d.ts +73 -0
  361. package/dist/context/skills/skills-registry.service.d.ts +35 -0
  362. package/dist/context/skills/skills-registry.service.js +215 -0
  363. package/dist/context/sl/dictionary-search.d.ts +43 -0
  364. package/dist/context/sl/local-query.d.ts +19 -0
  365. package/dist/context/sl/local-query.js +115 -0
  366. package/dist/context/sl/local-sl.d.ts +62 -0
  367. package/dist/context/sl/local-sl.js +472 -0
  368. package/dist/context/sl/pglite-sl-search-prototype.d.ts +16 -0
  369. package/dist/context/sl/pglite-sl-search-prototype.js +433 -0
  370. package/dist/context/sl/semantic-layer.service.d.ts +220 -0
  371. package/dist/context/sl/semantic-layer.service.js +1351 -0
  372. package/dist/context/sl/sl-dictionary-profile.d.ts +9 -0
  373. package/dist/context/sl/sl-dictionary-profile.js +80 -0
  374. package/dist/context/sl/sl-search.service.d.ts +19 -0
  375. package/dist/context/sl/sl-search.service.js +158 -0
  376. package/dist/context/sl/sl-validator.port.d.ts +8 -0
  377. package/dist/context/sl/tools/base-semantic-layer.tool.d.ts +46 -0
  378. package/dist/context/sl/tools/base-semantic-layer.tool.js +91 -0
  379. package/dist/context/sl/tools/sl-discover.tool.d.ts +52 -0
  380. package/dist/context/sl/tools/sl-edit-source.tool.d.ts +33 -0
  381. package/dist/context/sl/tools/sl-edit-source.tool.js +179 -0
  382. package/dist/context/sl/tools/sl-read-source.tool.d.ts +23 -0
  383. package/dist/context/sl/tools/sl-rollback.tool.d.ts +25 -0
  384. package/dist/context/sl/tools/sl-rollback.tool.js +64 -0
  385. package/dist/context/sl/tools/sl-validate.tool.d.ts +24 -0
  386. package/dist/context/sl/tools/sl-validate.tool.js +101 -0
  387. package/dist/context/sl/tools/sl-warehouse-validation.d.ts +32 -0
  388. package/dist/context/sl/tools/sl-warehouse-validation.js +246 -0
  389. package/dist/context/sl/tools/sl-write-source.tool.d.ts +422 -0
  390. package/dist/context/sl/tools/sl-write-source.tool.js +321 -0
  391. package/dist/context/sl/types.d.ts +141 -0
  392. package/dist/context/sql-analysis/ports.d.ts +34 -0
  393. package/dist/context/tools/base-tool.d.ts +85 -0
  394. package/dist/context/tools/base-tool.js +94 -0
  395. package/dist/context/tools/context-candidate-mark.tool.d.ts +41 -0
  396. package/dist/context/tools/context-candidate-write.tool.d.ts +64 -0
  397. package/dist/context/tools/context-candidate-write.tool.js +140 -0
  398. package/dist/context/tools/context-evidence-search.tool.d.ts +57 -0
  399. package/dist/context/tools/context-evidence-search.tool.js +97 -0
  400. package/dist/context/tools/context-evidence-tool-store.d.ts +113 -0
  401. package/dist/context/tools/tool-session.d.ts +55 -0
  402. package/dist/context/tools/touched-sl-sources.d.ts +13 -0
  403. package/dist/context/tools/touched-sl-sources.js +48 -0
  404. package/dist/context/wiki/keys.d.ts +10 -0
  405. package/dist/context/wiki/keys.js +26 -0
  406. package/dist/context/wiki/knowledge-wiki.service.d.ts +79 -0
  407. package/dist/context/wiki/knowledge-wiki.service.js +370 -0
  408. package/dist/context/wiki/local-knowledge.d.ts +58 -0
  409. package/dist/context/wiki/local-knowledge.js +290 -0
  410. package/dist/context/wiki/ports.d.ts +68 -0
  411. package/dist/context/wiki/tools/wiki-list-tags.tool.d.ts +16 -0
  412. package/dist/context/wiki/tools/wiki-list-tags.tool.js +34 -0
  413. package/dist/context/wiki/tools/wiki-read.tool.d.ts +28 -0
  414. package/dist/context/wiki/tools/wiki-read.tool.js +59 -0
  415. package/dist/context/wiki/tools/wiki-remove.tool.d.ts +28 -0
  416. package/dist/context/wiki/tools/wiki-remove.tool.js +86 -0
  417. package/dist/context/wiki/tools/wiki-search.tool.d.ts +50 -0
  418. package/dist/context/wiki/tools/wiki-search.tool.js +54 -0
  419. package/dist/context/wiki/tools/wiki-write.tool.d.ts +80 -0
  420. package/dist/context/wiki/tools/wiki-write.tool.js +211 -0
  421. package/dist/context/wiki/types.d.ts +45 -0
  422. package/dist/context/wiki/wiki-ref-validation.d.ts +17 -0
  423. package/dist/context-build-view.d.ts +4 -0
  424. package/dist/context-build-view.js +8 -3
  425. package/dist/database-tree-picker.d.ts +36 -3
  426. package/dist/database-tree-picker.js +92 -10
  427. package/dist/demo-assets.d.ts +7 -0
  428. package/dist/demo-assets.js +18 -0
  429. package/dist/demo-metrics.d.ts +5 -1
  430. package/dist/demo-metrics.js +4 -0
  431. package/dist/doctor.d.ts +2 -1
  432. package/dist/doctor.js +13 -3
  433. package/dist/embedding-resolution.d.ts +3 -2
  434. package/dist/embedding-resolution.js +2 -2
  435. package/dist/error-message.d.ts +1 -0
  436. package/dist/error-message.js +29 -0
  437. package/dist/ingest-depth.d.ts +1 -1
  438. package/dist/ingest-depth.js +0 -1
  439. package/dist/ingest-query-executor.d.ts +2 -2
  440. package/dist/ingest-report-file.d.ts +1 -1
  441. package/dist/ingest-report-file.js +1 -1
  442. package/dist/ingest.d.ts +5 -3
  443. package/dist/ingest.js +15 -7
  444. package/dist/io/logger.d.ts +1 -0
  445. package/dist/io/logger.js +1 -0
  446. package/dist/knowledge.d.ts +2 -2
  447. package/dist/knowledge.js +29 -3
  448. package/dist/llm/embedding-health.js +36 -0
  449. package/dist/llm/model-health.d.ts +19 -0
  450. package/dist/llm/model-provider.d.ts +21 -0
  451. package/dist/llm/model-provider.js +150 -0
  452. package/dist/llm/types.d.ts +106 -0
  453. package/dist/local-adapters.d.ts +4 -3
  454. package/dist/local-adapters.js +43 -59
  455. package/dist/local-scan-connectors.d.ts +2 -2
  456. package/dist/local-scan-connectors.js +16 -42
  457. package/dist/managed-local-embeddings.d.ts +1 -1
  458. package/dist/managed-local-embeddings.js +2 -1
  459. package/dist/managed-mcp-daemon.d.ts +1 -0
  460. package/dist/managed-python-command.d.ts +5 -2
  461. package/dist/managed-python-command.js +7 -1
  462. package/dist/managed-python-daemon.d.ts +11 -2
  463. package/dist/managed-python-daemon.js +29 -9
  464. package/dist/managed-python-http.d.ts +8 -4
  465. package/dist/managed-python-http.js +7 -4
  466. package/dist/managed-python-runtime.d.ts +6 -2
  467. package/dist/managed-python-runtime.js +3 -0
  468. package/dist/mcp-http-server.d.ts +5 -2
  469. package/dist/mcp-http-server.js +5 -2
  470. package/dist/mcp-server-factory.d.ts +1 -1
  471. package/dist/mcp-server-factory.js +15 -7
  472. package/dist/mcp-stdio-server.d.ts +2 -2
  473. package/dist/mcp-stdio-server.js +4 -3
  474. package/dist/memory-flow-hud.d.ts +1 -1
  475. package/dist/memory-flow-interactive.d.ts +2 -1
  476. package/dist/memory-flow-interactive.js +4 -1
  477. package/dist/memory-flow-tui.d.ts +5 -2
  478. package/dist/memory-flow-tui.js +4 -1
  479. package/dist/next-steps.d.ts +2 -1
  480. package/dist/next-steps.js +3 -1
  481. package/dist/notion-page-picker.d.ts +7 -2
  482. package/dist/notion-page-picker.js +6 -2
  483. package/dist/print-command-tree.js +2 -8
  484. package/dist/prompt-navigation.d.ts +1 -0
  485. package/dist/prompt-navigation.js +1 -0
  486. package/dist/public-ingest.d.ts +2 -2
  487. package/dist/public-ingest.js +83 -21
  488. package/dist/runtime-requirements.d.ts +2 -1
  489. package/dist/runtime-requirements.js +9 -2
  490. package/dist/scan.d.ts +5 -1
  491. package/dist/scan.js +48 -5
  492. package/dist/setup-agents.d.ts +8 -4
  493. package/dist/setup-agents.js +25 -77
  494. package/dist/setup-context.d.ts +8 -4
  495. package/dist/setup-context.js +17 -9
  496. package/dist/setup-database-context-depth.d.ts +2 -1
  497. package/dist/setup-database-context-depth.js +2 -1
  498. package/dist/setup-databases.d.ts +13 -14
  499. package/dist/setup-databases.js +344 -322
  500. package/dist/setup-demo-tour.d.ts +8 -3
  501. package/dist/setup-demo-tour.js +10 -4
  502. package/dist/setup-embeddings.d.ts +3 -1
  503. package/dist/setup-embeddings.js +15 -5
  504. package/dist/setup-interrupt.d.ts +1 -0
  505. package/dist/setup-models.d.ts +12 -9
  506. package/dist/setup-models.js +16 -9
  507. package/dist/setup-project.d.ts +5 -3
  508. package/dist/setup-project.js +3 -1
  509. package/dist/setup-prompts.d.ts +16 -0
  510. package/dist/setup-prompts.js +39 -1
  511. package/dist/setup-ready-menu.d.ts +2 -1
  512. package/dist/setup-runtime.d.ts +1 -1
  513. package/dist/setup-runtime.js +4 -2
  514. package/dist/setup-sources.d.ts +9 -3
  515. package/dist/setup-sources.js +33 -8
  516. package/dist/setup.d.ts +1 -1
  517. package/dist/setup.js +66 -7
  518. package/dist/skills/historic_sql_patterns/SKILL.md +89 -0
  519. package/dist/skills/historic_sql_table_digest/SKILL.md +88 -0
  520. package/dist/skills/sl/SKILL.md +247 -0
  521. package/dist/sl.d.ts +8 -12
  522. package/dist/sl.js +75 -4
  523. package/dist/source-mapping.d.ts +3 -2
  524. package/dist/source-mapping.js +13 -3
  525. package/dist/sql.d.ts +4 -3
  526. package/dist/sql.js +60 -12
  527. package/dist/status-project.d.ts +47 -12
  528. package/dist/status-project.js +357 -140
  529. package/dist/telemetry/command-hook.d.ts +28 -0
  530. package/dist/telemetry/command-hook.js +27 -0
  531. package/dist/telemetry/demo-detect.d.ts +2 -0
  532. package/dist/telemetry/demo-detect.js +9 -0
  533. package/dist/telemetry/emitter.d.ts +20 -0
  534. package/dist/telemetry/emitter.js +74 -0
  535. package/dist/telemetry/events.d.ts +466 -0
  536. package/dist/telemetry/events.js +347 -0
  537. package/dist/telemetry/identity.d.ts +33 -0
  538. package/dist/telemetry/identity.js +105 -0
  539. package/dist/telemetry/index.d.ts +27 -0
  540. package/dist/telemetry/index.js +98 -0
  541. package/dist/telemetry/project-snapshot.d.ts +15 -0
  542. package/dist/telemetry/project-snapshot.js +55 -0
  543. package/dist/telemetry/schema-writer.d.ts +15 -0
  544. package/dist/telemetry/schema-writer.js +45 -0
  545. package/dist/telemetry/scrubber.d.ts +1 -0
  546. package/dist/telemetry/scrubber.js +22 -0
  547. package/dist/text-ingest.d.ts +4 -2
  548. package/dist/text-ingest.js +2 -2
  549. package/dist/tree-picker-state.d.ts +8 -2
  550. package/dist/tree-picker-state.js +35 -13
  551. package/dist/tree-picker-tui.d.ts +11 -1
  552. package/dist/tree-picker-tui.js +26 -32
  553. package/dist/viz-fallback.d.ts +1 -0
  554. package/dist/viz-fallback.js +1 -0
  555. package/package.json +39 -16
  556. package/assets/python/kaelio_ktx-0.4.1-py3-none-any.whl +0 -0
  557. package/dist/admin-reindex.test.js +0 -119
  558. package/dist/admin.test.js +0 -201
  559. package/dist/cli-program.test.js +0 -49
  560. package/dist/cli-project.d.ts +0 -12
  561. package/dist/cli-project.js +0 -8
  562. package/dist/cli-project.test.js +0 -22
  563. package/dist/command-tree.test.js +0 -126
  564. package/dist/commands/mcp-commands.test.js +0 -111
  565. package/dist/commands/sql-commands.test.js +0 -68
  566. package/dist/connection.test.js +0 -405
  567. package/dist/context-build-view.test.js +0 -945
  568. package/dist/database-tree-picker.test.js +0 -135
  569. package/dist/demo-assets.test.js +0 -95
  570. package/dist/demo-metrics.test.js +0 -108
  571. package/dist/doctor.test.js +0 -603
  572. package/dist/embedding-resolution.test.js +0 -132
  573. package/dist/example-smoke.test.js +0 -83
  574. package/dist/index.test.js +0 -1302
  575. package/dist/ingest-query-executor.test.js +0 -71
  576. package/dist/ingest-report-file.test.js +0 -63
  577. package/dist/ingest-viz.test.js +0 -691
  578. package/dist/ingest.test-utils.d.ts +0 -119
  579. package/dist/ingest.test-utils.js +0 -625
  580. package/dist/ingest.test.js +0 -1534
  581. package/dist/io/logger.test.js +0 -55
  582. package/dist/io/mode.test.js +0 -48
  583. package/dist/io/print-list.test.js +0 -277
  584. package/dist/knowledge.test.js +0 -184
  585. package/dist/local-adapters.test.d.ts +0 -1
  586. package/dist/local-adapters.test.js +0 -162
  587. package/dist/local-scan-connectors.test.d.ts +0 -1
  588. package/dist/local-scan-connectors.test.js +0 -92
  589. package/dist/managed-local-embeddings.test.d.ts +0 -1
  590. package/dist/managed-local-embeddings.test.js +0 -229
  591. package/dist/managed-mcp-daemon.test.d.ts +0 -1
  592. package/dist/managed-mcp-daemon.test.js +0 -187
  593. package/dist/managed-python-command.test.d.ts +0 -1
  594. package/dist/managed-python-command.test.js +0 -262
  595. package/dist/managed-python-daemon.test.d.ts +0 -1
  596. package/dist/managed-python-daemon.test.js +0 -360
  597. package/dist/managed-python-http.test.d.ts +0 -1
  598. package/dist/managed-python-http.test.js +0 -177
  599. package/dist/managed-python-runtime.test.d.ts +0 -1
  600. package/dist/managed-python-runtime.test.js +0 -426
  601. package/dist/mcp-http-server.test.d.ts +0 -1
  602. package/dist/mcp-http-server.test.js +0 -209
  603. package/dist/memory-flow-interactive.test.d.ts +0 -1
  604. package/dist/memory-flow-interactive.test.js +0 -109
  605. package/dist/memory-flow-tui.test.d.ts +0 -1
  606. package/dist/memory-flow-tui.test.js +0 -247
  607. package/dist/next-steps.test.d.ts +0 -1
  608. package/dist/next-steps.test.js +0 -77
  609. package/dist/notion-page-picker.test.d.ts +0 -1
  610. package/dist/notion-page-picker.test.js +0 -244
  611. package/dist/print-command-tree.test.d.ts +0 -1
  612. package/dist/print-command-tree.test.js +0 -37
  613. package/dist/project-dir.test.d.ts +0 -1
  614. package/dist/project-dir.test.js +0 -124
  615. package/dist/project-resolver.test.d.ts +0 -1
  616. package/dist/project-resolver.test.js +0 -49
  617. package/dist/prompt-navigation.test.d.ts +0 -1
  618. package/dist/prompt-navigation.test.js +0 -33
  619. package/dist/proxy-env.test.d.ts +0 -1
  620. package/dist/proxy-env.test.js +0 -17
  621. package/dist/public-ingest-copy.test.d.ts +0 -1
  622. package/dist/public-ingest-copy.test.js +0 -24
  623. package/dist/public-ingest.test.d.ts +0 -1
  624. package/dist/public-ingest.test.js +0 -815
  625. package/dist/runtime-requirements.test.d.ts +0 -1
  626. package/dist/runtime-requirements.test.js +0 -62
  627. package/dist/runtime.test.d.ts +0 -1
  628. package/dist/runtime.test.js +0 -381
  629. package/dist/scan.test.d.ts +0 -1
  630. package/dist/scan.test.js +0 -984
  631. package/dist/setup-agents.test.d.ts +0 -1
  632. package/dist/setup-agents.test.js +0 -1028
  633. package/dist/setup-context.test.d.ts +0 -1
  634. package/dist/setup-context.test.js +0 -490
  635. package/dist/setup-databases.test.d.ts +0 -1
  636. package/dist/setup-databases.test.js +0 -1883
  637. package/dist/setup-demo-tour.test.d.ts +0 -1
  638. package/dist/setup-demo-tour.test.js +0 -221
  639. package/dist/setup-embeddings.test.d.ts +0 -1
  640. package/dist/setup-embeddings.test.js +0 -434
  641. package/dist/setup-interrupt.test.d.ts +0 -1
  642. package/dist/setup-interrupt.test.js +0 -77
  643. package/dist/setup-models.test.d.ts +0 -1
  644. package/dist/setup-models.test.js +0 -880
  645. package/dist/setup-project.test.d.ts +0 -1
  646. package/dist/setup-project.test.js +0 -229
  647. package/dist/setup-prompts.test.d.ts +0 -1
  648. package/dist/setup-prompts.test.js +0 -170
  649. package/dist/setup-ready-menu.test.d.ts +0 -1
  650. package/dist/setup-ready-menu.test.js +0 -44
  651. package/dist/setup-runtime.test.d.ts +0 -1
  652. package/dist/setup-runtime.test.js +0 -110
  653. package/dist/setup-secrets.test.d.ts +0 -1
  654. package/dist/setup-secrets.test.js +0 -30
  655. package/dist/setup-sources-notion.test.d.ts +0 -1
  656. package/dist/setup-sources-notion.test.js +0 -107
  657. package/dist/setup-sources.test.d.ts +0 -1
  658. package/dist/setup-sources.test.js +0 -1277
  659. package/dist/setup.test.d.ts +0 -1
  660. package/dist/setup.test.js +0 -1794
  661. package/dist/sl.test.d.ts +0 -1
  662. package/dist/sl.test.js +0 -534
  663. package/dist/source-mapping.test.d.ts +0 -1
  664. package/dist/source-mapping.test.js +0 -65
  665. package/dist/sql.test.d.ts +0 -1
  666. package/dist/sql.test.js +0 -226
  667. package/dist/standalone-smoke.test.d.ts +0 -1
  668. package/dist/standalone-smoke.test.js +0 -250
  669. package/dist/text-ingest.test.d.ts +0 -1
  670. package/dist/text-ingest.test.js +0 -247
  671. package/dist/tree-picker-state.test.d.ts +0 -1
  672. package/dist/tree-picker-state.test.js +0 -303
  673. package/dist/tree-picker-tui.test.d.ts +0 -1
  674. package/dist/tree-picker-tui.test.js +0 -248
  675. package/dist/viz-fallback.test.d.ts +0 -1
  676. package/dist/viz-fallback.test.js +0 -77
  677. package/node_modules/@ktx/connector-bigquery/dist/connector.d.ts +0 -141
  678. package/node_modules/@ktx/connector-bigquery/dist/connector.js +0 -371
  679. package/node_modules/@ktx/connector-bigquery/dist/connector.test.d.ts +0 -1
  680. package/node_modules/@ktx/connector-bigquery/dist/connector.test.js +0 -247
  681. package/node_modules/@ktx/connector-bigquery/dist/dialect.d.ts +0 -29
  682. package/node_modules/@ktx/connector-bigquery/dist/dialect.js +0 -178
  683. package/node_modules/@ktx/connector-bigquery/dist/dialect.test.d.ts +0 -1
  684. package/node_modules/@ktx/connector-bigquery/dist/dialect.test.js +0 -36
  685. package/node_modules/@ktx/connector-bigquery/dist/index.d.ts +0 -3
  686. package/node_modules/@ktx/connector-bigquery/dist/index.js +0 -3
  687. package/node_modules/@ktx/connector-bigquery/dist/live-database-introspection.d.ts +0 -10
  688. package/node_modules/@ktx/connector-bigquery/dist/live-database-introspection.js +0 -20
  689. package/node_modules/@ktx/connector-bigquery/dist/package-exports.test.d.ts +0 -1
  690. package/node_modules/@ktx/connector-bigquery/dist/package-exports.test.js +0 -10
  691. package/node_modules/@ktx/connector-bigquery/package.json +0 -20
  692. package/node_modules/@ktx/connector-clickhouse/dist/connector.d.ts +0 -113
  693. package/node_modules/@ktx/connector-clickhouse/dist/connector.js +0 -345
  694. package/node_modules/@ktx/connector-clickhouse/dist/connector.test.d.ts +0 -1
  695. package/node_modules/@ktx/connector-clickhouse/dist/connector.test.js +0 -228
  696. package/node_modules/@ktx/connector-clickhouse/dist/dialect.d.ts +0 -33
  697. package/node_modules/@ktx/connector-clickhouse/dist/dialect.js +0 -236
  698. package/node_modules/@ktx/connector-clickhouse/dist/dialect.test.d.ts +0 -1
  699. package/node_modules/@ktx/connector-clickhouse/dist/dialect.test.js +0 -36
  700. package/node_modules/@ktx/connector-clickhouse/dist/index.d.ts +0 -3
  701. package/node_modules/@ktx/connector-clickhouse/dist/index.js +0 -3
  702. package/node_modules/@ktx/connector-clickhouse/dist/live-database-introspection.d.ts +0 -11
  703. package/node_modules/@ktx/connector-clickhouse/dist/live-database-introspection.js +0 -21
  704. package/node_modules/@ktx/connector-clickhouse/dist/package-exports.test.d.ts +0 -1
  705. package/node_modules/@ktx/connector-clickhouse/dist/package-exports.test.js +0 -10
  706. package/node_modules/@ktx/connector-clickhouse/package.json +0 -20
  707. package/node_modules/@ktx/connector-mysql/dist/connector.d.ts +0 -116
  708. package/node_modules/@ktx/connector-mysql/dist/connector.js +0 -385
  709. package/node_modules/@ktx/connector-mysql/dist/connector.test.d.ts +0 -1
  710. package/node_modules/@ktx/connector-mysql/dist/connector.test.js +0 -218
  711. package/node_modules/@ktx/connector-mysql/dist/dialect.d.ts +0 -29
  712. package/node_modules/@ktx/connector-mysql/dist/dialect.js +0 -171
  713. package/node_modules/@ktx/connector-mysql/dist/dialect.test.d.ts +0 -1
  714. package/node_modules/@ktx/connector-mysql/dist/dialect.test.js +0 -36
  715. package/node_modules/@ktx/connector-mysql/dist/index.d.ts +0 -3
  716. package/node_modules/@ktx/connector-mysql/dist/index.js +0 -3
  717. package/node_modules/@ktx/connector-mysql/dist/live-database-introspection.d.ts +0 -11
  718. package/node_modules/@ktx/connector-mysql/dist/live-database-introspection.js +0 -21
  719. package/node_modules/@ktx/connector-mysql/dist/package-exports.test.d.ts +0 -1
  720. package/node_modules/@ktx/connector-mysql/dist/package-exports.test.js +0 -11
  721. package/node_modules/@ktx/connector-mysql/package.json +0 -20
  722. package/node_modules/@ktx/connector-postgres/dist/connector.d.ts +0 -140
  723. package/node_modules/@ktx/connector-postgres/dist/connector.js +0 -497
  724. package/node_modules/@ktx/connector-postgres/dist/connector.test.d.ts +0 -1
  725. package/node_modules/@ktx/connector-postgres/dist/connector.test.js +0 -336
  726. package/node_modules/@ktx/connector-postgres/dist/dialect.d.ts +0 -29
  727. package/node_modules/@ktx/connector-postgres/dist/dialect.js +0 -182
  728. package/node_modules/@ktx/connector-postgres/dist/dialect.test.d.ts +0 -1
  729. package/node_modules/@ktx/connector-postgres/dist/dialect.test.js +0 -37
  730. package/node_modules/@ktx/connector-postgres/dist/historic-sql-query-client.d.ts +0 -14
  731. package/node_modules/@ktx/connector-postgres/dist/historic-sql-query-client.test.d.ts +0 -1
  732. package/node_modules/@ktx/connector-postgres/dist/historic-sql-query-client.test.js +0 -45
  733. package/node_modules/@ktx/connector-postgres/dist/index.d.ts +0 -4
  734. package/node_modules/@ktx/connector-postgres/dist/index.js +0 -4
  735. package/node_modules/@ktx/connector-postgres/dist/live-database-introspection.d.ts +0 -11
  736. package/node_modules/@ktx/connector-postgres/dist/live-database-introspection.js +0 -21
  737. package/node_modules/@ktx/connector-postgres/dist/package-exports.test.d.ts +0 -1
  738. package/node_modules/@ktx/connector-postgres/dist/package-exports.test.js +0 -12
  739. package/node_modules/@ktx/connector-postgres/package.json +0 -20
  740. package/node_modules/@ktx/connector-snowflake/dist/connector.d.ts +0 -129
  741. package/node_modules/@ktx/connector-snowflake/dist/connector.js +0 -517
  742. package/node_modules/@ktx/connector-snowflake/dist/connector.test.d.ts +0 -1
  743. package/node_modules/@ktx/connector-snowflake/dist/connector.test.js +0 -210
  744. package/node_modules/@ktx/connector-snowflake/dist/dialect.d.ts +0 -29
  745. package/node_modules/@ktx/connector-snowflake/dist/dialect.js +0 -156
  746. package/node_modules/@ktx/connector-snowflake/dist/dialect.test.d.ts +0 -1
  747. package/node_modules/@ktx/connector-snowflake/dist/dialect.test.js +0 -34
  748. package/node_modules/@ktx/connector-snowflake/dist/index.d.ts +0 -3
  749. package/node_modules/@ktx/connector-snowflake/dist/index.js +0 -3
  750. package/node_modules/@ktx/connector-snowflake/dist/live-database-introspection.d.ts +0 -11
  751. package/node_modules/@ktx/connector-snowflake/dist/live-database-introspection.js +0 -21
  752. package/node_modules/@ktx/connector-snowflake/dist/package-exports.test.d.ts +0 -1
  753. package/node_modules/@ktx/connector-snowflake/dist/package-exports.test.js +0 -10
  754. package/node_modules/@ktx/connector-snowflake/package.json +0 -20
  755. package/node_modules/@ktx/connector-sqlite/dist/connector.d.ts +0 -59
  756. package/node_modules/@ktx/connector-sqlite/dist/connector.js +0 -251
  757. package/node_modules/@ktx/connector-sqlite/dist/connector.test.d.ts +0 -1
  758. package/node_modules/@ktx/connector-sqlite/dist/connector.test.js +0 -196
  759. package/node_modules/@ktx/connector-sqlite/dist/dialect.d.ts +0 -29
  760. package/node_modules/@ktx/connector-sqlite/dist/dialect.js +0 -146
  761. package/node_modules/@ktx/connector-sqlite/dist/dialect.test.d.ts +0 -1
  762. package/node_modules/@ktx/connector-sqlite/dist/dialect.test.js +0 -23
  763. package/node_modules/@ktx/connector-sqlite/dist/index.d.ts +0 -3
  764. package/node_modules/@ktx/connector-sqlite/dist/index.js +0 -3
  765. package/node_modules/@ktx/connector-sqlite/dist/live-database-introspection.d.ts +0 -8
  766. package/node_modules/@ktx/connector-sqlite/dist/live-database-introspection.js +0 -20
  767. package/node_modules/@ktx/connector-sqlite/dist/package-exports.test.d.ts +0 -1
  768. package/node_modules/@ktx/connector-sqlite/dist/package-exports.test.js +0 -11
  769. package/node_modules/@ktx/connector-sqlite/package.json +0 -20
  770. package/node_modules/@ktx/connector-sqlserver/dist/connector.d.ts +0 -137
  771. package/node_modules/@ktx/connector-sqlserver/dist/connector.js +0 -503
  772. package/node_modules/@ktx/connector-sqlserver/dist/connector.test.d.ts +0 -1
  773. package/node_modules/@ktx/connector-sqlserver/dist/connector.test.js +0 -269
  774. package/node_modules/@ktx/connector-sqlserver/dist/dialect.d.ts +0 -30
  775. package/node_modules/@ktx/connector-sqlserver/dist/dialect.js +0 -169
  776. package/node_modules/@ktx/connector-sqlserver/dist/dialect.test.d.ts +0 -1
  777. package/node_modules/@ktx/connector-sqlserver/dist/dialect.test.js +0 -36
  778. package/node_modules/@ktx/connector-sqlserver/dist/index.d.ts +0 -3
  779. package/node_modules/@ktx/connector-sqlserver/dist/index.js +0 -3
  780. package/node_modules/@ktx/connector-sqlserver/dist/live-database-introspection.d.ts +0 -11
  781. package/node_modules/@ktx/connector-sqlserver/dist/live-database-introspection.js +0 -21
  782. package/node_modules/@ktx/connector-sqlserver/dist/package-exports.test.d.ts +0 -1
  783. package/node_modules/@ktx/connector-sqlserver/dist/package-exports.test.js +0 -10
  784. package/node_modules/@ktx/connector-sqlserver/package.json +0 -20
  785. package/node_modules/@ktx/context/dist/agent/agent-runner.service.d.ts +0 -18
  786. package/node_modules/@ktx/context/dist/agent/agent-runner.service.js +0 -10
  787. package/node_modules/@ktx/context/dist/agent/agent-runner.service.test.d.ts +0 -1
  788. package/node_modules/@ktx/context/dist/agent/agent-runner.service.test.js +0 -308
  789. package/node_modules/@ktx/context/dist/agent/index.d.ts +0 -2
  790. package/node_modules/@ktx/context/dist/agent/index.js +0 -1
  791. package/node_modules/@ktx/context/dist/connections/connection-type.d.ts +0 -25
  792. package/node_modules/@ktx/context/dist/connections/dialects.d.ts +0 -9
  793. package/node_modules/@ktx/context/dist/connections/dialects.js +0 -71
  794. package/node_modules/@ktx/context/dist/connections/dialects.test.d.ts +0 -1
  795. package/node_modules/@ktx/context/dist/connections/dialects.test.js +0 -24
  796. package/node_modules/@ktx/context/dist/connections/index.d.ts +0 -11
  797. package/node_modules/@ktx/context/dist/connections/index.js +0 -9
  798. package/node_modules/@ktx/context/dist/connections/local-query-executor.js +0 -21
  799. package/node_modules/@ktx/context/dist/connections/local-query-executor.test.d.ts +0 -1
  800. package/node_modules/@ktx/context/dist/connections/local-query-executor.test.js +0 -48
  801. package/node_modules/@ktx/context/dist/connections/local-warehouse-descriptor.js +0 -72
  802. package/node_modules/@ktx/context/dist/connections/local-warehouse-descriptor.test.d.ts +0 -1
  803. package/node_modules/@ktx/context/dist/connections/local-warehouse-descriptor.test.js +0 -53
  804. package/node_modules/@ktx/context/dist/connections/notion-config.d.ts +0 -41
  805. package/node_modules/@ktx/context/dist/connections/notion-config.js +0 -132
  806. package/node_modules/@ktx/context/dist/connections/notion-config.test.d.ts +0 -1
  807. package/node_modules/@ktx/context/dist/connections/notion-config.test.js +0 -121
  808. package/node_modules/@ktx/context/dist/connections/postgres-query-executor.js +0 -53
  809. package/node_modules/@ktx/context/dist/connections/postgres-query-executor.test.d.ts +0 -1
  810. package/node_modules/@ktx/context/dist/connections/postgres-query-executor.test.js +0 -91
  811. package/node_modules/@ktx/context/dist/connections/query-executor.d.ts +0 -19
  812. package/node_modules/@ktx/context/dist/connections/read-only-sql.test.d.ts +0 -1
  813. package/node_modules/@ktx/context/dist/connections/read-only-sql.test.js +0 -20
  814. package/node_modules/@ktx/context/dist/connections/sqlite-query-executor.d.ts +0 -3
  815. package/node_modules/@ktx/context/dist/connections/sqlite-query-executor.js +0 -73
  816. package/node_modules/@ktx/context/dist/connections/sqlite-query-executor.test.d.ts +0 -1
  817. package/node_modules/@ktx/context/dist/connections/sqlite-query-executor.test.js +0 -113
  818. package/node_modules/@ktx/context/dist/core/config-reference.d.ts +0 -2
  819. package/node_modules/@ktx/context/dist/core/config-reference.js +0 -29
  820. package/node_modules/@ktx/context/dist/core/config-reference.test.d.ts +0 -1
  821. package/node_modules/@ktx/context/dist/core/config-reference.test.js +0 -27
  822. package/node_modules/@ktx/context/dist/core/config.d.ts +0 -25
  823. package/node_modules/@ktx/context/dist/core/embedding.js +0 -1
  824. package/node_modules/@ktx/context/dist/core/file-store.js +0 -1
  825. package/node_modules/@ktx/context/dist/core/git.service.assert-worktree-clean.test.d.ts +0 -1
  826. package/node_modules/@ktx/context/dist/core/git.service.assert-worktree-clean.test.js +0 -62
  827. package/node_modules/@ktx/context/dist/core/git.service.delete-directories.test.d.ts +0 -1
  828. package/node_modules/@ktx/context/dist/core/git.service.delete-directories.test.js +0 -61
  829. package/node_modules/@ktx/context/dist/core/git.service.patch.test.d.ts +0 -1
  830. package/node_modules/@ktx/context/dist/core/git.service.patch.test.js +0 -40
  831. package/node_modules/@ktx/context/dist/core/git.service.reset-hard.test.d.ts +0 -1
  832. package/node_modules/@ktx/context/dist/core/git.service.reset-hard.test.js +0 -47
  833. package/node_modules/@ktx/context/dist/core/git.service.test.d.ts +0 -1
  834. package/node_modules/@ktx/context/dist/core/git.service.test.js +0 -357
  835. package/node_modules/@ktx/context/dist/core/index.d.ts +0 -10
  836. package/node_modules/@ktx/context/dist/core/index.js +0 -5
  837. package/node_modules/@ktx/context/dist/core/redaction.d.ts +0 -4
  838. package/node_modules/@ktx/context/dist/core/redaction.js +0 -39
  839. package/node_modules/@ktx/context/dist/core/session-worktree.service.d.ts +0 -38
  840. package/node_modules/@ktx/context/dist/core/session-worktree.service.test.d.ts +0 -1
  841. package/node_modules/@ktx/context/dist/core/session-worktree.service.test.js +0 -97
  842. package/node_modules/@ktx/context/dist/daemon/index.d.ts +0 -1
  843. package/node_modules/@ktx/context/dist/daemon/index.js +0 -1
  844. package/node_modules/@ktx/context/dist/daemon/semantic-layer-compute.d.ts +0 -80
  845. package/node_modules/@ktx/context/dist/daemon/semantic-layer-compute.js +0 -191
  846. package/node_modules/@ktx/context/dist/daemon/semantic-layer-compute.test.d.ts +0 -1
  847. package/node_modules/@ktx/context/dist/daemon/semantic-layer-compute.test.js +0 -301
  848. package/node_modules/@ktx/context/dist/index-sync/index.d.ts +0 -2
  849. package/node_modules/@ktx/context/dist/index-sync/index.js +0 -1
  850. package/node_modules/@ktx/context/dist/index-sync/reindex.d.ts +0 -20
  851. package/node_modules/@ktx/context/dist/index-sync/reindex.js +0 -141
  852. package/node_modules/@ktx/context/dist/index-sync/reindex.test.d.ts +0 -1
  853. package/node_modules/@ktx/context/dist/index-sync/reindex.test.js +0 -139
  854. package/node_modules/@ktx/context/dist/index-sync/types.d.ts +0 -29
  855. package/node_modules/@ktx/context/dist/index.d.ts +0 -22
  856. package/node_modules/@ktx/context/dist/index.js +0 -19
  857. package/node_modules/@ktx/context/dist/index.test.d.ts +0 -1
  858. package/node_modules/@ktx/context/dist/index.test.js +0 -10
  859. package/node_modules/@ktx/context/dist/ingest/action-identity.d.ts +0 -3
  860. package/node_modules/@ktx/context/dist/ingest/action-identity.test.d.ts +0 -1
  861. package/node_modules/@ktx/context/dist/ingest/action-identity.test.js +0 -19
  862. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/chunk.test.d.ts +0 -1
  863. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/chunk.test.js +0 -30
  864. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/dbt.adapter.test.d.ts +0 -1
  865. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/dbt.adapter.test.js +0 -43
  866. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/fetch.test.d.ts +0 -1
  867. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/fetch.test.js +0 -30
  868. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/parse.d.ts +0 -6
  869. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/parse.js +0 -23
  870. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/parse.test.d.ts +0 -1
  871. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/parse.test.js +0 -7
  872. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/match-tables.d.ts +0 -27
  873. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/match-tables.js +0 -80
  874. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/match-tables.test.d.ts +0 -1
  875. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/match-tables.test.js +0 -59
  876. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/merge-semantic-model-tables.d.ts +0 -3
  877. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/merge-semantic-model-tables.js +0 -28
  878. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/merge-semantic-model-tables.test.d.ts +0 -1
  879. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/merge-semantic-model-tables.test.js +0 -55
  880. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/parse-schema.d.ts +0 -65
  881. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/parse-schema.js +0 -432
  882. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/parse-schema.test.d.ts +0 -1
  883. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/parse-schema.test.js +0 -195
  884. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-description-updates.d.ts +0 -13
  885. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-description-updates.js +0 -46
  886. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-description-updates.test.d.ts +0 -1
  887. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-description-updates.test.js +0 -88
  888. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-metadata-updates.d.ts +0 -9
  889. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-metadata-updates.js +0 -57
  890. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-metadata-updates.test.d.ts +0 -1
  891. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-metadata-updates.test.js +0 -68
  892. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-relationship-updates.d.ts +0 -12
  893. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-relationship-updates.js +0 -34
  894. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-relationship-updates.test.d.ts +0 -1
  895. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-relationship-updates.test.js +0 -56
  896. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-extraction-golden-parity.test.d.ts +0 -1
  897. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-extraction-golden-parity.test.js +0 -392
  898. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/bigquery-query-history-reader.js +0 -199
  899. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/bigquery-query-history-reader.test.d.ts +0 -1
  900. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/bigquery-query-history-reader.test.js +0 -121
  901. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/buckets.test.d.ts +0 -1
  902. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/buckets.test.js +0 -49
  903. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/chunk-unified.js +0 -86
  904. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/chunk-unified.test.d.ts +0 -1
  905. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/chunk-unified.test.js +0 -160
  906. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/detect.test.d.ts +0 -1
  907. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/detect.test.js +0 -48
  908. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/evidence-tool.d.ts +0 -41
  909. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/evidence-tool.js +0 -88
  910. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/evidence-tool.test.d.ts +0 -1
  911. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/evidence-tool.test.js +0 -67
  912. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/evidence.d.ts +0 -77
  913. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/evidence.js +0 -32
  914. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/evidence.test.d.ts +0 -1
  915. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/evidence.test.js +0 -43
  916. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/historic-sql.adapter.test.d.ts +0 -1
  917. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/historic-sql.adapter.test.js +0 -98
  918. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/local-ingest-acceptance.test.d.ts +0 -1
  919. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/local-ingest-acceptance.test.js +0 -235
  920. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/pattern-inputs.d.ts +0 -21
  921. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/pattern-inputs.js +0 -66
  922. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/pattern-inputs.test.d.ts +0 -1
  923. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/pattern-inputs.test.js +0 -68
  924. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/postgres-pgss-reader.test.d.ts +0 -1
  925. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/postgres-pgss-reader.test.js +0 -205
  926. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/projection.d.ts +0 -24
  927. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/projection.js +0 -320
  928. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/projection.test.d.ts +0 -1
  929. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/projection.test.js +0 -392
  930. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/redaction.test.d.ts +0 -1
  931. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/redaction.test.js +0 -22
  932. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/skill-schemas.d.ts +0 -37
  933. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/skill-schemas.js +0 -24
  934. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/skill-schemas.test.d.ts +0 -1
  935. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/skill-schemas.test.js +0 -62
  936. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/snowflake-query-history-reader.test.d.ts +0 -1
  937. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/snowflake-query-history-reader.test.js +0 -117
  938. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/stage-unified.d.ts +0 -13
  939. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/stage-unified.test.d.ts +0 -1
  940. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/stage-unified.test.js +0 -405
  941. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/types.d.ts +0 -184
  942. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/types.test.d.ts +0 -1
  943. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/types.test.js +0 -87
  944. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/chunk.test.d.ts +0 -1
  945. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/chunk.test.js +0 -95
  946. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/daemon-introspection.d.ts +0 -20
  947. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/daemon-introspection.js +0 -190
  948. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/daemon-introspection.test.d.ts +0 -1
  949. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/daemon-introspection.test.js +0 -236
  950. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/extracted-schema.d.ts +0 -29
  951. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/extracted-schema.js +0 -28
  952. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/extracted-schema.test.d.ts +0 -1
  953. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/extracted-schema.test.js +0 -129
  954. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/live-database.adapter.js +0 -24
  955. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/live-database.adapter.test.d.ts +0 -1
  956. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/live-database.adapter.test.js +0 -55
  957. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/manifest.d.ts +0 -65
  958. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/manifest.test.d.ts +0 -1
  959. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/manifest.test.js +0 -291
  960. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/stage.d.ts +0 -12
  961. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/stage.js +0 -105
  962. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/stage.test.d.ts +0 -1
  963. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/stage.test.js +0 -133
  964. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/structural-sync.d.ts +0 -89
  965. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/structural-sync.js +0 -335
  966. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/structural-sync.test.d.ts +0 -1
  967. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/structural-sync.test.js +0 -416
  968. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/types.d.ts +0 -8
  969. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/types.js +0 -1
  970. package/node_modules/@ktx/context/dist/ingest/adapters/looker/chunk.test.d.ts +0 -1
  971. package/node_modules/@ktx/context/dist/ingest/adapters/looker/chunk.test.js +0 -142
  972. package/node_modules/@ktx/context/dist/ingest/adapters/looker/client-boundary.test.d.ts +0 -1
  973. package/node_modules/@ktx/context/dist/ingest/adapters/looker/client-boundary.test.js +0 -12
  974. package/node_modules/@ktx/context/dist/ingest/adapters/looker/client.test.d.ts +0 -1
  975. package/node_modules/@ktx/context/dist/ingest/adapters/looker/client.test.js +0 -407
  976. package/node_modules/@ktx/context/dist/ingest/adapters/looker/daemon-table-identifier-parser.test.d.ts +0 -1
  977. package/node_modules/@ktx/context/dist/ingest/adapters/looker/daemon-table-identifier-parser.test.js +0 -40
  978. package/node_modules/@ktx/context/dist/ingest/adapters/looker/detect.test.d.ts +0 -1
  979. package/node_modules/@ktx/context/dist/ingest/adapters/looker/detect.test.js +0 -39
  980. package/node_modules/@ktx/context/dist/ingest/adapters/looker/evidence-documents.test.d.ts +0 -1
  981. package/node_modules/@ktx/context/dist/ingest/adapters/looker/evidence-documents.test.js +0 -178
  982. package/node_modules/@ktx/context/dist/ingest/adapters/looker/factory.d.ts +0 -21
  983. package/node_modules/@ktx/context/dist/ingest/adapters/looker/factory.js +0 -22
  984. package/node_modules/@ktx/context/dist/ingest/adapters/looker/factory.test.d.ts +0 -1
  985. package/node_modules/@ktx/context/dist/ingest/adapters/looker/factory.test.js +0 -55
  986. package/node_modules/@ktx/context/dist/ingest/adapters/looker/fetch-report.test.d.ts +0 -1
  987. package/node_modules/@ktx/context/dist/ingest/adapters/looker/fetch-report.test.js +0 -71
  988. package/node_modules/@ktx/context/dist/ingest/adapters/looker/fetch.d.ts +0 -31
  989. package/node_modules/@ktx/context/dist/ingest/adapters/looker/fetch.test.d.ts +0 -1
  990. package/node_modules/@ktx/context/dist/ingest/adapters/looker/fetch.test.js +0 -592
  991. package/node_modules/@ktx/context/dist/ingest/adapters/looker/local-looker.adapter.d.ts +0 -11
  992. package/node_modules/@ktx/context/dist/ingest/adapters/looker/local-looker.adapter.js +0 -45
  993. package/node_modules/@ktx/context/dist/ingest/adapters/looker/local-runtime-store.d.ts +0 -50
  994. package/node_modules/@ktx/context/dist/ingest/adapters/looker/local-runtime-store.test.d.ts +0 -1
  995. package/node_modules/@ktx/context/dist/ingest/adapters/looker/local-runtime-store.test.js +0 -106
  996. package/node_modules/@ktx/context/dist/ingest/adapters/looker/looker.adapter.test.d.ts +0 -1
  997. package/node_modules/@ktx/context/dist/ingest/adapters/looker/looker.adapter.test.js +0 -99
  998. package/node_modules/@ktx/context/dist/ingest/adapters/looker/mapping.d.ts +0 -126
  999. package/node_modules/@ktx/context/dist/ingest/adapters/looker/mapping.js +0 -303
  1000. package/node_modules/@ktx/context/dist/ingest/adapters/looker/mapping.test.d.ts +0 -1
  1001. package/node_modules/@ktx/context/dist/ingest/adapters/looker/mapping.test.js +0 -334
  1002. package/node_modules/@ktx/context/dist/ingest/adapters/looker/reconcile.d.ts +0 -2
  1003. package/node_modules/@ktx/context/dist/ingest/adapters/looker/reconcile.js +0 -20
  1004. package/node_modules/@ktx/context/dist/ingest/adapters/looker/reconcile.test.d.ts +0 -1
  1005. package/node_modules/@ktx/context/dist/ingest/adapters/looker/reconcile.test.js +0 -22
  1006. package/node_modules/@ktx/context/dist/ingest/adapters/looker/scope.d.ts +0 -6
  1007. package/node_modules/@ktx/context/dist/ingest/adapters/looker/scope.js +0 -55
  1008. package/node_modules/@ktx/context/dist/ingest/adapters/looker/scope.test.d.ts +0 -1
  1009. package/node_modules/@ktx/context/dist/ingest/adapters/looker/scope.test.js +0 -84
  1010. package/node_modules/@ktx/context/dist/ingest/adapters/looker/target-connections.test.d.ts +0 -1
  1011. package/node_modules/@ktx/context/dist/ingest/adapters/looker/target-connections.test.js +0 -71
  1012. package/node_modules/@ktx/context/dist/ingest/adapters/looker/tools/looker-query-to-sl.tool.d.ts +0 -107
  1013. package/node_modules/@ktx/context/dist/ingest/adapters/looker/tools/looker-query-to-sl.tool.js +0 -236
  1014. package/node_modules/@ktx/context/dist/ingest/adapters/looker/tools/looker-query-to-sl.tool.test.d.ts +0 -1
  1015. package/node_modules/@ktx/context/dist/ingest/adapters/looker/tools/looker-query-to-sl.tool.test.js +0 -211
  1016. package/node_modules/@ktx/context/dist/ingest/adapters/looker/types.d.ts +0 -438
  1017. package/node_modules/@ktx/context/dist/ingest/adapters/looker/types.js +0 -198
  1018. package/node_modules/@ktx/context/dist/ingest/adapters/looker/types.test.d.ts +0 -1
  1019. package/node_modules/@ktx/context/dist/ingest/adapters/looker/types.test.js +0 -260
  1020. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/chunk.test.d.ts +0 -1
  1021. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/chunk.test.js +0 -213
  1022. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/detect.test.d.ts +0 -1
  1023. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/detect.test.js +0 -37
  1024. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/fetch-report.d.ts +0 -15
  1025. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/fetch-report.js +0 -98
  1026. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/fetch-report.test.d.ts +0 -1
  1027. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/fetch-report.test.js +0 -82
  1028. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/fetch.test.d.ts +0 -1
  1029. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/fetch.test.js +0 -121
  1030. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/graph.test.d.ts +0 -1
  1031. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/graph.test.js +0 -105
  1032. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/lookml.adapter.test.d.ts +0 -1
  1033. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/lookml.adapter.test.js +0 -49
  1034. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/parse.test.d.ts +0 -1
  1035. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/parse.test.js +0 -118
  1036. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/pull-config.d.ts +0 -37
  1037. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/pull-config.js +0 -26
  1038. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/pull-config.test.d.ts +0 -1
  1039. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/pull-config.test.js +0 -128
  1040. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/card-references.test.d.ts +0 -1
  1041. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/card-references.test.js +0 -36
  1042. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/chunk.test.d.ts +0 -1
  1043. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/chunk.test.js +0 -299
  1044. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/client-boundary.test.d.ts +0 -1
  1045. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/client-boundary.test.js +0 -38
  1046. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/client-port.d.ts +0 -167
  1047. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/client-port.test.d.ts +0 -1
  1048. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/client-port.test.js +0 -86
  1049. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/client.d.ts +0 -114
  1050. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/client.js +0 -671
  1051. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/client.test.d.ts +0 -1
  1052. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/client.test.js +0 -377
  1053. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/detect.test.d.ts +0 -1
  1054. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/detect.test.js +0 -42
  1055. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/fanout-planner.d.ts +0 -17
  1056. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/fanout-planner.test.d.ts +0 -1
  1057. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/fanout-planner.test.js +0 -44
  1058. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/fetch-scope.test.d.ts +0 -1
  1059. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/fetch-scope.test.js +0 -124
  1060. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/fetch.test.d.ts +0 -1
  1061. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/fetch.test.js +0 -557
  1062. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/local-metabase.adapter.d.ts +0 -13
  1063. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/local-metabase.adapter.js +0 -41
  1064. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/local-metabase.adapter.test.d.ts +0 -1
  1065. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/local-metabase.adapter.test.js +0 -56
  1066. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/local-source-state-store.d.ts +0 -43
  1067. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/local-source-state-store.js +0 -176
  1068. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/local-source-state-store.test.d.ts +0 -1
  1069. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/local-source-state-store.test.js +0 -99
  1070. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/mapping.d.ts +0 -92
  1071. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/mapping.js +0 -220
  1072. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/mapping.test.d.ts +0 -1
  1073. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/mapping.test.js +0 -215
  1074. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/metabase.adapter.test.d.ts +0 -1
  1075. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/metabase.adapter.test.js +0 -129
  1076. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/serialize-card.d.ts +0 -53
  1077. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/serialize-card.js +0 -67
  1078. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/serialize-card.test.d.ts +0 -1
  1079. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/serialize-card.test.js +0 -205
  1080. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/source-state-port.d.ts +0 -23
  1081. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/source-state-port.js +0 -1
  1082. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/types.d.ts +0 -142
  1083. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/types.js +0 -106
  1084. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/types.test.d.ts +0 -1
  1085. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/types.test.js +0 -75
  1086. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/chunk.test.d.ts +0 -1
  1087. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/chunk.test.js +0 -114
  1088. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/deep-parse.d.ts +0 -77
  1089. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/deep-parse.js +0 -460
  1090. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/deep-parse.test.d.ts +0 -1
  1091. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/deep-parse.test.js +0 -1139
  1092. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/detect.test.d.ts +0 -1
  1093. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/detect.test.js +0 -43
  1094. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/fetch.test.d.ts +0 -1
  1095. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/fetch.test.js +0 -97
  1096. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/graph.test.d.ts +0 -1
  1097. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/graph.test.js +0 -245
  1098. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/import-semantic-models.d.ts +0 -29
  1099. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/import-semantic-models.js +0 -136
  1100. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/import-semantic-models.test.d.ts +0 -1
  1101. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/import-semantic-models.test.js +0 -318
  1102. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/metricflow.adapter.test.d.ts +0 -1
  1103. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/metricflow.adapter.test.js +0 -212
  1104. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/parse.d.ts +0 -42
  1105. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/parse.test.d.ts +0 -1
  1106. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/parse.test.js +0 -171
  1107. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/pull-config.d.ts +0 -37
  1108. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/pull-config.js +0 -24
  1109. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/pull-config.test.d.ts +0 -1
  1110. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/pull-config.test.js +0 -57
  1111. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/semantic-models.d.ts +0 -39
  1112. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/semantic-models.js +0 -278
  1113. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/semantic-models.test.d.ts +0 -1
  1114. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/semantic-models.test.js +0 -204
  1115. package/node_modules/@ktx/context/dist/ingest/adapters/notion/chunk.d.ts +0 -4
  1116. package/node_modules/@ktx/context/dist/ingest/adapters/notion/chunk.js +0 -137
  1117. package/node_modules/@ktx/context/dist/ingest/adapters/notion/cluster.d.ts +0 -10
  1118. package/node_modules/@ktx/context/dist/ingest/adapters/notion/cluster.js +0 -82
  1119. package/node_modules/@ktx/context/dist/ingest/adapters/notion/cluster.test.d.ts +0 -1
  1120. package/node_modules/@ktx/context/dist/ingest/adapters/notion/cluster.test.js +0 -123
  1121. package/node_modules/@ktx/context/dist/ingest/adapters/notion/fetch.test.d.ts +0 -1
  1122. package/node_modules/@ktx/context/dist/ingest/adapters/notion/fetch.test.js +0 -358
  1123. package/node_modules/@ktx/context/dist/ingest/adapters/notion/local-state-store.test.d.ts +0 -1
  1124. package/node_modules/@ktx/context/dist/ingest/adapters/notion/local-state-store.test.js +0 -29
  1125. package/node_modules/@ktx/context/dist/ingest/adapters/notion/normalize.d.ts +0 -10
  1126. package/node_modules/@ktx/context/dist/ingest/adapters/notion/normalize.js +0 -165
  1127. package/node_modules/@ktx/context/dist/ingest/adapters/notion/normalize.test.d.ts +0 -1
  1128. package/node_modules/@ktx/context/dist/ingest/adapters/notion/normalize.test.js +0 -64
  1129. package/node_modules/@ktx/context/dist/ingest/adapters/notion/notion-client.d.ts +0 -74
  1130. package/node_modules/@ktx/context/dist/ingest/adapters/notion/notion-client.js +0 -107
  1131. package/node_modules/@ktx/context/dist/ingest/adapters/notion/notion-client.test.d.ts +0 -1
  1132. package/node_modules/@ktx/context/dist/ingest/adapters/notion/notion-client.test.js +0 -49
  1133. package/node_modules/@ktx/context/dist/ingest/adapters/notion/notion.adapter.test.d.ts +0 -1
  1134. package/node_modules/@ktx/context/dist/ingest/adapters/notion/notion.adapter.test.js +0 -315
  1135. package/node_modules/@ktx/context/dist/ingest/artifact-gates.d.ts +0 -25
  1136. package/node_modules/@ktx/context/dist/ingest/artifact-gates.test.d.ts +0 -1
  1137. package/node_modules/@ktx/context/dist/ingest/artifact-gates.test.js +0 -167
  1138. package/node_modules/@ktx/context/dist/ingest/canonical-pins.test.d.ts +0 -1
  1139. package/node_modules/@ktx/context/dist/ingest/canonical-pins.test.js +0 -66
  1140. package/node_modules/@ktx/context/dist/ingest/clustering/kmeans.test.d.ts +0 -1
  1141. package/node_modules/@ktx/context/dist/ingest/clustering/kmeans.test.js +0 -61
  1142. package/node_modules/@ktx/context/dist/ingest/context-candidates/candidate-dedup.service.d.ts +0 -27
  1143. package/node_modules/@ktx/context/dist/ingest/context-candidates/candidate-dedup.service.js +0 -234
  1144. package/node_modules/@ktx/context/dist/ingest/context-candidates/candidate-dedup.service.test.d.ts +0 -1
  1145. package/node_modules/@ktx/context/dist/ingest/context-candidates/candidate-dedup.service.test.js +0 -216
  1146. package/node_modules/@ktx/context/dist/ingest/context-candidates/context-candidate-carryforward.service.d.ts +0 -31
  1147. package/node_modules/@ktx/context/dist/ingest/context-candidates/context-candidate-carryforward.service.js +0 -131
  1148. package/node_modules/@ktx/context/dist/ingest/context-candidates/context-candidate-carryforward.service.test.d.ts +0 -1
  1149. package/node_modules/@ktx/context/dist/ingest/context-candidates/context-candidate-carryforward.service.test.js +0 -161
  1150. package/node_modules/@ktx/context/dist/ingest/context-candidates/curator-pagination.service.d.ts +0 -64
  1151. package/node_modules/@ktx/context/dist/ingest/context-candidates/curator-pagination.service.js +0 -240
  1152. package/node_modules/@ktx/context/dist/ingest/context-candidates/curator-pagination.service.test.d.ts +0 -1
  1153. package/node_modules/@ktx/context/dist/ingest/context-candidates/curator-pagination.service.test.js +0 -168
  1154. package/node_modules/@ktx/context/dist/ingest/context-candidates/embedding-text.test.d.ts +0 -1
  1155. package/node_modules/@ktx/context/dist/ingest/context-candidates/embedding-text.test.js +0 -10
  1156. package/node_modules/@ktx/context/dist/ingest/context-candidates/index.d.ts +0 -9
  1157. package/node_modules/@ktx/context/dist/ingest/context-candidates/index.js +0 -4
  1158. package/node_modules/@ktx/context/dist/ingest/context-candidates/store.js +0 -1
  1159. package/node_modules/@ktx/context/dist/ingest/context-candidates/store.test.d.ts +0 -1
  1160. package/node_modules/@ktx/context/dist/ingest/context-candidates/store.test.js +0 -67
  1161. package/node_modules/@ktx/context/dist/ingest/context-candidates/types.d.ts +0 -103
  1162. package/node_modules/@ktx/context/dist/ingest/context-candidates/types.js +0 -1
  1163. package/node_modules/@ktx/context/dist/ingest/context-evidence/context-evidence-index.service.d.ts +0 -53
  1164. package/node_modules/@ktx/context/dist/ingest/context-evidence/context-evidence-index.service.js +0 -303
  1165. package/node_modules/@ktx/context/dist/ingest/context-evidence/context-evidence-index.service.test.d.ts +0 -1
  1166. package/node_modules/@ktx/context/dist/ingest/context-evidence/context-evidence-index.service.test.js +0 -374
  1167. package/node_modules/@ktx/context/dist/ingest/context-evidence/index.d.ts +0 -5
  1168. package/node_modules/@ktx/context/dist/ingest/context-evidence/index.js +0 -2
  1169. package/node_modules/@ktx/context/dist/ingest/context-evidence/sqlite-context-evidence-store.d.ts +0 -89
  1170. package/node_modules/@ktx/context/dist/ingest/context-evidence/sqlite-context-evidence-store.js +0 -1025
  1171. package/node_modules/@ktx/context/dist/ingest/context-evidence/sqlite-context-evidence-store.test.d.ts +0 -1
  1172. package/node_modules/@ktx/context/dist/ingest/context-evidence/sqlite-context-evidence-store.test.js +0 -416
  1173. package/node_modules/@ktx/context/dist/ingest/context-evidence/store.js +0 -1
  1174. package/node_modules/@ktx/context/dist/ingest/context-evidence/store.test.d.ts +0 -1
  1175. package/node_modules/@ktx/context/dist/ingest/context-evidence/store.test.js +0 -55
  1176. package/node_modules/@ktx/context/dist/ingest/context-evidence/types.js +0 -1
  1177. package/node_modules/@ktx/context/dist/ingest/dbt-shared/project-vars.d.ts +0 -12
  1178. package/node_modules/@ktx/context/dist/ingest/dbt-shared/project-vars.js +0 -86
  1179. package/node_modules/@ktx/context/dist/ingest/dbt-shared/project-vars.test.d.ts +0 -1
  1180. package/node_modules/@ktx/context/dist/ingest/dbt-shared/project-vars.test.js +0 -90
  1181. package/node_modules/@ktx/context/dist/ingest/dbt-shared/schema-files.d.ts +0 -3
  1182. package/node_modules/@ktx/context/dist/ingest/dbt-shared/schema-files.js +0 -62
  1183. package/node_modules/@ktx/context/dist/ingest/dbt-shared/schema-files.test.d.ts +0 -1
  1184. package/node_modules/@ktx/context/dist/ingest/dbt-shared/schema-files.test.js +0 -35
  1185. package/node_modules/@ktx/context/dist/ingest/diff-set.service.test.d.ts +0 -1
  1186. package/node_modules/@ktx/context/dist/ingest/diff-set.service.test.js +0 -132
  1187. package/node_modules/@ktx/context/dist/ingest/final-gate-repair.d.ts +0 -29
  1188. package/node_modules/@ktx/context/dist/ingest/final-gate-repair.test.d.ts +0 -1
  1189. package/node_modules/@ktx/context/dist/ingest/final-gate-repair.test.js +0 -109
  1190. package/node_modules/@ktx/context/dist/ingest/finalization-scope.d.ts +0 -22
  1191. package/node_modules/@ktx/context/dist/ingest/finalization-scope.test.d.ts +0 -1
  1192. package/node_modules/@ktx/context/dist/ingest/finalization-scope.test.js +0 -114
  1193. package/node_modules/@ktx/context/dist/ingest/index.d.ts +0 -154
  1194. package/node_modules/@ktx/context/dist/ingest/index.js +0 -99
  1195. package/node_modules/@ktx/context/dist/ingest/ingest-bundle.runner.isolated-diff.test.d.ts +0 -1
  1196. package/node_modules/@ktx/context/dist/ingest/ingest-bundle.runner.isolated-diff.test.js +0 -1927
  1197. package/node_modules/@ktx/context/dist/ingest/ingest-bundle.runner.js +0 -2247
  1198. package/node_modules/@ktx/context/dist/ingest/ingest-bundle.runner.test.d.ts +0 -1
  1199. package/node_modules/@ktx/context/dist/ingest/ingest-bundle.runner.test.js +0 -1899
  1200. package/node_modules/@ktx/context/dist/ingest/ingest-prompts.test.d.ts +0 -1
  1201. package/node_modules/@ktx/context/dist/ingest/ingest-prompts.test.js +0 -32
  1202. package/node_modules/@ktx/context/dist/ingest/ingest-runtime-assets.test.d.ts +0 -1
  1203. package/node_modules/@ktx/context/dist/ingest/ingest-runtime-assets.test.js +0 -89
  1204. package/node_modules/@ktx/context/dist/ingest/ingest-trace.d.ts +0 -50
  1205. package/node_modules/@ktx/context/dist/ingest/ingest-trace.js +0 -88
  1206. package/node_modules/@ktx/context/dist/ingest/ingest-trace.test.d.ts +0 -1
  1207. package/node_modules/@ktx/context/dist/ingest/ingest-trace.test.js +0 -76
  1208. package/node_modules/@ktx/context/dist/ingest/isolated-diff/git-patch.d.ts +0 -16
  1209. package/node_modules/@ktx/context/dist/ingest/isolated-diff/git-patch.js +0 -78
  1210. package/node_modules/@ktx/context/dist/ingest/isolated-diff/git-patch.test.d.ts +0 -1
  1211. package/node_modules/@ktx/context/dist/ingest/isolated-diff/git-patch.test.js +0 -76
  1212. package/node_modules/@ktx/context/dist/ingest/isolated-diff/patch-integrator.d.ts +0 -58
  1213. package/node_modules/@ktx/context/dist/ingest/isolated-diff/patch-integrator.test.d.ts +0 -1
  1214. package/node_modules/@ktx/context/dist/ingest/isolated-diff/patch-integrator.test.js +0 -369
  1215. package/node_modules/@ktx/context/dist/ingest/isolated-diff/textual-conflict-resolver.d.ts +0 -23
  1216. package/node_modules/@ktx/context/dist/ingest/isolated-diff/textual-conflict-resolver.test.d.ts +0 -1
  1217. package/node_modules/@ktx/context/dist/ingest/isolated-diff/textual-conflict-resolver.test.js +0 -101
  1218. package/node_modules/@ktx/context/dist/ingest/isolated-diff/work-unit-executor.test.d.ts +0 -1
  1219. package/node_modules/@ktx/context/dist/ingest/isolated-diff/work-unit-executor.test.js +0 -137
  1220. package/node_modules/@ktx/context/dist/ingest/local-adapters.d.ts +0 -35
  1221. package/node_modules/@ktx/context/dist/ingest/local-adapters.js +0 -247
  1222. package/node_modules/@ktx/context/dist/ingest/local-adapters.test.d.ts +0 -1
  1223. package/node_modules/@ktx/context/dist/ingest/local-adapters.test.js +0 -625
  1224. package/node_modules/@ktx/context/dist/ingest/local-bundle-ingest.test.d.ts +0 -1
  1225. package/node_modules/@ktx/context/dist/ingest/local-bundle-ingest.test.js +0 -794
  1226. package/node_modules/@ktx/context/dist/ingest/local-bundle-runtime.d.ts +0 -34
  1227. package/node_modules/@ktx/context/dist/ingest/local-bundle-runtime.js +0 -601
  1228. package/node_modules/@ktx/context/dist/ingest/local-bundle-runtime.test.d.ts +0 -1
  1229. package/node_modules/@ktx/context/dist/ingest/local-bundle-runtime.test.js +0 -225
  1230. package/node_modules/@ktx/context/dist/ingest/local-embedding-provider.integration.test.d.ts +0 -1
  1231. package/node_modules/@ktx/context/dist/ingest/local-embedding-provider.integration.test.js +0 -139
  1232. package/node_modules/@ktx/context/dist/ingest/local-ingest.d.ts +0 -87
  1233. package/node_modules/@ktx/context/dist/ingest/local-ingest.js +0 -297
  1234. package/node_modules/@ktx/context/dist/ingest/local-mapping-reconcile.d.ts +0 -2
  1235. package/node_modules/@ktx/context/dist/ingest/local-mapping-reconcile.js +0 -26
  1236. package/node_modules/@ktx/context/dist/ingest/local-mapping-reconcile.test.d.ts +0 -1
  1237. package/node_modules/@ktx/context/dist/ingest/local-mapping-reconcile.test.js +0 -61
  1238. package/node_modules/@ktx/context/dist/ingest/local-metabase-ingest.test.d.ts +0 -1
  1239. package/node_modules/@ktx/context/dist/ingest/local-metabase-ingest.test.js +0 -227
  1240. package/node_modules/@ktx/context/dist/ingest/local-stage-ingest.d.ts +0 -53
  1241. package/node_modules/@ktx/context/dist/ingest/local-stage-ingest.js +0 -290
  1242. package/node_modules/@ktx/context/dist/ingest/local-stage-ingest.test.d.ts +0 -1
  1243. package/node_modules/@ktx/context/dist/ingest/local-stage-ingest.test.js +0 -581
  1244. package/node_modules/@ktx/context/dist/ingest/memory-flow/acceptance-fixtures.d.ts +0 -6
  1245. package/node_modules/@ktx/context/dist/ingest/memory-flow/acceptance-fixtures.js +0 -155
  1246. package/node_modules/@ktx/context/dist/ingest/memory-flow/acceptance.test.d.ts +0 -1
  1247. package/node_modules/@ktx/context/dist/ingest/memory-flow/acceptance.test.js +0 -43
  1248. package/node_modules/@ktx/context/dist/ingest/memory-flow/events.d.ts +0 -9
  1249. package/node_modules/@ktx/context/dist/ingest/memory-flow/events.js +0 -196
  1250. package/node_modules/@ktx/context/dist/ingest/memory-flow/events.test.d.ts +0 -1
  1251. package/node_modules/@ktx/context/dist/ingest/memory-flow/events.test.js +0 -319
  1252. package/node_modules/@ktx/context/dist/ingest/memory-flow/index.d.ts +0 -6
  1253. package/node_modules/@ktx/context/dist/ingest/memory-flow/index.js +0 -4
  1254. package/node_modules/@ktx/context/dist/ingest/memory-flow/interaction.d.ts +0 -9
  1255. package/node_modules/@ktx/context/dist/ingest/memory-flow/interaction.js +0 -315
  1256. package/node_modules/@ktx/context/dist/ingest/memory-flow/interaction.test.d.ts +0 -1
  1257. package/node_modules/@ktx/context/dist/ingest/memory-flow/interaction.test.js +0 -264
  1258. package/node_modules/@ktx/context/dist/ingest/memory-flow/interactive-render.test.d.ts +0 -1
  1259. package/node_modules/@ktx/context/dist/ingest/memory-flow/interactive-render.test.js +0 -160
  1260. package/node_modules/@ktx/context/dist/ingest/memory-flow/live-buffer.test.d.ts +0 -1
  1261. package/node_modules/@ktx/context/dist/ingest/memory-flow/live-buffer.test.js +0 -77
  1262. package/node_modules/@ktx/context/dist/ingest/memory-flow/package-export.test.d.ts +0 -1
  1263. package/node_modules/@ktx/context/dist/ingest/memory-flow/package-export.test.js +0 -9
  1264. package/node_modules/@ktx/context/dist/ingest/memory-flow/render.test.d.ts +0 -1
  1265. package/node_modules/@ktx/context/dist/ingest/memory-flow/render.test.js +0 -105
  1266. package/node_modules/@ktx/context/dist/ingest/memory-flow/schema.d.ts +0 -208
  1267. package/node_modules/@ktx/context/dist/ingest/memory-flow/schema.js +0 -172
  1268. package/node_modules/@ktx/context/dist/ingest/memory-flow/schema.test.d.ts +0 -1
  1269. package/node_modules/@ktx/context/dist/ingest/memory-flow/schema.test.js +0 -147
  1270. package/node_modules/@ktx/context/dist/ingest/memory-flow/summary.test.d.ts +0 -1
  1271. package/node_modules/@ktx/context/dist/ingest/memory-flow/summary.test.js +0 -130
  1272. package/node_modules/@ktx/context/dist/ingest/memory-flow/types.js +0 -1
  1273. package/node_modules/@ktx/context/dist/ingest/memory-flow/view-model.test.d.ts +0 -1
  1274. package/node_modules/@ktx/context/dist/ingest/memory-flow/view-model.test.js +0 -397
  1275. package/node_modules/@ktx/context/dist/ingest/memory-flow/visuals.d.ts +0 -20
  1276. package/node_modules/@ktx/context/dist/ingest/memory-flow/visuals.js +0 -44
  1277. package/node_modules/@ktx/context/dist/ingest/memory-flow/visuals.test.d.ts +0 -1
  1278. package/node_modules/@ktx/context/dist/ingest/memory-flow/visuals.test.js +0 -49
  1279. package/node_modules/@ktx/context/dist/ingest/metabase-mapping.d.ts +0 -2
  1280. package/node_modules/@ktx/context/dist/ingest/metabase-mapping.js +0 -1
  1281. package/node_modules/@ktx/context/dist/ingest/page-triage/index.d.ts +0 -2
  1282. package/node_modules/@ktx/context/dist/ingest/page-triage/index.js +0 -1
  1283. package/node_modules/@ktx/context/dist/ingest/page-triage/page-triage.service.d.ts +0 -84
  1284. package/node_modules/@ktx/context/dist/ingest/page-triage/page-triage.service.js +0 -318
  1285. package/node_modules/@ktx/context/dist/ingest/page-triage/page-triage.service.test.d.ts +0 -1
  1286. package/node_modules/@ktx/context/dist/ingest/page-triage/page-triage.service.test.js +0 -311
  1287. package/node_modules/@ktx/context/dist/ingest/ports.d.ts +0 -323
  1288. package/node_modules/@ktx/context/dist/ingest/ports.js +0 -1
  1289. package/node_modules/@ktx/context/dist/ingest/raw-sources-paths.d.ts +0 -4
  1290. package/node_modules/@ktx/context/dist/ingest/raw-sources-paths.js +0 -16
  1291. package/node_modules/@ktx/context/dist/ingest/raw-sources-paths.test.d.ts +0 -1
  1292. package/node_modules/@ktx/context/dist/ingest/raw-sources-paths.test.js +0 -18
  1293. package/node_modules/@ktx/context/dist/ingest/repo-fetch.d.ts +0 -34
  1294. package/node_modules/@ktx/context/dist/ingest/repo-fetch.js +0 -132
  1295. package/node_modules/@ktx/context/dist/ingest/repo-fetch.test.d.ts +0 -1
  1296. package/node_modules/@ktx/context/dist/ingest/repo-fetch.test.js +0 -168
  1297. package/node_modules/@ktx/context/dist/ingest/report-snapshot.d.ts +0 -298
  1298. package/node_modules/@ktx/context/dist/ingest/report-snapshot.js +0 -212
  1299. package/node_modules/@ktx/context/dist/ingest/report-snapshot.test.d.ts +0 -1
  1300. package/node_modules/@ktx/context/dist/ingest/report-snapshot.test.js +0 -329
  1301. package/node_modules/@ktx/context/dist/ingest/reports.d.ts +0 -120
  1302. package/node_modules/@ktx/context/dist/ingest/reports.js +0 -37
  1303. package/node_modules/@ktx/context/dist/ingest/semantic-layer-target-policy.d.ts +0 -11
  1304. package/node_modules/@ktx/context/dist/ingest/semantic-layer-target-policy.js +0 -26
  1305. package/node_modules/@ktx/context/dist/ingest/semantic-layer-target-policy.test.d.ts +0 -1
  1306. package/node_modules/@ktx/context/dist/ingest/semantic-layer-target-policy.test.js +0 -25
  1307. package/node_modules/@ktx/context/dist/ingest/source-adapter-registry.test.d.ts +0 -1
  1308. package/node_modules/@ktx/context/dist/ingest/source-adapter-registry.test.js +0 -35
  1309. package/node_modules/@ktx/context/dist/ingest/sqlite-bundle-ingest-store.test.d.ts +0 -1
  1310. package/node_modules/@ktx/context/dist/ingest/sqlite-bundle-ingest-store.test.js +0 -517
  1311. package/node_modules/@ktx/context/dist/ingest/sqlite-local-ingest-store.test.d.ts +0 -1
  1312. package/node_modules/@ktx/context/dist/ingest/sqlite-local-ingest-store.test.js +0 -143
  1313. package/node_modules/@ktx/context/dist/ingest/stages/build-reconcile-context.context-candidates.test.d.ts +0 -1
  1314. package/node_modules/@ktx/context/dist/ingest/stages/build-reconcile-context.context-candidates.test.js +0 -102
  1315. package/node_modules/@ktx/context/dist/ingest/stages/build-reconcile-context.d.ts +0 -61
  1316. package/node_modules/@ktx/context/dist/ingest/stages/build-reconcile-context.test.d.ts +0 -1
  1317. package/node_modules/@ktx/context/dist/ingest/stages/build-reconcile-context.test.js +0 -141
  1318. package/node_modules/@ktx/context/dist/ingest/stages/build-wu-context.d.ts +0 -27
  1319. package/node_modules/@ktx/context/dist/ingest/stages/build-wu-context.js +0 -87
  1320. package/node_modules/@ktx/context/dist/ingest/stages/build-wu-context.test.d.ts +0 -1
  1321. package/node_modules/@ktx/context/dist/ingest/stages/build-wu-context.test.js +0 -196
  1322. package/node_modules/@ktx/context/dist/ingest/stages/stage-1-stage-raw-files.test.d.ts +0 -1
  1323. package/node_modules/@ktx/context/dist/ingest/stages/stage-1-stage-raw-files.test.js +0 -54
  1324. package/node_modules/@ktx/context/dist/ingest/stages/stage-3-work-units.d.ts +0 -48
  1325. package/node_modules/@ktx/context/dist/ingest/stages/stage-3-work-units.js +0 -108
  1326. package/node_modules/@ktx/context/dist/ingest/stages/stage-3-work-units.test.d.ts +0 -1
  1327. package/node_modules/@ktx/context/dist/ingest/stages/stage-3-work-units.test.js +0 -175
  1328. package/node_modules/@ktx/context/dist/ingest/stages/stage-4-reconciliation.d.ts +0 -28
  1329. package/node_modules/@ktx/context/dist/ingest/stages/stage-4-reconciliation.test.d.ts +0 -1
  1330. package/node_modules/@ktx/context/dist/ingest/stages/stage-4-reconciliation.test.js +0 -144
  1331. package/node_modules/@ktx/context/dist/ingest/stages/stage-index.types.d.ts +0 -50
  1332. package/node_modules/@ktx/context/dist/ingest/stages/stage-index.types.js +0 -1
  1333. package/node_modules/@ktx/context/dist/ingest/stages/validate-wu-sources.d.ts +0 -9
  1334. package/node_modules/@ktx/context/dist/ingest/stages/validate-wu-sources.test.d.ts +0 -1
  1335. package/node_modules/@ktx/context/dist/ingest/stages/validate-wu-sources.test.js +0 -27
  1336. package/node_modules/@ktx/context/dist/ingest/tools/emit-reconciliation-records.tool.test.d.ts +0 -1
  1337. package/node_modules/@ktx/context/dist/ingest/tools/emit-reconciliation-records.tool.test.js +0 -237
  1338. package/node_modules/@ktx/context/dist/ingest/tools/eviction-list.tool.test.d.ts +0 -1
  1339. package/node_modules/@ktx/context/dist/ingest/tools/eviction-list.tool.test.js +0 -44
  1340. package/node_modules/@ktx/context/dist/ingest/tools/read-raw-file.tool.test.d.ts +0 -1
  1341. package/node_modules/@ktx/context/dist/ingest/tools/read-raw-file.tool.test.js +0 -45
  1342. package/node_modules/@ktx/context/dist/ingest/tools/read-raw-span.tool.test.d.ts +0 -1
  1343. package/node_modules/@ktx/context/dist/ingest/tools/read-raw-span.tool.test.js +0 -34
  1344. package/node_modules/@ktx/context/dist/ingest/tools/stage-diff.tool.test.d.ts +0 -1
  1345. package/node_modules/@ktx/context/dist/ingest/tools/stage-diff.tool.test.js +0 -112
  1346. package/node_modules/@ktx/context/dist/ingest/tools/stage-list.tool.test.d.ts +0 -1
  1347. package/node_modules/@ktx/context/dist/ingest/tools/stage-list.tool.test.js +0 -58
  1348. package/node_modules/@ktx/context/dist/ingest/tools/tool-call-logger.d.ts +0 -33
  1349. package/node_modules/@ktx/context/dist/ingest/tools/tool-transcript-summary.test.d.ts +0 -1
  1350. package/node_modules/@ktx/context/dist/ingest/tools/tool-transcript-summary.test.js +0 -141
  1351. package/node_modules/@ktx/context/dist/ingest/tools/verification-ledger.tool.d.ts +0 -14
  1352. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/discover-data.tool.d.ts +0 -36
  1353. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/discover-data.tool.js +0 -94
  1354. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/discover-data.tool.test.d.ts +0 -1
  1355. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/discover-data.tool.test.js +0 -107
  1356. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/entity-details.tool.d.ts +0 -43
  1357. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/entity-details.tool.js +0 -137
  1358. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/entity-details.tool.test.d.ts +0 -1
  1359. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/entity-details.tool.test.js +0 -146
  1360. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/index.d.ts +0 -9
  1361. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/sql-execution.tool.d.ts +0 -31
  1362. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/sql-execution.tool.js +0 -84
  1363. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/sql-execution.tool.test.d.ts +0 -1
  1364. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/sql-execution.tool.test.js +0 -50
  1365. package/node_modules/@ktx/context/dist/ingest/types.d.ts +0 -201
  1366. package/node_modules/@ktx/context/dist/ingest/types.js +0 -1
  1367. package/node_modules/@ktx/context/dist/ingest/wiki-body-refs.d.ts +0 -24
  1368. package/node_modules/@ktx/context/dist/ingest/wiki-body-refs.js +0 -111
  1369. package/node_modules/@ktx/context/dist/ingest/wiki-body-refs.test.d.ts +0 -1
  1370. package/node_modules/@ktx/context/dist/ingest/wiki-body-refs.test.js +0 -138
  1371. package/node_modules/@ktx/context/dist/ingest/wiki-sl-ref-repair.d.ts +0 -19
  1372. package/node_modules/@ktx/context/dist/ingest/wiki-sl-ref-repair.test.d.ts +0 -1
  1373. package/node_modules/@ktx/context/dist/ingest/wiki-sl-ref-repair.test.js +0 -81
  1374. package/node_modules/@ktx/context/dist/llm/ai-sdk-runtime.d.ts +0 -23
  1375. package/node_modules/@ktx/context/dist/llm/ai-sdk-runtime.js +0 -133
  1376. package/node_modules/@ktx/context/dist/llm/claude-code-env.d.ts +0 -2
  1377. package/node_modules/@ktx/context/dist/llm/claude-code-env.js +0 -21
  1378. package/node_modules/@ktx/context/dist/llm/claude-code-env.test.d.ts +0 -1
  1379. package/node_modules/@ktx/context/dist/llm/claude-code-env.test.js +0 -17
  1380. package/node_modules/@ktx/context/dist/llm/claude-code-models.test.d.ts +0 -1
  1381. package/node_modules/@ktx/context/dist/llm/claude-code-models.test.js +0 -15
  1382. package/node_modules/@ktx/context/dist/llm/claude-code-runtime.d.ts +0 -36
  1383. package/node_modules/@ktx/context/dist/llm/claude-code-runtime.js +0 -269
  1384. package/node_modules/@ktx/context/dist/llm/claude-code-runtime.test.d.ts +0 -1
  1385. package/node_modules/@ktx/context/dist/llm/claude-code-runtime.test.js +0 -428
  1386. package/node_modules/@ktx/context/dist/llm/debug-request-recorder.d.ts +0 -44
  1387. package/node_modules/@ktx/context/dist/llm/debug-request-recorder.js +0 -79
  1388. package/node_modules/@ktx/context/dist/llm/debug-request-recorder.test.d.ts +0 -1
  1389. package/node_modules/@ktx/context/dist/llm/debug-request-recorder.test.js +0 -112
  1390. package/node_modules/@ktx/context/dist/llm/embedding-port.d.ts +0 -17
  1391. package/node_modules/@ktx/context/dist/llm/embedding-port.test.d.ts +0 -1
  1392. package/node_modules/@ktx/context/dist/llm/embedding-port.test.js +0 -34
  1393. package/node_modules/@ktx/context/dist/llm/generation.d.ts +0 -8
  1394. package/node_modules/@ktx/context/dist/llm/generation.js +0 -6
  1395. package/node_modules/@ktx/context/dist/llm/index.d.ts +0 -13
  1396. package/node_modules/@ktx/context/dist/llm/index.js +0 -10
  1397. package/node_modules/@ktx/context/dist/llm/local-config.d.ts +0 -20
  1398. package/node_modules/@ktx/context/dist/llm/local-config.js +0 -133
  1399. package/node_modules/@ktx/context/dist/llm/local-config.test.d.ts +0 -1
  1400. package/node_modules/@ktx/context/dist/llm/local-config.test.js +0 -164
  1401. package/node_modules/@ktx/context/dist/llm/runtime-local-config.test.d.ts +0 -1
  1402. package/node_modules/@ktx/context/dist/llm/runtime-local-config.test.js +0 -17
  1403. package/node_modules/@ktx/context/dist/llm/runtime-port.d.ts +0 -59
  1404. package/node_modules/@ktx/context/dist/llm/runtime-tools.d.ts +0 -10
  1405. package/node_modules/@ktx/context/dist/llm/runtime-tools.js +0 -68
  1406. package/node_modules/@ktx/context/dist/llm/runtime-tools.test.d.ts +0 -1
  1407. package/node_modules/@ktx/context/dist/llm/runtime-tools.test.js +0 -36
  1408. package/node_modules/@ktx/context/dist/mcp/context-tools.d.ts +0 -9
  1409. package/node_modules/@ktx/context/dist/mcp/context-tools.js +0 -553
  1410. package/node_modules/@ktx/context/dist/mcp/index.d.ts +0 -5
  1411. package/node_modules/@ktx/context/dist/mcp/index.js +0 -3
  1412. package/node_modules/@ktx/context/dist/mcp/local-project-ports.d.ts +0 -16
  1413. package/node_modules/@ktx/context/dist/mcp/local-project-ports.js +0 -201
  1414. package/node_modules/@ktx/context/dist/mcp/local-project-ports.test.d.ts +0 -1
  1415. package/node_modules/@ktx/context/dist/mcp/local-project-ports.test.js +0 -689
  1416. package/node_modules/@ktx/context/dist/mcp/server.d.ts +0 -7
  1417. package/node_modules/@ktx/context/dist/mcp/server.js +0 -24
  1418. package/node_modules/@ktx/context/dist/mcp/server.test.d.ts +0 -1
  1419. package/node_modules/@ktx/context/dist/mcp/server.test.js +0 -858
  1420. package/node_modules/@ktx/context/dist/mcp/types.d.ts +0 -158
  1421. package/node_modules/@ktx/context/dist/mcp/types.js +0 -1
  1422. package/node_modules/@ktx/context/dist/memory/capture-signals.d.ts +0 -8
  1423. package/node_modules/@ktx/context/dist/memory/capture-signals.js +0 -103
  1424. package/node_modules/@ktx/context/dist/memory/index.d.ts +0 -6
  1425. package/node_modules/@ktx/context/dist/memory/index.js +0 -5
  1426. package/node_modules/@ktx/context/dist/memory/local-memory.d.ts +0 -22
  1427. package/node_modules/@ktx/context/dist/memory/local-memory.js +0 -391
  1428. package/node_modules/@ktx/context/dist/memory/local-memory.test.d.ts +0 -1
  1429. package/node_modules/@ktx/context/dist/memory/local-memory.test.js +0 -159
  1430. package/node_modules/@ktx/context/dist/memory/memory-agent.service.d.ts +0 -59
  1431. package/node_modules/@ktx/context/dist/memory/memory-agent.service.ingest.test.d.ts +0 -1
  1432. package/node_modules/@ktx/context/dist/memory/memory-agent.service.ingest.test.js +0 -355
  1433. package/node_modules/@ktx/context/dist/memory/memory-agent.service.js +0 -539
  1434. package/node_modules/@ktx/context/dist/memory/memory-agent.service.test.d.ts +0 -1
  1435. package/node_modules/@ktx/context/dist/memory/memory-agent.service.test.js +0 -413
  1436. package/node_modules/@ktx/context/dist/memory/memory-runs.d.ts +0 -54
  1437. package/node_modules/@ktx/context/dist/memory/memory-runs.test.d.ts +0 -1
  1438. package/node_modules/@ktx/context/dist/memory/memory-runs.test.js +0 -158
  1439. package/node_modules/@ktx/context/dist/memory/memory-runtime-assets.test.d.ts +0 -1
  1440. package/node_modules/@ktx/context/dist/memory/memory-runtime-assets.test.js +0 -162
  1441. package/node_modules/@ktx/context/dist/memory/types.d.ts +0 -133
  1442. package/node_modules/@ktx/context/dist/memory/types.js +0 -1
  1443. package/node_modules/@ktx/context/dist/package-exports.test.d.ts +0 -1
  1444. package/node_modules/@ktx/context/dist/package-exports.test.js +0 -248
  1445. package/node_modules/@ktx/context/dist/project/config.d.ts +0 -579
  1446. package/node_modules/@ktx/context/dist/project/config.js +0 -331
  1447. package/node_modules/@ktx/context/dist/project/config.test.d.ts +0 -1
  1448. package/node_modules/@ktx/context/dist/project/config.test.js +0 -464
  1449. package/node_modules/@ktx/context/dist/project/driver-schemas.d.ts +0 -106
  1450. package/node_modules/@ktx/context/dist/project/driver-schemas.js +0 -184
  1451. package/node_modules/@ktx/context/dist/project/driver-schemas.test.d.ts +0 -1
  1452. package/node_modules/@ktx/context/dist/project/driver-schemas.test.js +0 -125
  1453. package/node_modules/@ktx/context/dist/project/index.d.ts +0 -12
  1454. package/node_modules/@ktx/context/dist/project/index.js +0 -6
  1455. package/node_modules/@ktx/context/dist/project/local-git-file-store.d.ts +0 -23
  1456. package/node_modules/@ktx/context/dist/project/local-git-file-store.test.d.ts +0 -1
  1457. package/node_modules/@ktx/context/dist/project/local-git-file-store.test.js +0 -71
  1458. package/node_modules/@ktx/context/dist/project/mappings-yaml-schema.d.ts +0 -58
  1459. package/node_modules/@ktx/context/dist/project/mappings-yaml-schema.js +0 -109
  1460. package/node_modules/@ktx/context/dist/project/mappings-yaml-schema.test.d.ts +0 -1
  1461. package/node_modules/@ktx/context/dist/project/mappings-yaml-schema.test.js +0 -79
  1462. package/node_modules/@ktx/context/dist/project/project.d.ts +0 -29
  1463. package/node_modules/@ktx/context/dist/project/project.js +0 -93
  1464. package/node_modules/@ktx/context/dist/project/project.test.d.ts +0 -1
  1465. package/node_modules/@ktx/context/dist/project/project.test.js +0 -55
  1466. package/node_modules/@ktx/context/dist/project/setup-config.d.ts +0 -12
  1467. package/node_modules/@ktx/context/dist/project/setup-config.js +0 -79
  1468. package/node_modules/@ktx/context/dist/project/setup-config.test.d.ts +0 -1
  1469. package/node_modules/@ktx/context/dist/project/setup-config.test.js +0 -38
  1470. package/node_modules/@ktx/context/dist/prompts/index.d.ts +0 -2
  1471. package/node_modules/@ktx/context/dist/prompts/index.js +0 -1
  1472. package/node_modules/@ktx/context/dist/prompts/prompt.service.d.ts +0 -28
  1473. package/node_modules/@ktx/context/dist/prompts/prompt.service.js +0 -84
  1474. package/node_modules/@ktx/context/dist/prompts/prompt.service.test.d.ts +0 -1
  1475. package/node_modules/@ktx/context/dist/prompts/prompt.service.test.js +0 -43
  1476. package/node_modules/@ktx/context/dist/scan/credentials.d.ts +0 -8
  1477. package/node_modules/@ktx/context/dist/scan/credentials.js +0 -38
  1478. package/node_modules/@ktx/context/dist/scan/credentials.test.d.ts +0 -1
  1479. package/node_modules/@ktx/context/dist/scan/credentials.test.js +0 -161
  1480. package/node_modules/@ktx/context/dist/scan/data-dictionary.d.ts +0 -22
  1481. package/node_modules/@ktx/context/dist/scan/data-dictionary.js +0 -66
  1482. package/node_modules/@ktx/context/dist/scan/data-dictionary.test.d.ts +0 -1
  1483. package/node_modules/@ktx/context/dist/scan/data-dictionary.test.js +0 -92
  1484. package/node_modules/@ktx/context/dist/scan/description-generation.d.ts +0 -122
  1485. package/node_modules/@ktx/context/dist/scan/description-generation.js +0 -556
  1486. package/node_modules/@ktx/context/dist/scan/description-generation.test.d.ts +0 -1
  1487. package/node_modules/@ktx/context/dist/scan/description-generation.test.js +0 -587
  1488. package/node_modules/@ktx/context/dist/scan/embedding-text.d.ts +0 -21
  1489. package/node_modules/@ktx/context/dist/scan/embedding-text.test.d.ts +0 -1
  1490. package/node_modules/@ktx/context/dist/scan/embedding-text.test.js +0 -36
  1491. package/node_modules/@ktx/context/dist/scan/enabled-tables.d.ts +0 -3
  1492. package/node_modules/@ktx/context/dist/scan/enabled-tables.js +0 -15
  1493. package/node_modules/@ktx/context/dist/scan/enrichment-state.d.ts +0 -48
  1494. package/node_modules/@ktx/context/dist/scan/enrichment-state.js +0 -44
  1495. package/node_modules/@ktx/context/dist/scan/enrichment-state.test.d.ts +0 -1
  1496. package/node_modules/@ktx/context/dist/scan/enrichment-state.test.js +0 -147
  1497. package/node_modules/@ktx/context/dist/scan/enrichment-summary.test.d.ts +0 -1
  1498. package/node_modules/@ktx/context/dist/scan/enrichment-summary.test.js +0 -34
  1499. package/node_modules/@ktx/context/dist/scan/enrichment-types.d.ts +0 -104
  1500. package/node_modules/@ktx/context/dist/scan/enrichment-types.js +0 -1
  1501. package/node_modules/@ktx/context/dist/scan/enrichment-types.test.d.ts +0 -1
  1502. package/node_modules/@ktx/context/dist/scan/enrichment-types.test.js +0 -141
  1503. package/node_modules/@ktx/context/dist/scan/entity-details.d.ts +0 -57
  1504. package/node_modules/@ktx/context/dist/scan/entity-details.js +0 -216
  1505. package/node_modules/@ktx/context/dist/scan/entity-details.test.d.ts +0 -1
  1506. package/node_modules/@ktx/context/dist/scan/entity-details.test.js +0 -234
  1507. package/node_modules/@ktx/context/dist/scan/index.d.ts +0 -72
  1508. package/node_modules/@ktx/context/dist/scan/index.js +0 -37
  1509. package/node_modules/@ktx/context/dist/scan/local-enrichment-artifacts.d.ts +0 -32
  1510. package/node_modules/@ktx/context/dist/scan/local-enrichment-artifacts.js +0 -274
  1511. package/node_modules/@ktx/context/dist/scan/local-enrichment-artifacts.test.d.ts +0 -1
  1512. package/node_modules/@ktx/context/dist/scan/local-enrichment-artifacts.test.js +0 -767
  1513. package/node_modules/@ktx/context/dist/scan/local-enrichment.d.ts +0 -45
  1514. package/node_modules/@ktx/context/dist/scan/local-enrichment.js +0 -478
  1515. package/node_modules/@ktx/context/dist/scan/local-enrichment.test.d.ts +0 -1
  1516. package/node_modules/@ktx/context/dist/scan/local-enrichment.test.js +0 -773
  1517. package/node_modules/@ktx/context/dist/scan/local-scan.d.ts +0 -68
  1518. package/node_modules/@ktx/context/dist/scan/local-scan.js +0 -415
  1519. package/node_modules/@ktx/context/dist/scan/local-scan.test.d.ts +0 -1
  1520. package/node_modules/@ktx/context/dist/scan/local-scan.test.js +0 -1398
  1521. package/node_modules/@ktx/context/dist/scan/local-structural-artifacts.d.ts +0 -10
  1522. package/node_modules/@ktx/context/dist/scan/local-structural-artifacts.js +0 -86
  1523. package/node_modules/@ktx/context/dist/scan/local-structural-artifacts.test.d.ts +0 -1
  1524. package/node_modules/@ktx/context/dist/scan/local-structural-artifacts.test.js +0 -144
  1525. package/node_modules/@ktx/context/dist/scan/orchestrator.d.ts +0 -44
  1526. package/node_modules/@ktx/context/dist/scan/orchestrator.js +0 -186
  1527. package/node_modules/@ktx/context/dist/scan/orchestrator.test.d.ts +0 -1
  1528. package/node_modules/@ktx/context/dist/scan/orchestrator.test.js +0 -335
  1529. package/node_modules/@ktx/context/dist/scan/relationship-artifacts.d.ts +0 -20
  1530. package/node_modules/@ktx/context/dist/scan/relationship-artifacts.js +0 -45
  1531. package/node_modules/@ktx/context/dist/scan/relationship-artifacts.test.d.ts +0 -1
  1532. package/node_modules/@ktx/context/dist/scan/relationship-artifacts.test.js +0 -268
  1533. package/node_modules/@ktx/context/dist/scan/relationship-benchmark-report.test.d.ts +0 -1
  1534. package/node_modules/@ktx/context/dist/scan/relationship-benchmark-report.test.js +0 -389
  1535. package/node_modules/@ktx/context/dist/scan/relationship-benchmarks.d.ts +0 -148
  1536. package/node_modules/@ktx/context/dist/scan/relationship-benchmarks.js +0 -646
  1537. package/node_modules/@ktx/context/dist/scan/relationship-benchmarks.test.d.ts +0 -1
  1538. package/node_modules/@ktx/context/dist/scan/relationship-benchmarks.test.js +0 -1072
  1539. package/node_modules/@ktx/context/dist/scan/relationship-budget.d.ts +0 -19
  1540. package/node_modules/@ktx/context/dist/scan/relationship-budget.js +0 -34
  1541. package/node_modules/@ktx/context/dist/scan/relationship-budget.test.d.ts +0 -1
  1542. package/node_modules/@ktx/context/dist/scan/relationship-budget.test.js +0 -71
  1543. package/node_modules/@ktx/context/dist/scan/relationship-candidates.d.ts +0 -49
  1544. package/node_modules/@ktx/context/dist/scan/relationship-candidates.js +0 -556
  1545. package/node_modules/@ktx/context/dist/scan/relationship-candidates.test.d.ts +0 -1
  1546. package/node_modules/@ktx/context/dist/scan/relationship-candidates.test.js +0 -747
  1547. package/node_modules/@ktx/context/dist/scan/relationship-composite-candidates.d.ts +0 -66
  1548. package/node_modules/@ktx/context/dist/scan/relationship-composite-candidates.js +0 -422
  1549. package/node_modules/@ktx/context/dist/scan/relationship-composite-candidates.test.d.ts +0 -1
  1550. package/node_modules/@ktx/context/dist/scan/relationship-composite-candidates.test.js +0 -69
  1551. package/node_modules/@ktx/context/dist/scan/relationship-diagnostics.d.ts +0 -94
  1552. package/node_modules/@ktx/context/dist/scan/relationship-diagnostics.js +0 -224
  1553. package/node_modules/@ktx/context/dist/scan/relationship-diagnostics.test.d.ts +0 -1
  1554. package/node_modules/@ktx/context/dist/scan/relationship-diagnostics.test.js +0 -333
  1555. package/node_modules/@ktx/context/dist/scan/relationship-discovery.d.ts +0 -27
  1556. package/node_modules/@ktx/context/dist/scan/relationship-discovery.js +0 -247
  1557. package/node_modules/@ktx/context/dist/scan/relationship-discovery.test.d.ts +0 -1
  1558. package/node_modules/@ktx/context/dist/scan/relationship-discovery.test.js +0 -618
  1559. package/node_modules/@ktx/context/dist/scan/relationship-feedback-calibration.d.ts +0 -70
  1560. package/node_modules/@ktx/context/dist/scan/relationship-feedback-calibration.js +0 -170
  1561. package/node_modules/@ktx/context/dist/scan/relationship-feedback-calibration.test.d.ts +0 -1
  1562. package/node_modules/@ktx/context/dist/scan/relationship-feedback-calibration.test.js +0 -175
  1563. package/node_modules/@ktx/context/dist/scan/relationship-feedback-export.d.ts +0 -54
  1564. package/node_modules/@ktx/context/dist/scan/relationship-feedback-export.js +0 -96
  1565. package/node_modules/@ktx/context/dist/scan/relationship-feedback-export.test.d.ts +0 -1
  1566. package/node_modules/@ktx/context/dist/scan/relationship-feedback-export.test.js +0 -241
  1567. package/node_modules/@ktx/context/dist/scan/relationship-formal-metadata.test.d.ts +0 -1
  1568. package/node_modules/@ktx/context/dist/scan/relationship-formal-metadata.test.js +0 -125
  1569. package/node_modules/@ktx/context/dist/scan/relationship-graph-resolver.d.ts +0 -48
  1570. package/node_modules/@ktx/context/dist/scan/relationship-graph-resolver.test.d.ts +0 -1
  1571. package/node_modules/@ktx/context/dist/scan/relationship-graph-resolver.test.js +0 -604
  1572. package/node_modules/@ktx/context/dist/scan/relationship-llm-proposal.d.ts +0 -25
  1573. package/node_modules/@ktx/context/dist/scan/relationship-llm-proposal.js +0 -193
  1574. package/node_modules/@ktx/context/dist/scan/relationship-llm-proposal.test.d.ts +0 -1
  1575. package/node_modules/@ktx/context/dist/scan/relationship-llm-proposal.test.js +0 -197
  1576. package/node_modules/@ktx/context/dist/scan/relationship-locality.test.d.ts +0 -1
  1577. package/node_modules/@ktx/context/dist/scan/relationship-locality.test.js +0 -128
  1578. package/node_modules/@ktx/context/dist/scan/relationship-name-similarity.d.ts +0 -13
  1579. package/node_modules/@ktx/context/dist/scan/relationship-name-similarity.js +0 -123
  1580. package/node_modules/@ktx/context/dist/scan/relationship-name-similarity.test.d.ts +0 -1
  1581. package/node_modules/@ktx/context/dist/scan/relationship-name-similarity.test.js +0 -68
  1582. package/node_modules/@ktx/context/dist/scan/relationship-profiling.d.ts +0 -55
  1583. package/node_modules/@ktx/context/dist/scan/relationship-profiling.js +0 -321
  1584. package/node_modules/@ktx/context/dist/scan/relationship-profiling.test.d.ts +0 -1
  1585. package/node_modules/@ktx/context/dist/scan/relationship-profiling.test.js +0 -313
  1586. package/node_modules/@ktx/context/dist/scan/relationship-review-apply.d.ts +0 -34
  1587. package/node_modules/@ktx/context/dist/scan/relationship-review-apply.js +0 -152
  1588. package/node_modules/@ktx/context/dist/scan/relationship-review-apply.test.d.ts +0 -1
  1589. package/node_modules/@ktx/context/dist/scan/relationship-review-apply.test.js +0 -321
  1590. package/node_modules/@ktx/context/dist/scan/relationship-review-decisions.d.ts +0 -46
  1591. package/node_modules/@ktx/context/dist/scan/relationship-review-decisions.js +0 -92
  1592. package/node_modules/@ktx/context/dist/scan/relationship-review-decisions.test.d.ts +0 -1
  1593. package/node_modules/@ktx/context/dist/scan/relationship-review-decisions.test.js +0 -312
  1594. package/node_modules/@ktx/context/dist/scan/relationship-scoring.d.ts +0 -29
  1595. package/node_modules/@ktx/context/dist/scan/relationship-scoring.js +0 -95
  1596. package/node_modules/@ktx/context/dist/scan/relationship-scoring.test.d.ts +0 -1
  1597. package/node_modules/@ktx/context/dist/scan/relationship-scoring.test.js +0 -86
  1598. package/node_modules/@ktx/context/dist/scan/relationship-threshold-advice.d.ts +0 -60
  1599. package/node_modules/@ktx/context/dist/scan/relationship-threshold-advice.js +0 -190
  1600. package/node_modules/@ktx/context/dist/scan/relationship-threshold-advice.test.d.ts +0 -1
  1601. package/node_modules/@ktx/context/dist/scan/relationship-threshold-advice.test.js +0 -205
  1602. package/node_modules/@ktx/context/dist/scan/relationship-validation.d.ts +0 -44
  1603. package/node_modules/@ktx/context/dist/scan/relationship-validation.js +0 -240
  1604. package/node_modules/@ktx/context/dist/scan/relationship-validation.test.d.ts +0 -1
  1605. package/node_modules/@ktx/context/dist/scan/relationship-validation.test.js +0 -450
  1606. package/node_modules/@ktx/context/dist/scan/type-normalization.d.ts +0 -8
  1607. package/node_modules/@ktx/context/dist/scan/type-normalization.js +0 -23
  1608. package/node_modules/@ktx/context/dist/scan/type-normalization.test.d.ts +0 -1
  1609. package/node_modules/@ktx/context/dist/scan/type-normalization.test.js +0 -21
  1610. package/node_modules/@ktx/context/dist/scan/types.d.ts +0 -309
  1611. package/node_modules/@ktx/context/dist/scan/types.test.d.ts +0 -1
  1612. package/node_modules/@ktx/context/dist/scan/types.test.js +0 -206
  1613. package/node_modules/@ktx/context/dist/scan/warehouse-catalog.d.ts +0 -69
  1614. package/node_modules/@ktx/context/dist/scan/warehouse-catalog.js +0 -311
  1615. package/node_modules/@ktx/context/dist/scan/warehouse-catalog.test.d.ts +0 -1
  1616. package/node_modules/@ktx/context/dist/scan/warehouse-catalog.test.js +0 -158
  1617. package/node_modules/@ktx/context/dist/search/backend-conformance.d.ts +0 -39
  1618. package/node_modules/@ktx/context/dist/search/backend-conformance.js +0 -88
  1619. package/node_modules/@ktx/context/dist/search/backend-conformance.test.d.ts +0 -1
  1620. package/node_modules/@ktx/context/dist/search/backend-conformance.test.js +0 -408
  1621. package/node_modules/@ktx/context/dist/search/discover.d.ts +0 -30
  1622. package/node_modules/@ktx/context/dist/search/discover.js +0 -340
  1623. package/node_modules/@ktx/context/dist/search/discover.test.d.ts +0 -1
  1624. package/node_modules/@ktx/context/dist/search/discover.test.js +0 -197
  1625. package/node_modules/@ktx/context/dist/search/hybrid-search-core.test.d.ts +0 -1
  1626. package/node_modules/@ktx/context/dist/search/hybrid-search-core.test.js +0 -113
  1627. package/node_modules/@ktx/context/dist/search/index.d.ts +0 -8
  1628. package/node_modules/@ktx/context/dist/search/index.js +0 -5
  1629. package/node_modules/@ktx/context/dist/search/pglite-owner-process.d.ts +0 -27
  1630. package/node_modules/@ktx/context/dist/search/pglite-owner-process.js +0 -89
  1631. package/node_modules/@ktx/context/dist/search/pglite-owner-process.test.d.ts +0 -1
  1632. package/node_modules/@ktx/context/dist/search/pglite-owner-process.test.js +0 -286
  1633. package/node_modules/@ktx/context/dist/search/pglite-runtime-boundary.test.d.ts +0 -1
  1634. package/node_modules/@ktx/context/dist/search/pglite-runtime-boundary.test.js +0 -48
  1635. package/node_modules/@ktx/context/dist/search/pglite-spike.test.d.ts +0 -1
  1636. package/node_modules/@ktx/context/dist/search/pglite-spike.test.js +0 -249
  1637. package/node_modules/@ktx/context/dist/search/query.test.d.ts +0 -1
  1638. package/node_modules/@ktx/context/dist/search/query.test.js +0 -23
  1639. package/node_modules/@ktx/context/dist/search/rrf.test.d.ts +0 -1
  1640. package/node_modules/@ktx/context/dist/search/rrf.test.js +0 -47
  1641. package/node_modules/@ktx/context/dist/search/types.d.ts +0 -73
  1642. package/node_modules/@ktx/context/dist/search/types.js +0 -1
  1643. package/node_modules/@ktx/context/dist/skills/index.d.ts +0 -2
  1644. package/node_modules/@ktx/context/dist/skills/index.js +0 -1
  1645. package/node_modules/@ktx/context/dist/skills/skills-registry.service.d.ts +0 -35
  1646. package/node_modules/@ktx/context/dist/skills/skills-registry.service.js +0 -215
  1647. package/node_modules/@ktx/context/dist/skills/skills-registry.service.test.d.ts +0 -1
  1648. package/node_modules/@ktx/context/dist/skills/skills-registry.service.test.js +0 -161
  1649. package/node_modules/@ktx/context/dist/sl/dictionary-search.d.ts +0 -42
  1650. package/node_modules/@ktx/context/dist/sl/dictionary-search.test.d.ts +0 -1
  1651. package/node_modules/@ktx/context/dist/sl/dictionary-search.test.js +0 -204
  1652. package/node_modules/@ktx/context/dist/sl/index.d.ts +0 -15
  1653. package/node_modules/@ktx/context/dist/sl/index.js +0 -10
  1654. package/node_modules/@ktx/context/dist/sl/local-query.d.ts +0 -19
  1655. package/node_modules/@ktx/context/dist/sl/local-query.js +0 -118
  1656. package/node_modules/@ktx/context/dist/sl/local-query.test.d.ts +0 -1
  1657. package/node_modules/@ktx/context/dist/sl/local-query.test.js +0 -283
  1658. package/node_modules/@ktx/context/dist/sl/local-sl.d.ts +0 -60
  1659. package/node_modules/@ktx/context/dist/sl/local-sl.js +0 -484
  1660. package/node_modules/@ktx/context/dist/sl/local-sl.test.d.ts +0 -1
  1661. package/node_modules/@ktx/context/dist/sl/local-sl.test.js +0 -334
  1662. package/node_modules/@ktx/context/dist/sl/pglite-sl-search-prototype.d.ts +0 -16
  1663. package/node_modules/@ktx/context/dist/sl/pglite-sl-search-prototype.js +0 -433
  1664. package/node_modules/@ktx/context/dist/sl/pglite-sl-search-prototype.test.d.ts +0 -1
  1665. package/node_modules/@ktx/context/dist/sl/pglite-sl-search-prototype.test.js +0 -240
  1666. package/node_modules/@ktx/context/dist/sl/ports.js +0 -1
  1667. package/node_modules/@ktx/context/dist/sl/schemas.contract.test.d.ts +0 -1
  1668. package/node_modules/@ktx/context/dist/sl/schemas.contract.test.js +0 -62
  1669. package/node_modules/@ktx/context/dist/sl/semantic-layer.service.d.ts +0 -214
  1670. package/node_modules/@ktx/context/dist/sl/semantic-layer.service.js +0 -1334
  1671. package/node_modules/@ktx/context/dist/sl/semantic-layer.service.test.d.ts +0 -1
  1672. package/node_modules/@ktx/context/dist/sl/semantic-layer.service.test.js +0 -1084
  1673. package/node_modules/@ktx/context/dist/sl/sl-dictionary-profile.d.ts +0 -9
  1674. package/node_modules/@ktx/context/dist/sl/sl-dictionary-profile.js +0 -80
  1675. package/node_modules/@ktx/context/dist/sl/sl-dictionary-profile.test.d.ts +0 -1
  1676. package/node_modules/@ktx/context/dist/sl/sl-dictionary-profile.test.js +0 -88
  1677. package/node_modules/@ktx/context/dist/sl/sl-search.service.d.ts +0 -18
  1678. package/node_modules/@ktx/context/dist/sl/sl-search.service.js +0 -158
  1679. package/node_modules/@ktx/context/dist/sl/sl-search.service.test.d.ts +0 -1
  1680. package/node_modules/@ktx/context/dist/sl/sl-search.service.test.js +0 -256
  1681. package/node_modules/@ktx/context/dist/sl/sl-validator.port.d.ts +0 -7
  1682. package/node_modules/@ktx/context/dist/sl/sl-validator.port.js +0 -1
  1683. package/node_modules/@ktx/context/dist/sl/sqlite-sl-sources-index.test.d.ts +0 -1
  1684. package/node_modules/@ktx/context/dist/sl/sqlite-sl-sources-index.test.js +0 -175
  1685. package/node_modules/@ktx/context/dist/sl/tools/base-semantic-layer.tool.d.ts +0 -45
  1686. package/node_modules/@ktx/context/dist/sl/tools/base-semantic-layer.tool.js +0 -91
  1687. package/node_modules/@ktx/context/dist/sl/tools/connection-id-schema.test.d.ts +0 -1
  1688. package/node_modules/@ktx/context/dist/sl/tools/connection-id-schema.test.js +0 -14
  1689. package/node_modules/@ktx/context/dist/sl/tools/index.d.ts +0 -11
  1690. package/node_modules/@ktx/context/dist/sl/tools/index.js +0 -8
  1691. package/node_modules/@ktx/context/dist/sl/tools/sl-discover.tool.d.ts +0 -52
  1692. package/node_modules/@ktx/context/dist/sl/tools/sl-discover.tool.test.d.ts +0 -1
  1693. package/node_modules/@ktx/context/dist/sl/tools/sl-discover.tool.test.js +0 -72
  1694. package/node_modules/@ktx/context/dist/sl/tools/sl-edit-source.tool.d.ts +0 -33
  1695. package/node_modules/@ktx/context/dist/sl/tools/sl-edit-source.tool.js +0 -177
  1696. package/node_modules/@ktx/context/dist/sl/tools/sl-edit-source.tool.test.d.ts +0 -1
  1697. package/node_modules/@ktx/context/dist/sl/tools/sl-edit-source.tool.test.js +0 -184
  1698. package/node_modules/@ktx/context/dist/sl/tools/sl-read-source.tool.d.ts +0 -23
  1699. package/node_modules/@ktx/context/dist/sl/tools/sl-read-source.tool.session.test.d.ts +0 -1
  1700. package/node_modules/@ktx/context/dist/sl/tools/sl-read-source.tool.session.test.js +0 -55
  1701. package/node_modules/@ktx/context/dist/sl/tools/sl-rollback.tool.d.ts +0 -25
  1702. package/node_modules/@ktx/context/dist/sl/tools/sl-rollback.tool.js +0 -63
  1703. package/node_modules/@ktx/context/dist/sl/tools/sl-rollback.tool.test.d.ts +0 -1
  1704. package/node_modules/@ktx/context/dist/sl/tools/sl-rollback.tool.test.js +0 -57
  1705. package/node_modules/@ktx/context/dist/sl/tools/sl-validate.tool.d.ts +0 -23
  1706. package/node_modules/@ktx/context/dist/sl/tools/sl-validate.tool.js +0 -100
  1707. package/node_modules/@ktx/context/dist/sl/tools/sl-validate.tool.test.d.ts +0 -1
  1708. package/node_modules/@ktx/context/dist/sl/tools/sl-validate.tool.test.js +0 -54
  1709. package/node_modules/@ktx/context/dist/sl/tools/sl-warehouse-validation.d.ts +0 -29
  1710. package/node_modules/@ktx/context/dist/sl/tools/sl-warehouse-validation.js +0 -245
  1711. package/node_modules/@ktx/context/dist/sl/tools/sl-warehouse-validation.test.d.ts +0 -1
  1712. package/node_modules/@ktx/context/dist/sl/tools/sl-warehouse-validation.test.js +0 -136
  1713. package/node_modules/@ktx/context/dist/sl/tools/sl-write-source.tool.d.ts +0 -422
  1714. package/node_modules/@ktx/context/dist/sl/tools/sl-write-source.tool.js +0 -319
  1715. package/node_modules/@ktx/context/dist/sl/tools/sl-write-source.tool.test.d.ts +0 -1
  1716. package/node_modules/@ktx/context/dist/sl/tools/sl-write-source.tool.test.js +0 -307
  1717. package/node_modules/@ktx/context/dist/sl/types.d.ts +0 -147
  1718. package/node_modules/@ktx/context/dist/sl/types.js +0 -1
  1719. package/node_modules/@ktx/context/dist/sql-analysis/http-sql-analysis-port.test.d.ts +0 -1
  1720. package/node_modules/@ktx/context/dist/sql-analysis/http-sql-analysis-port.test.js +0 -147
  1721. package/node_modules/@ktx/context/dist/sql-analysis/index.d.ts +0 -3
  1722. package/node_modules/@ktx/context/dist/sql-analysis/index.js +0 -1
  1723. package/node_modules/@ktx/context/dist/sql-analysis/ports.d.ts +0 -33
  1724. package/node_modules/@ktx/context/dist/sql-analysis/ports.js +0 -1
  1725. package/node_modules/@ktx/context/dist/test/make-local-git-repo.d.ts +0 -10
  1726. package/node_modules/@ktx/context/dist/test/make-local-git-repo.js +0 -34
  1727. package/node_modules/@ktx/context/dist/tools/base-tool.d.ts +0 -85
  1728. package/node_modules/@ktx/context/dist/tools/base-tool.js +0 -94
  1729. package/node_modules/@ktx/context/dist/tools/context-candidate-mark.tool.d.ts +0 -41
  1730. package/node_modules/@ktx/context/dist/tools/context-candidate-write.tool.d.ts +0 -64
  1731. package/node_modules/@ktx/context/dist/tools/context-candidate-write.tool.js +0 -140
  1732. package/node_modules/@ktx/context/dist/tools/context-evidence-search.tool.d.ts +0 -57
  1733. package/node_modules/@ktx/context/dist/tools/context-evidence-search.tool.js +0 -92
  1734. package/node_modules/@ktx/context/dist/tools/context-evidence-tool-store.d.ts +0 -112
  1735. package/node_modules/@ktx/context/dist/tools/context-evidence-tool-store.js +0 -1
  1736. package/node_modules/@ktx/context/dist/tools/context-evidence-tools.test.d.ts +0 -1
  1737. package/node_modules/@ktx/context/dist/tools/context-evidence-tools.test.js +0 -486
  1738. package/node_modules/@ktx/context/dist/tools/index.d.ts +0 -19
  1739. package/node_modules/@ktx/context/dist/tools/index.js +0 -12
  1740. package/node_modules/@ktx/context/dist/tools/tool-session.d.ts +0 -54
  1741. package/node_modules/@ktx/context/dist/tools/tool-session.js +0 -1
  1742. package/node_modules/@ktx/context/dist/tools/touched-sl-sources.d.ts +0 -12
  1743. package/node_modules/@ktx/context/dist/tools/touched-sl-sources.js +0 -47
  1744. package/node_modules/@ktx/context/dist/tools/touched-sl-sources.test.d.ts +0 -1
  1745. package/node_modules/@ktx/context/dist/tools/touched-sl-sources.test.js +0 -31
  1746. package/node_modules/@ktx/context/dist/wiki/index.d.ts +0 -9
  1747. package/node_modules/@ktx/context/dist/wiki/index.js +0 -6
  1748. package/node_modules/@ktx/context/dist/wiki/keys.d.ts +0 -11
  1749. package/node_modules/@ktx/context/dist/wiki/keys.js +0 -26
  1750. package/node_modules/@ktx/context/dist/wiki/knowledge-wiki.service.d.ts +0 -77
  1751. package/node_modules/@ktx/context/dist/wiki/knowledge-wiki.service.js +0 -357
  1752. package/node_modules/@ktx/context/dist/wiki/knowledge-wiki.service.test.d.ts +0 -1
  1753. package/node_modules/@ktx/context/dist/wiki/knowledge-wiki.service.test.js +0 -190
  1754. package/node_modules/@ktx/context/dist/wiki/local-knowledge.d.ts +0 -55
  1755. package/node_modules/@ktx/context/dist/wiki/local-knowledge.js +0 -289
  1756. package/node_modules/@ktx/context/dist/wiki/local-knowledge.test.d.ts +0 -1
  1757. package/node_modules/@ktx/context/dist/wiki/local-knowledge.test.js +0 -270
  1758. package/node_modules/@ktx/context/dist/wiki/ports.d.ts +0 -70
  1759. package/node_modules/@ktx/context/dist/wiki/ports.js +0 -1
  1760. package/node_modules/@ktx/context/dist/wiki/sqlite-knowledge-index.test.d.ts +0 -1
  1761. package/node_modules/@ktx/context/dist/wiki/sqlite-knowledge-index.test.js +0 -129
  1762. package/node_modules/@ktx/context/dist/wiki/tools/index.d.ts +0 -5
  1763. package/node_modules/@ktx/context/dist/wiki/tools/index.js +0 -5
  1764. package/node_modules/@ktx/context/dist/wiki/tools/wiki-list-tags.tool.d.ts +0 -16
  1765. package/node_modules/@ktx/context/dist/wiki/tools/wiki-list-tags.tool.js +0 -34
  1766. package/node_modules/@ktx/context/dist/wiki/tools/wiki-list-tags.tool.test.d.ts +0 -1
  1767. package/node_modules/@ktx/context/dist/wiki/tools/wiki-list-tags.tool.test.js +0 -35
  1768. package/node_modules/@ktx/context/dist/wiki/tools/wiki-read.tool.d.ts +0 -28
  1769. package/node_modules/@ktx/context/dist/wiki/tools/wiki-read.tool.js +0 -59
  1770. package/node_modules/@ktx/context/dist/wiki/tools/wiki-read.tool.test.d.ts +0 -1
  1771. package/node_modules/@ktx/context/dist/wiki/tools/wiki-read.tool.test.js +0 -66
  1772. package/node_modules/@ktx/context/dist/wiki/tools/wiki-remove.tool.d.ts +0 -28
  1773. package/node_modules/@ktx/context/dist/wiki/tools/wiki-remove.tool.js +0 -85
  1774. package/node_modules/@ktx/context/dist/wiki/tools/wiki-remove.tool.test.d.ts +0 -1
  1775. package/node_modules/@ktx/context/dist/wiki/tools/wiki-remove.tool.test.js +0 -95
  1776. package/node_modules/@ktx/context/dist/wiki/tools/wiki-search.tool.d.ts +0 -49
  1777. package/node_modules/@ktx/context/dist/wiki/tools/wiki-search.tool.js +0 -51
  1778. package/node_modules/@ktx/context/dist/wiki/tools/wiki-search.tool.test.d.ts +0 -1
  1779. package/node_modules/@ktx/context/dist/wiki/tools/wiki-search.tool.test.js +0 -35
  1780. package/node_modules/@ktx/context/dist/wiki/tools/wiki-write.tool.d.ts +0 -80
  1781. package/node_modules/@ktx/context/dist/wiki/tools/wiki-write.tool.js +0 -210
  1782. package/node_modules/@ktx/context/dist/wiki/tools/wiki-write.tool.test.d.ts +0 -1
  1783. package/node_modules/@ktx/context/dist/wiki/tools/wiki-write.tool.test.js +0 -264
  1784. package/node_modules/@ktx/context/dist/wiki/types.d.ts +0 -50
  1785. package/node_modules/@ktx/context/dist/wiki/types.js +0 -1
  1786. package/node_modules/@ktx/context/dist/wiki/wiki-ref-validation.d.ts +0 -17
  1787. package/node_modules/@ktx/context/dist/wiki/wiki-ref-validation.test.d.ts +0 -1
  1788. package/node_modules/@ktx/context/dist/wiki/wiki-ref-validation.test.js +0 -64
  1789. package/node_modules/@ktx/context/package.json +0 -122
  1790. package/node_modules/@ktx/context/skills/historic_sql_patterns/SKILL.md +0 -91
  1791. package/node_modules/@ktx/context/skills/historic_sql_table_digest/SKILL.md +0 -89
  1792. package/node_modules/@ktx/context/skills/sl/SKILL.md +0 -247
  1793. package/node_modules/@ktx/llm/dist/embedding-health.js +0 -36
  1794. package/node_modules/@ktx/llm/dist/embedding-health.test.d.ts +0 -1
  1795. package/node_modules/@ktx/llm/dist/embedding-health.test.js +0 -72
  1796. package/node_modules/@ktx/llm/dist/embedding-provider.test.d.ts +0 -1
  1797. package/node_modules/@ktx/llm/dist/embedding-provider.test.js +0 -84
  1798. package/node_modules/@ktx/llm/dist/index.d.ts +0 -11
  1799. package/node_modules/@ktx/llm/dist/index.js +0 -6
  1800. package/node_modules/@ktx/llm/dist/message-builder.test.d.ts +0 -1
  1801. package/node_modules/@ktx/llm/dist/message-builder.test.js +0 -127
  1802. package/node_modules/@ktx/llm/dist/model-health.d.ts +0 -18
  1803. package/node_modules/@ktx/llm/dist/model-health.test.d.ts +0 -1
  1804. package/node_modules/@ktx/llm/dist/model-health.test.js +0 -55
  1805. package/node_modules/@ktx/llm/dist/model-provider.d.ts +0 -22
  1806. package/node_modules/@ktx/llm/dist/model-provider.js +0 -150
  1807. package/node_modules/@ktx/llm/dist/model-provider.test.d.ts +0 -1
  1808. package/node_modules/@ktx/llm/dist/model-provider.test.js +0 -246
  1809. package/node_modules/@ktx/llm/dist/package-exports.test.d.ts +0 -1
  1810. package/node_modules/@ktx/llm/dist/package-exports.test.js +0 -17
  1811. package/node_modules/@ktx/llm/dist/repair.test.d.ts +0 -1
  1812. package/node_modules/@ktx/llm/dist/repair.test.js +0 -78
  1813. package/node_modules/@ktx/llm/dist/types.d.ts +0 -105
  1814. package/node_modules/@ktx/llm/package.json +0 -20
  1815. /package/{node_modules/@ktx/connector-postgres/dist → dist/connectors/postgres}/historic-sql-query-client.js +0 -0
  1816. /package/{node_modules/@ktx/context/dist → dist/context}/connections/connection-type.js +0 -0
  1817. /package/{node_modules/@ktx/context/dist → dist/context}/connections/local-query-executor.d.ts +0 -0
  1818. /package/{node_modules/@ktx/context/dist → dist/context}/connections/local-warehouse-descriptor.d.ts +0 -0
  1819. /package/{node_modules/@ktx/context/dist → dist/context}/connections/postgres-query-executor.d.ts +0 -0
  1820. /package/{node_modules/@ktx/context/dist → dist/context}/connections/query-executor.js +0 -0
  1821. /package/{node_modules/@ktx/context/dist → dist/context}/connections/read-only-sql.d.ts +0 -0
  1822. /package/{node_modules/@ktx/context/dist → dist/context}/connections/read-only-sql.js +0 -0
  1823. /package/{node_modules/@ktx/context/dist → dist/context}/core/config.js +0 -0
  1824. /package/{node_modules/@ktx/context/dist → dist/context}/core/embedding.d.ts +0 -0
  1825. /package/dist/{admin-reindex.test.d.ts → context/core/embedding.js} +0 -0
  1826. /package/{node_modules/@ktx/context/dist → dist/context}/core/file-store.d.ts +0 -0
  1827. /package/dist/{admin.test.d.ts → context/core/file-store.js} +0 -0
  1828. /package/{node_modules/@ktx/context/dist → dist/context}/core/git-env.d.ts +0 -0
  1829. /package/{node_modules/@ktx/context/dist → dist/context}/core/git-env.js +0 -0
  1830. /package/{node_modules/@ktx/context/dist → dist/context}/core/git.service.d.ts +0 -0
  1831. /package/{node_modules/@ktx/context/dist → dist/context}/core/git.service.js +0 -0
  1832. /package/{node_modules/@ktx/context/dist → dist/context}/core/session-worktree.service.js +0 -0
  1833. /package/dist/{cli-program.test.d.ts → context/index-sync/types.js} +0 -0
  1834. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/action-identity.js +0 -0
  1835. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/dbt/chunk.d.ts +0 -0
  1836. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/dbt/chunk.js +0 -0
  1837. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/dbt/dbt.adapter.d.ts +0 -0
  1838. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/dbt/dbt.adapter.js +0 -0
  1839. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/dbt/detect.d.ts +0 -0
  1840. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/dbt/detect.js +0 -0
  1841. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/dbt/fetch.d.ts +0 -0
  1842. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/dbt/fetch.js +0 -0
  1843. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/fake/fake.adapter.d.ts +0 -0
  1844. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/fake/fake.adapter.js +0 -0
  1845. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/historic-sql/bigquery-query-history-reader.d.ts +0 -0
  1846. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/historic-sql/buckets.d.ts +0 -0
  1847. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/historic-sql/buckets.js +0 -0
  1848. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/historic-sql/chunk-unified.d.ts +0 -0
  1849. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/historic-sql/detect.d.ts +0 -0
  1850. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/historic-sql/detect.js +0 -0
  1851. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/historic-sql/errors.d.ts +0 -0
  1852. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/historic-sql/errors.js +0 -0
  1853. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/historic-sql/historic-sql.adapter.d.ts +0 -0
  1854. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/historic-sql/historic-sql.adapter.js +0 -0
  1855. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/historic-sql/postgres-pgss-reader.d.ts +0 -0
  1856. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/historic-sql/postgres-pgss-reader.js +0 -0
  1857. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/historic-sql/redaction.d.ts +0 -0
  1858. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/historic-sql/redaction.js +0 -0
  1859. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/historic-sql/snowflake-query-history-reader.d.ts +0 -0
  1860. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/historic-sql/snowflake-query-history-reader.js +0 -0
  1861. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/historic-sql/stage-unified.js +0 -0
  1862. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/historic-sql/types.js +0 -0
  1863. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/live-database/chunk.d.ts +0 -0
  1864. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/live-database/chunk.js +0 -0
  1865. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/live-database/live-database.adapter.d.ts +0 -0
  1866. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/live-database/manifest.js +0 -0
  1867. /package/dist/{cli-project.test.d.ts → context/ingest/adapters/live-database/types.js} +0 -0
  1868. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/looker/chunk.d.ts +0 -0
  1869. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/looker/chunk.js +0 -0
  1870. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/looker/client.d.ts +0 -0
  1871. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/looker/client.js +0 -0
  1872. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/looker/daemon-table-identifier-parser.d.ts +0 -0
  1873. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/looker/daemon-table-identifier-parser.js +0 -0
  1874. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/looker/detect.d.ts +0 -0
  1875. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/looker/detect.js +0 -0
  1876. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/looker/evidence-documents.d.ts +0 -0
  1877. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/looker/evidence-documents.js +0 -0
  1878. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/looker/fetch-report.d.ts +0 -0
  1879. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/looker/fetch-report.js +0 -0
  1880. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/looker/fetch.js +0 -0
  1881. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/looker/local-runtime-store.js +0 -0
  1882. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/looker/looker.adapter.d.ts +0 -0
  1883. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/looker/looker.adapter.js +0 -0
  1884. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/looker/target-connections.d.ts +0 -0
  1885. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/looker/target-connections.js +0 -0
  1886. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/lookml/chunk.d.ts +0 -0
  1887. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/lookml/chunk.js +0 -0
  1888. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/lookml/detect.d.ts +0 -0
  1889. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/lookml/detect.js +0 -0
  1890. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/lookml/fetch.d.ts +0 -0
  1891. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/lookml/fetch.js +0 -0
  1892. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/lookml/graph.d.ts +0 -0
  1893. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/lookml/graph.js +0 -0
  1894. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/lookml/lookml.adapter.d.ts +0 -0
  1895. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/lookml/lookml.adapter.js +0 -0
  1896. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/lookml/parse.d.ts +0 -0
  1897. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/lookml/parse.js +0 -0
  1898. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metabase/card-references.d.ts +0 -0
  1899. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metabase/card-references.js +0 -0
  1900. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metabase/chunk.d.ts +0 -0
  1901. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metabase/chunk.js +0 -0
  1902. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metabase/client-port.js +0 -0
  1903. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metabase/detect.d.ts +0 -0
  1904. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metabase/detect.js +0 -0
  1905. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metabase/fanout-planner.js +0 -0
  1906. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metabase/fetch-scope.d.ts +0 -0
  1907. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metabase/fetch-scope.js +0 -0
  1908. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metabase/fetch.d.ts +0 -0
  1909. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metabase/fetch.js +0 -0
  1910. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metabase/metabase.adapter.d.ts +0 -0
  1911. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metabase/metabase.adapter.js +0 -0
  1912. /package/dist/{command-tree.test.d.ts → context/ingest/adapters/metabase/source-state-port.js} +0 -0
  1913. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metricflow/chunk.d.ts +0 -0
  1914. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metricflow/chunk.js +0 -0
  1915. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metricflow/detect.d.ts +0 -0
  1916. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metricflow/detect.js +0 -0
  1917. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metricflow/fetch.d.ts +0 -0
  1918. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metricflow/fetch.js +0 -0
  1919. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metricflow/graph.d.ts +0 -0
  1920. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metricflow/graph.js +0 -0
  1921. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metricflow/metricflow.adapter.d.ts +0 -0
  1922. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metricflow/metricflow.adapter.js +0 -0
  1923. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metricflow/parse.js +0 -0
  1924. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metricflow/projection-config.d.ts +0 -0
  1925. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/metricflow/projection-config.js +0 -0
  1926. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/notion/detect.d.ts +0 -0
  1927. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/notion/detect.js +0 -0
  1928. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/notion/fetch.d.ts +0 -0
  1929. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/notion/fetch.js +0 -0
  1930. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/notion/local-state-store.d.ts +0 -0
  1931. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/notion/local-state-store.js +0 -0
  1932. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/notion/notion.adapter.d.ts +0 -0
  1933. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/notion/notion.adapter.js +0 -0
  1934. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/notion/pull-config.d.ts +0 -0
  1935. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/notion/pull-config.js +0 -0
  1936. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/notion/types.d.ts +0 -0
  1937. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/adapters/notion/types.js +0 -0
  1938. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/artifact-gates.js +0 -0
  1939. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/canonical-pins.d.ts +0 -0
  1940. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/canonical-pins.js +0 -0
  1941. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/clustering/kmeans.d.ts +0 -0
  1942. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/clustering/kmeans.js +0 -0
  1943. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/context-candidates/embedding-text.d.ts +0 -0
  1944. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/context-candidates/embedding-text.js +0 -0
  1945. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/context-candidates/store.d.ts +0 -0
  1946. /package/dist/{commands/mcp-commands.test.d.ts → context/ingest/context-candidates/store.js} +0 -0
  1947. /package/dist/{commands/sql-commands.test.d.ts → context/ingest/context-candidates/types.js} +0 -0
  1948. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/context-evidence/store.d.ts +0 -0
  1949. /package/dist/{connection.test.d.ts → context/ingest/context-evidence/store.js} +0 -0
  1950. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/context-evidence/types.d.ts +0 -0
  1951. /package/dist/{context-build-view.test.d.ts → context/ingest/context-evidence/types.js} +0 -0
  1952. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/diff-set.service.d.ts +0 -0
  1953. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/diff-set.service.js +0 -0
  1954. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/final-gate-repair.js +0 -0
  1955. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/finalization-scope.js +0 -0
  1956. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/git-env.d.ts +0 -0
  1957. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/git-env.js +0 -0
  1958. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/ingest-bundle.runner.d.ts +0 -0
  1959. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/isolated-diff/patch-integrator.js +0 -0
  1960. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/isolated-diff/textual-conflict-resolver.js +0 -0
  1961. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/isolated-diff/work-unit-executor.d.ts +0 -0
  1962. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/isolated-diff/work-unit-executor.js +0 -0
  1963. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/memory-flow/interactive-render.d.ts +0 -0
  1964. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/memory-flow/interactive-render.js +0 -0
  1965. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/memory-flow/known-errors.d.ts +0 -0
  1966. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/memory-flow/known-errors.js +0 -0
  1967. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/memory-flow/live-buffer.d.ts +0 -0
  1968. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/memory-flow/live-buffer.js +0 -0
  1969. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/memory-flow/render.d.ts +0 -0
  1970. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/memory-flow/render.js +0 -0
  1971. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/memory-flow/summary.d.ts +0 -0
  1972. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/memory-flow/summary.js +0 -0
  1973. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/memory-flow/types.d.ts +0 -0
  1974. /package/dist/{database-tree-picker.test.d.ts → context/ingest/memory-flow/types.js} +0 -0
  1975. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/memory-flow/view-model.d.ts +0 -0
  1976. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/memory-flow/view-model.js +0 -0
  1977. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/parsed-target-table.d.ts +0 -0
  1978. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/parsed-target-table.js +0 -0
  1979. /package/dist/{demo-assets.test.d.ts → context/ingest/ports.js} +0 -0
  1980. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/source-adapter-registry.d.ts +0 -0
  1981. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/source-adapter-registry.js +0 -0
  1982. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/sqlite-bundle-ingest-store.d.ts +0 -0
  1983. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/sqlite-bundle-ingest-store.js +0 -0
  1984. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/sqlite-local-ingest-store.d.ts +0 -0
  1985. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/sqlite-local-ingest-store.js +0 -0
  1986. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/stages/build-reconcile-context.js +0 -0
  1987. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/stages/stage-1-stage-raw-files.d.ts +0 -0
  1988. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/stages/stage-1-stage-raw-files.js +0 -0
  1989. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/stages/stage-4-reconciliation.js +0 -0
  1990. /package/dist/{demo-metrics.test.d.ts → context/ingest/stages/stage-index.types.js} +0 -0
  1991. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/stages/validate-wu-sources.js +0 -0
  1992. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/tools/emit-artifact-resolution.tool.d.ts +0 -0
  1993. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/tools/emit-artifact-resolution.tool.js +0 -0
  1994. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/tools/emit-conflict-resolution.tool.d.ts +0 -0
  1995. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/tools/emit-conflict-resolution.tool.js +0 -0
  1996. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/tools/emit-eviction-decision.tool.d.ts +0 -0
  1997. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/tools/emit-eviction-decision.tool.js +0 -0
  1998. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/tools/emit-unmapped-fallback.tool.d.ts +0 -0
  1999. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/tools/emit-unmapped-fallback.tool.js +0 -0
  2000. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/tools/eviction-list.tool.d.ts +0 -0
  2001. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/tools/eviction-list.tool.js +0 -0
  2002. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/tools/read-raw-file.tool.d.ts +0 -0
  2003. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/tools/read-raw-file.tool.js +0 -0
  2004. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/tools/read-raw-span.tool.d.ts +0 -0
  2005. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/tools/read-raw-span.tool.js +0 -0
  2006. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/tools/stage-diff.tool.d.ts +0 -0
  2007. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/tools/stage-diff.tool.js +0 -0
  2008. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/tools/stage-list.tool.d.ts +0 -0
  2009. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/tools/stage-list.tool.js +0 -0
  2010. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/tools/tool-call-logger.js +0 -0
  2011. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/tools/tool-transcript-summary.d.ts +0 -0
  2012. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/tools/tool-transcript-summary.js +0 -0
  2013. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/tools/verification-ledger.tool.js +0 -0
  2014. /package/{node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/index.js → dist/context/ingest/tools/warehouse-verification/create-warehouse-verification-tools.js} +0 -0
  2015. /package/{node_modules/@ktx/context/dist/index-sync → dist/context/ingest}/types.js +0 -0
  2016. /package/{node_modules/@ktx/context/dist → dist/context}/ingest/wiki-sl-ref-repair.js +0 -0
  2017. /package/{node_modules/@ktx/context/dist → dist/context}/llm/claude-code-models.d.ts +0 -0
  2018. /package/{node_modules/@ktx/context/dist → dist/context}/llm/claude-code-models.js +0 -0
  2019. /package/{node_modules/@ktx/context/dist → dist/context}/llm/embedding-port.js +0 -0
  2020. /package/{node_modules/@ktx/context/dist → dist/context}/llm/runtime-port.js +0 -0
  2021. /package/dist/{doctor.test.d.ts → context/mcp/types.js} +0 -0
  2022. /package/{node_modules/@ktx/context/dist → dist/context}/memory/local-memory-runs.d.ts +0 -0
  2023. /package/{node_modules/@ktx/context/dist → dist/context}/memory/local-memory-runs.js +0 -0
  2024. /package/{node_modules/@ktx/context/dist → dist/context}/memory/memory-runs.js +0 -0
  2025. /package/dist/{embedding-resolution.test.d.ts → context/memory/types.js} +0 -0
  2026. /package/{node_modules/@ktx/context/dist → dist/context}/project/local-git-file-store.js +0 -0
  2027. /package/{node_modules/@ktx/context/dist → dist/context}/project/local-state-db.d.ts +0 -0
  2028. /package/{node_modules/@ktx/context/dist → dist/context}/project/local-state-db.js +0 -0
  2029. /package/{node_modules/@ktx/context/dist → dist/context}/scan/embedding-text.js +0 -0
  2030. /package/{node_modules/@ktx/context/dist → dist/context}/scan/enrichment-summary.d.ts +0 -0
  2031. /package/{node_modules/@ktx/context/dist → dist/context}/scan/enrichment-summary.js +0 -0
  2032. /package/dist/{example-smoke.test.d.ts → context/scan/enrichment-types.js} +0 -0
  2033. /package/{node_modules/@ktx/context/dist → dist/context}/scan/relationship-benchmark-report.d.ts +0 -0
  2034. /package/{node_modules/@ktx/context/dist → dist/context}/scan/relationship-benchmark-report.js +0 -0
  2035. /package/{node_modules/@ktx/context/dist → dist/context}/scan/relationship-formal-metadata.d.ts +0 -0
  2036. /package/{node_modules/@ktx/context/dist → dist/context}/scan/relationship-formal-metadata.js +0 -0
  2037. /package/{node_modules/@ktx/context/dist → dist/context}/scan/relationship-graph-resolver.js +0 -0
  2038. /package/{node_modules/@ktx/context/dist → dist/context}/scan/relationship-locality.d.ts +0 -0
  2039. /package/{node_modules/@ktx/context/dist → dist/context}/scan/relationship-locality.js +0 -0
  2040. /package/{node_modules/@ktx/context/dist → dist/context}/scan/sqlite-local-enrichment-state-store.d.ts +0 -0
  2041. /package/{node_modules/@ktx/context/dist → dist/context}/scan/sqlite-local-enrichment-state-store.js +0 -0
  2042. /package/{node_modules/@ktx/context/dist → dist/context}/scan/types.js +0 -0
  2043. /package/{node_modules/@ktx/context/dist → dist/context}/search/hybrid-search-core.d.ts +0 -0
  2044. /package/{node_modules/@ktx/context/dist → dist/context}/search/hybrid-search-core.js +0 -0
  2045. /package/{node_modules/@ktx/context/dist → dist/context}/search/query.d.ts +0 -0
  2046. /package/{node_modules/@ktx/context/dist → dist/context}/search/query.js +0 -0
  2047. /package/{node_modules/@ktx/context/dist → dist/context}/search/rrf.d.ts +0 -0
  2048. /package/{node_modules/@ktx/context/dist → dist/context}/search/rrf.js +0 -0
  2049. /package/dist/{index.test.d.ts → context/search/types.js} +0 -0
  2050. /package/{node_modules/@ktx/context/dist → dist/context}/sl/description-normalization.d.ts +0 -0
  2051. /package/{node_modules/@ktx/context/dist → dist/context}/sl/description-normalization.js +0 -0
  2052. /package/{node_modules/@ktx/context/dist → dist/context}/sl/descriptions.d.ts +0 -0
  2053. /package/{node_modules/@ktx/context/dist → dist/context}/sl/descriptions.js +0 -0
  2054. /package/{node_modules/@ktx/context/dist → dist/context}/sl/dictionary-search.js +0 -0
  2055. /package/{node_modules/@ktx/context/dist → dist/context}/sl/ports.d.ts +0 -0
  2056. /package/dist/{ingest-query-executor.test.d.ts → context/sl/ports.js} +0 -0
  2057. /package/{node_modules/@ktx/context/dist → dist/context}/sl/schemas.d.ts +0 -0
  2058. /package/{node_modules/@ktx/context/dist → dist/context}/sl/schemas.js +0 -0
  2059. /package/dist/{ingest-report-file.test.d.ts → context/sl/sl-validator.port.js} +0 -0
  2060. /package/{node_modules/@ktx/context/dist → dist/context}/sl/sqlite-sl-sources-index.d.ts +0 -0
  2061. /package/{node_modules/@ktx/context/dist → dist/context}/sl/sqlite-sl-sources-index.js +0 -0
  2062. /package/{node_modules/@ktx/context/dist → dist/context}/sl/tools/connection-id-schema.d.ts +0 -0
  2063. /package/{node_modules/@ktx/context/dist → dist/context}/sl/tools/connection-id-schema.js +0 -0
  2064. /package/{node_modules/@ktx/context/dist → dist/context}/sl/tools/sl-discover.tool.js +0 -0
  2065. /package/{node_modules/@ktx/context/dist → dist/context}/sl/tools/sl-read-source.tool.js +0 -0
  2066. /package/dist/{ingest-viz.test.d.ts → context/sl/types.js} +0 -0
  2067. /package/{node_modules/@ktx/context/dist → dist/context}/sql-analysis/http-sql-analysis-port.d.ts +0 -0
  2068. /package/{node_modules/@ktx/context/dist → dist/context}/sql-analysis/http-sql-analysis-port.js +0 -0
  2069. /package/dist/{ingest.test.d.ts → context/sql-analysis/ports.js} +0 -0
  2070. /package/{node_modules/@ktx/context/dist → dist/context}/tools/action-raw-paths.d.ts +0 -0
  2071. /package/{node_modules/@ktx/context/dist → dist/context}/tools/action-raw-paths.js +0 -0
  2072. /package/{node_modules/@ktx/context/dist → dist/context}/tools/action-target-connection.d.ts +0 -0
  2073. /package/{node_modules/@ktx/context/dist → dist/context}/tools/action-target-connection.js +0 -0
  2074. /package/{node_modules/@ktx/context/dist → dist/context}/tools/authors.d.ts +0 -0
  2075. /package/{node_modules/@ktx/context/dist → dist/context}/tools/authors.js +0 -0
  2076. /package/{node_modules/@ktx/context/dist → dist/context}/tools/context-candidate-mark.tool.js +0 -0
  2077. /package/{node_modules/@ktx/context/dist → dist/context}/tools/context-evidence-ids.d.ts +0 -0
  2078. /package/{node_modules/@ktx/context/dist → dist/context}/tools/context-evidence-ids.js +0 -0
  2079. /package/{node_modules/@ktx/context/dist → dist/context}/tools/context-evidence-neighbors.tool.d.ts +0 -0
  2080. /package/{node_modules/@ktx/context/dist → dist/context}/tools/context-evidence-neighbors.tool.js +0 -0
  2081. /package/{node_modules/@ktx/context/dist → dist/context}/tools/context-evidence-read.tool.d.ts +0 -0
  2082. /package/{node_modules/@ktx/context/dist → dist/context}/tools/context-evidence-read.tool.js +0 -0
  2083. /package/dist/{io/logger.test.d.ts → context/tools/context-evidence-tool-store.js} +0 -0
  2084. /package/{node_modules/@ktx/context/dist → dist/context}/tools/context-ingest-metadata.d.ts +0 -0
  2085. /package/{node_modules/@ktx/context/dist → dist/context}/tools/context-ingest-metadata.js +0 -0
  2086. /package/{node_modules/@ktx/context/dist → dist/context}/tools/sql-edit-replacer.d.ts +0 -0
  2087. /package/{node_modules/@ktx/context/dist → dist/context}/tools/sql-edit-replacer.js +0 -0
  2088. /package/dist/{io/mode.test.d.ts → context/tools/tool-session.js} +0 -0
  2089. /package/{node_modules/@ktx/context/dist → dist/context}/wiki/knowledge-search-text.d.ts +0 -0
  2090. /package/{node_modules/@ktx/context/dist → dist/context}/wiki/knowledge-search-text.js +0 -0
  2091. /package/dist/{io/print-list.test.d.ts → context/wiki/ports.js} +0 -0
  2092. /package/{node_modules/@ktx/context/dist → dist/context}/wiki/sqlite-knowledge-index.d.ts +0 -0
  2093. /package/{node_modules/@ktx/context/dist → dist/context}/wiki/sqlite-knowledge-index.js +0 -0
  2094. /package/dist/{knowledge.test.d.ts → context/wiki/types.js} +0 -0
  2095. /package/{node_modules/@ktx/context/dist → dist/context}/wiki/wiki-ref-validation.js +0 -0
  2096. /package/{node_modules/@ktx/llm/dist → dist/llm}/embedding-health.d.ts +0 -0
  2097. /package/{node_modules/@ktx/llm/dist → dist/llm}/embedding-provider.d.ts +0 -0
  2098. /package/{node_modules/@ktx/llm/dist → dist/llm}/embedding-provider.js +0 -0
  2099. /package/{node_modules/@ktx/llm/dist → dist/llm}/message-builder.d.ts +0 -0
  2100. /package/{node_modules/@ktx/llm/dist → dist/llm}/message-builder.js +0 -0
  2101. /package/{node_modules/@ktx/llm/dist → dist/llm}/model-health.js +0 -0
  2102. /package/{node_modules/@ktx/llm/dist → dist/llm}/repair.d.ts +0 -0
  2103. /package/{node_modules/@ktx/llm/dist → dist/llm}/repair.js +0 -0
  2104. /package/{node_modules/@ktx/llm/dist → dist/llm}/types.js +0 -0
  2105. /package/{node_modules/@ktx/context → dist}/prompts/memory_agent_backfill.md +0 -0
  2106. /package/{node_modules/@ktx/context → dist}/prompts/memory_agent_bundle_ingest_reconcile.md +0 -0
  2107. /package/{node_modules/@ktx/context → dist}/prompts/memory_agent_bundle_ingest_work_unit.md +0 -0
  2108. /package/{node_modules/@ktx/context → dist}/prompts/memory_agent_external_ingest.md +0 -0
  2109. /package/{node_modules/@ktx/context → dist}/prompts/memory_agent_research.md +0 -0
  2110. /package/{node_modules/@ktx/context → dist}/prompts/skills/light_extraction.md +0 -0
  2111. /package/{node_modules/@ktx/context → dist}/prompts/skills/page_triage_classifier.md +0 -0
  2112. /package/{node_modules/@ktx/context → dist}/skills/_shared/identifier-verification.md +0 -0
  2113. /package/{node_modules/@ktx/context → dist}/skills/dbt_ingest/SKILL.md +0 -0
  2114. /package/{node_modules/@ktx/context → dist}/skills/ingest_triage/SKILL.md +0 -0
  2115. /package/{node_modules/@ktx/context → dist}/skills/live_database_ingest/SKILL.md +0 -0
  2116. /package/{node_modules/@ktx/context → dist}/skills/looker_ingest/SKILL.md +0 -0
  2117. /package/{node_modules/@ktx/context → dist}/skills/lookml_ingest/SKILL.md +0 -0
  2118. /package/{node_modules/@ktx/context → dist}/skills/metabase_ingest/SKILL.md +0 -0
  2119. /package/{node_modules/@ktx/context → dist}/skills/metricflow_ingest/SKILL.md +0 -0
  2120. /package/{node_modules/@ktx/context → dist}/skills/notion_synthesize/SKILL.md +0 -0
  2121. /package/{node_modules/@ktx/context → dist}/skills/sl_capture/SKILL.md +0 -0
  2122. /package/{node_modules/@ktx/context → dist}/skills/wiki_capture/SKILL.md +0 -0
@@ -1,1927 +0,0 @@
1
- import { mkdir, mkdtemp, readFile, readdir, rm, writeFile } from 'node:fs/promises';
2
- import { tmpdir } from 'node:os';
3
- import { join } from 'node:path';
4
- import { describe, expect, it, vi } from 'vitest';
5
- import { GitService, SessionWorktreeService } from '../core/index.js';
6
- import { LocalGitFileStore } from '../project/local-git-file-store.js';
7
- import { addTouchedSlSource } from '../tools/index.js';
8
- import { IngestBundleRunner } from './ingest-bundle.runner.js';
9
- async function makeRealGitRuntime() {
10
- const homeDir = await mkdtemp(join(tmpdir(), 'ktx-isolated-runner-'));
11
- const configDir = join(homeDir, 'config');
12
- const git = new GitService({
13
- storage: { configDir, homeDir },
14
- git: {
15
- userName: 'System User',
16
- userEmail: 'system@example.com',
17
- bootstrapMessage: 'init',
18
- bootstrapAuthor: 'system',
19
- bootstrapAuthorEmail: 'system@example.com',
20
- },
21
- });
22
- await git.onModuleInit();
23
- const configService = new LocalGitFileStore({ rootDir: configDir, git });
24
- const sessionWorktreeService = new SessionWorktreeService({
25
- coreConfig: {
26
- storage: { configDir, homeDir },
27
- git: {
28
- userName: 'System User',
29
- userEmail: 'system@example.com',
30
- bootstrapMessage: 'init',
31
- bootstrapAuthor: 'system',
32
- bootstrapAuthorEmail: 'system@example.com',
33
- },
34
- },
35
- gitService: git,
36
- configService,
37
- });
38
- return { homeDir, configDir, git, configService, sessionWorktreeService };
39
- }
40
- function rootOfConfig(configService, fallback) {
41
- const rootDir = configService.rootDir;
42
- return typeof rootDir === 'string' ? rootDir : fallback;
43
- }
44
- async function loadSourcesFromRoot(root) {
45
- const raw = await readFile(join(root, 'semantic-layer/warehouse/mart_account_segments.yaml'), 'utf-8').catch(() => '');
46
- const hasCents = raw.includes('total_contract_arr_cents');
47
- const hasDollars = raw.includes('total_contract_arr');
48
- return {
49
- sources: hasCents || hasDollars
50
- ? [
51
- {
52
- name: 'mart_account_segments',
53
- grain: ['account_id'],
54
- columns: [{ name: 'account_id', type: 'string' }],
55
- joins: [],
56
- measures: [{ name: hasCents ? 'total_contract_arr_cents' : 'total_contract_arr', expr: 'sum(contract_arr)' }],
57
- table: 'analytics.mart_account_segments',
58
- },
59
- ]
60
- : [],
61
- loadErrors: [],
62
- };
63
- }
64
- async function listGlobalWikiPageKeys(root) {
65
- const dir = join(root, 'wiki/global');
66
- const entries = await readdir(dir).catch(() => []);
67
- return entries
68
- .filter((entry) => entry.endsWith('.md'))
69
- .map((entry) => entry.slice(0, -'.md'.length))
70
- .sort();
71
- }
72
- function frontmatterList(yaml, key) {
73
- const pattern = new RegExp(`(?:^|\\n)${key}:\\n((?: - .+\\n?)*)`);
74
- return (pattern
75
- .exec(yaml)?.[1]
76
- ?.split('\n')
77
- .map((line) => line.trim().replace(/^- /, ''))
78
- .filter(Boolean) ?? []);
79
- }
80
- function legacyFallbackSettingKey() {
81
- return ['sharedWorktree', 'SourceKeys'].join('');
82
- }
83
- function legacySharedTraceEvent() {
84
- return ['shared', 'worktree', 'path', 'enabled'].join('_');
85
- }
86
- function makeWikiService(root) {
87
- return {
88
- listPageKeys: vi.fn(async (scope) => (scope === 'GLOBAL' ? listGlobalWikiPageKeys(root) : [])),
89
- readPage: vi.fn(async (_scope, _scopeId, key) => {
90
- const path = join(root, 'wiki/global', `${key}.md`);
91
- const raw = await readFile(path, 'utf-8').catch(() => null);
92
- if (!raw) {
93
- return null;
94
- }
95
- const [, yaml = '', content = ''] = /^---\n([\s\S]*?)\n---\n?([\s\S]*)$/.exec(raw) ?? [];
96
- return {
97
- pageKey: key,
98
- frontmatter: {
99
- summary: key,
100
- usage_mode: 'auto',
101
- refs: frontmatterList(yaml, 'refs'),
102
- sl_refs: frontmatterList(yaml, 'sl_refs'),
103
- },
104
- content: content.trim(),
105
- };
106
- }),
107
- writePage: vi.fn(async (_scope, _scopeId, key, frontmatter, content) => {
108
- await mkdir(join(root, 'wiki/global'), { recursive: true });
109
- const refs = (frontmatter.refs ?? []).map((ref) => ` - ${ref}`).join('\n');
110
- const slRefs = (frontmatter.sl_refs ?? []).map((ref) => ` - ${ref}`).join('\n');
111
- await writeFile(join(root, 'wiki/global', `${key}.md`), [
112
- '---',
113
- `summary: ${frontmatter.summary ?? key}`,
114
- `usage_mode: ${frontmatter.usage_mode ?? 'auto'}`,
115
- 'refs:',
116
- refs,
117
- 'sl_refs:',
118
- slRefs,
119
- '---',
120
- '',
121
- content,
122
- '',
123
- ].join('\n'));
124
- }),
125
- syncFromCommit: vi.fn(),
126
- };
127
- }
128
- function makeDeps(runtime, sourceKey = 'metabase', settings = {}) {
129
- const adapter = {
130
- source: sourceKey,
131
- skillNames: [],
132
- detect: vi.fn().mockResolvedValue(true),
133
- chunk: vi.fn().mockResolvedValue({
134
- workUnits: [
135
- { unitKey: 'card-wiki', rawFiles: ['cards/wiki.json'], peerFileIndex: [], dependencyPaths: [] },
136
- { unitKey: 'card-source', rawFiles: ['cards/source.json'], peerFileIndex: [], dependencyPaths: [] },
137
- ],
138
- }),
139
- };
140
- const wikiService = makeWikiService(runtime.configDir);
141
- const semanticLayerService = {
142
- loadAllSources: vi.fn(async () => loadSourcesFromRoot(runtime.configDir)),
143
- listFilesForConnection: vi.fn().mockResolvedValue(['mart_account_segments.yaml']),
144
- };
145
- semanticLayerService.forWorktree = vi.fn((workdir) => ({
146
- ...semanticLayerService,
147
- loadAllSources: vi.fn(async () => loadSourcesFromRoot(workdir)),
148
- listFilesForConnection: vi.fn().mockResolvedValue(['mart_account_segments.yaml']),
149
- }));
150
- const deps = {
151
- runs: { create: vi.fn().mockResolvedValue({ id: 'run-1' }), markCompleted: vi.fn(), markFailed: vi.fn() },
152
- provenance: {
153
- insertMany: vi.fn(),
154
- findLatestHashesForCompletedSyncs: vi.fn().mockResolvedValue(new Map()),
155
- findLatestArtifactsForRawPaths: vi.fn().mockResolvedValue(new Map()),
156
- },
157
- reports: { create: vi.fn().mockResolvedValue({ id: 'report-1' }), findByJobId: vi.fn().mockResolvedValue(null), markSuperseded: vi.fn() },
158
- canonicalPins: { listPins: vi.fn().mockResolvedValue([]) },
159
- registry: { get: vi.fn().mockReturnValue(adapter), register: vi.fn(), has: vi.fn(), list: vi.fn() },
160
- diffSetService: {
161
- compute: vi.fn().mockResolvedValue({ added: ['cards/wiki.json', 'cards/source.json'], modified: [], deleted: [], unchanged: [] }),
162
- },
163
- sessionWorktreeService: runtime.sessionWorktreeService,
164
- agentRunner: { runLoop: vi.fn() },
165
- gitService: runtime.git,
166
- lockingService: { withLock: vi.fn(async (_key, fn) => fn()) },
167
- storage: {
168
- homeDir: join(runtime.configDir, '.ktx'),
169
- systemGitAuthor: { name: 'KTX Test', email: 'system@ktx.local' },
170
- resolveUploadDir: (id) => join(runtime.homeDir, 'upload', id),
171
- resolvePullDir: (id) => join(runtime.homeDir, 'pull', id),
172
- resolveTranscriptDir: (id) => join(runtime.configDir, '.ktx/ingest-transcripts', id),
173
- resolveTracePath: (id) => join(runtime.configDir, '.ktx/ingest-traces', id, 'trace.jsonl'),
174
- },
175
- settings: {
176
- memoryIngestionModel: 'test',
177
- probeRowCount: 1,
178
- ingestTraceLevel: 'trace',
179
- ...settings,
180
- },
181
- skillsRegistry: {
182
- listSkills: vi.fn().mockResolvedValue([]),
183
- getSkill: vi.fn().mockResolvedValue(null),
184
- buildSkillsPrompt: vi.fn().mockReturnValue(''),
185
- stripFrontmatter: vi.fn((body) => body),
186
- },
187
- promptService: { loadPrompt: vi.fn().mockResolvedValue('base') },
188
- wikiService: { ...wikiService, forWorktree: vi.fn((workdir) => makeWikiService(workdir)) },
189
- knowledgeIndex: { listPagesForUser: vi.fn().mockResolvedValue([]) },
190
- knowledgeSlRefs: { syncFromWiki: vi.fn() },
191
- semanticLayerService,
192
- slSearchService: { indexSources: vi.fn() },
193
- slSourcesRepository: {},
194
- slValidator: { validateSingleSource: vi.fn().mockResolvedValue({ errors: [], warnings: [] }) },
195
- connections: { listEnabledConnections: vi.fn().mockResolvedValue([]), getConnectionById: vi.fn() },
196
- toolsetFactory: { createIngestWuToolset: vi.fn(() => ({ toRuntimeTools: vi.fn(() => ({})) })) },
197
- commitMessages: { enqueueForExternalCommit: vi.fn() },
198
- embedding: { maxBatchSize: 64, computeEmbedding: vi.fn(), computeEmbeddingsBulk: vi.fn() },
199
- };
200
- return { deps, adapter };
201
- }
202
- async function mockStageRawFiles(runner, runtime, hashes, sourceKey = 'metabase') {
203
- runner.resolveStagedDir = vi.fn().mockResolvedValue(join(runtime.homeDir, 'stage'));
204
- runner.stageRawFilesStage1 = vi.fn(async ({ worktreeRoot }) => {
205
- const rawDir = join(worktreeRoot, 'raw-sources/warehouse', sourceKey, 's');
206
- await mkdir(rawDir, { recursive: true });
207
- for (const [rawPath] of hashes) {
208
- await mkdir(join(rawDir, rawPath.split('/').slice(0, -1).join('/')), { recursive: true });
209
- await writeFile(join(rawDir, rawPath), '{}');
210
- }
211
- return { currentHashes: new Map(hashes), rawDirInWorktree: `raw-sources/warehouse/${sourceKey}/s` };
212
- });
213
- }
214
- describe('IngestBundleRunner isolated diff path', () => {
215
- it('routes an unlisted direct-writing source through isolated diffs by default', async () => {
216
- const runtime = await makeRealGitRuntime();
217
- try {
218
- const sourceKey = 'custom-direct-source';
219
- const { deps, adapter } = makeDeps(runtime, sourceKey);
220
- adapter.chunk.mockResolvedValue({
221
- workUnits: [
222
- {
223
- unitKey: 'custom-wiki',
224
- rawFiles: ['custom/page.json'],
225
- peerFileIndex: [],
226
- dependencyPaths: [],
227
- },
228
- ],
229
- });
230
- let currentSession = null;
231
- deps.toolsetFactory.createIngestWuToolset = vi.fn((toolSession) => {
232
- currentSession = toolSession;
233
- return { toRuntimeTools: vi.fn(() => ({})) };
234
- });
235
- deps.agentRunner.runLoop = vi.fn(async (params) => {
236
- if (params.telemetryTags.operationName !== 'ingest-bundle-wu') {
237
- return { stopReason: 'natural' };
238
- }
239
- const root = rootOfConfig(currentSession.configService, runtime.configDir);
240
- await mkdir(join(root, 'wiki/global'), { recursive: true });
241
- await writeFile(join(root, 'wiki/global/custom-isolated.md'), '---\nsummary: Custom isolated write\nusage_mode: auto\n---\n\nCustom isolated write.\n', 'utf-8');
242
- currentSession.actions.push({
243
- target: 'wiki',
244
- type: 'created',
245
- key: 'custom-isolated',
246
- detail: 'Custom isolated write',
247
- rawPaths: ['custom/page.json'],
248
- });
249
- await currentSession.gitService.commitFiles(['wiki/global/custom-isolated.md'], 'custom wiki', 'KTX Test', 'system@ktx.local');
250
- return { stopReason: 'natural' };
251
- });
252
- const runner = new IngestBundleRunner(deps);
253
- await mockStageRawFiles(runner, runtime, [['custom/page.json', 'h1']], sourceKey);
254
- await expect(runner.run({
255
- jobId: 'job-custom-default',
256
- connectionId: 'warehouse',
257
- sourceKey,
258
- trigger: 'upload',
259
- bundleRef: { kind: 'upload', uploadId: 'upload' },
260
- })).resolves.toMatchObject({
261
- jobId: 'job-custom-default',
262
- failedWorkUnits: [],
263
- workUnitCount: 1,
264
- });
265
- const trace = await readFile(join(runtime.configDir, '.ktx/ingest-traces/job-custom-default/trace.jsonl'), 'utf-8');
266
- expect(trace).toContain('isolated_diff_enabled');
267
- expect(trace).toContain('work_unit_child_created');
268
- expect(trace).not.toContain(legacySharedTraceEvent());
269
- const reportCreate = vi.mocked(deps.reports.create).mock.calls.at(-1)?.[0];
270
- const reportBody = reportCreate?.body;
271
- expect(reportBody?.isolatedDiff).toMatchObject({
272
- enabled: true,
273
- acceptedPatches: 1,
274
- });
275
- }
276
- finally {
277
- await rm(runtime.homeDir, { recursive: true, force: true });
278
- }
279
- });
280
- it('does not support shared-worktree fallback settings', async () => {
281
- const runtime = await makeRealGitRuntime();
282
- try {
283
- const sourceKey = 'legacy-source';
284
- const staleSettings = {
285
- [legacyFallbackSettingKey()]: ['legacy-source'],
286
- };
287
- const { deps, adapter } = makeDeps(runtime, sourceKey, staleSettings);
288
- adapter.chunk.mockResolvedValue({
289
- workUnits: [
290
- {
291
- unitKey: 'legacy-wiki',
292
- rawFiles: ['legacy/page.json'],
293
- peerFileIndex: [],
294
- dependencyPaths: [],
295
- },
296
- ],
297
- });
298
- let currentSession = null;
299
- deps.toolsetFactory.createIngestWuToolset = vi.fn((toolSession) => {
300
- currentSession = toolSession;
301
- return { toRuntimeTools: vi.fn(() => ({})) };
302
- });
303
- deps.agentRunner.runLoop = vi.fn(async (params) => {
304
- if (params.telemetryTags.operationName !== 'ingest-bundle-wu') {
305
- return { stopReason: 'natural' };
306
- }
307
- const root = rootOfConfig(currentSession.configService, runtime.configDir);
308
- await mkdir(join(root, 'wiki/global'), { recursive: true });
309
- await writeFile(join(root, 'wiki/global/legacy-isolated.md'), '---\nsummary: Legacy isolated write\nusage_mode: auto\n---\n\nLegacy isolated write.\n', 'utf-8');
310
- currentSession.actions.push({
311
- target: 'wiki',
312
- type: 'created',
313
- key: 'legacy-isolated',
314
- detail: 'Legacy isolated write',
315
- rawPaths: ['legacy/page.json'],
316
- });
317
- await currentSession.gitService.commitFiles(['wiki/global/legacy-isolated.md'], 'legacy isolated wiki', 'KTX Test', 'system@ktx.local');
318
- return { stopReason: 'natural' };
319
- });
320
- const runner = new IngestBundleRunner(deps);
321
- await mockStageRawFiles(runner, runtime, [['legacy/page.json', 'h1']], sourceKey);
322
- await expect(runner.run({
323
- jobId: 'job-legacy-isolated',
324
- connectionId: 'warehouse',
325
- sourceKey,
326
- trigger: 'upload',
327
- bundleRef: { kind: 'upload', uploadId: 'upload' },
328
- })).resolves.toMatchObject({
329
- jobId: 'job-legacy-isolated',
330
- failedWorkUnits: [],
331
- workUnitCount: 1,
332
- });
333
- const trace = await readFile(join(runtime.configDir, '.ktx/ingest-traces/job-legacy-isolated/trace.jsonl'), 'utf-8');
334
- expect(trace).toContain('isolated_diff_enabled');
335
- expect(trace).toContain('work_unit_child_created');
336
- expect(trace).not.toContain(legacySharedTraceEvent());
337
- const reportCreate = vi.mocked(deps.reports.create).mock.calls.at(-1)?.[0];
338
- const reportBody = reportCreate?.body;
339
- expect(reportBody?.isolatedDiff).toMatchObject({
340
- enabled: true,
341
- acceptedPatches: 1,
342
- });
343
- }
344
- finally {
345
- await rm(runtime.homeDir, { recursive: true, force: true });
346
- }
347
- });
348
- it('does not integrate failed isolated WorkUnit patches', async () => {
349
- const runtime = await makeRealGitRuntime();
350
- try {
351
- const { deps, adapter } = makeDeps(runtime, 'fake');
352
- adapter.chunk.mockResolvedValue({
353
- workUnits: [
354
- { unitKey: 'wu-good', rawFiles: ['good.raw'], peerFileIndex: [], dependencyPaths: [] },
355
- { unitKey: 'wu-bad', rawFiles: ['bad.raw'], peerFileIndex: [], dependencyPaths: [] },
356
- ],
357
- });
358
- deps.diffSetService.compute = vi.fn().mockResolvedValue({
359
- added: ['good.raw', 'bad.raw'],
360
- modified: [],
361
- deleted: [],
362
- unchanged: [],
363
- });
364
- deps.slValidator.validateSingleSource = vi.fn(async (_validationDeps, _connectionId, sourceName) => ({
365
- errors: sourceName === 'bad' ? [{ message: 'bad source rejected' }] : [],
366
- warnings: [],
367
- }));
368
- let currentSession = null;
369
- deps.toolsetFactory.createIngestWuToolset = vi.fn((toolSession) => {
370
- currentSession = toolSession;
371
- return { toRuntimeTools: vi.fn(() => ({})) };
372
- });
373
- deps.agentRunner.runLoop = vi.fn(async (params) => {
374
- if (params.telemetryTags.operationName !== 'ingest-bundle-wu') {
375
- return { stopReason: 'natural' };
376
- }
377
- const unitKey = params.telemetryTags.unitKey;
378
- const root = rootOfConfig(currentSession.configService, runtime.configDir);
379
- await mkdir(join(root, 'semantic-layer/warehouse'), { recursive: true });
380
- if (unitKey === 'wu-good') {
381
- await writeFile(join(root, 'semantic-layer/warehouse/good.yaml'), 'name: good\n', 'utf-8');
382
- addTouchedSlSource(currentSession.touchedSlSources, 'warehouse', 'good');
383
- currentSession.actions.push({
384
- target: 'sl',
385
- type: 'created',
386
- key: 'good',
387
- detail: 'good source',
388
- targetConnectionId: 'warehouse',
389
- rawPaths: ['good.raw'],
390
- });
391
- await currentSession.gitService.commitFiles(['semantic-layer/warehouse/good.yaml'], 'test: add good source', 'KTX Test', 'system@ktx.local');
392
- }
393
- if (unitKey === 'wu-bad') {
394
- await writeFile(join(root, 'semantic-layer/warehouse/bad.yaml'), 'name: bad\n', 'utf-8');
395
- addTouchedSlSource(currentSession.touchedSlSources, 'warehouse', 'bad');
396
- currentSession.actions.push({
397
- target: 'sl',
398
- type: 'created',
399
- key: 'bad',
400
- detail: 'bad source',
401
- targetConnectionId: 'warehouse',
402
- rawPaths: ['bad.raw'],
403
- });
404
- await currentSession.gitService.commitFiles(['semantic-layer/warehouse/bad.yaml'], 'test: add bad source', 'KTX Test', 'system@ktx.local');
405
- }
406
- return { stopReason: 'natural' };
407
- });
408
- const runner = new IngestBundleRunner(deps);
409
- await mockStageRawFiles(runner, runtime, [
410
- ['good.raw', 'good-hash'],
411
- ['bad.raw', 'bad-hash'],
412
- ], 'fake');
413
- const result = await runner.run({
414
- jobId: 'job-failed-wu-isolated',
415
- connectionId: 'warehouse',
416
- sourceKey: 'fake',
417
- trigger: 'upload',
418
- bundleRef: { kind: 'upload', uploadId: 'upload' },
419
- });
420
- expect(result.failedWorkUnits).toEqual(['wu-bad']);
421
- await expect(readFile(join(runtime.configDir, 'semantic-layer/warehouse/good.yaml'), 'utf-8')).resolves.toContain('good');
422
- await expect(readFile(join(runtime.configDir, 'semantic-layer/warehouse/bad.yaml'), 'utf-8')).rejects.toThrow();
423
- const reportCreate = vi.mocked(deps.reports.create).mock.calls.at(-1)?.[0];
424
- const reportBody = reportCreate?.body;
425
- expect(reportBody.failedWorkUnits).toEqual(['wu-bad']);
426
- expect(reportBody.isolatedDiff).toMatchObject({ enabled: true, acceptedPatches: 1 });
427
- const trace = await readFile(join(runtime.configDir, '.ktx/ingest-traces/job-failed-wu-isolated/trace.jsonl'), 'utf-8');
428
- expect(trace).toContain('work_unit_failed_before_patch');
429
- expect(trace).toContain('patch_accepted');
430
- expect(trace).not.toContain(legacySharedTraceEvent());
431
- }
432
- finally {
433
- await rm(runtime.homeDir, { recursive: true, force: true });
434
- }
435
- });
436
- it.each(['notion', 'lookml', 'looker', 'dbt', 'metricflow'])('routes %s direct writes through isolated child worktrees', async (sourceKey) => {
437
- const runtime = await makeRealGitRuntime();
438
- try {
439
- const { deps, adapter } = makeDeps(runtime, sourceKey);
440
- adapter.chunk.mockResolvedValue({
441
- workUnits: [
442
- {
443
- unitKey: `${sourceKey}-wiki`,
444
- rawFiles: [`${sourceKey}/page.json`],
445
- peerFileIndex: [],
446
- dependencyPaths: [],
447
- },
448
- ],
449
- });
450
- let currentSession = null;
451
- deps.toolsetFactory.createIngestWuToolset = vi.fn((toolSession) => {
452
- currentSession = toolSession;
453
- return { toRuntimeTools: vi.fn(() => ({})) };
454
- });
455
- deps.agentRunner.runLoop = vi.fn(async (params) => {
456
- if (params.telemetryTags.operationName !== 'ingest-bundle-wu') {
457
- return { stopReason: 'natural' };
458
- }
459
- expect(params.telemetryTags).toMatchObject({
460
- operationName: 'ingest-bundle-wu',
461
- source: sourceKey,
462
- unitKey: `${sourceKey}-wiki`,
463
- });
464
- const root = rootOfConfig(currentSession.configService, runtime.configDir);
465
- await mkdir(join(root, 'wiki/global'), { recursive: true });
466
- await writeFile(join(root, 'wiki/global', `${sourceKey}-isolated.md`), `---\nsummary: ${sourceKey} isolated write\nusage_mode: auto\n---\n\nIsolated ${sourceKey} write.\n`, 'utf-8');
467
- currentSession.actions.push({
468
- target: 'wiki',
469
- type: 'created',
470
- key: `${sourceKey}-isolated`,
471
- detail: `${sourceKey} isolated write`,
472
- rawPaths: [`${sourceKey}/page.json`],
473
- });
474
- await currentSession.gitService.commitFiles([`wiki/global/${sourceKey}-isolated.md`], `${sourceKey} wiki`, 'KTX Test', 'system@ktx.local');
475
- return { stopReason: 'natural' };
476
- });
477
- const runner = new IngestBundleRunner(deps);
478
- await mockStageRawFiles(runner, runtime, [[`${sourceKey}/page.json`, 'h1']], sourceKey);
479
- await expect(runner.run({
480
- jobId: `job-${sourceKey}`,
481
- connectionId: 'warehouse',
482
- sourceKey,
483
- trigger: 'upload',
484
- bundleRef: { kind: 'upload', uploadId: 'upload' },
485
- })).resolves.toMatchObject({
486
- jobId: `job-${sourceKey}`,
487
- failedWorkUnits: [],
488
- workUnitCount: 1,
489
- });
490
- const trace = await readFile(join(runtime.configDir, '.ktx/ingest-traces', `job-${sourceKey}`, 'trace.jsonl'), 'utf-8');
491
- expect(trace).toContain('isolated_diff_enabled');
492
- expect(trace).toContain('work_unit_child_created');
493
- expect(trace).toContain('work_unit_patch_collected');
494
- expect(trace).toContain('patch_apply_started');
495
- expect(trace).not.toContain(legacySharedTraceEvent());
496
- const reportCreate = vi.mocked(deps.reports.create).mock.calls.at(-1)?.[0];
497
- const reportBody = reportCreate?.body;
498
- expect(reportBody?.isolatedDiff).toMatchObject({
499
- enabled: true,
500
- acceptedPatches: 1,
501
- });
502
- }
503
- finally {
504
- await rm(runtime.homeDir, { recursive: true, force: true });
505
- }
506
- });
507
- it('rejects the Metabase stale-measure wiki body regression before squash', async () => {
508
- const runtime = await makeRealGitRuntime();
509
- try {
510
- const { deps, adapter } = makeDeps(runtime);
511
- adapter.project = vi.fn(async ({ workdir }) => {
512
- await mkdir(join(workdir, 'semantic-layer/warehouse'), { recursive: true });
513
- await writeFile(join(workdir, 'semantic-layer/warehouse/mart_account_segments.yaml'), 'name: mart_account_segments\ngrain: [account_id]\ncolumns: [{name: account_id, type: string}]\njoins: []\nmeasures:\n - name: total_contract_arr_cents\n expr: sum(contract_arr)\n');
514
- return {
515
- warnings: [],
516
- errors: [],
517
- touchedSources: [{ connectionId: 'warehouse', sourceName: 'mart_account_segments' }],
518
- changedWikiPageKeys: [],
519
- };
520
- });
521
- let currentSession = null;
522
- deps.toolsetFactory.createIngestWuToolset = vi.fn((toolSession) => {
523
- currentSession = toolSession;
524
- return { toRuntimeTools: vi.fn(() => ({})) };
525
- });
526
- deps.agentRunner.runLoop = vi.fn(async (params) => {
527
- const root = rootOfConfig(currentSession.configService, runtime.configDir);
528
- if (params.telemetryTags.unitKey === 'card-wiki') {
529
- await mkdir(join(root, 'wiki/global'), { recursive: true });
530
- await writeFile(join(root, 'wiki/global/account-segments.md'), '---\nsummary: Account segments\nusage_mode: auto\nsl_refs:\n - mart_account_segments\n---\n\nARR is `mart_account_segments.total_contract_arr_cents`.\n');
531
- currentSession.actions.push({ target: 'wiki', type: 'created', key: 'account-segments', detail: 'Account segments' });
532
- await currentSession.gitService.commitFiles(['wiki/global/account-segments.md'], 'wu wiki', 'KTX Test', 'system@ktx.local');
533
- }
534
- if (params.telemetryTags.unitKey === 'card-source') {
535
- await writeFile(join(root, 'semantic-layer/warehouse/mart_account_segments.yaml'), 'name: mart_account_segments\ngrain: [account_id]\ncolumns: [{name: account_id, type: string}]\njoins: []\nmeasures:\n - name: total_contract_arr\n expr: sum(contract_arr)\n');
536
- addTouchedSlSource(currentSession.touchedSlSources, 'warehouse', 'mart_account_segments');
537
- currentSession.actions.push({
538
- target: 'sl',
539
- type: 'updated',
540
- key: 'mart_account_segments',
541
- detail: 'Dollar measure',
542
- targetConnectionId: 'warehouse',
543
- });
544
- await currentSession.gitService.commitFiles(['semantic-layer/warehouse/mart_account_segments.yaml'], 'wu source', 'KTX Test', 'system@ktx.local');
545
- }
546
- return { stopReason: 'natural' };
547
- });
548
- const runner = new IngestBundleRunner(deps);
549
- await mockStageRawFiles(runner, runtime, [
550
- ['cards/wiki.json', 'h1'],
551
- ['cards/source.json', 'h2'],
552
- ]);
553
- await expect(runner.run({ jobId: 'job-1', connectionId: 'warehouse', sourceKey: 'metabase', trigger: 'upload', bundleRef: { kind: 'upload', uploadId: 'upload' } })).rejects.toThrow(/total_contract_arr_cents/);
554
- const trace = await readFile(join(runtime.configDir, '.ktx/ingest-traces/job-1/trace.jsonl'), 'utf-8');
555
- expect(trace).toContain('input_snapshot');
556
- expect(trace).toContain('isolated_diff_enabled');
557
- expect(trace).toContain('work_unit_child_created');
558
- expect(trace).toContain('work_unit_patch_collected');
559
- expect(trace).toContain('patch_apply_started');
560
- expect(trace).toContain('final_artifact_gates_failed');
561
- expect(trace).toContain('ingest_failed');
562
- }
563
- finally {
564
- await rm(runtime.homeDir, { recursive: true, force: true });
565
- }
566
- });
567
- it('rejects unchanged wiki body refs made stale by isolated semantic-layer changes', async () => {
568
- const runtime = await makeRealGitRuntime();
569
- try {
570
- await mkdir(join(runtime.configDir, 'semantic-layer/warehouse'), { recursive: true });
571
- await mkdir(join(runtime.configDir, 'wiki/global'), { recursive: true });
572
- await writeFile(join(runtime.configDir, 'semantic-layer/warehouse/mart_account_segments.yaml'), 'name: mart_account_segments\ngrain: [account_id]\ncolumns: [{name: account_id, type: string}]\njoins: []\nmeasures:\n - name: total_contract_arr_cents\n expr: sum(contract_arr)\n');
573
- await writeFile(join(runtime.configDir, 'wiki/global/account-segments.md'), '---\nsummary: Account segments\nusage_mode: auto\n---\n\nExisting ARR uses `mart_account_segments.total_contract_arr_cents`.\n');
574
- await runtime.git.commitFiles(['semantic-layer/warehouse/mart_account_segments.yaml', 'wiki/global/account-segments.md'], 'seed existing wiki body ref', 'KTX Test', 'system@ktx.local');
575
- const preRunHead = await runtime.git.revParseHead();
576
- const { deps, adapter } = makeDeps(runtime);
577
- adapter.chunk.mockResolvedValue({
578
- workUnits: [{ unitKey: 'source-only', rawFiles: ['cards/source.json'], peerFileIndex: [], dependencyPaths: [] }],
579
- });
580
- let currentSession = null;
581
- deps.toolsetFactory.createIngestWuToolset = vi.fn((toolSession) => {
582
- currentSession = toolSession;
583
- return { toRuntimeTools: vi.fn(() => ({})) };
584
- });
585
- deps.agentRunner.runLoop = vi.fn(async () => {
586
- const root = rootOfConfig(currentSession.configService, runtime.configDir);
587
- await writeFile(join(root, 'semantic-layer/warehouse/mart_account_segments.yaml'), 'name: mart_account_segments\ngrain: [account_id]\ncolumns: [{name: account_id, type: string}]\njoins: []\nmeasures:\n - name: total_contract_arr\n expr: sum(contract_arr)\n');
588
- addTouchedSlSource(currentSession.touchedSlSources, 'warehouse', 'mart_account_segments');
589
- currentSession.actions.push({
590
- target: 'sl',
591
- type: 'updated',
592
- key: 'mart_account_segments',
593
- detail: 'Rename ARR measure',
594
- targetConnectionId: 'warehouse',
595
- rawPaths: ['cards/source.json'],
596
- });
597
- await currentSession.gitService.commitFiles(['semantic-layer/warehouse/mart_account_segments.yaml'], 'wu source rename', 'KTX Test', 'system@ktx.local');
598
- return { stopReason: 'natural' };
599
- });
600
- const runner = new IngestBundleRunner(deps);
601
- await mockStageRawFiles(runner, runtime, [['cards/source.json', 'h1']]);
602
- await expect(runner.run({
603
- jobId: 'job-existing-body-stale',
604
- connectionId: 'warehouse',
605
- sourceKey: 'metabase',
606
- trigger: 'upload',
607
- bundleRef: { kind: 'upload', uploadId: 'upload' },
608
- })).rejects.toThrow(/total_contract_arr_cents/);
609
- expect(await runtime.git.revParseHead()).toBe(preRunHead);
610
- const events = (await readFile(join(runtime.configDir, '.ktx/ingest-traces/job-existing-body-stale/trace.jsonl'), 'utf-8'))
611
- .trim()
612
- .split('\n')
613
- .map((line) => JSON.parse(line));
614
- expect(events.map((event) => event.event)).toEqual(expect.arrayContaining([
615
- 'final_artifact_gates_started',
616
- 'final_artifact_gates_failed',
617
- 'ingest_failed',
618
- 'failure_report_created',
619
- ]));
620
- expect(events.map((event) => event.event)).not.toContain('squash_finished');
621
- const gateFailure = events.find((event) => event.event === 'final_artifact_gates_failed');
622
- expect(gateFailure).toMatchObject({
623
- data: {
624
- wikiReferenceGateScope: {
625
- global: true,
626
- reasons: expect.arrayContaining(['semantic_layer_changed']),
627
- pageKeysValidated: expect.arrayContaining(['account-segments']),
628
- },
629
- actionOrigins: expect.arrayContaining([
630
- expect.objectContaining({
631
- source: 'work_unit_action',
632
- unitKey: 'source-only',
633
- unitRawFiles: ['cards/source.json'],
634
- action: expect.objectContaining({
635
- target: 'sl',
636
- type: 'updated',
637
- key: 'mart_account_segments',
638
- rawPaths: ['cards/source.json'],
639
- targetConnectionId: 'warehouse',
640
- }),
641
- }),
642
- ]),
643
- },
644
- error: { message: expect.stringContaining('total_contract_arr_cents') },
645
- });
646
- const failureReport = deps.reports.create.mock.calls
647
- .map((call) => call[0])
648
- .find((report) => report.body.status === 'failed');
649
- expect(failureReport.body.failure).toMatchObject({
650
- phase: 'final_gates',
651
- message: expect.stringContaining('total_contract_arr_cents'),
652
- details: expect.objectContaining({
653
- wikiReferenceGateScope: expect.objectContaining({
654
- global: true,
655
- reasons: expect.arrayContaining(['semantic_layer_changed']),
656
- pageKeysValidated: expect.arrayContaining(['account-segments']),
657
- }),
658
- touchedSlSources: expect.arrayContaining([
659
- expect.objectContaining({ connectionId: 'warehouse', sourceName: 'mart_account_segments' }),
660
- ]),
661
- actionOrigins: expect.arrayContaining([
662
- expect.objectContaining({
663
- source: 'work_unit_action',
664
- unitKey: 'source-only',
665
- action: expect.objectContaining({
666
- target: 'sl',
667
- type: 'updated',
668
- key: 'mart_account_segments',
669
- rawPaths: ['cards/source.json'],
670
- targetConnectionId: 'warehouse',
671
- }),
672
- }),
673
- ]),
674
- }),
675
- });
676
- expect(failureReport.body.workUnits).toEqual(expect.arrayContaining([
677
- expect.objectContaining({
678
- unitKey: 'source-only',
679
- actions: expect.arrayContaining([
680
- expect.objectContaining({
681
- target: 'sl',
682
- type: 'updated',
683
- key: 'mart_account_segments',
684
- rawPaths: ['cards/source.json'],
685
- }),
686
- ]),
687
- }),
688
- ]));
689
- }
690
- finally {
691
- await rm(runtime.homeDir, { recursive: true, force: true });
692
- }
693
- });
694
- it('accepts two isolated work units that edit different wiki pages', async () => {
695
- const runtime = await makeRealGitRuntime();
696
- try {
697
- const { deps, adapter } = makeDeps(runtime);
698
- adapter.chunk.mockResolvedValue({
699
- workUnits: [
700
- { unitKey: 'page-a', rawFiles: ['pages/a.json'], peerFileIndex: [], dependencyPaths: [] },
701
- { unitKey: 'page-b', rawFiles: ['pages/b.json'], peerFileIndex: [], dependencyPaths: [] },
702
- ],
703
- });
704
- let currentSession = null;
705
- deps.toolsetFactory.createIngestWuToolset = vi.fn((toolSession) => {
706
- currentSession = toolSession;
707
- return { toRuntimeTools: vi.fn(() => ({})) };
708
- });
709
- deps.agentRunner.runLoop = vi.fn(async (params) => {
710
- const unitKey = params.telemetryTags.unitKey;
711
- const root = rootOfConfig(currentSession.configService, runtime.configDir);
712
- await mkdir(join(root, 'wiki/global'), { recursive: true });
713
- await writeFile(join(root, `wiki/global/${unitKey}.md`), `---\nsummary: ${unitKey}\nusage_mode: auto\n---\n\n${unitKey}\n`);
714
- currentSession.actions.push({ target: 'wiki', type: 'created', key: unitKey, detail: unitKey });
715
- await currentSession.gitService.commitFiles([`wiki/global/${unitKey}.md`], `wu ${unitKey}`, 'KTX Test', 'system@ktx.local');
716
- return { stopReason: 'natural' };
717
- });
718
- const runner = new IngestBundleRunner(deps);
719
- await mockStageRawFiles(runner, runtime, [
720
- ['pages/a.json', 'h1'],
721
- ['pages/b.json', 'h2'],
722
- ]);
723
- const result = await runner.run({ jobId: 'job-clean', connectionId: 'warehouse', sourceKey: 'metabase', trigger: 'upload', bundleRef: { kind: 'upload', uploadId: 'upload' } });
724
- expect(result.failedWorkUnits).toEqual([]);
725
- const trace = await readFile(join(runtime.configDir, '.ktx/ingest-traces/job-clean/trace.jsonl'), 'utf-8');
726
- expect(trace.match(/patch_accepted/g)).toHaveLength(2);
727
- expect(trace).toContain('ingest_finished');
728
- }
729
- finally {
730
- await rm(runtime.homeDir, { recursive: true, force: true });
731
- }
732
- });
733
- it('classifies same-source patch application failure as a textual conflict', async () => {
734
- const runtime = await makeRealGitRuntime();
735
- try {
736
- const { deps, adapter } = makeDeps(runtime);
737
- adapter.chunk.mockResolvedValue({
738
- workUnits: [
739
- { unitKey: 'orders-a', rawFiles: ['orders/a.json'], peerFileIndex: [], dependencyPaths: [] },
740
- { unitKey: 'orders-b', rawFiles: ['orders/b.json'], peerFileIndex: [], dependencyPaths: [] },
741
- ],
742
- });
743
- let currentSession = null;
744
- deps.toolsetFactory.createIngestWuToolset = vi.fn((toolSession) => {
745
- currentSession = toolSession;
746
- return { toRuntimeTools: vi.fn(() => ({})) };
747
- });
748
- deps.agentRunner.runLoop = vi.fn(async (params) => {
749
- if (params.telemetryTags.operationName === 'ingest-isolated-diff-textual-resolver') {
750
- return { stopReason: 'natural' };
751
- }
752
- const suffix = params.telemetryTags.unitKey === 'orders-a' ? 'a' : 'b';
753
- const root = rootOfConfig(currentSession.configService, runtime.configDir);
754
- await mkdir(join(root, 'semantic-layer/warehouse'), { recursive: true });
755
- await writeFile(join(root, 'semantic-layer/warehouse/orders.yaml'), `name: orders\ngrain: [id]\ncolumns: [{name: id, type: string}]\njoins: []\nmeasures:\n - name: order_count_${suffix}\n expr: count(*)\n`);
756
- addTouchedSlSource(currentSession.touchedSlSources, 'warehouse', 'orders');
757
- currentSession.actions.push({ target: 'sl', type: 'updated', key: 'orders', detail: suffix, targetConnectionId: 'warehouse' });
758
- await currentSession.gitService.commitFiles(['semantic-layer/warehouse/orders.yaml'], `wu ${suffix}`, 'KTX Test', 'system@ktx.local');
759
- return { stopReason: 'natural' };
760
- });
761
- const runner = new IngestBundleRunner(deps);
762
- await mockStageRawFiles(runner, runtime, [
763
- ['orders/a.json', 'h1'],
764
- ['orders/b.json', 'h2'],
765
- ]);
766
- await expect(runner.run({ jobId: 'job-text-conflict', connectionId: 'warehouse', sourceKey: 'metabase', trigger: 'upload', bundleRef: { kind: 'upload', uploadId: 'upload' } })).rejects.toThrow(/isolated diff textual conflict/);
767
- const trace = await readFile(join(runtime.configDir, '.ktx/ingest-traces/job-text-conflict/trace.jsonl'), 'utf-8');
768
- expect(trace).toContain('patch_textual_conflict');
769
- expect(trace).toContain('textual_conflict_resolver_failed');
770
- }
771
- finally {
772
- await rm(runtime.homeDir, { recursive: true, force: true });
773
- }
774
- });
775
- it('makes deterministic projection visible to child worktrees before WorkUnit synthesis', async () => {
776
- const runtime = await makeRealGitRuntime();
777
- try {
778
- const { deps, adapter } = makeDeps(runtime);
779
- adapter.chunk.mockResolvedValue({
780
- workUnits: [{ unitKey: 'wiki-projected', rawFiles: ['projected/wiki.json'], peerFileIndex: [], dependencyPaths: [] }],
781
- });
782
- adapter.project = vi.fn(async ({ workdir }) => {
783
- await mkdir(join(workdir, 'semantic-layer/warehouse'), { recursive: true });
784
- await writeFile(join(workdir, 'semantic-layer/warehouse/mart_account_segments.yaml'), 'name: mart_account_segments\ngrain: [account_id]\ncolumns: [{name: account_id, type: string}]\njoins: []\nmeasures:\n - name: total_contract_arr\n expr: sum(contract_arr)\n');
785
- return {
786
- warnings: [],
787
- errors: [],
788
- touchedSources: [{ connectionId: 'warehouse', sourceName: 'mart_account_segments' }],
789
- changedWikiPageKeys: [],
790
- };
791
- });
792
- let currentSession = null;
793
- deps.toolsetFactory.createIngestWuToolset = vi.fn((toolSession) => {
794
- currentSession = toolSession;
795
- return { toRuntimeTools: vi.fn(() => ({})) };
796
- });
797
- deps.agentRunner.runLoop = vi.fn(async () => {
798
- const root = rootOfConfig(currentSession.configService, runtime.configDir);
799
- await expect(readFile(join(root, 'semantic-layer/warehouse/mart_account_segments.yaml'), 'utf-8')).resolves.toContain('total_contract_arr');
800
- await mkdir(join(root, 'wiki/global'), { recursive: true });
801
- await writeFile(join(root, 'wiki/global/projected-orders.md'), '---\nsummary: Projected orders\nusage_mode: auto\nsl_refs:\n - mart_account_segments\n---\n\nARR `mart_account_segments.total_contract_arr`.\n');
802
- currentSession.actions.push({ target: 'wiki', type: 'created', key: 'projected-orders', detail: 'Projected orders' });
803
- await currentSession.gitService.commitFiles(['wiki/global/projected-orders.md'], 'wu projected wiki', 'KTX Test', 'system@ktx.local');
804
- return { stopReason: 'natural' };
805
- });
806
- const runner = new IngestBundleRunner(deps);
807
- await mockStageRawFiles(runner, runtime, [['projected/wiki.json', 'h1']]);
808
- const result = await runner.run({ jobId: 'job-projection', connectionId: 'warehouse', sourceKey: 'metabase', trigger: 'upload', bundleRef: { kind: 'upload', uploadId: 'upload' } });
809
- expect(result.failedWorkUnits).toEqual([]);
810
- const trace = await readFile(join(runtime.configDir, '.ktx/ingest-traces/job-projection/trace.jsonl'), 'utf-8');
811
- expect(trace).toContain('deterministic_projection_finished');
812
- expect(trace).toContain('deterministic_projection_committed');
813
- }
814
- finally {
815
- await rm(runtime.homeDir, { recursive: true, force: true });
816
- }
817
- });
818
- it('rejects Notion-style changed wiki pages with invalid sl_refs', async () => {
819
- const runtime = await makeRealGitRuntime();
820
- try {
821
- const { deps, adapter } = makeDeps(runtime);
822
- adapter.chunk.mockResolvedValue({
823
- workUnits: [{ unitKey: 'notion-page', rawFiles: ['pages/notion.json'], peerFileIndex: [], dependencyPaths: [] }],
824
- });
825
- let currentSession = null;
826
- deps.toolsetFactory.createIngestWuToolset = vi.fn((toolSession) => {
827
- currentSession = toolSession;
828
- return { toRuntimeTools: vi.fn(() => ({})) };
829
- });
830
- deps.agentRunner.runLoop = vi.fn(async (params) => {
831
- if (params.telemetryTags.operationName === 'ingest-isolated-diff-gate-repair') {
832
- return { stopReason: 'natural' };
833
- }
834
- const root = rootOfConfig(currentSession.configService, runtime.configDir);
835
- await mkdir(join(root, 'wiki/global'), { recursive: true });
836
- await writeFile(join(root, 'wiki/global/notion-page.md'), '---\nsummary: Notion page\nusage_mode: auto\nsl_refs:\n - missing_source\n---\n\nBody\n');
837
- currentSession.actions.push({ target: 'wiki', type: 'created', key: 'notion-page', detail: 'Notion page' });
838
- await currentSession.gitService.commitFiles(['wiki/global/notion-page.md'], 'wu notion', 'KTX Test', 'system@ktx.local');
839
- return { stopReason: 'natural' };
840
- });
841
- const runner = new IngestBundleRunner(deps);
842
- await mockStageRawFiles(runner, runtime, [['pages/notion.json', 'h1']]);
843
- await expect(runner.run({ jobId: 'job-invalid-slrefs', connectionId: 'warehouse', sourceKey: 'metabase', trigger: 'upload', bundleRef: { kind: 'upload', uploadId: 'upload' } })).rejects.toThrow(/gate repair completed without editing an allowed path/);
844
- }
845
- finally {
846
- await rm(runtime.homeDir, { recursive: true, force: true });
847
- }
848
- });
849
- it('runs final artifact gates after reconciliation mutates the integration tree', async () => {
850
- const runtime = await makeRealGitRuntime();
851
- try {
852
- const { deps, adapter } = makeDeps(runtime);
853
- adapter.chunk.mockResolvedValue({
854
- workUnits: [{ unitKey: 'card-source', rawFiles: ['cards/source.json'], peerFileIndex: [], dependencyPaths: [] }],
855
- });
856
- let currentSession = null;
857
- deps.toolsetFactory.createIngestWuToolset = vi.fn((toolSession) => {
858
- currentSession = toolSession;
859
- return { toRuntimeTools: vi.fn(() => ({})) };
860
- });
861
- deps.agentRunner.runLoop = vi.fn(async (params) => {
862
- const root = rootOfConfig(currentSession.configService, runtime.configDir);
863
- if (params.telemetryTags.operationName === 'ingest-bundle-wu') {
864
- await mkdir(join(root, 'semantic-layer/warehouse'), { recursive: true });
865
- await writeFile(join(root, 'semantic-layer/warehouse/mart_account_segments.yaml'), 'name: mart_account_segments\ngrain: [account_id]\ncolumns: [{name: account_id, type: string}]\njoins: []\nmeasures:\n - name: total_contract_arr\n expr: sum(contract_arr)\n');
866
- addTouchedSlSource(currentSession.touchedSlSources, 'warehouse', 'mart_account_segments');
867
- currentSession.actions.push({
868
- target: 'sl',
869
- type: 'created',
870
- key: 'mart_account_segments',
871
- detail: 'Source with renamed ARR measure',
872
- targetConnectionId: 'warehouse',
873
- rawPaths: ['cards/source.json'],
874
- });
875
- await currentSession.gitService.commitFiles(['semantic-layer/warehouse/mart_account_segments.yaml'], 'wu source', 'KTX Test', 'system@ktx.local');
876
- }
877
- else {
878
- await mkdir(join(root, 'wiki/global'), { recursive: true });
879
- await writeFile(join(root, 'wiki/global/account-segments.md'), '---\nsummary: Account segments\nusage_mode: auto\nsl_refs:\n - mart_account_segments\n---\n\nReconcile wrote stale ARR `mart_account_segments.total_contract_arr_cents`.\n');
880
- currentSession.actions.push({
881
- target: 'wiki',
882
- type: 'created',
883
- key: 'account-segments',
884
- detail: 'Stale reconcile wiki page',
885
- rawPaths: ['cards/source.json'],
886
- });
887
- await currentSession.gitService.commitFiles(['wiki/global/account-segments.md'], 'reconcile wiki', 'KTX Test', 'system@ktx.local');
888
- }
889
- return { stopReason: 'natural' };
890
- });
891
- const runner = new IngestBundleRunner(deps);
892
- await mockStageRawFiles(runner, runtime, [['cards/source.json', 'h1']]);
893
- await expect(runner.run({
894
- jobId: 'job-reconcile-stale',
895
- connectionId: 'warehouse',
896
- sourceKey: 'metabase',
897
- trigger: 'upload',
898
- bundleRef: { kind: 'upload', uploadId: 'upload' },
899
- })).rejects.toThrow(/total_contract_arr_cents/);
900
- const trace = await readFile(join(runtime.configDir, '.ktx/ingest-traces/job-reconcile-stale/trace.jsonl'), 'utf-8');
901
- expect(trace).toContain('reconciliation_finished');
902
- expect(trace).toContain('final_artifact_gates_failed');
903
- expect(trace).toContain('ingest_failed');
904
- expect(await runtime.git.revParseHead()).not.toContain('reconcile wiki');
905
- }
906
- finally {
907
- await rm(runtime.homeDir, { recursive: true, force: true });
908
- }
909
- });
910
- it('stores a failure report and postmortem trace for final gate failures', async () => {
911
- const runtime = await makeRealGitRuntime();
912
- try {
913
- const { deps, adapter } = makeDeps(runtime);
914
- const createdReports = [];
915
- deps.reports.create = vi.fn(async (args) => {
916
- createdReports.push(args);
917
- return { id: `report-${createdReports.length}` };
918
- });
919
- adapter.chunk.mockResolvedValue({
920
- workUnits: [
921
- { unitKey: 'card-wiki', rawFiles: ['cards/wiki.json'], peerFileIndex: [], dependencyPaths: [] },
922
- { unitKey: 'card-source', rawFiles: ['cards/source.json'], peerFileIndex: [], dependencyPaths: [] },
923
- ],
924
- });
925
- let currentSession = null;
926
- deps.toolsetFactory.createIngestWuToolset = vi.fn((toolSession) => {
927
- currentSession = toolSession;
928
- return { toRuntimeTools: vi.fn(() => ({})) };
929
- });
930
- deps.agentRunner.runLoop = vi.fn(async (params) => {
931
- const root = rootOfConfig(currentSession.configService, runtime.configDir);
932
- if (params.telemetryTags.unitKey === 'card-wiki') {
933
- await mkdir(join(root, 'wiki/global'), { recursive: true });
934
- await writeFile(join(root, 'wiki/global/account-segments.md'), '---\nsummary: Account segments\nusage_mode: auto\n---\n\nARR is `mart_account_segments.total_contract_arr_cents`.\n');
935
- currentSession.actions.push({
936
- target: 'wiki',
937
- type: 'created',
938
- key: 'account-segments',
939
- detail: 'Account segments',
940
- rawPaths: ['cards/wiki.json'],
941
- });
942
- await currentSession.gitService.commitFiles(['wiki/global/account-segments.md'], 'wu wiki', 'KTX Test', 'system@ktx.local');
943
- }
944
- if (params.telemetryTags.unitKey === 'card-source') {
945
- await mkdir(join(root, 'semantic-layer/warehouse'), { recursive: true });
946
- await writeFile(join(root, 'semantic-layer/warehouse/mart_account_segments.yaml'), 'name: mart_account_segments\ngrain: [account_id]\ncolumns: [{name: account_id, type: string}]\njoins: []\nmeasures:\n - name: total_contract_arr\n expr: sum(contract_arr)\n');
947
- addTouchedSlSource(currentSession.touchedSlSources, 'warehouse', 'mart_account_segments');
948
- currentSession.actions.push({
949
- target: 'sl',
950
- type: 'created',
951
- key: 'mart_account_segments',
952
- detail: 'Dollar measure',
953
- targetConnectionId: 'warehouse',
954
- rawPaths: ['cards/source.json'],
955
- });
956
- await currentSession.gitService.commitFiles(['semantic-layer/warehouse/mart_account_segments.yaml'], 'wu source', 'KTX Test', 'system@ktx.local');
957
- }
958
- return { stopReason: 'natural' };
959
- });
960
- const runner = new IngestBundleRunner(deps);
961
- await mockStageRawFiles(runner, runtime, [
962
- ['cards/wiki.json', 'h1'],
963
- ['cards/source.json', 'h2'],
964
- ]);
965
- await expect(runner.run({
966
- jobId: 'job-trace-failure',
967
- connectionId: 'warehouse',
968
- sourceKey: 'metabase',
969
- trigger: 'upload',
970
- bundleRef: { kind: 'upload', uploadId: 'upload' },
971
- })).rejects.toThrow(/total_contract_arr_cents/);
972
- const failureReport = createdReports.find((report) => report.body.status === 'failed');
973
- expect(failureReport.body.tracePath).toContain('job-trace-failure/trace.jsonl');
974
- expect(failureReport.body.failure).toMatchObject({ phase: 'final_gates' });
975
- const events = (await readFile(join(runtime.configDir, '.ktx/ingest-traces/job-trace-failure/trace.jsonl'), 'utf-8'))
976
- .trim()
977
- .split('\n')
978
- .map((line) => JSON.parse(line));
979
- expect(events.map((event) => event.event)).toEqual(expect.arrayContaining([
980
- 'ingest_started',
981
- 'input_snapshot',
982
- 'work_units_planned',
983
- 'isolated_diff_enabled',
984
- 'work_unit_child_created',
985
- 'work_unit_patch_collected',
986
- 'patch_apply_started',
987
- 'patch_accepted',
988
- 'reconciliation_finished',
989
- 'final_artifact_gates_failed',
990
- 'ingest_failed',
991
- 'failure_report_created',
992
- ]));
993
- const failed = events.find((event) => event.event === 'ingest_failed');
994
- expect(failed).toMatchObject({
995
- runId: 'run-1',
996
- syncId: expect.any(String),
997
- data: { phase: 'final_gates', tracePath: expect.stringContaining('trace.jsonl') },
998
- error: { message: expect.stringContaining('total_contract_arr_cents') },
999
- });
1000
- }
1001
- finally {
1002
- await rm(runtime.homeDir, { recursive: true, force: true });
1003
- }
1004
- });
1005
- it('rejects invalid provenance raw paths before squash reaches main', async () => {
1006
- const runtime = await makeRealGitRuntime();
1007
- try {
1008
- const { deps, adapter } = makeDeps(runtime);
1009
- const createdReports = [];
1010
- deps.reports.create = vi.fn(async (args) => {
1011
- createdReports.push(args);
1012
- return { id: `report-${createdReports.length}` };
1013
- });
1014
- adapter.chunk.mockResolvedValue({
1015
- workUnits: [
1016
- {
1017
- unitKey: 'card-valid-artifacts',
1018
- rawFiles: ['cards/source.json'],
1019
- peerFileIndex: [],
1020
- dependencyPaths: [],
1021
- },
1022
- ],
1023
- });
1024
- let currentSession = null;
1025
- deps.toolsetFactory.createIngestWuToolset = vi.fn((toolSession) => {
1026
- currentSession = toolSession;
1027
- return { toRuntimeTools: vi.fn(() => ({})) };
1028
- });
1029
- deps.agentRunner.runLoop = vi.fn(async () => {
1030
- const root = rootOfConfig(currentSession.configService, runtime.configDir);
1031
- await mkdir(join(root, 'semantic-layer/warehouse'), { recursive: true });
1032
- await mkdir(join(root, 'wiki/global'), { recursive: true });
1033
- await writeFile(join(root, 'semantic-layer/warehouse/mart_account_segments.yaml'), 'name: mart_account_segments\ngrain: [account_id]\ncolumns: [{name: account_id, type: string}]\njoins: []\nmeasures:\n - name: total_contract_arr\n expr: sum(contract_arr)\n');
1034
- await writeFile(join(root, 'wiki/global/account-segments.md'), '---\nsummary: Account segments\nusage_mode: auto\nsl_refs:\n - mart_account_segments\n---\n\nARR is `mart_account_segments.total_contract_arr`.\n');
1035
- addTouchedSlSource(currentSession.touchedSlSources, 'warehouse', 'mart_account_segments');
1036
- currentSession.actions.push({
1037
- target: 'sl',
1038
- type: 'created',
1039
- key: 'mart_account_segments',
1040
- detail: 'Valid source',
1041
- targetConnectionId: 'warehouse',
1042
- rawPaths: ['cards/source.json'],
1043
- });
1044
- currentSession.actions.push({
1045
- target: 'wiki',
1046
- type: 'created',
1047
- key: 'account-segments',
1048
- detail: 'Valid wiki with invalid provenance raw path',
1049
- rawPaths: ['cards/missing.json'],
1050
- });
1051
- await currentSession.gitService.commitFiles(['semantic-layer/warehouse/mart_account_segments.yaml', 'wiki/global/account-segments.md'], 'valid artifacts with invalid provenance', 'KTX Test', 'system@ktx.local');
1052
- return { stopReason: 'natural' };
1053
- });
1054
- const runner = new IngestBundleRunner(deps);
1055
- await mockStageRawFiles(runner, runtime, [['cards/source.json', 'h1']]);
1056
- const preRunHead = await runtime.git.revParseHead();
1057
- await expect(runner.run({
1058
- jobId: 'job-invalid-provenance',
1059
- connectionId: 'warehouse',
1060
- sourceKey: 'metabase',
1061
- trigger: 'upload',
1062
- bundleRef: { kind: 'upload', uploadId: 'upload' },
1063
- })).rejects.toThrow(/provenance row references raw path outside this snapshot: cards\/missing\.json/);
1064
- expect(await runtime.git.revParseHead()).toBe(preRunHead);
1065
- expect(deps.provenance.insertMany).not.toHaveBeenCalled();
1066
- const failureReport = createdReports.find((report) => report.body.status === 'failed');
1067
- expect(failureReport.body.tracePath).toContain('job-invalid-provenance/trace.jsonl');
1068
- expect(failureReport.body.failure).toMatchObject({
1069
- phase: 'provenance_validation',
1070
- message: expect.stringContaining('cards/missing.json'),
1071
- });
1072
- expect(failureReport.body.failure.details).toMatchObject({
1073
- invalidRawPaths: ['cards/missing.json'],
1074
- currentRawPaths: ['cards/source.json'],
1075
- invalidRows: expect.arrayContaining([
1076
- expect.objectContaining({
1077
- row: expect.objectContaining({
1078
- rawPath: 'cards/missing.json',
1079
- artifactKind: 'wiki',
1080
- artifactKey: 'account-segments',
1081
- actionType: 'wiki_written',
1082
- }),
1083
- origin: expect.objectContaining({
1084
- source: 'work_unit_action',
1085
- unitKey: 'card-valid-artifacts',
1086
- actionIndex: 1,
1087
- unitRawFiles: ['cards/source.json'],
1088
- action: expect.objectContaining({
1089
- target: 'wiki',
1090
- type: 'created',
1091
- key: 'account-segments',
1092
- rawPaths: ['cards/missing.json'],
1093
- }),
1094
- }),
1095
- }),
1096
- ]),
1097
- });
1098
- expect(failureReport.body.provenanceRows).toEqual(expect.arrayContaining([
1099
- expect.objectContaining({ rawPath: 'cards/source.json', artifactKind: 'sl', artifactKey: 'mart_account_segments' }),
1100
- expect.objectContaining({ rawPath: 'cards/missing.json', artifactKind: 'wiki', artifactKey: 'account-segments' }),
1101
- ]));
1102
- expect(failureReport.body.workUnits).toEqual(expect.arrayContaining([
1103
- expect.objectContaining({
1104
- unitKey: 'card-valid-artifacts',
1105
- rawFiles: ['cards/source.json'],
1106
- actions: expect.arrayContaining([
1107
- expect.objectContaining({
1108
- target: 'wiki',
1109
- key: 'account-segments',
1110
- rawPaths: ['cards/missing.json'],
1111
- }),
1112
- ]),
1113
- }),
1114
- ]));
1115
- const events = (await readFile(join(runtime.configDir, '.ktx/ingest-traces/job-invalid-provenance/trace.jsonl'), 'utf-8'))
1116
- .trim()
1117
- .split('\n')
1118
- .map((line) => JSON.parse(line));
1119
- expect(events.map((event) => event.event)).toEqual(expect.arrayContaining([
1120
- 'final_artifact_gates_finished',
1121
- 'provenance_rows_validation_failed',
1122
- 'ingest_failed',
1123
- 'failure_report_created',
1124
- ]));
1125
- expect(events.map((event) => event.event)).not.toContain('squash_finished');
1126
- const validationFailure = events.find((event) => event.event === 'provenance_rows_validation_failed');
1127
- expect(validationFailure).toMatchObject({
1128
- phase: 'provenance',
1129
- data: {
1130
- invalidRawPaths: ['cards/missing.json'],
1131
- currentRawPaths: ['cards/source.json'],
1132
- invalidRows: expect.arrayContaining([
1133
- expect.objectContaining({
1134
- row: expect.objectContaining({ rawPath: 'cards/missing.json' }),
1135
- origin: expect.objectContaining({
1136
- source: 'work_unit_action',
1137
- unitKey: 'card-valid-artifacts',
1138
- actionIndex: 1,
1139
- }),
1140
- }),
1141
- ]),
1142
- },
1143
- });
1144
- }
1145
- finally {
1146
- await rm(runtime.homeDir, { recursive: true, force: true });
1147
- }
1148
- });
1149
- it('rejects slDisallowed patches that touch semantic-layer files', async () => {
1150
- const runtime = await makeRealGitRuntime();
1151
- try {
1152
- const { deps, adapter } = makeDeps(runtime);
1153
- adapter.chunk.mockResolvedValue({
1154
- workUnits: [
1155
- {
1156
- unitKey: 'lookml-mismatch',
1157
- rawFiles: ['views/orders.lkml'],
1158
- peerFileIndex: [],
1159
- dependencyPaths: [],
1160
- slDisallowed: true,
1161
- slDisallowedReason: 'lookml_connection_mismatch',
1162
- },
1163
- ],
1164
- });
1165
- let currentSession = null;
1166
- deps.toolsetFactory.createIngestWuToolset = vi.fn((toolSession) => {
1167
- currentSession = toolSession;
1168
- return { toRuntimeTools: vi.fn(() => ({})) };
1169
- });
1170
- deps.agentRunner.runLoop = vi.fn(async () => {
1171
- const root = rootOfConfig(currentSession.configService, runtime.configDir);
1172
- await mkdir(join(root, 'semantic-layer/warehouse'), { recursive: true });
1173
- await writeFile(join(root, 'semantic-layer/warehouse/orders.yaml'), 'name: orders\ngrain: [id]\ncolumns: [{name: id, type: string}]\njoins: []\nmeasures: []\n');
1174
- currentSession.actions.push({ target: 'sl', type: 'created', key: 'orders', detail: 'forbidden', targetConnectionId: 'warehouse' });
1175
- await currentSession.gitService.commitFiles(['semantic-layer/warehouse/orders.yaml'], 'forbidden sl', 'KTX Test', 'system@ktx.local');
1176
- return { stopReason: 'natural' };
1177
- });
1178
- const runner = new IngestBundleRunner(deps);
1179
- await mockStageRawFiles(runner, runtime, [['views/orders.lkml', 'h1']]);
1180
- await expect(runner.run({ jobId: 'job-sl-disallowed', connectionId: 'warehouse', sourceKey: 'metabase', trigger: 'upload', bundleRef: { kind: 'upload', uploadId: 'upload' } })).rejects.toThrow(/isolated diff textual conflict/);
1181
- const trace = await readFile(join(runtime.configDir, '.ktx/ingest-traces/job-sl-disallowed/trace.jsonl'), 'utf-8');
1182
- expect(trace).toContain('patch_policy_rejected');
1183
- expect(trace).toContain('slDisallowed WorkUnit lookml-mismatch touched semantic-layer/warehouse/orders.yaml');
1184
- }
1185
- finally {
1186
- await rm(runtime.homeDir, { recursive: true, force: true });
1187
- }
1188
- });
1189
- it('rejects final wiki refs broken by another accepted WorkUnit before squash', async () => {
1190
- const runtime = await makeRealGitRuntime();
1191
- try {
1192
- await mkdir(join(runtime.configDir, 'wiki/global'), { recursive: true });
1193
- await writeFile(join(runtime.configDir, 'wiki/global/source-page.md'), '---\nsummary: Source page\nusage_mode: auto\n---\n\nSource page\n');
1194
- await runtime.git.commitFiles(['wiki/global/source-page.md'], 'seed source page', 'KTX Test', 'system@ktx.local');
1195
- const preRunHead = await runtime.git.revParseHead();
1196
- const { deps, adapter } = makeDeps(runtime);
1197
- adapter.chunk.mockResolvedValue({
1198
- workUnits: [
1199
- { unitKey: 'page-ref', rawFiles: ['pages/ref.json'], peerFileIndex: [], dependencyPaths: [] },
1200
- { unitKey: 'page-delete', rawFiles: ['pages/delete.json'], peerFileIndex: [], dependencyPaths: [] },
1201
- ],
1202
- });
1203
- let currentSession = null;
1204
- deps.toolsetFactory.createIngestWuToolset = vi.fn((toolSession) => {
1205
- currentSession = toolSession;
1206
- return { toRuntimeTools: vi.fn(() => ({})) };
1207
- });
1208
- deps.agentRunner.runLoop = vi.fn(async (params) => {
1209
- const root = rootOfConfig(currentSession.configService, runtime.configDir);
1210
- if (params.telemetryTags.unitKey === 'page-ref') {
1211
- await mkdir(join(root, 'wiki/global'), { recursive: true });
1212
- await writeFile(join(root, 'wiki/global/account-segments.md'), '---\nsummary: Account segments\nusage_mode: auto\nrefs:\n - source-page\n---\n\nSee [[source-page]].\n');
1213
- currentSession.actions.push({
1214
- target: 'wiki',
1215
- type: 'created',
1216
- key: 'account-segments',
1217
- detail: 'Page with wiki ref',
1218
- rawPaths: ['pages/ref.json'],
1219
- });
1220
- await currentSession.gitService.commitFiles(['wiki/global/account-segments.md'], 'wu page ref', 'KTX Test', 'system@ktx.local');
1221
- }
1222
- if (params.telemetryTags.unitKey === 'page-delete') {
1223
- await rm(join(root, 'wiki/global/source-page.md'), { force: true });
1224
- currentSession.actions.push({
1225
- target: 'wiki',
1226
- type: 'removed',
1227
- key: 'source-page',
1228
- detail: 'Delete referenced page',
1229
- rawPaths: ['pages/delete.json'],
1230
- });
1231
- await currentSession.gitService.commitFiles(['wiki/global/source-page.md'], 'wu delete source page', 'KTX Test', 'system@ktx.local');
1232
- }
1233
- return { stopReason: 'natural' };
1234
- });
1235
- const runner = new IngestBundleRunner(deps);
1236
- await mockStageRawFiles(runner, runtime, [
1237
- ['pages/ref.json', 'h1'],
1238
- ['pages/delete.json', 'h2'],
1239
- ]);
1240
- await expect(runner.run({
1241
- jobId: 'job-wiki-ref-conflict',
1242
- connectionId: 'warehouse',
1243
- sourceKey: 'metabase',
1244
- trigger: 'upload',
1245
- bundleRef: { kind: 'upload', uploadId: 'upload' },
1246
- })).rejects.toThrow(/wiki references target missing page\(s\): account-segments -> source-page/);
1247
- expect(await runtime.git.revParseHead()).toBe(preRunHead);
1248
- const trace = await readFile(join(runtime.configDir, '.ktx/ingest-traces/job-wiki-ref-conflict/trace.jsonl'), 'utf-8');
1249
- expect(trace).toContain('final_artifact_gates_failed');
1250
- expect(trace).toContain('account-segments -> source-page');
1251
- expect(trace).toContain('ingest_failed');
1252
- expect(trace).toContain('failure_report_created');
1253
- expect(trace).not.toContain('squash_finished');
1254
- const failureReport = deps.reports.create.mock.calls
1255
- .map((call) => call[0])
1256
- .find((report) => report.body.status === 'failed');
1257
- expect(failureReport.body.failure).toMatchObject({
1258
- phase: 'final_gates',
1259
- message: expect.stringContaining('account-segments -> source-page'),
1260
- details: expect.objectContaining({
1261
- changedWikiPageKeys: expect.arrayContaining(['account-segments']),
1262
- workUnitPatchTouchedPaths: expect.arrayContaining([
1263
- 'wiki/global/account-segments.md',
1264
- 'wiki/global/source-page.md',
1265
- ]),
1266
- }),
1267
- });
1268
- }
1269
- finally {
1270
- await rm(runtime.homeDir, { recursive: true, force: true });
1271
- }
1272
- });
1273
- it('rejects unchanged inbound wiki refs broken by an isolated wiki deletion', async () => {
1274
- const runtime = await makeRealGitRuntime();
1275
- try {
1276
- await mkdir(join(runtime.configDir, 'wiki/global'), { recursive: true });
1277
- await writeFile(join(runtime.configDir, 'wiki/global/source-page.md'), '---\nsummary: Source page\nusage_mode: auto\n---\n\nSource page\n');
1278
- await writeFile(join(runtime.configDir, 'wiki/global/account-segments.md'), '---\nsummary: Account segments\nusage_mode: auto\nrefs:\n - source-page\n---\n\nSee [[source-page]].\n');
1279
- await runtime.git.commitFiles(['wiki/global/source-page.md', 'wiki/global/account-segments.md'], 'seed inbound wiki refs', 'KTX Test', 'system@ktx.local');
1280
- const preRunHead = await runtime.git.revParseHead();
1281
- const { deps, adapter } = makeDeps(runtime);
1282
- adapter.chunk.mockResolvedValue({
1283
- workUnits: [{ unitKey: 'delete-target-page', rawFiles: ['pages/delete.json'], peerFileIndex: [], dependencyPaths: [] }],
1284
- });
1285
- let currentSession = null;
1286
- deps.toolsetFactory.createIngestWuToolset = vi.fn((toolSession) => {
1287
- currentSession = toolSession;
1288
- return { toRuntimeTools: vi.fn(() => ({})) };
1289
- });
1290
- deps.agentRunner.runLoop = vi.fn(async (params) => {
1291
- if (params.telemetryTags.unitKey !== 'delete-target-page') {
1292
- return { stopReason: 'natural' };
1293
- }
1294
- const root = rootOfConfig(currentSession.configService, runtime.configDir);
1295
- await rm(join(root, 'wiki/global/source-page.md'), { force: true });
1296
- currentSession.actions.push({
1297
- target: 'wiki',
1298
- type: 'removed',
1299
- key: 'source-page',
1300
- detail: 'Delete referenced page',
1301
- rawPaths: ['pages/delete.json'],
1302
- });
1303
- await currentSession.gitService.commitFiles(['wiki/global/source-page.md'], 'wu delete target page', 'KTX Test', 'system@ktx.local');
1304
- return { stopReason: 'natural' };
1305
- });
1306
- const runner = new IngestBundleRunner(deps);
1307
- await mockStageRawFiles(runner, runtime, [['pages/delete.json', 'h1']]);
1308
- await expect(runner.run({
1309
- jobId: 'job-existing-wiki-ref-stale',
1310
- connectionId: 'warehouse',
1311
- sourceKey: 'metabase',
1312
- trigger: 'upload',
1313
- bundleRef: { kind: 'upload', uploadId: 'upload' },
1314
- })).rejects.toThrow(/wiki references target missing page\(s\): account-segments -> source-page/);
1315
- expect(await runtime.git.revParseHead()).toBe(preRunHead);
1316
- const events = (await readFile(join(runtime.configDir, '.ktx/ingest-traces/job-existing-wiki-ref-stale/trace.jsonl'), 'utf-8'))
1317
- .trim()
1318
- .split('\n')
1319
- .map((line) => JSON.parse(line));
1320
- expect(events.map((event) => event.event)).toEqual(expect.arrayContaining([
1321
- 'final_artifact_gates_started',
1322
- 'final_artifact_gates_failed',
1323
- 'ingest_failed',
1324
- 'failure_report_created',
1325
- ]));
1326
- expect(events.map((event) => event.event)).not.toContain('squash_finished');
1327
- const gateFailure = events.find((event) => event.event === 'final_artifact_gates_failed');
1328
- expect(gateFailure).toMatchObject({
1329
- data: {
1330
- wikiReferenceGateScope: {
1331
- global: true,
1332
- reasons: expect.arrayContaining(['wiki_page_removed']),
1333
- removedWikiPageKeys: expect.arrayContaining(['source-page']),
1334
- pageKeysValidated: expect.arrayContaining(['account-segments']),
1335
- },
1336
- actionOrigins: expect.arrayContaining([
1337
- expect.objectContaining({
1338
- source: 'work_unit_action',
1339
- unitKey: 'delete-target-page',
1340
- unitRawFiles: ['pages/delete.json'],
1341
- action: expect.objectContaining({
1342
- target: 'wiki',
1343
- type: 'removed',
1344
- key: 'source-page',
1345
- rawPaths: ['pages/delete.json'],
1346
- }),
1347
- }),
1348
- ]),
1349
- },
1350
- error: { message: expect.stringContaining('account-segments -> source-page') },
1351
- });
1352
- const failureReport = deps.reports.create.mock.calls
1353
- .map((call) => call[0])
1354
- .find((report) => report.body.status === 'failed');
1355
- expect(failureReport.body.failure).toMatchObject({
1356
- phase: 'final_gates',
1357
- message: expect.stringContaining('account-segments -> source-page'),
1358
- details: expect.objectContaining({
1359
- wikiReferenceGateScope: expect.objectContaining({
1360
- global: true,
1361
- reasons: expect.arrayContaining(['wiki_page_removed']),
1362
- removedWikiPageKeys: expect.arrayContaining(['source-page']),
1363
- pageKeysValidated: expect.arrayContaining(['account-segments']),
1364
- }),
1365
- changedWikiPageKeys: expect.arrayContaining(['source-page']),
1366
- actionOrigins: expect.arrayContaining([
1367
- expect.objectContaining({
1368
- source: 'work_unit_action',
1369
- unitKey: 'delete-target-page',
1370
- action: expect.objectContaining({
1371
- target: 'wiki',
1372
- type: 'removed',
1373
- key: 'source-page',
1374
- rawPaths: ['pages/delete.json'],
1375
- }),
1376
- }),
1377
- ]),
1378
- }),
1379
- });
1380
- expect(failureReport.body.workUnits).toEqual(expect.arrayContaining([
1381
- expect.objectContaining({
1382
- unitKey: 'delete-target-page',
1383
- actions: expect.arrayContaining([
1384
- expect.objectContaining({
1385
- target: 'wiki',
1386
- type: 'removed',
1387
- key: 'source-page',
1388
- rawPaths: ['pages/delete.json'],
1389
- }),
1390
- ]),
1391
- }),
1392
- ]));
1393
- }
1394
- finally {
1395
- await rm(runtime.homeDir, { recursive: true, force: true });
1396
- }
1397
- });
1398
- it('rejects WorkUnit patches that touch unauthorized semantic-layer target connections', async () => {
1399
- const runtime = await makeRealGitRuntime();
1400
- try {
1401
- const { deps, adapter } = makeDeps(runtime);
1402
- adapter.chunk.mockResolvedValue({
1403
- workUnits: [{ unitKey: 'finance-source', rawFiles: ['cards/finance.json'], peerFileIndex: [], dependencyPaths: [] }],
1404
- });
1405
- let currentSession = null;
1406
- deps.toolsetFactory.createIngestWuToolset = vi.fn((toolSession) => {
1407
- currentSession = toolSession;
1408
- return { toRuntimeTools: vi.fn(() => ({})) };
1409
- });
1410
- deps.agentRunner.runLoop = vi.fn(async () => {
1411
- const root = rootOfConfig(currentSession.configService, runtime.configDir);
1412
- await mkdir(join(root, 'semantic-layer/finance'), { recursive: true });
1413
- await writeFile(join(root, 'semantic-layer/finance/orders.yaml'), 'name: orders\ngrain: [id]\ncolumns: [{name: id, type: string}]\njoins: []\nmeasures: []\n');
1414
- addTouchedSlSource(currentSession.touchedSlSources, 'finance', 'orders');
1415
- currentSession.actions.push({
1416
- target: 'sl',
1417
- type: 'created',
1418
- key: 'orders',
1419
- detail: 'Unauthorized target',
1420
- targetConnectionId: 'finance',
1421
- rawPaths: ['cards/finance.json'],
1422
- });
1423
- await currentSession.gitService.commitFiles(['semantic-layer/finance/orders.yaml'], 'wu unauthorized target', 'KTX Test', 'system@ktx.local');
1424
- return { stopReason: 'natural' };
1425
- });
1426
- const runner = new IngestBundleRunner(deps);
1427
- await mockStageRawFiles(runner, runtime, [['cards/finance.json', 'h1']]);
1428
- const preRunHead = await runtime.git.revParseHead();
1429
- await expect(runner.run({
1430
- jobId: 'job-unauthorized-wu-target',
1431
- connectionId: 'warehouse',
1432
- sourceKey: 'metabase',
1433
- trigger: 'upload',
1434
- bundleRef: { kind: 'upload', uploadId: 'upload' },
1435
- })).rejects.toThrow(/isolated diff textual conflict.*semantic-layer target connection not allowed/);
1436
- expect(await runtime.git.revParseHead()).toBe(preRunHead);
1437
- const trace = await readFile(join(runtime.configDir, '.ktx/ingest-traces/job-unauthorized-wu-target/trace.jsonl'), 'utf-8');
1438
- expect(trace).toContain('patch_policy_rejected');
1439
- expect(trace).toContain('semantic-layer/finance/orders.yaml');
1440
- expect(trace).toContain('allowedTargetConnectionIds');
1441
- expect(trace).toContain('ingest_failed');
1442
- expect(trace).toContain('failure_report_created');
1443
- expect(trace).not.toContain('squash_finished');
1444
- const failureReport = deps.reports.create.mock.calls
1445
- .map((call) => call[0])
1446
- .find((report) => report.body.status === 'failed');
1447
- expect(failureReport.body.failure).toMatchObject({
1448
- phase: 'integration',
1449
- message: expect.stringContaining('semantic-layer target connection not allowed'),
1450
- });
1451
- expect(failureReport.body.failure.details).toMatchObject({
1452
- unitKey: 'finance-source',
1453
- allowedTargetConnectionIds: ['warehouse'],
1454
- touchedPaths: ['semantic-layer/finance/orders.yaml'],
1455
- reason: expect.stringContaining('semantic-layer/finance/orders.yaml (finance)'),
1456
- });
1457
- }
1458
- finally {
1459
- await rm(runtime.homeDir, { recursive: true, force: true });
1460
- }
1461
- });
1462
- it('rejects reconciliation mutations that touch unauthorized semantic-layer target connections before squash', async () => {
1463
- const runtime = await makeRealGitRuntime();
1464
- try {
1465
- const { deps, adapter } = makeDeps(runtime);
1466
- adapter.chunk.mockResolvedValue({
1467
- workUnits: [{ unitKey: 'valid-page', rawFiles: ['pages/source.json'], peerFileIndex: [], dependencyPaths: [] }],
1468
- });
1469
- let currentSession = null;
1470
- deps.toolsetFactory.createIngestWuToolset = vi.fn((toolSession) => {
1471
- currentSession = toolSession;
1472
- return { toRuntimeTools: vi.fn(() => ({})) };
1473
- });
1474
- deps.agentRunner.runLoop = vi.fn(async (params) => {
1475
- const root = rootOfConfig(currentSession.configService, runtime.configDir);
1476
- if (params.telemetryTags.operationName === 'ingest-bundle-wu') {
1477
- await mkdir(join(root, 'wiki/global'), { recursive: true });
1478
- await writeFile(join(root, 'wiki/global/valid-page.md'), '---\nsummary: Valid page\nusage_mode: auto\n---\n\nValid\n');
1479
- currentSession.actions.push({
1480
- target: 'wiki',
1481
- type: 'created',
1482
- key: 'valid-page',
1483
- detail: 'Valid page',
1484
- rawPaths: ['pages/source.json'],
1485
- });
1486
- await currentSession.gitService.commitFiles(['wiki/global/valid-page.md'], 'wu valid page', 'KTX Test', 'system@ktx.local');
1487
- }
1488
- else {
1489
- await mkdir(join(root, 'semantic-layer/finance'), { recursive: true });
1490
- await writeFile(join(root, 'semantic-layer/finance/reconcile_orders.yaml'), 'name: reconcile_orders\ngrain: [id]\ncolumns: [{name: id, type: string}]\njoins: []\nmeasures: []\n');
1491
- addTouchedSlSource(currentSession.touchedSlSources, 'finance', 'reconcile_orders');
1492
- currentSession.actions.push({
1493
- target: 'sl',
1494
- type: 'created',
1495
- key: 'reconcile_orders',
1496
- detail: 'Unauthorized reconcile target',
1497
- targetConnectionId: 'finance',
1498
- rawPaths: ['pages/source.json'],
1499
- });
1500
- await currentSession.gitService.commitFiles(['semantic-layer/finance/reconcile_orders.yaml'], 'reconcile unauthorized target', 'KTX Test', 'system@ktx.local');
1501
- }
1502
- return { stopReason: 'natural' };
1503
- });
1504
- const runner = new IngestBundleRunner(deps);
1505
- await mockStageRawFiles(runner, runtime, [['pages/source.json', 'h1']]);
1506
- const preRunHead = await runtime.git.revParseHead();
1507
- await expect(runner.run({
1508
- jobId: 'job-unauthorized-reconcile-target',
1509
- connectionId: 'warehouse',
1510
- sourceKey: 'metabase',
1511
- trigger: 'upload',
1512
- bundleRef: { kind: 'upload', uploadId: 'upload' },
1513
- })).rejects.toThrow(/semantic-layer target connection not allowed/);
1514
- expect(await runtime.git.revParseHead()).toBe(preRunHead);
1515
- const trace = await readFile(join(runtime.configDir, '.ktx/ingest-traces/job-unauthorized-reconcile-target/trace.jsonl'), 'utf-8');
1516
- expect(trace).toContain('semantic_layer_target_policy_started');
1517
- expect(trace).toContain('semantic_layer_target_policy_failed');
1518
- expect(trace).toContain('allowedTargetConnectionIds');
1519
- expect(trace).toContain('semantic-layer/finance/reconcile_orders.yaml');
1520
- expect(trace).toContain('ingest_failed');
1521
- expect(trace).toContain('failure_report_created');
1522
- expect(trace).not.toContain('squash_finished');
1523
- const failureReport = deps.reports.create.mock.calls
1524
- .map((call) => call[0])
1525
- .find((report) => report.body.status === 'failed');
1526
- expect(failureReport.body.failure).toMatchObject({
1527
- phase: 'target_policy',
1528
- message: expect.stringContaining('semantic-layer target connection not allowed'),
1529
- });
1530
- expect(failureReport.body.failure.details).toMatchObject({
1531
- allowedTargetConnectionIds: ['warehouse'],
1532
- touchedPaths: expect.arrayContaining(['semantic-layer/finance/reconcile_orders.yaml']),
1533
- });
1534
- }
1535
- finally {
1536
- await rm(runtime.homeDir, { recursive: true, force: true });
1537
- }
1538
- });
1539
- it('repairs additive same-source textual conflicts before final gates and squash', async () => {
1540
- const runtime = await makeRealGitRuntime();
1541
- try {
1542
- const { deps } = makeDeps(runtime);
1543
- let currentSession = null;
1544
- deps.toolsetFactory.createIngestWuToolset = vi.fn((toolSession) => {
1545
- currentSession = toolSession;
1546
- return { toRuntimeTools: vi.fn(() => ({})) };
1547
- });
1548
- deps.agentRunner.runLoop = vi.fn(async (params) => {
1549
- if (params.telemetryTags.operationName === 'ingest-isolated-diff-textual-resolver') {
1550
- const current = await params.toolSet.read_integration_file.execute({
1551
- path: 'semantic-layer/warehouse/mart_account_segments.yaml',
1552
- });
1553
- expect(current.markdown).toContain('total_contract_arr_cents');
1554
- const patch = await params.toolSet.read_failed_patch.execute({});
1555
- expect(patch.markdown).toContain('account_count');
1556
- await params.toolSet.write_integration_file.execute({
1557
- path: 'semantic-layer/warehouse/mart_account_segments.yaml',
1558
- content: 'name: mart_account_segments\n' +
1559
- 'grain: [account_id]\n' +
1560
- 'columns: [{name: account_id, type: string}]\n' +
1561
- 'joins: []\n' +
1562
- 'measures:\n' +
1563
- ' - name: total_contract_arr_cents\n' +
1564
- ' expr: sum(contract_arr)\n' +
1565
- ' - name: account_count\n' +
1566
- ' expr: count_distinct(account_id)\n',
1567
- });
1568
- return { stopReason: 'natural' };
1569
- }
1570
- const root = rootOfConfig(currentSession.configService, runtime.configDir);
1571
- await mkdir(join(root, 'semantic-layer/warehouse'), { recursive: true });
1572
- if (params.telemetryTags.unitKey === 'card-wiki') {
1573
- await writeFile(join(root, 'semantic-layer/warehouse/mart_account_segments.yaml'), 'name: mart_account_segments\n' +
1574
- 'grain: [account_id]\n' +
1575
- 'columns: [{name: account_id, type: string}]\n' +
1576
- 'joins: []\n' +
1577
- 'measures:\n' +
1578
- ' - name: total_contract_arr_cents\n' +
1579
- ' expr: sum(contract_arr)\n');
1580
- }
1581
- else if (params.telemetryTags.unitKey === 'card-source') {
1582
- await writeFile(join(root, 'semantic-layer/warehouse/mart_account_segments.yaml'), 'name: mart_account_segments\n' +
1583
- 'grain: [account_id]\n' +
1584
- 'columns: [{name: account_id, type: string}]\n' +
1585
- 'joins: []\n' +
1586
- 'measures:\n' +
1587
- ' - name: account_count\n' +
1588
- ' expr: count_distinct(account_id)\n');
1589
- }
1590
- addTouchedSlSource(currentSession.touchedSlSources, 'warehouse', 'mart_account_segments');
1591
- currentSession.actions.push({
1592
- target: 'sl',
1593
- type: 'updated',
1594
- key: 'mart_account_segments',
1595
- detail: 'Updated account segments source',
1596
- targetConnectionId: 'warehouse',
1597
- });
1598
- await currentSession.gitService.commitFiles(['semantic-layer/warehouse/mart_account_segments.yaml'], `wu ${params.telemetryTags.unitKey}`, 'KTX Test', 'system@ktx.local');
1599
- return { stopReason: 'natural' };
1600
- });
1601
- const runner = new IngestBundleRunner(deps);
1602
- await mockStageRawFiles(runner, runtime, [
1603
- ['cards/wiki.json', 'hash-a'],
1604
- ['cards/source.json', 'hash-b'],
1605
- ]);
1606
- const result = await runner.run({
1607
- jobId: 'job-resolver-e2e',
1608
- connectionId: 'warehouse',
1609
- sourceKey: 'metabase',
1610
- trigger: 'manual_resync',
1611
- bundleRef: { kind: 'upload', uploadId: 'upload-1' },
1612
- });
1613
- expect(result.commitSha).toBeTruthy();
1614
- const source = await readFile(join(runtime.configDir, 'semantic-layer/warehouse/mart_account_segments.yaml'), 'utf-8');
1615
- expect(source).toContain('total_contract_arr_cents');
1616
- expect(source).toContain('account_count');
1617
- expect(deps.agentRunner.runLoop).toHaveBeenCalledWith(expect.objectContaining({
1618
- modelRole: 'repair',
1619
- telemetryTags: expect.objectContaining({
1620
- operationName: 'ingest-isolated-diff-textual-resolver',
1621
- unitKey: 'card-source',
1622
- }),
1623
- }));
1624
- const successReport = deps.reports.create.mock.calls.at(-1)?.[0]?.body;
1625
- expect(successReport.isolatedDiff).toMatchObject({
1626
- acceptedPatches: 2,
1627
- textualConflicts: 1,
1628
- semanticConflicts: 0,
1629
- resolverAttempts: 1,
1630
- resolverRepairs: 1,
1631
- resolverFailures: 0,
1632
- });
1633
- const trace = await readFile(join(runtime.configDir, '.ktx/ingest-traces/job-resolver-e2e/trace.jsonl'), 'utf-8');
1634
- expect(trace).toContain('textual_conflict_resolver_repaired');
1635
- expect(trace).toContain('patch_accepted_after_textual_resolution');
1636
- }
1637
- finally {
1638
- await rm(runtime.homeDir, { recursive: true, force: true });
1639
- }
1640
- });
1641
- it('repairs final wiki body refs before squash when the repair agent edits the scoped page', async () => {
1642
- const runtime = await makeRealGitRuntime();
1643
- try {
1644
- await mkdir(join(runtime.configDir, 'semantic-layer/warehouse'), { recursive: true });
1645
- await mkdir(join(runtime.configDir, 'wiki/global'), { recursive: true });
1646
- await writeFile(join(runtime.configDir, 'semantic-layer/warehouse/mart_account_segments.yaml'), 'name: mart_account_segments\ngrain: [account_id]\ncolumns: [{name: account_id, type: string}]\njoins: []\nmeasures:\n - name: total_contract_arr_cents\n expr: sum(contract_arr)\n');
1647
- await writeFile(join(runtime.configDir, 'wiki/global/account-segments.md'), '---\nsummary: Account segments\nusage_mode: auto\n---\n\nExisting ARR uses `mart_account_segments.total_contract_arr_cents`.\n');
1648
- await runtime.git.commitFiles(['semantic-layer/warehouse/mart_account_segments.yaml', 'wiki/global/account-segments.md'], 'seed stale wiki body ref', 'KTX Test', 'system@ktx.local');
1649
- const { deps, adapter } = makeDeps(runtime);
1650
- adapter.chunk.mockResolvedValue({
1651
- workUnits: [{ unitKey: 'source-only', rawFiles: ['cards/source.json'], peerFileIndex: [], dependencyPaths: [] }],
1652
- });
1653
- let currentSession = null;
1654
- deps.toolsetFactory.createIngestWuToolset = vi.fn((toolSession) => {
1655
- currentSession = toolSession;
1656
- return { toRuntimeTools: vi.fn(() => ({})) };
1657
- });
1658
- deps.agentRunner.runLoop = vi.fn(async (params) => {
1659
- if (params.telemetryTags.operationName === 'ingest-isolated-diff-gate-repair') {
1660
- const gateError = await params.toolSet.read_gate_error.execute({});
1661
- expect(gateError.markdown).toContain('total_contract_arr_cents');
1662
- const page = await params.toolSet.read_repair_file.execute({
1663
- path: 'wiki/global/account-segments.md',
1664
- });
1665
- await params.toolSet.write_repair_file.execute({
1666
- path: 'wiki/global/account-segments.md',
1667
- content: page.markdown.replace('total_contract_arr_cents', 'total_contract_arr'),
1668
- });
1669
- return { stopReason: 'natural' };
1670
- }
1671
- if (params.modelRole === 'reconcile') {
1672
- return { stopReason: 'natural' };
1673
- }
1674
- const root = rootOfConfig(currentSession.configService, runtime.configDir);
1675
- await writeFile(join(root, 'semantic-layer/warehouse/mart_account_segments.yaml'), 'name: mart_account_segments\ngrain: [account_id]\ncolumns: [{name: account_id, type: string}]\njoins: []\nmeasures:\n - name: total_contract_arr\n expr: sum(contract_arr)\n');
1676
- addTouchedSlSource(currentSession.touchedSlSources, 'warehouse', 'mart_account_segments');
1677
- currentSession.actions.push({
1678
- target: 'sl',
1679
- type: 'updated',
1680
- key: 'mart_account_segments',
1681
- detail: 'Rename ARR measure',
1682
- targetConnectionId: 'warehouse',
1683
- rawPaths: ['cards/source.json'],
1684
- });
1685
- await currentSession.gitService.commitFiles(['semantic-layer/warehouse/mart_account_segments.yaml'], 'wu source rename', 'KTX Test', 'system@ktx.local');
1686
- return { stopReason: 'natural' };
1687
- });
1688
- const runner = new IngestBundleRunner(deps);
1689
- await mockStageRawFiles(runner, runtime, [['cards/source.json', 'h1']]);
1690
- const result = await runner.run({
1691
- jobId: 'job-final-gate-repair',
1692
- connectionId: 'warehouse',
1693
- sourceKey: 'metabase',
1694
- trigger: 'upload',
1695
- bundleRef: { kind: 'upload', uploadId: 'upload' },
1696
- });
1697
- expect(result.commitSha).toBeTruthy();
1698
- await expect(readFile(join(runtime.configDir, 'wiki/global/account-segments.md'), 'utf-8')).resolves.toContain('mart_account_segments.total_contract_arr');
1699
- await expect(readFile(join(runtime.configDir, 'wiki/global/account-segments.md'), 'utf-8')).resolves.not.toContain('total_contract_arr_cents');
1700
- const reportCreate = vi.mocked(deps.reports.create).mock.calls.at(-1)?.[0];
1701
- expect(reportCreate.body.isolatedDiff).toMatchObject({
1702
- gateRepairAttempts: 1,
1703
- gateRepairs: 1,
1704
- gateRepairFailures: 0,
1705
- });
1706
- const trace = await readFile(join(runtime.configDir, '.ktx/ingest-traces/job-final-gate-repair/trace.jsonl'), 'utf-8');
1707
- expect(trace).toContain('gate_repair_repaired');
1708
- expect(trace).toContain('final_artifact_gates_after_gate_repair_finished');
1709
- expect(trace).toContain('final_gate_repair_committed');
1710
- }
1711
- finally {
1712
- await rm(runtime.homeDir, { recursive: true, force: true });
1713
- }
1714
- });
1715
- it('fails before squash when final gate repair makes no edit', async () => {
1716
- const runtime = await makeRealGitRuntime();
1717
- try {
1718
- await mkdir(join(runtime.configDir, 'semantic-layer/warehouse'), { recursive: true });
1719
- await mkdir(join(runtime.configDir, 'wiki/global'), { recursive: true });
1720
- await writeFile(join(runtime.configDir, 'semantic-layer/warehouse/mart_account_segments.yaml'), 'name: mart_account_segments\ngrain: [account_id]\ncolumns: [{name: account_id, type: string}]\njoins: []\nmeasures:\n - name: total_contract_arr_cents\n expr: sum(contract_arr)\n');
1721
- await writeFile(join(runtime.configDir, 'wiki/global/account-segments.md'), '---\nsummary: Account segments\nusage_mode: auto\n---\n\nExisting ARR uses `mart_account_segments.total_contract_arr_cents`.\n');
1722
- await runtime.git.commitFiles(['semantic-layer/warehouse/mart_account_segments.yaml', 'wiki/global/account-segments.md'], 'seed stale wiki body ref', 'KTX Test', 'system@ktx.local');
1723
- const preRunHead = await runtime.git.revParseHead();
1724
- const { deps, adapter } = makeDeps(runtime);
1725
- adapter.chunk.mockResolvedValue({
1726
- workUnits: [{ unitKey: 'source-only', rawFiles: ['cards/source.json'], peerFileIndex: [], dependencyPaths: [] }],
1727
- });
1728
- let currentSession = null;
1729
- deps.toolsetFactory.createIngestWuToolset = vi.fn((toolSession) => {
1730
- currentSession = toolSession;
1731
- return { toRuntimeTools: vi.fn(() => ({})) };
1732
- });
1733
- deps.agentRunner.runLoop = vi.fn(async (params) => {
1734
- if (params.telemetryTags.operationName === 'ingest-isolated-diff-gate-repair') {
1735
- return { stopReason: 'natural' };
1736
- }
1737
- if (params.modelRole === 'reconcile') {
1738
- return { stopReason: 'natural' };
1739
- }
1740
- const root = rootOfConfig(currentSession.configService, runtime.configDir);
1741
- await writeFile(join(root, 'semantic-layer/warehouse/mart_account_segments.yaml'), 'name: mart_account_segments\ngrain: [account_id]\ncolumns: [{name: account_id, type: string}]\njoins: []\nmeasures:\n - name: total_contract_arr\n expr: sum(contract_arr)\n');
1742
- addTouchedSlSource(currentSession.touchedSlSources, 'warehouse', 'mart_account_segments');
1743
- currentSession.actions.push({
1744
- target: 'sl',
1745
- type: 'updated',
1746
- key: 'mart_account_segments',
1747
- detail: 'Rename ARR measure',
1748
- targetConnectionId: 'warehouse',
1749
- rawPaths: ['cards/source.json'],
1750
- });
1751
- await currentSession.gitService.commitFiles(['semantic-layer/warehouse/mart_account_segments.yaml'], 'wu source rename', 'KTX Test', 'system@ktx.local');
1752
- return { stopReason: 'natural' };
1753
- });
1754
- const runner = new IngestBundleRunner(deps);
1755
- await mockStageRawFiles(runner, runtime, [['cards/source.json', 'h1']]);
1756
- await expect(runner.run({
1757
- jobId: 'job-final-gate-repair-fails',
1758
- connectionId: 'warehouse',
1759
- sourceKey: 'metabase',
1760
- trigger: 'upload',
1761
- bundleRef: { kind: 'upload', uploadId: 'upload' },
1762
- })).rejects.toThrow(/gate repair completed without editing an allowed path/);
1763
- expect(await runtime.git.revParseHead()).toBe(preRunHead);
1764
- const reportCreate = vi.mocked(deps.reports.create).mock.calls.at(-1)?.[0];
1765
- expect(reportCreate.body.status).toBe('failed');
1766
- expect(reportCreate.body.isolatedDiff).toMatchObject({
1767
- gateRepairAttempts: 1,
1768
- gateRepairs: 0,
1769
- gateRepairFailures: 1,
1770
- });
1771
- const trace = await readFile(join(runtime.configDir, '.ktx/ingest-traces/job-final-gate-repair-fails/trace.jsonl'), 'utf-8');
1772
- expect(trace).toContain('gate_repair_failed');
1773
- expect(trace).not.toContain('squash_finished');
1774
- }
1775
- finally {
1776
- await rm(runtime.homeDir, { recursive: true, force: true });
1777
- }
1778
- });
1779
- it('runs finalization before wiki sl-ref repair and final gates', async () => {
1780
- const runtime = await makeRealGitRuntime();
1781
- try {
1782
- const { deps, adapter } = makeDeps(runtime);
1783
- adapter.chunk.mockResolvedValue({
1784
- workUnits: [{ unitKey: 'wiki-page', rawFiles: ['cards/source.json'], peerFileIndex: [], dependencyPaths: [] }],
1785
- });
1786
- adapter.finalize = vi.fn(async ({ workdir }) => {
1787
- await mkdir(join(workdir, 'semantic-layer/warehouse'), { recursive: true });
1788
- await mkdir(join(workdir, 'wiki/global'), { recursive: true });
1789
- await writeFile(join(workdir, 'semantic-layer/warehouse/mart_account_segments.yaml'), 'name: mart_account_segments\ngrain: [account_id]\ncolumns: [{name: account_id, type: string}]\njoins: []\nmeasures:\n - name: total_contract_arr\n expr: sum(contract_arr)\n');
1790
- await writeFile(join(workdir, 'wiki/global/finalized-accounts.md'), '---\nsummary: Finalized accounts\nusage_mode: auto\nsl_refs:\n - mart_account_segments\n - missing_source\n---\n\nAccounts use `mart_account_segments.total_contract_arr`.\n');
1791
- return {
1792
- warnings: [],
1793
- errors: [],
1794
- touchedSources: [{ connectionId: 'warehouse', sourceName: 'mart_account_segments' }],
1795
- changedWikiPageKeys: ['finalized-accounts'],
1796
- actions: [
1797
- {
1798
- target: 'sl',
1799
- type: 'created',
1800
- key: 'mart_account_segments',
1801
- detail: 'Finalized accounts',
1802
- targetConnectionId: 'warehouse',
1803
- rawPaths: ['cards/source.json'],
1804
- },
1805
- {
1806
- target: 'wiki',
1807
- type: 'created',
1808
- key: 'finalized-accounts',
1809
- detail: 'Finalized wiki',
1810
- rawPaths: ['cards/source.json'],
1811
- },
1812
- ],
1813
- };
1814
- });
1815
- deps.agentRunner.runLoop = vi.fn(async () => ({ stopReason: 'natural' }));
1816
- const runner = new IngestBundleRunner(deps);
1817
- await mockStageRawFiles(runner, runtime, [['cards/source.json', 'h1']]);
1818
- await runner.run({
1819
- jobId: 'job-finalization',
1820
- connectionId: 'warehouse',
1821
- sourceKey: 'metabase',
1822
- trigger: 'upload',
1823
- bundleRef: { kind: 'upload', uploadId: 'upload' },
1824
- });
1825
- const trace = await readFile(join(runtime.configDir, '.ktx/ingest-traces/job-finalization/trace.jsonl'), 'utf-8');
1826
- expect(trace.indexOf('finalization_committed')).toBeLessThan(trace.indexOf('wiki_sl_refs_repaired'));
1827
- expect(trace.indexOf('wiki_sl_refs_repaired')).toBeLessThan(trace.indexOf('final_artifact_gates'));
1828
- await expect(readFile(join(runtime.configDir, 'wiki/global/finalized-accounts.md'), 'utf-8')).resolves.toContain('sl_refs:\n - mart_account_segments');
1829
- }
1830
- finally {
1831
- await rm(runtime.homeDir, { recursive: true, force: true });
1832
- }
1833
- });
1834
- it('fails when finalization edits a path already changed earlier in the run', async () => {
1835
- const runtime = await makeRealGitRuntime();
1836
- try {
1837
- const { deps, adapter } = makeDeps(runtime);
1838
- adapter.chunk.mockResolvedValue({
1839
- workUnits: [{ unitKey: 'wiki-page', rawFiles: ['cards/source.json'], peerFileIndex: [], dependencyPaths: [] }],
1840
- });
1841
- let currentSession = null;
1842
- deps.toolsetFactory.createIngestWuToolset = vi.fn((toolSession) => {
1843
- currentSession = toolSession;
1844
- return { toRuntimeTools: vi.fn(() => ({})) };
1845
- });
1846
- deps.agentRunner.runLoop = vi.fn(async () => {
1847
- const root = rootOfConfig(currentSession.configService, runtime.configDir);
1848
- await mkdir(join(root, 'wiki/global'), { recursive: true });
1849
- await writeFile(join(root, 'wiki/global/orders.md'), '---\nsummary: Orders\nusage_mode: auto\n---\n\nWU body\n');
1850
- currentSession.actions.push({
1851
- target: 'wiki',
1852
- type: 'created',
1853
- key: 'orders',
1854
- detail: 'WU orders',
1855
- rawPaths: ['cards/source.json'],
1856
- });
1857
- await currentSession.gitService.commitFiles(['wiki/global/orders.md'], 'wu orders', 'KTX Test', 'system@ktx.local');
1858
- return { stopReason: 'natural' };
1859
- });
1860
- adapter.finalize = vi.fn(async ({ workdir }) => {
1861
- await writeFile(join(workdir, 'wiki/global/orders.md'), '---\nsummary: Orders\nusage_mode: auto\n---\n\nFinalized body\n');
1862
- return {
1863
- warnings: [],
1864
- errors: [],
1865
- touchedSources: [],
1866
- changedWikiPageKeys: ['orders'],
1867
- actions: [{ target: 'wiki', type: 'updated', key: 'orders', detail: 'Conflicting finalization' }],
1868
- };
1869
- });
1870
- const runner = new IngestBundleRunner(deps);
1871
- await mockStageRawFiles(runner, runtime, [['cards/source.json', 'h1']]);
1872
- await expect(runner.run({
1873
- jobId: 'job-finalization-overlap',
1874
- connectionId: 'warehouse',
1875
- sourceKey: 'metabase',
1876
- trigger: 'upload',
1877
- bundleRef: { kind: 'upload', uploadId: 'upload' },
1878
- })).rejects.toThrow(/finalization modified path\(s\) already changed earlier in this run: wiki\/global\/orders\.md/);
1879
- }
1880
- finally {
1881
- await rm(runtime.homeDir, { recursive: true, force: true });
1882
- }
1883
- });
1884
- it('rejects finalization writes to unauthorized semantic-layer targets', async () => {
1885
- const runtime = await makeRealGitRuntime();
1886
- try {
1887
- const { deps, adapter } = makeDeps(runtime);
1888
- adapter.chunk.mockResolvedValue({ workUnits: [] });
1889
- adapter.finalize = vi.fn(async ({ workdir }) => {
1890
- await mkdir(join(workdir, 'semantic-layer/other-warehouse'), { recursive: true });
1891
- await writeFile(join(workdir, 'semantic-layer/other-warehouse/orders.yaml'), 'name: orders\ngrain: [order_id]\ncolumns: [{name: order_id, type: string}]\njoins: []\nmeasures: []\n');
1892
- return {
1893
- warnings: [],
1894
- errors: [],
1895
- touchedSources: [{ connectionId: 'other-warehouse', sourceName: 'orders' }],
1896
- changedWikiPageKeys: [],
1897
- actions: [
1898
- {
1899
- target: 'sl',
1900
- type: 'created',
1901
- key: 'orders',
1902
- targetConnectionId: 'other-warehouse',
1903
- detail: 'Forbidden target',
1904
- rawPaths: ['cards/source.json'],
1905
- },
1906
- ],
1907
- };
1908
- });
1909
- const runner = new IngestBundleRunner(deps);
1910
- await mockStageRawFiles(runner, runtime, [['cards/source.json', 'h1']]);
1911
- await expect(runner.run({
1912
- jobId: 'job-finalization-target-policy',
1913
- connectionId: 'warehouse',
1914
- sourceKey: 'metabase',
1915
- trigger: 'upload',
1916
- bundleRef: { kind: 'upload', uploadId: 'upload' },
1917
- })).rejects.toThrow(/semantic-layer target connection not allowed/);
1918
- const trace = await readFile(join(runtime.configDir, '.ktx/ingest-traces/job-finalization-target-policy/trace.jsonl'), 'utf-8');
1919
- expect(trace).toContain('finalization_committed');
1920
- expect(trace).toContain('semantic_layer_target_policy');
1921
- expect(trace).toContain('ingest_failed');
1922
- }
1923
- finally {
1924
- await rm(runtime.homeDir, { recursive: true, force: true });
1925
- }
1926
- });
1927
- });