@kaelio/ktx 0.5.0 → 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 (872) hide show
  1. package/assets/python/{kaelio_ktx-0.5.0-py3-none-any.whl → kaelio_ktx-0.6.0-py3-none-any.whl} +0 -0
  2. package/assets/python/manifest.json +4 -4
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/clack.d.ts +8 -0
  5. package/dist/clack.js +14 -0
  6. package/dist/connection.js +2 -9
  7. package/dist/connectors/bigquery/connector.d.ts +6 -1
  8. package/dist/connectors/bigquery/connector.js +38 -9
  9. package/dist/connectors/bigquery/dialect.d.ts +11 -9
  10. package/dist/connectors/bigquery/dialect.js +25 -45
  11. package/dist/connectors/clickhouse/connector.d.ts +5 -0
  12. package/dist/connectors/clickhouse/connector.js +36 -3
  13. package/dist/connectors/clickhouse/dialect.d.ts +11 -12
  14. package/dist/connectors/clickhouse/dialect.js +25 -100
  15. package/dist/connectors/mysql/connector.d.ts +7 -1
  16. package/dist/connectors/mysql/connector.js +67 -9
  17. package/dist/connectors/mysql/dialect.d.ts +11 -9
  18. package/dist/connectors/mysql/dialect.js +25 -43
  19. package/dist/connectors/postgres/connector.d.ts +6 -0
  20. package/dist/connectors/postgres/connector.js +67 -12
  21. package/dist/connectors/postgres/dialect.d.ts +11 -9
  22. package/dist/connectors/postgres/dialect.js +26 -35
  23. package/dist/connectors/snowflake/connector.d.ts +8 -3
  24. package/dist/connectors/snowflake/connector.js +39 -20
  25. package/dist/connectors/snowflake/dialect.d.ts +11 -9
  26. package/dist/connectors/snowflake/dialect.js +25 -24
  27. package/dist/connectors/sqlite/connector.d.ts +3 -1
  28. package/dist/connectors/sqlite/connector.js +23 -3
  29. package/dist/connectors/sqlite/dialect.d.ts +11 -9
  30. package/dist/connectors/sqlite/dialect.js +25 -29
  31. package/dist/connectors/sqlserver/connector.d.ts +6 -0
  32. package/dist/connectors/sqlserver/connector.js +56 -9
  33. package/dist/connectors/sqlserver/dialect.d.ts +11 -10
  34. package/dist/connectors/sqlserver/dialect.js +24 -40
  35. package/dist/context/connections/connection-type.d.ts +1 -1
  36. package/dist/context/connections/dialect-helpers.d.ts +9 -0
  37. package/dist/context/connections/dialect-helpers.js +67 -0
  38. package/dist/context/connections/dialects.d.ts +23 -5
  39. package/dist/context/connections/dialects.js +18 -56
  40. package/dist/context/connections/drivers.d.ts +23 -0
  41. package/dist/context/connections/drivers.js +171 -0
  42. package/dist/context/connections/local-query-executor.js +25 -7
  43. package/dist/context/connections/local-warehouse-descriptor.js +0 -2
  44. package/dist/context/connections/postgres-query-executor.js +1 -1
  45. package/dist/context/connections/sqlite-query-executor.js +1 -1
  46. package/dist/context/ingest/adapters/historic-sql/chunk-unified.js +1 -1
  47. package/dist/context/ingest/adapters/historic-sql/connection-dialect.js +11 -7
  48. package/dist/context/ingest/adapters/historic-sql/evidence-tool.d.ts +1 -1
  49. package/dist/context/ingest/adapters/historic-sql/evidence-tool.js +8 -5
  50. package/dist/context/ingest/adapters/historic-sql/evidence.d.ts +4 -4
  51. package/dist/context/ingest/adapters/historic-sql/evidence.js +2 -2
  52. package/dist/context/ingest/adapters/historic-sql/projection.js +5 -2
  53. package/dist/context/ingest/adapters/live-database/daemon-introspection.js +1 -1
  54. package/dist/context/ingest/adapters/live-database/stage.d.ts +2 -0
  55. package/dist/context/ingest/adapters/live-database/stage.js +9 -0
  56. package/dist/context/ingest/adapters/looker/mapping.d.ts +0 -3
  57. package/dist/context/ingest/adapters/looker/mapping.js +0 -3
  58. package/dist/context/ingest/adapters/looker/types.d.ts +1 -1
  59. package/dist/context/ingest/historic-sql-probes/bigquery-runner.d.ts +34 -0
  60. package/dist/context/ingest/historic-sql-probes/bigquery-runner.js +99 -0
  61. package/dist/context/ingest/historic-sql-probes/postgres-runner.d.ts +26 -0
  62. package/dist/context/ingest/historic-sql-probes/postgres-runner.js +76 -0
  63. package/dist/context/ingest/historic-sql-probes/snowflake-runner.d.ts +29 -0
  64. package/dist/context/ingest/historic-sql-probes/snowflake-runner.js +62 -0
  65. package/dist/context/ingest/historic-sql-probes.d.ts +46 -0
  66. package/dist/context/ingest/historic-sql-probes.js +62 -0
  67. package/dist/context/ingest/local-adapters.js +0 -1
  68. package/dist/context/ingest/local-ingest.js +1 -1
  69. package/dist/context/mcp/context-tools.js +11 -48
  70. package/dist/context/mcp/local-project-ports.js +0 -3
  71. package/dist/context/project/config.d.ts +0 -8
  72. package/dist/context/project/driver-schemas.d.ts +0 -4
  73. package/dist/context/project/driver-schemas.js +0 -2
  74. package/dist/context/scan/constraint-discovery.d.ts +19 -0
  75. package/dist/context/scan/constraint-discovery.js +23 -0
  76. package/dist/context/scan/enabled-tables.d.ts +4 -5
  77. package/dist/context/scan/enabled-tables.js +4 -18
  78. package/dist/context/scan/entity-details.js +14 -44
  79. package/dist/context/scan/local-enrichment.js +13 -1
  80. package/dist/context/scan/local-scan.js +5 -4
  81. package/dist/context/scan/local-structural-artifacts.js +51 -0
  82. package/dist/context/scan/relationship-benchmarks.js +9 -6
  83. package/dist/context/scan/relationship-composite-candidates.d.ts +3 -2
  84. package/dist/context/scan/relationship-composite-candidates.js +21 -33
  85. package/dist/context/scan/relationship-discovery.d.ts +3 -2
  86. package/dist/context/scan/relationship-discovery.js +4 -4
  87. package/dist/context/scan/relationship-profiling.d.ts +2 -3
  88. package/dist/context/scan/relationship-profiling.js +25 -94
  89. package/dist/context/scan/relationship-validation.d.ts +3 -2
  90. package/dist/context/scan/relationship-validation.js +12 -22
  91. package/dist/context/scan/table-ref.d.ts +1 -2
  92. package/dist/context/scan/table-ref.js +3 -4
  93. package/dist/context/scan/types.d.ts +6 -2
  94. package/dist/context/scan/warehouse-catalog.js +31 -48
  95. package/dist/context/sl/local-query.js +0 -3
  96. package/dist/context/sl/local-sl.js +0 -13
  97. package/dist/context/sl/semantic-layer.service.js +1 -4
  98. package/dist/context/tools/context-candidate-write.tool.d.ts +2 -2
  99. package/dist/context-build-view.js +1 -1
  100. package/dist/database-tree-picker.js +14 -7
  101. package/dist/error-message.d.ts +1 -0
  102. package/dist/error-message.js +29 -0
  103. package/dist/ingest-depth.js +0 -1
  104. package/dist/ingest.js +2 -2
  105. package/dist/llm/embedding-health.js +2 -2
  106. package/dist/local-scan-connectors.js +13 -56
  107. package/dist/managed-local-embeddings.js +2 -1
  108. package/dist/managed-python-daemon.d.ts +5 -0
  109. package/dist/managed-python-daemon.js +29 -9
  110. package/dist/managed-python-http.js +2 -1
  111. package/dist/public-ingest.js +1 -6
  112. package/dist/runtime-requirements.js +2 -2
  113. package/dist/setup-agents.d.ts +1 -1
  114. package/dist/setup-agents.js +16 -74
  115. package/dist/setup-context.js +2 -1
  116. package/dist/setup-databases.d.ts +3 -13
  117. package/dist/setup-databases.js +141 -313
  118. package/dist/setup-embeddings.js +10 -2
  119. package/dist/setup-runtime.js +2 -1
  120. package/dist/setup-sources.js +2 -1
  121. package/dist/setup.js +10 -4
  122. package/dist/skills/historic_sql_patterns/SKILL.md +1 -3
  123. package/dist/skills/historic_sql_table_digest/SKILL.md +0 -1
  124. package/dist/skills/sl/SKILL.md +2 -2
  125. package/dist/sql.js +0 -4
  126. package/dist/status-project.d.ts +3 -18
  127. package/dist/status-project.js +42 -216
  128. package/dist/telemetry/events.d.ts +1 -1
  129. package/dist/telemetry/index.js +8 -3
  130. package/dist/tree-picker-state.d.ts +2 -2
  131. package/dist/tree-picker-state.js +29 -13
  132. package/dist/tree-picker-tui.d.ts +3 -1
  133. package/dist/tree-picker-tui.js +20 -32
  134. package/package.json +6 -6
  135. package/dist/admin-reindex.test.d.ts +0 -1
  136. package/dist/admin-reindex.test.js +0 -119
  137. package/dist/admin.test.d.ts +0 -1
  138. package/dist/admin.test.js +0 -201
  139. package/dist/cli-program-telemetry.test.d.ts +0 -1
  140. package/dist/cli-program-telemetry.test.js +0 -89
  141. package/dist/cli-program.test.d.ts +0 -1
  142. package/dist/cli-program.test.js +0 -71
  143. package/dist/command-tree.test.d.ts +0 -1
  144. package/dist/command-tree.test.js +0 -126
  145. package/dist/commands/mcp-commands.test.d.ts +0 -1
  146. package/dist/commands/mcp-commands.test.js +0 -111
  147. package/dist/commands/sql-commands.test.d.ts +0 -1
  148. package/dist/commands/sql-commands.test.js +0 -68
  149. package/dist/connection.test.d.ts +0 -1
  150. package/dist/connection.test.js +0 -426
  151. package/dist/connectors/bigquery/connector.test.d.ts +0 -1
  152. package/dist/connectors/bigquery/connector.test.js +0 -363
  153. package/dist/connectors/bigquery/dialect.test.d.ts +0 -1
  154. package/dist/connectors/bigquery/dialect.test.js +0 -36
  155. package/dist/connectors/clickhouse/connector.test.d.ts +0 -1
  156. package/dist/connectors/clickhouse/connector.test.js +0 -342
  157. package/dist/connectors/clickhouse/dialect.test.d.ts +0 -1
  158. package/dist/connectors/clickhouse/dialect.test.js +0 -36
  159. package/dist/connectors/mysql/connector.test.d.ts +0 -1
  160. package/dist/connectors/mysql/connector.test.js +0 -365
  161. package/dist/connectors/mysql/dialect.test.d.ts +0 -1
  162. package/dist/connectors/mysql/dialect.test.js +0 -36
  163. package/dist/connectors/postgres/connector.test.d.ts +0 -1
  164. package/dist/connectors/postgres/connector.test.js +0 -391
  165. package/dist/connectors/postgres/dialect.test.d.ts +0 -1
  166. package/dist/connectors/postgres/dialect.test.js +0 -37
  167. package/dist/connectors/postgres/historic-sql-query-client.test.d.ts +0 -1
  168. package/dist/connectors/postgres/historic-sql-query-client.test.js +0 -45
  169. package/dist/connectors/snowflake/connector.test.d.ts +0 -1
  170. package/dist/connectors/snowflake/connector.test.js +0 -462
  171. package/dist/connectors/snowflake/dialect.test.d.ts +0 -1
  172. package/dist/connectors/snowflake/dialect.test.js +0 -34
  173. package/dist/connectors/snowflake/identifiers.test.d.ts +0 -1
  174. package/dist/connectors/snowflake/identifiers.test.js +0 -12
  175. package/dist/connectors/snowflake/sdk-logger.test.d.ts +0 -1
  176. package/dist/connectors/snowflake/sdk-logger.test.js +0 -47
  177. package/dist/connectors/sqlite/connector.test.d.ts +0 -1
  178. package/dist/connectors/sqlite/connector.test.js +0 -207
  179. package/dist/connectors/sqlite/dialect.test.d.ts +0 -1
  180. package/dist/connectors/sqlite/dialect.test.js +0 -23
  181. package/dist/connectors/sqlserver/connector.test.d.ts +0 -1
  182. package/dist/connectors/sqlserver/connector.test.js +0 -313
  183. package/dist/connectors/sqlserver/dialect.test.d.ts +0 -1
  184. package/dist/connectors/sqlserver/dialect.test.js +0 -36
  185. package/dist/context/connections/bigquery-identifiers.test.d.ts +0 -1
  186. package/dist/context/connections/bigquery-identifiers.test.js +0 -13
  187. package/dist/context/connections/dialects.test.d.ts +0 -1
  188. package/dist/context/connections/dialects.test.js +0 -24
  189. package/dist/context/connections/local-query-executor.test.d.ts +0 -1
  190. package/dist/context/connections/local-query-executor.test.js +0 -48
  191. package/dist/context/connections/local-warehouse-descriptor.test.d.ts +0 -1
  192. package/dist/context/connections/local-warehouse-descriptor.test.js +0 -53
  193. package/dist/context/connections/notion-config.test.d.ts +0 -1
  194. package/dist/context/connections/notion-config.test.js +0 -121
  195. package/dist/context/connections/postgres-query-executor.test.d.ts +0 -1
  196. package/dist/context/connections/postgres-query-executor.test.js +0 -91
  197. package/dist/context/connections/read-only-sql.test.d.ts +0 -1
  198. package/dist/context/connections/read-only-sql.test.js +0 -20
  199. package/dist/context/connections/sqlite-query-executor.test.d.ts +0 -1
  200. package/dist/context/connections/sqlite-query-executor.test.js +0 -113
  201. package/dist/context/core/config-reference.test.d.ts +0 -1
  202. package/dist/context/core/config-reference.test.js +0 -27
  203. package/dist/context/core/git.service.assert-worktree-clean.test.d.ts +0 -1
  204. package/dist/context/core/git.service.assert-worktree-clean.test.js +0 -62
  205. package/dist/context/core/git.service.delete-directories.test.d.ts +0 -1
  206. package/dist/context/core/git.service.delete-directories.test.js +0 -61
  207. package/dist/context/core/git.service.patch.test.d.ts +0 -1
  208. package/dist/context/core/git.service.patch.test.js +0 -40
  209. package/dist/context/core/git.service.reset-hard.test.d.ts +0 -1
  210. package/dist/context/core/git.service.reset-hard.test.js +0 -47
  211. package/dist/context/core/git.service.test.d.ts +0 -1
  212. package/dist/context/core/git.service.test.js +0 -357
  213. package/dist/context/core/session-worktree.service.test.d.ts +0 -1
  214. package/dist/context/core/session-worktree.service.test.js +0 -97
  215. package/dist/context/daemon/semantic-layer-compute.test.d.ts +0 -1
  216. package/dist/context/daemon/semantic-layer-compute.test.js +0 -305
  217. package/dist/context/index-sync/reindex.test.d.ts +0 -1
  218. package/dist/context/index-sync/reindex.test.js +0 -139
  219. package/dist/context/ingest/action-identity.test.d.ts +0 -1
  220. package/dist/context/ingest/action-identity.test.js +0 -19
  221. package/dist/context/ingest/adapters/dbt/chunk.test.d.ts +0 -1
  222. package/dist/context/ingest/adapters/dbt/chunk.test.js +0 -30
  223. package/dist/context/ingest/adapters/dbt/dbt.adapter.test.d.ts +0 -1
  224. package/dist/context/ingest/adapters/dbt/dbt.adapter.test.js +0 -43
  225. package/dist/context/ingest/adapters/dbt/fetch.test.d.ts +0 -1
  226. package/dist/context/ingest/adapters/dbt/fetch.test.js +0 -30
  227. package/dist/context/ingest/adapters/dbt/parse.test.d.ts +0 -1
  228. package/dist/context/ingest/adapters/dbt/parse.test.js +0 -7
  229. package/dist/context/ingest/adapters/dbt-descriptions/parse-schema.test.d.ts +0 -1
  230. package/dist/context/ingest/adapters/dbt-descriptions/parse-schema.test.js +0 -195
  231. package/dist/context/ingest/adapters/historic-sql/bigquery-query-history-reader.test.d.ts +0 -1
  232. package/dist/context/ingest/adapters/historic-sql/bigquery-query-history-reader.test.js +0 -121
  233. package/dist/context/ingest/adapters/historic-sql/buckets.test.d.ts +0 -1
  234. package/dist/context/ingest/adapters/historic-sql/buckets.test.js +0 -49
  235. package/dist/context/ingest/adapters/historic-sql/chunk-unified.test.d.ts +0 -1
  236. package/dist/context/ingest/adapters/historic-sql/chunk-unified.test.js +0 -160
  237. package/dist/context/ingest/adapters/historic-sql/detect.test.d.ts +0 -1
  238. package/dist/context/ingest/adapters/historic-sql/detect.test.js +0 -48
  239. package/dist/context/ingest/adapters/historic-sql/evidence-tool.test.d.ts +0 -1
  240. package/dist/context/ingest/adapters/historic-sql/evidence-tool.test.js +0 -67
  241. package/dist/context/ingest/adapters/historic-sql/evidence.test.d.ts +0 -1
  242. package/dist/context/ingest/adapters/historic-sql/evidence.test.js +0 -43
  243. package/dist/context/ingest/adapters/historic-sql/historic-sql.adapter.test.d.ts +0 -1
  244. package/dist/context/ingest/adapters/historic-sql/historic-sql.adapter.test.js +0 -98
  245. package/dist/context/ingest/adapters/historic-sql/local-ingest-acceptance.test.d.ts +0 -1
  246. package/dist/context/ingest/adapters/historic-sql/local-ingest-acceptance.test.js +0 -235
  247. package/dist/context/ingest/adapters/historic-sql/pattern-inputs.test.d.ts +0 -1
  248. package/dist/context/ingest/adapters/historic-sql/pattern-inputs.test.js +0 -68
  249. package/dist/context/ingest/adapters/historic-sql/postgres-pgss-reader.test.d.ts +0 -1
  250. package/dist/context/ingest/adapters/historic-sql/postgres-pgss-reader.test.js +0 -205
  251. package/dist/context/ingest/adapters/historic-sql/projection.test.d.ts +0 -1
  252. package/dist/context/ingest/adapters/historic-sql/projection.test.js +0 -392
  253. package/dist/context/ingest/adapters/historic-sql/redaction.test.d.ts +0 -1
  254. package/dist/context/ingest/adapters/historic-sql/redaction.test.js +0 -22
  255. package/dist/context/ingest/adapters/historic-sql/skill-schemas.test.d.ts +0 -1
  256. package/dist/context/ingest/adapters/historic-sql/skill-schemas.test.js +0 -62
  257. package/dist/context/ingest/adapters/historic-sql/snowflake-query-history-reader.test.d.ts +0 -1
  258. package/dist/context/ingest/adapters/historic-sql/snowflake-query-history-reader.test.js +0 -117
  259. package/dist/context/ingest/adapters/historic-sql/stage-unified.test.d.ts +0 -1
  260. package/dist/context/ingest/adapters/historic-sql/stage-unified.test.js +0 -405
  261. package/dist/context/ingest/adapters/historic-sql/types.test.d.ts +0 -1
  262. package/dist/context/ingest/adapters/historic-sql/types.test.js +0 -87
  263. package/dist/context/ingest/adapters/live-database/chunk.test.d.ts +0 -1
  264. package/dist/context/ingest/adapters/live-database/chunk.test.js +0 -95
  265. package/dist/context/ingest/adapters/live-database/daemon-introspection.test.d.ts +0 -1
  266. package/dist/context/ingest/adapters/live-database/daemon-introspection.test.js +0 -241
  267. package/dist/context/ingest/adapters/live-database/live-database.adapter.test.d.ts +0 -1
  268. package/dist/context/ingest/adapters/live-database/live-database.adapter.test.js +0 -105
  269. package/dist/context/ingest/adapters/live-database/manifest.test.d.ts +0 -1
  270. package/dist/context/ingest/adapters/live-database/manifest.test.js +0 -291
  271. package/dist/context/ingest/adapters/live-database/stage.test.d.ts +0 -1
  272. package/dist/context/ingest/adapters/live-database/stage.test.js +0 -133
  273. package/dist/context/ingest/adapters/looker/chunk.test.d.ts +0 -1
  274. package/dist/context/ingest/adapters/looker/chunk.test.js +0 -142
  275. package/dist/context/ingest/adapters/looker/client-boundary.test.d.ts +0 -1
  276. package/dist/context/ingest/adapters/looker/client-boundary.test.js +0 -12
  277. package/dist/context/ingest/adapters/looker/client.test.d.ts +0 -1
  278. package/dist/context/ingest/adapters/looker/client.test.js +0 -407
  279. package/dist/context/ingest/adapters/looker/daemon-table-identifier-parser.test.d.ts +0 -1
  280. package/dist/context/ingest/adapters/looker/daemon-table-identifier-parser.test.js +0 -40
  281. package/dist/context/ingest/adapters/looker/detect.test.d.ts +0 -1
  282. package/dist/context/ingest/adapters/looker/detect.test.js +0 -39
  283. package/dist/context/ingest/adapters/looker/evidence-documents.test.d.ts +0 -1
  284. package/dist/context/ingest/adapters/looker/evidence-documents.test.js +0 -178
  285. package/dist/context/ingest/adapters/looker/factory.test.d.ts +0 -1
  286. package/dist/context/ingest/adapters/looker/factory.test.js +0 -55
  287. package/dist/context/ingest/adapters/looker/fetch-report.test.d.ts +0 -1
  288. package/dist/context/ingest/adapters/looker/fetch-report.test.js +0 -71
  289. package/dist/context/ingest/adapters/looker/fetch.test.d.ts +0 -1
  290. package/dist/context/ingest/adapters/looker/fetch.test.js +0 -592
  291. package/dist/context/ingest/adapters/looker/local-runtime-store.test.d.ts +0 -1
  292. package/dist/context/ingest/adapters/looker/local-runtime-store.test.js +0 -106
  293. package/dist/context/ingest/adapters/looker/looker.adapter.test.d.ts +0 -1
  294. package/dist/context/ingest/adapters/looker/looker.adapter.test.js +0 -99
  295. package/dist/context/ingest/adapters/looker/mapping.test.d.ts +0 -1
  296. package/dist/context/ingest/adapters/looker/mapping.test.js +0 -334
  297. package/dist/context/ingest/adapters/looker/reconcile.test.d.ts +0 -1
  298. package/dist/context/ingest/adapters/looker/reconcile.test.js +0 -12
  299. package/dist/context/ingest/adapters/looker/scope.test.d.ts +0 -1
  300. package/dist/context/ingest/adapters/looker/scope.test.js +0 -84
  301. package/dist/context/ingest/adapters/looker/target-connections.test.d.ts +0 -1
  302. package/dist/context/ingest/adapters/looker/target-connections.test.js +0 -71
  303. package/dist/context/ingest/adapters/looker/tools/looker-query-to-sl.tool.test.d.ts +0 -1
  304. package/dist/context/ingest/adapters/looker/tools/looker-query-to-sl.tool.test.js +0 -211
  305. package/dist/context/ingest/adapters/looker/types.test.d.ts +0 -1
  306. package/dist/context/ingest/adapters/looker/types.test.js +0 -261
  307. package/dist/context/ingest/adapters/lookml/chunk.test.d.ts +0 -1
  308. package/dist/context/ingest/adapters/lookml/chunk.test.js +0 -213
  309. package/dist/context/ingest/adapters/lookml/detect.test.d.ts +0 -1
  310. package/dist/context/ingest/adapters/lookml/detect.test.js +0 -37
  311. package/dist/context/ingest/adapters/lookml/fetch-report.test.d.ts +0 -1
  312. package/dist/context/ingest/adapters/lookml/fetch-report.test.js +0 -82
  313. package/dist/context/ingest/adapters/lookml/fetch.test.d.ts +0 -1
  314. package/dist/context/ingest/adapters/lookml/fetch.test.js +0 -121
  315. package/dist/context/ingest/adapters/lookml/graph.test.d.ts +0 -1
  316. package/dist/context/ingest/adapters/lookml/graph.test.js +0 -105
  317. package/dist/context/ingest/adapters/lookml/lookml.adapter.test.d.ts +0 -1
  318. package/dist/context/ingest/adapters/lookml/lookml.adapter.test.js +0 -49
  319. package/dist/context/ingest/adapters/lookml/parse.test.d.ts +0 -1
  320. package/dist/context/ingest/adapters/lookml/parse.test.js +0 -118
  321. package/dist/context/ingest/adapters/lookml/pull-config.test.d.ts +0 -1
  322. package/dist/context/ingest/adapters/lookml/pull-config.test.js +0 -128
  323. package/dist/context/ingest/adapters/metabase/card-references.test.d.ts +0 -1
  324. package/dist/context/ingest/adapters/metabase/card-references.test.js +0 -36
  325. package/dist/context/ingest/adapters/metabase/chunk.test.d.ts +0 -1
  326. package/dist/context/ingest/adapters/metabase/chunk.test.js +0 -299
  327. package/dist/context/ingest/adapters/metabase/client-boundary.test.d.ts +0 -1
  328. package/dist/context/ingest/adapters/metabase/client-boundary.test.js +0 -38
  329. package/dist/context/ingest/adapters/metabase/client-port.test.d.ts +0 -1
  330. package/dist/context/ingest/adapters/metabase/client-port.test.js +0 -86
  331. package/dist/context/ingest/adapters/metabase/client.test.d.ts +0 -1
  332. package/dist/context/ingest/adapters/metabase/client.test.js +0 -377
  333. package/dist/context/ingest/adapters/metabase/detect.test.d.ts +0 -1
  334. package/dist/context/ingest/adapters/metabase/detect.test.js +0 -42
  335. package/dist/context/ingest/adapters/metabase/fanout-planner.test.d.ts +0 -1
  336. package/dist/context/ingest/adapters/metabase/fanout-planner.test.js +0 -44
  337. package/dist/context/ingest/adapters/metabase/fetch-scope.test.d.ts +0 -1
  338. package/dist/context/ingest/adapters/metabase/fetch-scope.test.js +0 -124
  339. package/dist/context/ingest/adapters/metabase/fetch.test.d.ts +0 -1
  340. package/dist/context/ingest/adapters/metabase/fetch.test.js +0 -557
  341. package/dist/context/ingest/adapters/metabase/local-metabase.adapter.test.d.ts +0 -1
  342. package/dist/context/ingest/adapters/metabase/local-metabase.adapter.test.js +0 -56
  343. package/dist/context/ingest/adapters/metabase/local-source-state-store.test.d.ts +0 -1
  344. package/dist/context/ingest/adapters/metabase/local-source-state-store.test.js +0 -99
  345. package/dist/context/ingest/adapters/metabase/mapping.test.d.ts +0 -1
  346. package/dist/context/ingest/adapters/metabase/mapping.test.js +0 -215
  347. package/dist/context/ingest/adapters/metabase/metabase.adapter.test.d.ts +0 -1
  348. package/dist/context/ingest/adapters/metabase/metabase.adapter.test.js +0 -129
  349. package/dist/context/ingest/adapters/metabase/serialize-card.test.d.ts +0 -1
  350. package/dist/context/ingest/adapters/metabase/serialize-card.test.js +0 -205
  351. package/dist/context/ingest/adapters/metabase/types.test.d.ts +0 -1
  352. package/dist/context/ingest/adapters/metabase/types.test.js +0 -75
  353. package/dist/context/ingest/adapters/metricflow/chunk.test.d.ts +0 -1
  354. package/dist/context/ingest/adapters/metricflow/chunk.test.js +0 -114
  355. package/dist/context/ingest/adapters/metricflow/deep-parse.test.d.ts +0 -1
  356. package/dist/context/ingest/adapters/metricflow/deep-parse.test.js +0 -1139
  357. package/dist/context/ingest/adapters/metricflow/detect.test.d.ts +0 -1
  358. package/dist/context/ingest/adapters/metricflow/detect.test.js +0 -43
  359. package/dist/context/ingest/adapters/metricflow/fetch.test.d.ts +0 -1
  360. package/dist/context/ingest/adapters/metricflow/fetch.test.js +0 -97
  361. package/dist/context/ingest/adapters/metricflow/graph.test.d.ts +0 -1
  362. package/dist/context/ingest/adapters/metricflow/graph.test.js +0 -245
  363. package/dist/context/ingest/adapters/metricflow/import-semantic-models.test.d.ts +0 -1
  364. package/dist/context/ingest/adapters/metricflow/import-semantic-models.test.js +0 -318
  365. package/dist/context/ingest/adapters/metricflow/metricflow.adapter.test.d.ts +0 -1
  366. package/dist/context/ingest/adapters/metricflow/metricflow.adapter.test.js +0 -212
  367. package/dist/context/ingest/adapters/metricflow/parse.test.d.ts +0 -1
  368. package/dist/context/ingest/adapters/metricflow/parse.test.js +0 -171
  369. package/dist/context/ingest/adapters/metricflow/pull-config.test.d.ts +0 -1
  370. package/dist/context/ingest/adapters/metricflow/pull-config.test.js +0 -57
  371. package/dist/context/ingest/adapters/metricflow/semantic-models.test.d.ts +0 -1
  372. package/dist/context/ingest/adapters/metricflow/semantic-models.test.js +0 -204
  373. package/dist/context/ingest/adapters/notion/cluster.test.d.ts +0 -1
  374. package/dist/context/ingest/adapters/notion/cluster.test.js +0 -123
  375. package/dist/context/ingest/adapters/notion/fetch.test.d.ts +0 -1
  376. package/dist/context/ingest/adapters/notion/fetch.test.js +0 -358
  377. package/dist/context/ingest/adapters/notion/local-state-store.test.d.ts +0 -1
  378. package/dist/context/ingest/adapters/notion/local-state-store.test.js +0 -29
  379. package/dist/context/ingest/adapters/notion/normalize.test.d.ts +0 -1
  380. package/dist/context/ingest/adapters/notion/normalize.test.js +0 -64
  381. package/dist/context/ingest/adapters/notion/notion-client.test.d.ts +0 -1
  382. package/dist/context/ingest/adapters/notion/notion-client.test.js +0 -49
  383. package/dist/context/ingest/adapters/notion/notion.adapter.test.d.ts +0 -1
  384. package/dist/context/ingest/adapters/notion/notion.adapter.test.js +0 -315
  385. package/dist/context/ingest/artifact-gates.test.d.ts +0 -1
  386. package/dist/context/ingest/artifact-gates.test.js +0 -167
  387. package/dist/context/ingest/canonical-pins.test.d.ts +0 -1
  388. package/dist/context/ingest/canonical-pins.test.js +0 -66
  389. package/dist/context/ingest/clustering/kmeans.test.d.ts +0 -1
  390. package/dist/context/ingest/clustering/kmeans.test.js +0 -61
  391. package/dist/context/ingest/context-candidates/candidate-dedup.service.test.d.ts +0 -1
  392. package/dist/context/ingest/context-candidates/candidate-dedup.service.test.js +0 -216
  393. package/dist/context/ingest/context-candidates/context-candidate-carryforward.service.test.d.ts +0 -1
  394. package/dist/context/ingest/context-candidates/context-candidate-carryforward.service.test.js +0 -161
  395. package/dist/context/ingest/context-candidates/curator-pagination.service.test.d.ts +0 -1
  396. package/dist/context/ingest/context-candidates/curator-pagination.service.test.js +0 -168
  397. package/dist/context/ingest/context-candidates/embedding-text.test.d.ts +0 -1
  398. package/dist/context/ingest/context-candidates/embedding-text.test.js +0 -10
  399. package/dist/context/ingest/context-candidates/store.test.d.ts +0 -1
  400. package/dist/context/ingest/context-candidates/store.test.js +0 -67
  401. package/dist/context/ingest/context-evidence/context-evidence-index.service.test.d.ts +0 -1
  402. package/dist/context/ingest/context-evidence/context-evidence-index.service.test.js +0 -374
  403. package/dist/context/ingest/context-evidence/sqlite-context-evidence-store.test.d.ts +0 -1
  404. package/dist/context/ingest/context-evidence/sqlite-context-evidence-store.test.js +0 -416
  405. package/dist/context/ingest/context-evidence/store.test.d.ts +0 -1
  406. package/dist/context/ingest/context-evidence/store.test.js +0 -55
  407. package/dist/context/ingest/dbt-shared/project-vars.test.d.ts +0 -1
  408. package/dist/context/ingest/dbt-shared/project-vars.test.js +0 -90
  409. package/dist/context/ingest/dbt-shared/schema-files.test.d.ts +0 -1
  410. package/dist/context/ingest/dbt-shared/schema-files.test.js +0 -35
  411. package/dist/context/ingest/diff-set.service.test.d.ts +0 -1
  412. package/dist/context/ingest/diff-set.service.test.js +0 -132
  413. package/dist/context/ingest/final-gate-repair.test.d.ts +0 -1
  414. package/dist/context/ingest/final-gate-repair.test.js +0 -109
  415. package/dist/context/ingest/finalization-scope.test.d.ts +0 -1
  416. package/dist/context/ingest/finalization-scope.test.js +0 -114
  417. package/dist/context/ingest/ingest-bundle.runner.isolated-diff.test.d.ts +0 -1
  418. package/dist/context/ingest/ingest-bundle.runner.isolated-diff.test.js +0 -1928
  419. package/dist/context/ingest/ingest-bundle.runner.test.d.ts +0 -1
  420. package/dist/context/ingest/ingest-bundle.runner.test.js +0 -1899
  421. package/dist/context/ingest/ingest-prompts.test.d.ts +0 -1
  422. package/dist/context/ingest/ingest-prompts.test.js +0 -32
  423. package/dist/context/ingest/ingest-runtime-assets.test.d.ts +0 -1
  424. package/dist/context/ingest/ingest-runtime-assets.test.js +0 -89
  425. package/dist/context/ingest/ingest-trace.test.d.ts +0 -1
  426. package/dist/context/ingest/ingest-trace.test.js +0 -76
  427. package/dist/context/ingest/isolated-diff/git-patch.test.d.ts +0 -1
  428. package/dist/context/ingest/isolated-diff/git-patch.test.js +0 -76
  429. package/dist/context/ingest/isolated-diff/patch-integrator.test.d.ts +0 -1
  430. package/dist/context/ingest/isolated-diff/patch-integrator.test.js +0 -369
  431. package/dist/context/ingest/isolated-diff/textual-conflict-resolver.test.d.ts +0 -1
  432. package/dist/context/ingest/isolated-diff/textual-conflict-resolver.test.js +0 -101
  433. package/dist/context/ingest/isolated-diff/work-unit-executor.test.d.ts +0 -1
  434. package/dist/context/ingest/isolated-diff/work-unit-executor.test.js +0 -137
  435. package/dist/context/ingest/local-adapters.test.d.ts +0 -1
  436. package/dist/context/ingest/local-adapters.test.js +0 -612
  437. package/dist/context/ingest/local-bundle-ingest.test.d.ts +0 -1
  438. package/dist/context/ingest/local-bundle-ingest.test.js +0 -794
  439. package/dist/context/ingest/local-bundle-runtime.test.d.ts +0 -1
  440. package/dist/context/ingest/local-bundle-runtime.test.js +0 -240
  441. package/dist/context/ingest/local-embedding-provider.integration.test.d.ts +0 -1
  442. package/dist/context/ingest/local-embedding-provider.integration.test.js +0 -139
  443. package/dist/context/ingest/local-mapping-reconcile.test.d.ts +0 -1
  444. package/dist/context/ingest/local-mapping-reconcile.test.js +0 -61
  445. package/dist/context/ingest/local-metabase-ingest.test.d.ts +0 -1
  446. package/dist/context/ingest/local-metabase-ingest.test.js +0 -227
  447. package/dist/context/ingest/local-stage-ingest.test.d.ts +0 -1
  448. package/dist/context/ingest/local-stage-ingest.test.js +0 -581
  449. package/dist/context/ingest/memory-flow/acceptance-fixtures.d.ts +0 -6
  450. package/dist/context/ingest/memory-flow/acceptance-fixtures.js +0 -155
  451. package/dist/context/ingest/memory-flow/acceptance.test.d.ts +0 -1
  452. package/dist/context/ingest/memory-flow/acceptance.test.js +0 -43
  453. package/dist/context/ingest/memory-flow/events.test.d.ts +0 -1
  454. package/dist/context/ingest/memory-flow/events.test.js +0 -319
  455. package/dist/context/ingest/memory-flow/interaction.test.d.ts +0 -1
  456. package/dist/context/ingest/memory-flow/interaction.test.js +0 -264
  457. package/dist/context/ingest/memory-flow/interactive-render.test.d.ts +0 -1
  458. package/dist/context/ingest/memory-flow/interactive-render.test.js +0 -160
  459. package/dist/context/ingest/memory-flow/live-buffer.test.d.ts +0 -1
  460. package/dist/context/ingest/memory-flow/live-buffer.test.js +0 -77
  461. package/dist/context/ingest/memory-flow/render.test.d.ts +0 -1
  462. package/dist/context/ingest/memory-flow/render.test.js +0 -105
  463. package/dist/context/ingest/memory-flow/schema.test.d.ts +0 -1
  464. package/dist/context/ingest/memory-flow/schema.test.js +0 -147
  465. package/dist/context/ingest/memory-flow/summary.test.d.ts +0 -1
  466. package/dist/context/ingest/memory-flow/summary.test.js +0 -130
  467. package/dist/context/ingest/memory-flow/view-model.test.d.ts +0 -1
  468. package/dist/context/ingest/memory-flow/view-model.test.js +0 -397
  469. package/dist/context/ingest/memory-flow/visuals.test.d.ts +0 -1
  470. package/dist/context/ingest/memory-flow/visuals.test.js +0 -49
  471. package/dist/context/ingest/page-triage/page-triage.service.test.d.ts +0 -1
  472. package/dist/context/ingest/page-triage/page-triage.service.test.js +0 -311
  473. package/dist/context/ingest/raw-sources-paths.test.d.ts +0 -1
  474. package/dist/context/ingest/raw-sources-paths.test.js +0 -18
  475. package/dist/context/ingest/repo-fetch.test.d.ts +0 -1
  476. package/dist/context/ingest/repo-fetch.test.js +0 -168
  477. package/dist/context/ingest/report-snapshot.test.d.ts +0 -1
  478. package/dist/context/ingest/report-snapshot.test.js +0 -329
  479. package/dist/context/ingest/semantic-layer-target-policy.test.d.ts +0 -1
  480. package/dist/context/ingest/semantic-layer-target-policy.test.js +0 -25
  481. package/dist/context/ingest/source-adapter-registry.test.d.ts +0 -1
  482. package/dist/context/ingest/source-adapter-registry.test.js +0 -35
  483. package/dist/context/ingest/sqlite-bundle-ingest-store.test.d.ts +0 -1
  484. package/dist/context/ingest/sqlite-bundle-ingest-store.test.js +0 -517
  485. package/dist/context/ingest/sqlite-local-ingest-store.test.d.ts +0 -1
  486. package/dist/context/ingest/sqlite-local-ingest-store.test.js +0 -143
  487. package/dist/context/ingest/stages/build-reconcile-context.context-candidates.test.d.ts +0 -1
  488. package/dist/context/ingest/stages/build-reconcile-context.context-candidates.test.js +0 -102
  489. package/dist/context/ingest/stages/build-reconcile-context.test.d.ts +0 -1
  490. package/dist/context/ingest/stages/build-reconcile-context.test.js +0 -141
  491. package/dist/context/ingest/stages/build-wu-context.test.d.ts +0 -1
  492. package/dist/context/ingest/stages/build-wu-context.test.js +0 -196
  493. package/dist/context/ingest/stages/stage-1-stage-raw-files.test.d.ts +0 -1
  494. package/dist/context/ingest/stages/stage-1-stage-raw-files.test.js +0 -54
  495. package/dist/context/ingest/stages/stage-3-work-units.test.d.ts +0 -1
  496. package/dist/context/ingest/stages/stage-3-work-units.test.js +0 -175
  497. package/dist/context/ingest/stages/stage-4-reconciliation.test.d.ts +0 -1
  498. package/dist/context/ingest/stages/stage-4-reconciliation.test.js +0 -144
  499. package/dist/context/ingest/stages/validate-wu-sources.test.d.ts +0 -1
  500. package/dist/context/ingest/stages/validate-wu-sources.test.js +0 -27
  501. package/dist/context/ingest/tools/emit-reconciliation-records.tool.test.d.ts +0 -1
  502. package/dist/context/ingest/tools/emit-reconciliation-records.tool.test.js +0 -237
  503. package/dist/context/ingest/tools/eviction-list.tool.test.d.ts +0 -1
  504. package/dist/context/ingest/tools/eviction-list.tool.test.js +0 -44
  505. package/dist/context/ingest/tools/read-raw-file.tool.test.d.ts +0 -1
  506. package/dist/context/ingest/tools/read-raw-file.tool.test.js +0 -45
  507. package/dist/context/ingest/tools/read-raw-span.tool.test.d.ts +0 -1
  508. package/dist/context/ingest/tools/read-raw-span.tool.test.js +0 -34
  509. package/dist/context/ingest/tools/stage-diff.tool.test.d.ts +0 -1
  510. package/dist/context/ingest/tools/stage-diff.tool.test.js +0 -112
  511. package/dist/context/ingest/tools/stage-list.tool.test.d.ts +0 -1
  512. package/dist/context/ingest/tools/stage-list.tool.test.js +0 -58
  513. package/dist/context/ingest/tools/tool-transcript-summary.test.d.ts +0 -1
  514. package/dist/context/ingest/tools/tool-transcript-summary.test.js +0 -141
  515. package/dist/context/ingest/tools/warehouse-verification/discover-data.tool.test.d.ts +0 -1
  516. package/dist/context/ingest/tools/warehouse-verification/discover-data.tool.test.js +0 -107
  517. package/dist/context/ingest/tools/warehouse-verification/entity-details.tool.test.d.ts +0 -1
  518. package/dist/context/ingest/tools/warehouse-verification/entity-details.tool.test.js +0 -146
  519. package/dist/context/ingest/tools/warehouse-verification/sql-execution.tool.test.d.ts +0 -1
  520. package/dist/context/ingest/tools/warehouse-verification/sql-execution.tool.test.js +0 -50
  521. package/dist/context/ingest/wiki-body-refs.test.d.ts +0 -1
  522. package/dist/context/ingest/wiki-body-refs.test.js +0 -138
  523. package/dist/context/ingest/wiki-sl-ref-repair.test.d.ts +0 -1
  524. package/dist/context/ingest/wiki-sl-ref-repair.test.js +0 -81
  525. package/dist/context/llm/ai-sdk-runtime.test.d.ts +0 -1
  526. package/dist/context/llm/ai-sdk-runtime.test.js +0 -308
  527. package/dist/context/llm/claude-code-env.test.d.ts +0 -1
  528. package/dist/context/llm/claude-code-env.test.js +0 -17
  529. package/dist/context/llm/claude-code-models.test.d.ts +0 -1
  530. package/dist/context/llm/claude-code-models.test.js +0 -15
  531. package/dist/context/llm/claude-code-runtime.test.d.ts +0 -1
  532. package/dist/context/llm/claude-code-runtime.test.js +0 -434
  533. package/dist/context/llm/debug-request-recorder.test.d.ts +0 -1
  534. package/dist/context/llm/debug-request-recorder.test.js +0 -112
  535. package/dist/context/llm/embedding-port.test.d.ts +0 -1
  536. package/dist/context/llm/embedding-port.test.js +0 -34
  537. package/dist/context/llm/local-config.test.d.ts +0 -1
  538. package/dist/context/llm/local-config.test.js +0 -164
  539. package/dist/context/llm/runtime-local-config.test.d.ts +0 -1
  540. package/dist/context/llm/runtime-local-config.test.js +0 -17
  541. package/dist/context/llm/runtime-tools.test.d.ts +0 -1
  542. package/dist/context/llm/runtime-tools.test.js +0 -36
  543. package/dist/context/mcp/local-project-ports.test.d.ts +0 -1
  544. package/dist/context/mcp/local-project-ports.test.js +0 -689
  545. package/dist/context/mcp/server.test.d.ts +0 -1
  546. package/dist/context/mcp/server.test.js +0 -902
  547. package/dist/context/memory/local-memory.test.d.ts +0 -1
  548. package/dist/context/memory/local-memory.test.js +0 -173
  549. package/dist/context/memory/memory-agent.service.ingest.test.d.ts +0 -1
  550. package/dist/context/memory/memory-agent.service.ingest.test.js +0 -355
  551. package/dist/context/memory/memory-agent.service.test.d.ts +0 -1
  552. package/dist/context/memory/memory-agent.service.test.js +0 -413
  553. package/dist/context/memory/memory-runs.test.d.ts +0 -1
  554. package/dist/context/memory/memory-runs.test.js +0 -158
  555. package/dist/context/memory/memory-runtime-assets.test.d.ts +0 -1
  556. package/dist/context/memory/memory-runtime-assets.test.js +0 -162
  557. package/dist/context/project/config.test.d.ts +0 -1
  558. package/dist/context/project/config.test.js +0 -467
  559. package/dist/context/project/driver-schemas.test.d.ts +0 -1
  560. package/dist/context/project/driver-schemas.test.js +0 -125
  561. package/dist/context/project/local-git-file-store.test.d.ts +0 -1
  562. package/dist/context/project/local-git-file-store.test.js +0 -71
  563. package/dist/context/project/mappings-yaml-schema.test.d.ts +0 -1
  564. package/dist/context/project/mappings-yaml-schema.test.js +0 -79
  565. package/dist/context/project/project.test.d.ts +0 -1
  566. package/dist/context/project/project.test.js +0 -55
  567. package/dist/context/project/setup-config.test.d.ts +0 -1
  568. package/dist/context/project/setup-config.test.js +0 -38
  569. package/dist/context/prompts/prompt.service.test.d.ts +0 -1
  570. package/dist/context/prompts/prompt.service.test.js +0 -43
  571. package/dist/context/scan/credentials.test.d.ts +0 -1
  572. package/dist/context/scan/credentials.test.js +0 -162
  573. package/dist/context/scan/data-dictionary.test.d.ts +0 -1
  574. package/dist/context/scan/data-dictionary.test.js +0 -92
  575. package/dist/context/scan/description-generation.test.d.ts +0 -1
  576. package/dist/context/scan/description-generation.test.js +0 -693
  577. package/dist/context/scan/embedding-text.test.d.ts +0 -1
  578. package/dist/context/scan/embedding-text.test.js +0 -36
  579. package/dist/context/scan/enrichment-state.test.d.ts +0 -1
  580. package/dist/context/scan/enrichment-state.test.js +0 -147
  581. package/dist/context/scan/enrichment-summary.test.d.ts +0 -1
  582. package/dist/context/scan/enrichment-summary.test.js +0 -34
  583. package/dist/context/scan/enrichment-types.test.d.ts +0 -1
  584. package/dist/context/scan/enrichment-types.test.js +0 -141
  585. package/dist/context/scan/entity-details.test.d.ts +0 -1
  586. package/dist/context/scan/entity-details.test.js +0 -234
  587. package/dist/context/scan/local-enrichment-artifacts.test.d.ts +0 -1
  588. package/dist/context/scan/local-enrichment-artifacts.test.js +0 -771
  589. package/dist/context/scan/local-enrichment.test.d.ts +0 -1
  590. package/dist/context/scan/local-enrichment.test.js +0 -765
  591. package/dist/context/scan/local-scan.test.d.ts +0 -1
  592. package/dist/context/scan/local-scan.test.js +0 -1663
  593. package/dist/context/scan/local-structural-artifacts.test.d.ts +0 -1
  594. package/dist/context/scan/local-structural-artifacts.test.js +0 -144
  595. package/dist/context/scan/relationship-benchmark-report.test.d.ts +0 -1
  596. package/dist/context/scan/relationship-benchmark-report.test.js +0 -389
  597. package/dist/context/scan/relationship-benchmarks.test.d.ts +0 -1
  598. package/dist/context/scan/relationship-benchmarks.test.js +0 -1072
  599. package/dist/context/scan/relationship-budget.test.d.ts +0 -1
  600. package/dist/context/scan/relationship-budget.test.js +0 -71
  601. package/dist/context/scan/relationship-candidates.test.d.ts +0 -1
  602. package/dist/context/scan/relationship-candidates.test.js +0 -747
  603. package/dist/context/scan/relationship-composite-candidates.test.d.ts +0 -1
  604. package/dist/context/scan/relationship-composite-candidates.test.js +0 -69
  605. package/dist/context/scan/relationship-diagnostics.test.d.ts +0 -1
  606. package/dist/context/scan/relationship-diagnostics.test.js +0 -333
  607. package/dist/context/scan/relationship-discovery.test.d.ts +0 -1
  608. package/dist/context/scan/relationship-discovery.test.js +0 -618
  609. package/dist/context/scan/relationship-formal-metadata.test.d.ts +0 -1
  610. package/dist/context/scan/relationship-formal-metadata.test.js +0 -125
  611. package/dist/context/scan/relationship-graph-resolver.test.d.ts +0 -1
  612. package/dist/context/scan/relationship-graph-resolver.test.js +0 -604
  613. package/dist/context/scan/relationship-llm-proposal.test.d.ts +0 -1
  614. package/dist/context/scan/relationship-llm-proposal.test.js +0 -197
  615. package/dist/context/scan/relationship-locality.test.d.ts +0 -1
  616. package/dist/context/scan/relationship-locality.test.js +0 -128
  617. package/dist/context/scan/relationship-name-similarity.test.d.ts +0 -1
  618. package/dist/context/scan/relationship-name-similarity.test.js +0 -68
  619. package/dist/context/scan/relationship-profiling.test.d.ts +0 -1
  620. package/dist/context/scan/relationship-profiling.test.js +0 -392
  621. package/dist/context/scan/relationship-scoring.test.d.ts +0 -1
  622. package/dist/context/scan/relationship-scoring.test.js +0 -86
  623. package/dist/context/scan/relationship-validation.test.d.ts +0 -1
  624. package/dist/context/scan/relationship-validation.test.js +0 -455
  625. package/dist/context/scan/table-ref.test.d.ts +0 -1
  626. package/dist/context/scan/table-ref.test.js +0 -53
  627. package/dist/context/scan/type-normalization.test.d.ts +0 -1
  628. package/dist/context/scan/type-normalization.test.js +0 -21
  629. package/dist/context/scan/types.test.d.ts +0 -1
  630. package/dist/context/scan/types.test.js +0 -206
  631. package/dist/context/scan/warehouse-catalog.test.d.ts +0 -1
  632. package/dist/context/scan/warehouse-catalog.test.js +0 -158
  633. package/dist/context/search/backend-conformance.test-utils.d.ts +0 -39
  634. package/dist/context/search/backend-conformance.test-utils.js +0 -88
  635. package/dist/context/search/backend-conformance.test-utils.test.d.ts +0 -1
  636. package/dist/context/search/backend-conformance.test-utils.test.js +0 -408
  637. package/dist/context/search/discover.test.d.ts +0 -1
  638. package/dist/context/search/discover.test.js +0 -197
  639. package/dist/context/search/hybrid-search-core.test.d.ts +0 -1
  640. package/dist/context/search/hybrid-search-core.test.js +0 -113
  641. package/dist/context/search/pglite-owner-process.test.d.ts +0 -1
  642. package/dist/context/search/pglite-owner-process.test.js +0 -273
  643. package/dist/context/search/pglite-runtime-boundary.test.d.ts +0 -1
  644. package/dist/context/search/pglite-runtime-boundary.test.js +0 -40
  645. package/dist/context/search/pglite-spike.test.d.ts +0 -1
  646. package/dist/context/search/pglite-spike.test.js +0 -249
  647. package/dist/context/search/query.test.d.ts +0 -1
  648. package/dist/context/search/query.test.js +0 -23
  649. package/dist/context/search/rrf.test.d.ts +0 -1
  650. package/dist/context/search/rrf.test.js +0 -47
  651. package/dist/context/skills/skills-registry.service.test.d.ts +0 -1
  652. package/dist/context/skills/skills-registry.service.test.js +0 -161
  653. package/dist/context/sl/dictionary-search.test.d.ts +0 -1
  654. package/dist/context/sl/dictionary-search.test.js +0 -204
  655. package/dist/context/sl/local-query.test.d.ts +0 -1
  656. package/dist/context/sl/local-query.test.js +0 -283
  657. package/dist/context/sl/local-sl.test.d.ts +0 -1
  658. package/dist/context/sl/local-sl.test.js +0 -334
  659. package/dist/context/sl/pglite-sl-search-prototype.test.d.ts +0 -1
  660. package/dist/context/sl/pglite-sl-search-prototype.test.js +0 -240
  661. package/dist/context/sl/schemas.contract.test.d.ts +0 -1
  662. package/dist/context/sl/schemas.contract.test.js +0 -62
  663. package/dist/context/sl/semantic-layer.service.test.d.ts +0 -1
  664. package/dist/context/sl/semantic-layer.service.test.js +0 -1107
  665. package/dist/context/sl/sl-dictionary-profile.test.d.ts +0 -1
  666. package/dist/context/sl/sl-dictionary-profile.test.js +0 -88
  667. package/dist/context/sl/sl-search.service.test.d.ts +0 -1
  668. package/dist/context/sl/sl-search.service.test.js +0 -256
  669. package/dist/context/sl/sqlite-sl-sources-index.test.d.ts +0 -1
  670. package/dist/context/sl/sqlite-sl-sources-index.test.js +0 -175
  671. package/dist/context/sl/tools/connection-id-schema.test.d.ts +0 -1
  672. package/dist/context/sl/tools/connection-id-schema.test.js +0 -14
  673. package/dist/context/sl/tools/sl-discover.tool.test.d.ts +0 -1
  674. package/dist/context/sl/tools/sl-discover.tool.test.js +0 -72
  675. package/dist/context/sl/tools/sl-edit-source.tool.test.d.ts +0 -1
  676. package/dist/context/sl/tools/sl-edit-source.tool.test.js +0 -184
  677. package/dist/context/sl/tools/sl-read-source.tool.session.test.d.ts +0 -1
  678. package/dist/context/sl/tools/sl-read-source.tool.session.test.js +0 -55
  679. package/dist/context/sl/tools/sl-rollback.tool.test.d.ts +0 -1
  680. package/dist/context/sl/tools/sl-rollback.tool.test.js +0 -57
  681. package/dist/context/sl/tools/sl-validate.tool.test.d.ts +0 -1
  682. package/dist/context/sl/tools/sl-validate.tool.test.js +0 -54
  683. package/dist/context/sl/tools/sl-warehouse-validation.test.d.ts +0 -1
  684. package/dist/context/sl/tools/sl-warehouse-validation.test.js +0 -136
  685. package/dist/context/sl/tools/sl-write-source.tool.test.d.ts +0 -1
  686. package/dist/context/sl/tools/sl-write-source.tool.test.js +0 -307
  687. package/dist/context/sql-analysis/http-sql-analysis-port.test.d.ts +0 -1
  688. package/dist/context/sql-analysis/http-sql-analysis-port.test.js +0 -147
  689. package/dist/context/test/make-local-git-repo.d.ts +0 -10
  690. package/dist/context/test/make-local-git-repo.js +0 -34
  691. package/dist/context/tools/context-evidence-tools.test.d.ts +0 -1
  692. package/dist/context/tools/context-evidence-tools.test.js +0 -486
  693. package/dist/context/tools/touched-sl-sources.test.d.ts +0 -1
  694. package/dist/context/tools/touched-sl-sources.test.js +0 -31
  695. package/dist/context/wiki/knowledge-wiki.service.test.d.ts +0 -1
  696. package/dist/context/wiki/knowledge-wiki.service.test.js +0 -205
  697. package/dist/context/wiki/local-knowledge.test.d.ts +0 -1
  698. package/dist/context/wiki/local-knowledge.test.js +0 -270
  699. package/dist/context/wiki/sqlite-knowledge-index.test.d.ts +0 -1
  700. package/dist/context/wiki/sqlite-knowledge-index.test.js +0 -129
  701. package/dist/context/wiki/tools/wiki-list-tags.tool.test.d.ts +0 -1
  702. package/dist/context/wiki/tools/wiki-list-tags.tool.test.js +0 -35
  703. package/dist/context/wiki/tools/wiki-read.tool.test.d.ts +0 -1
  704. package/dist/context/wiki/tools/wiki-read.tool.test.js +0 -66
  705. package/dist/context/wiki/tools/wiki-remove.tool.test.d.ts +0 -1
  706. package/dist/context/wiki/tools/wiki-remove.tool.test.js +0 -95
  707. package/dist/context/wiki/tools/wiki-search.tool.test.d.ts +0 -1
  708. package/dist/context/wiki/tools/wiki-search.tool.test.js +0 -35
  709. package/dist/context/wiki/tools/wiki-write.tool.test.d.ts +0 -1
  710. package/dist/context/wiki/tools/wiki-write.tool.test.js +0 -264
  711. package/dist/context/wiki/wiki-ref-validation.test.d.ts +0 -1
  712. package/dist/context/wiki/wiki-ref-validation.test.js +0 -64
  713. package/dist/context-build-view.test.d.ts +0 -1
  714. package/dist/context-build-view.test.js +0 -942
  715. package/dist/database-tree-picker.test.d.ts +0 -1
  716. package/dist/database-tree-picker.test.js +0 -188
  717. package/dist/demo-assets.test.d.ts +0 -1
  718. package/dist/demo-assets.test.js +0 -121
  719. package/dist/demo-metrics.test.d.ts +0 -1
  720. package/dist/demo-metrics.test.js +0 -108
  721. package/dist/doctor.test.d.ts +0 -1
  722. package/dist/doctor.test.js +0 -596
  723. package/dist/embedding-resolution.test.d.ts +0 -1
  724. package/dist/embedding-resolution.test.js +0 -132
  725. package/dist/example-smoke.test.d.ts +0 -1
  726. package/dist/example-smoke.test.js +0 -83
  727. package/dist/index.test.d.ts +0 -1
  728. package/dist/index.test.js +0 -1300
  729. package/dist/ingest-query-executor.test.d.ts +0 -1
  730. package/dist/ingest-query-executor.test.js +0 -71
  731. package/dist/ingest-report-file.test.d.ts +0 -1
  732. package/dist/ingest-report-file.test.js +0 -63
  733. package/dist/ingest-viz.test.d.ts +0 -1
  734. package/dist/ingest-viz.test.js +0 -691
  735. package/dist/ingest.test-utils.d.ts +0 -126
  736. package/dist/ingest.test-utils.js +0 -629
  737. package/dist/ingest.test.d.ts +0 -1
  738. package/dist/ingest.test.js +0 -1568
  739. package/dist/io/logger.test.d.ts +0 -1
  740. package/dist/io/logger.test.js +0 -55
  741. package/dist/io/mode.test.d.ts +0 -1
  742. package/dist/io/mode.test.js +0 -48
  743. package/dist/io/print-list.test.d.ts +0 -1
  744. package/dist/io/print-list.test.js +0 -277
  745. package/dist/knowledge.test.d.ts +0 -1
  746. package/dist/knowledge.test.js +0 -198
  747. package/dist/llm/embedding-health.test.d.ts +0 -1
  748. package/dist/llm/embedding-health.test.js +0 -72
  749. package/dist/llm/embedding-provider.test.d.ts +0 -1
  750. package/dist/llm/embedding-provider.test.js +0 -84
  751. package/dist/llm/message-builder.test.d.ts +0 -1
  752. package/dist/llm/message-builder.test.js +0 -127
  753. package/dist/llm/model-health.test.d.ts +0 -1
  754. package/dist/llm/model-health.test.js +0 -55
  755. package/dist/llm/model-provider.test.d.ts +0 -1
  756. package/dist/llm/model-provider.test.js +0 -246
  757. package/dist/llm/repair.test.d.ts +0 -1
  758. package/dist/llm/repair.test.js +0 -78
  759. package/dist/local-adapters.test.d.ts +0 -1
  760. package/dist/local-adapters.test.js +0 -166
  761. package/dist/local-scan-connectors.test.d.ts +0 -1
  762. package/dist/local-scan-connectors.test.js +0 -92
  763. package/dist/managed-local-embeddings.test.d.ts +0 -1
  764. package/dist/managed-local-embeddings.test.js +0 -229
  765. package/dist/managed-mcp-daemon.test.d.ts +0 -1
  766. package/dist/managed-mcp-daemon.test.js +0 -187
  767. package/dist/managed-python-command.test.d.ts +0 -1
  768. package/dist/managed-python-command.test.js +0 -262
  769. package/dist/managed-python-daemon.test.d.ts +0 -1
  770. package/dist/managed-python-daemon.test.js +0 -360
  771. package/dist/managed-python-http.test.d.ts +0 -1
  772. package/dist/managed-python-http.test.js +0 -177
  773. package/dist/managed-python-runtime.test.d.ts +0 -1
  774. package/dist/managed-python-runtime.test.js +0 -426
  775. package/dist/mcp-http-server.test.d.ts +0 -1
  776. package/dist/mcp-http-server.test.js +0 -209
  777. package/dist/mcp-server-factory.test.d.ts +0 -1
  778. package/dist/mcp-server-factory.test.js +0 -142
  779. package/dist/memory-flow-interactive.test.d.ts +0 -1
  780. package/dist/memory-flow-interactive.test.js +0 -109
  781. package/dist/memory-flow-tui.test.d.ts +0 -1
  782. package/dist/memory-flow-tui.test.js +0 -247
  783. package/dist/next-steps.test.d.ts +0 -1
  784. package/dist/next-steps.test.js +0 -77
  785. package/dist/notion-page-picker.test.d.ts +0 -1
  786. package/dist/notion-page-picker.test.js +0 -244
  787. package/dist/print-command-tree.test.d.ts +0 -1
  788. package/dist/print-command-tree.test.js +0 -37
  789. package/dist/project-dir.test.d.ts +0 -1
  790. package/dist/project-dir.test.js +0 -124
  791. package/dist/project-resolver.test.d.ts +0 -1
  792. package/dist/project-resolver.test.js +0 -49
  793. package/dist/prompt-navigation.test.d.ts +0 -1
  794. package/dist/prompt-navigation.test.js +0 -33
  795. package/dist/proxy-env.test.d.ts +0 -1
  796. package/dist/proxy-env.test.js +0 -17
  797. package/dist/public-ingest-copy.test.d.ts +0 -1
  798. package/dist/public-ingest-copy.test.js +0 -24
  799. package/dist/public-ingest.test.d.ts +0 -1
  800. package/dist/public-ingest.test.js +0 -891
  801. package/dist/runtime-requirements.test.d.ts +0 -1
  802. package/dist/runtime-requirements.test.js +0 -73
  803. package/dist/runtime.test.d.ts +0 -1
  804. package/dist/runtime.test.js +0 -381
  805. package/dist/scan.test.d.ts +0 -1
  806. package/dist/scan.test.js +0 -1123
  807. package/dist/setup-agents.test.d.ts +0 -1
  808. package/dist/setup-agents.test.js +0 -1028
  809. package/dist/setup-context.test.d.ts +0 -1
  810. package/dist/setup-context.test.js +0 -491
  811. package/dist/setup-databases.test.d.ts +0 -1
  812. package/dist/setup-databases.test.js +0 -2101
  813. package/dist/setup-demo-tour.test.d.ts +0 -1
  814. package/dist/setup-demo-tour.test.js +0 -221
  815. package/dist/setup-embeddings.test.d.ts +0 -1
  816. package/dist/setup-embeddings.test.js +0 -436
  817. package/dist/setup-interrupt.test.d.ts +0 -1
  818. package/dist/setup-interrupt.test.js +0 -77
  819. package/dist/setup-models.test.d.ts +0 -1
  820. package/dist/setup-models.test.js +0 -885
  821. package/dist/setup-project.test.d.ts +0 -1
  822. package/dist/setup-project.test.js +0 -209
  823. package/dist/setup-prompts.test.d.ts +0 -1
  824. package/dist/setup-prompts.test.js +0 -208
  825. package/dist/setup-ready-menu.test.d.ts +0 -1
  826. package/dist/setup-ready-menu.test.js +0 -44
  827. package/dist/setup-runtime.test.d.ts +0 -1
  828. package/dist/setup-runtime.test.js +0 -111
  829. package/dist/setup-secrets.test.d.ts +0 -1
  830. package/dist/setup-secrets.test.js +0 -30
  831. package/dist/setup-sources-notion.test.d.ts +0 -1
  832. package/dist/setup-sources-notion.test.js +0 -109
  833. package/dist/setup-sources.test.d.ts +0 -1
  834. package/dist/setup-sources.test.js +0 -1303
  835. package/dist/setup.test.d.ts +0 -1
  836. package/dist/setup.test.js +0 -1825
  837. package/dist/sl.test.d.ts +0 -1
  838. package/dist/sl.test.js +0 -567
  839. package/dist/source-mapping.test.d.ts +0 -1
  840. package/dist/source-mapping.test.js +0 -65
  841. package/dist/sql.test.d.ts +0 -1
  842. package/dist/sql.test.js +0 -253
  843. package/dist/standalone-smoke.test.d.ts +0 -1
  844. package/dist/standalone-smoke.test.js +0 -250
  845. package/dist/status-project.test.d.ts +0 -1
  846. package/dist/status-project.test.js +0 -502
  847. package/dist/telemetry/command-hook.test.d.ts +0 -1
  848. package/dist/telemetry/command-hook.test.js +0 -31
  849. package/dist/telemetry/demo-detect.test.d.ts +0 -1
  850. package/dist/telemetry/demo-detect.test.js +0 -22
  851. package/dist/telemetry/emitter.test.d.ts +0 -1
  852. package/dist/telemetry/emitter.test.js +0 -103
  853. package/dist/telemetry/events.snapshot.test.d.ts +0 -1
  854. package/dist/telemetry/events.snapshot.test.js +0 -135
  855. package/dist/telemetry/events.test.d.ts +0 -1
  856. package/dist/telemetry/events.test.js +0 -136
  857. package/dist/telemetry/identity.test.d.ts +0 -1
  858. package/dist/telemetry/identity.test.js +0 -148
  859. package/dist/telemetry/project-snapshot.test.d.ts +0 -1
  860. package/dist/telemetry/project-snapshot.test.js +0 -71
  861. package/dist/telemetry/schema-writer.test.d.ts +0 -1
  862. package/dist/telemetry/schema-writer.test.js +0 -23
  863. package/dist/telemetry/scrubber.test.d.ts +0 -1
  864. package/dist/telemetry/scrubber.test.js +0 -21
  865. package/dist/text-ingest.test.d.ts +0 -1
  866. package/dist/text-ingest.test.js +0 -247
  867. package/dist/tree-picker-state.test.d.ts +0 -1
  868. package/dist/tree-picker-state.test.js +0 -303
  869. package/dist/tree-picker-tui.test.d.ts +0 -1
  870. package/dist/tree-picker-tui.test.js +0 -248
  871. package/dist/viz-fallback.test.d.ts +0 -1
  872. package/dist/viz-fallback.test.js +0 -77
@@ -1 +0,0 @@
1
- export {};
@@ -1,221 +0,0 @@
1
- import { describe, expect, it, vi } from 'vitest';
2
- import { buildDemoReplayTimeline, DEMO_REPLAY_TARGETS, renderDemoAgentTransition, renderDemoBanner, renderDemoCardContent, renderDemoCompletionSummary, runDemoTour, } from './setup-demo-tour.js';
3
- /** Strip ANSI escape sequences for plain-text assertions. */
4
- function stripAnsi(text) {
5
- return text.replace(/\x1b\[[0-9;]*m/g, '');
6
- }
7
- describe('renderDemoBanner', () => {
8
- it('contains "Demo mode"', () => {
9
- const plain = stripAnsi(renderDemoBanner());
10
- expect(plain).toContain('Demo mode');
11
- });
12
- it('mentions pre-processed data', () => {
13
- const plain = stripAnsi(renderDemoBanner());
14
- expect(plain).toContain('pre-processed');
15
- });
16
- it('mentions read-only', () => {
17
- const plain = stripAnsi(renderDemoBanner());
18
- expect(plain).toContain('read-only');
19
- });
20
- });
21
- describe('renderDemoCardContent', () => {
22
- it('contains the title', () => {
23
- const plain = stripAnsi(renderDemoCardContent('Database connection', ['Postgres']));
24
- expect(plain).toContain('Database connection');
25
- });
26
- it('contains each selection', () => {
27
- const plain = stripAnsi(renderDemoCardContent('Sources', ['dbt', 'metabase']));
28
- expect(plain).toContain('dbt');
29
- expect(plain).toContain('metabase');
30
- });
31
- it('contains navigation hints', () => {
32
- const plain = stripAnsi(renderDemoCardContent('Title', ['a']));
33
- expect(plain).toContain('Press Enter to continue');
34
- expect(plain).toContain('Escape to go back');
35
- });
36
- it('works with multiple selections', () => {
37
- const result = renderDemoCardContent('Pick', ['one', 'two', 'three']);
38
- const plain = stripAnsi(result);
39
- expect(plain).toContain('one');
40
- expect(plain).toContain('two');
41
- expect(plain).toContain('three');
42
- // Each selection gets a ▸ bullet
43
- const bullets = (plain.match(/▸/g) ?? []).length;
44
- expect(bullets).toBe(3);
45
- });
46
- });
47
- describe('renderDemoAgentTransition', () => {
48
- it('contains "Demo project is ready"', () => {
49
- const plain = stripAnsi(renderDemoAgentTransition());
50
- expect(plain).toContain('Demo project is ready');
51
- });
52
- it('mentions connecting an agent', () => {
53
- const plain = stripAnsi(renderDemoAgentTransition());
54
- expect(plain).toContain('connect your agent');
55
- });
56
- });
57
- describe('renderDemoCompletionSummary', () => {
58
- const projectDir = '/tmp/ktx-demo-123';
59
- it('includes the project path', () => {
60
- const plain = stripAnsi(renderDemoCompletionSummary(projectDir, true));
61
- expect(plain).toContain(projectDir);
62
- });
63
- it('includes a temp directory warning', () => {
64
- const plain = stripAnsi(renderDemoCompletionSummary(projectDir, true));
65
- expect(plain).toContain('temporary directory');
66
- });
67
- it('points to ktx setup for real data', () => {
68
- const plain = stripAnsi(renderDemoCompletionSummary(projectDir, true));
69
- expect(plain).toContain('ktx setup');
70
- });
71
- it('shows agent-connected message when installed', () => {
72
- const plain = stripAnsi(renderDemoCompletionSummary(projectDir, true));
73
- expect(plain).toContain('agent is connected');
74
- });
75
- it('includes star headline', () => {
76
- const plain = stripAnsi(renderDemoCompletionSummary(projectDir, true));
77
- expect(plain).toContain('★ KTX demo is ready');
78
- });
79
- it('shows manual instructions when agent not installed', () => {
80
- const plain = stripAnsi(renderDemoCompletionSummary(projectDir, false));
81
- expect(plain).toContain('--agents');
82
- expect(plain).toContain(`--project-dir ${projectDir}`);
83
- });
84
- });
85
- describe('buildDemoReplayTimeline', () => {
86
- const timeline = buildDemoReplayTimeline();
87
- const connectionIds = new Set(timeline.map((e) => e.connectionId));
88
- it('produces events for all 4 targets', () => {
89
- expect(connectionIds.size).toBe(4);
90
- expect(connectionIds).toContain('postgres-warehouse');
91
- expect(connectionIds).toContain('dbt-main');
92
- expect(connectionIds).toContain('metabase-main');
93
- expect(connectionIds).toContain('notion-main');
94
- });
95
- it('all targets end as done', () => {
96
- for (const id of connectionIds) {
97
- const events = timeline.filter((e) => e.connectionId === id);
98
- const last = events[events.length - 1];
99
- expect(last.status).toBe('done');
100
- }
101
- });
102
- it('events are sorted by delayMs', () => {
103
- for (let i = 1; i < timeline.length; i++) {
104
- expect(timeline[i].delayMs).toBeGreaterThanOrEqual(timeline[i - 1].delayMs);
105
- }
106
- });
107
- it('uses schema-context wording for database progress', () => {
108
- const renderedTimeline = timeline
109
- .map((event) => [event.detailLine, event.summaryText].filter(Boolean).join(' '))
110
- .join('\n');
111
- expect(renderedTimeline).toContain('reading schema');
112
- expect(renderedTimeline).toContain('56 tables');
113
- expect(renderedTimeline).not.toContain('scanning');
114
- expect(renderedTimeline).not.toContain('scanned');
115
- });
116
- });
117
- describe('DEMO_REPLAY_TARGETS', () => {
118
- it('has 1 primary source', () => {
119
- expect(DEMO_REPLAY_TARGETS.primarySources).toHaveLength(1);
120
- });
121
- it('has 3 context sources', () => {
122
- expect(DEMO_REPLAY_TARGETS.contextSources).toHaveLength(3);
123
- });
124
- it('primary source is a database-ingest operation', () => {
125
- expect(DEMO_REPLAY_TARGETS.primarySources[0].operation).toBe('database-ingest');
126
- });
127
- it('context sources are source-ingest operations', () => {
128
- for (const source of DEMO_REPLAY_TARGETS.contextSources) {
129
- expect(source.operation).toBe('source-ingest');
130
- }
131
- });
132
- });
133
- describe('runDemoTour', () => {
134
- function createMockIo() {
135
- const chunks = [];
136
- return {
137
- io: {
138
- stdout: { isTTY: true, columns: 80, write: (chunk) => { chunks.push(chunk); } },
139
- stderr: { write: () => { } },
140
- },
141
- chunks,
142
- };
143
- }
144
- it('returns 0 on successful tour with agent installed', async () => {
145
- const { io, chunks } = createMockIo();
146
- const mockAgents = vi.fn().mockResolvedValue({
147
- status: 'ready',
148
- projectDir: '/tmp/test',
149
- installs: [{ target: 'claude-code', scope: 'project', mode: 'mcp-cli' }],
150
- });
151
- const navigation = vi.fn().mockResolvedValue('forward');
152
- const result = await runDemoTour({ inputMode: 'auto' }, io, {
153
- agents: mockAgents,
154
- waitForNavigation: navigation,
155
- skipReplayAnimation: true,
156
- ensureProject: vi.fn().mockResolvedValue({ projectDir: '/tmp/test' }),
157
- });
158
- expect(result).toBe(0);
159
- expect(mockAgents).toHaveBeenCalled();
160
- // Should have rendered completion summary
161
- const allOutput = chunks.join('');
162
- expect(allOutput).toContain('agent is connected');
163
- });
164
- it('handles back navigation from first step by exiting', async () => {
165
- const { io } = createMockIo();
166
- const navigation = vi.fn().mockResolvedValue('back');
167
- const result = await runDemoTour({ inputMode: 'auto' }, io, {
168
- waitForNavigation: navigation,
169
- skipReplayAnimation: true,
170
- ensureProject: vi.fn().mockResolvedValue({ projectDir: '/tmp/test' }),
171
- });
172
- expect(result).toBe(0);
173
- // Navigation called once for intro, then exits on back
174
- expect(navigation).toHaveBeenCalledTimes(1);
175
- });
176
- it('goes back from sources to databases', async () => {
177
- const { io } = createMockIo();
178
- let callCount = 0;
179
- const navigation = vi.fn().mockImplementation(() => {
180
- callCount++;
181
- // First call (intro): forward
182
- // Second call (databases): forward
183
- // Third call (sources): back
184
- // Fourth call (databases again): back (exit)
185
- if (callCount <= 2)
186
- return Promise.resolve('forward');
187
- return Promise.resolve('back');
188
- });
189
- const result = await runDemoTour({ inputMode: 'auto' }, io, {
190
- waitForNavigation: navigation,
191
- skipReplayAnimation: true,
192
- ensureProject: vi.fn().mockResolvedValue({ projectDir: '/tmp/test' }),
193
- });
194
- expect(result).toBe(0);
195
- expect(navigation).toHaveBeenCalledTimes(4);
196
- });
197
- it('handles agent step returning back', async () => {
198
- const { io } = createMockIo();
199
- let navCount = 0;
200
- const navigation = vi.fn().mockImplementation(() => {
201
- navCount++;
202
- // Forward through intro, databases, sources, context
203
- // Then back from context (after agents returns back)
204
- // Then back from sources, then back from databases (exit)
205
- if (navCount <= 4)
206
- return Promise.resolve('forward');
207
- return Promise.resolve('back');
208
- });
209
- const mockAgents = vi.fn().mockResolvedValue({
210
- status: 'back',
211
- projectDir: '/tmp/test',
212
- });
213
- const result = await runDemoTour({ inputMode: 'auto' }, io, {
214
- agents: mockAgents,
215
- waitForNavigation: navigation,
216
- skipReplayAnimation: true,
217
- ensureProject: vi.fn().mockResolvedValue({ projectDir: '/tmp/test' }),
218
- });
219
- expect(result).toBe(0);
220
- });
221
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,436 +0,0 @@
1
- import { mkdir, mkdtemp, readFile, rm, writeFile } from 'node:fs/promises';
2
- import { tmpdir } from 'node:os';
3
- import { join } from 'node:path';
4
- import { initKtxProject } from './context/project/project.js';
5
- import { parseKtxProjectConfig } from './context/project/config.js';
6
- import { readKtxSetupState, writeKtxSetupState } from './context/project/setup-config.js';
7
- import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
8
- import { runKtxSetupEmbeddingsStep } from './setup-embeddings.js';
9
- const EMBEDDING_OPTION_PROMPT_MESSAGE = [
10
- 'Which embedding option should KTX use?',
11
- '',
12
- 'KTX uses embeddings for semantic search over semantic-layer sources, wiki context, schema metadata, ' +
13
- 'and relationship evidence.',
14
- ].join('\n');
15
- function makeIo() {
16
- let stdout = '';
17
- let stderr = '';
18
- return {
19
- io: {
20
- stdout: {
21
- isTTY: true,
22
- write: (chunk) => {
23
- stdout += chunk;
24
- },
25
- },
26
- stderr: {
27
- write: (chunk) => {
28
- stderr += chunk;
29
- },
30
- },
31
- },
32
- stdout: () => stdout,
33
- stderr: () => stderr,
34
- };
35
- }
36
- function makePromptAdapter(options) {
37
- const selectValues = [...(options.selectValues ?? [])];
38
- return {
39
- select: vi.fn(async () => selectValues.shift() ?? 'retry'),
40
- password: vi.fn(async () => options.passwordValue ?? 'embedding-secret'),
41
- cancel: vi.fn(),
42
- };
43
- }
44
- function managedDaemon(baseUrl = 'http://127.0.0.1:61234', logs = {}) {
45
- return {
46
- baseUrl,
47
- stdoutLog: logs.stdoutLog ?? '/tmp/ktx-daemon.stdout.log',
48
- stderrLog: logs.stderrLog ?? '/tmp/ktx-daemon.stderr.log',
49
- };
50
- }
51
- describe('setup embeddings step', () => {
52
- let tempDir;
53
- beforeEach(async () => {
54
- tempDir = await mkdtemp(join(tmpdir(), 'ktx-setup-embeddings-'));
55
- await initKtxProject({ projectDir: tempDir });
56
- });
57
- afterEach(async () => {
58
- await rm(tempDir, { recursive: true, force: true });
59
- });
60
- it('explains why interactive users choose an embedding option before validating embeddings', async () => {
61
- const io = makeIo();
62
- const healthCheck = vi.fn(async () => ({ ok: true }));
63
- const prompts = makePromptAdapter({ selectValues: ['back'] });
64
- const result = await runKtxSetupEmbeddingsStep({
65
- projectDir: tempDir,
66
- inputMode: 'auto',
67
- cliVersion: '0.2.0',
68
- runtimeInstallPolicy: 'auto',
69
- skipEmbeddings: false,
70
- }, io.io, { prompts, env: {}, healthCheck });
71
- expect(result.status).toBe('back');
72
- expect(healthCheck).not.toHaveBeenCalled();
73
- expect(prompts.select).toHaveBeenCalledWith({
74
- message: EMBEDDING_OPTION_PROMPT_MESSAGE,
75
- options: [
76
- { value: 'sentence-transformers', label: 'Local sentence-transformers embeddings' },
77
- { value: 'openai', label: 'OpenAI embeddings', hint: 'recommended' },
78
- { value: 'back', label: 'Back' },
79
- ],
80
- });
81
- });
82
- it('returns from the OpenAI credential prompt to embedding option selection when Back is selected', async () => {
83
- const io = makeIo();
84
- const healthCheck = vi.fn(async () => ({ ok: true }));
85
- const prompts = makePromptAdapter({ selectValues: ['openai', 'back', 'sentence-transformers'] });
86
- const result = await runKtxSetupEmbeddingsStep({
87
- projectDir: tempDir,
88
- inputMode: 'auto',
89
- cliVersion: '0.2.0',
90
- runtimeInstallPolicy: 'auto',
91
- skipEmbeddings: false,
92
- }, io.io, { prompts, env: {}, healthCheck, ensureLocalEmbeddings: vi.fn(async () => managedDaemon()) });
93
- expect(result.status).toBe('ready');
94
- expect(healthCheck).toHaveBeenCalledTimes(1);
95
- expect(healthCheck).toHaveBeenCalledWith({
96
- backend: 'sentence-transformers',
97
- model: 'all-MiniLM-L6-v2',
98
- dimensions: 384,
99
- sentenceTransformers: { baseURL: 'http://127.0.0.1:61234', pathPrefix: '' },
100
- });
101
- expect(vi.mocked(prompts.select).mock.calls.map((call) => call[0].message)).toEqual([
102
- EMBEDDING_OPTION_PROMPT_MESSAGE,
103
- 'How should KTX find your OpenAI embedding API key?',
104
- EMBEDDING_OPTION_PROMPT_MESSAGE,
105
- ]);
106
- });
107
- it('configures local sentence-transformers embeddings after interactive selection', async () => {
108
- const io = makeIo();
109
- const healthCheck = vi.fn(async () => ({ ok: true }));
110
- const prompts = makePromptAdapter({ selectValues: ['sentence-transformers'] });
111
- const ensureLocalEmbeddings = vi.fn(async () => managedDaemon());
112
- const spinnerEvents = [];
113
- const spinner = vi.fn(() => ({
114
- start: (msg) => spinnerEvents.push(`start:${msg}`),
115
- message: (msg) => spinnerEvents.push(`message:${msg}`),
116
- stop: (msg) => spinnerEvents.push(`stop:${msg}`),
117
- error: (msg) => spinnerEvents.push(`error:${msg}`),
118
- }));
119
- const result = await runKtxSetupEmbeddingsStep({
120
- projectDir: tempDir,
121
- inputMode: 'auto',
122
- cliVersion: '0.2.0',
123
- runtimeInstallPolicy: 'auto',
124
- skipEmbeddings: false,
125
- }, io.io, { prompts, env: {}, healthCheck, ensureLocalEmbeddings, spinner });
126
- expect(result.status).toBe('ready');
127
- expect(ensureLocalEmbeddings).toHaveBeenCalledWith({
128
- cliVersion: '0.2.0',
129
- projectDir: tempDir,
130
- installPolicy: 'auto',
131
- io: io.io,
132
- });
133
- expect(healthCheck).toHaveBeenCalledWith({
134
- backend: 'sentence-transformers',
135
- model: 'all-MiniLM-L6-v2',
136
- dimensions: 384,
137
- sentenceTransformers: { baseURL: 'http://127.0.0.1:61234', pathPrefix: '' },
138
- });
139
- const config = parseKtxProjectConfig(await readFile(join(tempDir, 'ktx.yaml'), 'utf-8'));
140
- expect(config.ingest.embeddings).toMatchObject({
141
- backend: 'sentence-transformers',
142
- model: 'all-MiniLM-L6-v2',
143
- dimensions: 384,
144
- });
145
- expect(config.ingest.embeddings.sentenceTransformers).toBeUndefined();
146
- expect(config.scan.enrichment.embeddings).toMatchObject(config.ingest.embeddings);
147
- expect(await readFile(join(tempDir, 'ktx.yaml'), 'utf-8')).not.toContain('completed_steps:');
148
- expect((await readKtxSetupState(tempDir)).completed_steps).toContain('embeddings');
149
- expect(spinnerEvents).toContainEqual('start:Testing local embeddings (all-MiniLM-L6-v2)');
150
- expect(io.stdout()).toContain('Embeddings ready: yes');
151
- });
152
- it('uses a short non-animated local embeddings health-check status by default', async () => {
153
- const io = makeIo();
154
- const healthCheck = vi.fn(async () => ({ ok: true }));
155
- const prompts = makePromptAdapter({ selectValues: ['sentence-transformers'] });
156
- const result = await runKtxSetupEmbeddingsStep({
157
- projectDir: tempDir,
158
- inputMode: 'auto',
159
- cliVersion: '0.2.0',
160
- runtimeInstallPolicy: 'auto',
161
- skipEmbeddings: false,
162
- }, io.io, { prompts, env: {}, healthCheck, ensureLocalEmbeddings: vi.fn(async () => managedDaemon()) });
163
- expect(result.status).toBe('ready');
164
- expect(io.stderr()).toContain('Testing local embeddings (all-MiniLM-L6-v2)');
165
- expect(io.stderr()).not.toContain('First run may take up to 60 seconds');
166
- expect(io.stderr().match(/Testing local embeddings/g)).toHaveLength(1);
167
- });
168
- it('shows live progress while local sentence-transformers embeddings are being tested', async () => {
169
- const io = makeIo();
170
- const prompts = makePromptAdapter({ selectValues: ['sentence-transformers'] });
171
- let resolveHealthCheck;
172
- const healthCheck = vi.fn(() => new Promise((resolve) => {
173
- resolveHealthCheck = resolve;
174
- }));
175
- const spinnerEvents = [];
176
- const spinner = vi.fn(() => ({
177
- start: (msg) => spinnerEvents.push(`start:${msg}`),
178
- message: (msg) => spinnerEvents.push(`message:${msg}`),
179
- stop: (msg) => spinnerEvents.push(`stop:${msg}`),
180
- error: (msg) => spinnerEvents.push(`error:${msg}`),
181
- }));
182
- const result = runKtxSetupEmbeddingsStep({
183
- projectDir: tempDir,
184
- inputMode: 'auto',
185
- cliVersion: '0.2.0',
186
- runtimeInstallPolicy: 'auto',
187
- skipEmbeddings: false,
188
- }, io.io, { prompts, env: {}, healthCheck, ensureLocalEmbeddings: vi.fn(async () => managedDaemon()), spinner });
189
- await vi.waitFor(() => {
190
- expect(spinnerEvents).toContainEqual('start:Testing local embeddings (all-MiniLM-L6-v2)');
191
- });
192
- expect(resolveHealthCheck).toBeDefined();
193
- resolveHealthCheck?.({ ok: true });
194
- await expect(result).resolves.toMatchObject({ status: 'ready' });
195
- });
196
- it('uses default local sentence-transformers embeddings in non-interactive setup', async () => {
197
- const io = makeIo();
198
- const healthCheck = vi.fn(async () => ({ ok: true }));
199
- const result = await runKtxSetupEmbeddingsStep({
200
- projectDir: tempDir,
201
- inputMode: 'disabled',
202
- cliVersion: '0.2.0',
203
- runtimeInstallPolicy: 'auto',
204
- skipEmbeddings: false,
205
- }, io.io, { env: {}, healthCheck, ensureLocalEmbeddings: vi.fn(async () => managedDaemon()) });
206
- expect(result.status).toBe('ready');
207
- expect(healthCheck).toHaveBeenCalledWith({
208
- backend: 'sentence-transformers',
209
- model: 'all-MiniLM-L6-v2',
210
- dimensions: 384,
211
- sentenceTransformers: { baseURL: 'http://127.0.0.1:61234', pathPrefix: '' },
212
- });
213
- const config = parseKtxProjectConfig(await readFile(join(tempDir, 'ktx.yaml'), 'utf-8'));
214
- expect(config.ingest.embeddings).toMatchObject({
215
- backend: 'sentence-transformers',
216
- model: 'all-MiniLM-L6-v2',
217
- dimensions: 384,
218
- });
219
- expect(config.ingest.embeddings.sentenceTransformers).toBeUndefined();
220
- expect(config.scan.enrichment.embeddings).toMatchObject(config.ingest.embeddings);
221
- expect(await readFile(join(tempDir, 'ktx.yaml'), 'utf-8')).not.toContain('completed_steps:');
222
- expect((await readKtxSetupState(tempDir)).completed_steps).toContain('embeddings');
223
- });
224
- it('fails non-interactive local setup when the managed local embeddings runtime is missing', async () => {
225
- const io = makeIo();
226
- const ensureLocalEmbeddings = vi.fn(async () => {
227
- throw new Error('KTX Python runtime is required for this command. Run: ktx admin runtime install --feature local-embeddings --yes');
228
- });
229
- const result = await runKtxSetupEmbeddingsStep({
230
- projectDir: tempDir,
231
- inputMode: 'disabled',
232
- cliVersion: '0.2.0',
233
- runtimeInstallPolicy: 'never',
234
- skipEmbeddings: false,
235
- }, io.io, { env: {}, ensureLocalEmbeddings });
236
- expect(result.status).toBe('failed');
237
- expect(io.stderr()).toContain('KTX Python runtime is required for this command. Run: ktx admin runtime install --feature local-embeddings --yes');
238
- });
239
- it('does not persist embedding completion when the health check fails', async () => {
240
- const io = makeIo();
241
- const result = await runKtxSetupEmbeddingsStep({
242
- projectDir: tempDir,
243
- inputMode: 'disabled',
244
- cliVersion: '0.2.0',
245
- runtimeInstallPolicy: 'auto',
246
- skipEmbeddings: false,
247
- }, io.io, {
248
- env: {},
249
- ensureLocalEmbeddings: vi.fn(async () => managedDaemon()),
250
- healthCheck: vi.fn(async () => ({ ok: false, message: '401 invalid api key [redacted]' })),
251
- });
252
- expect(result.status).toBe('failed');
253
- const config = parseKtxProjectConfig(await readFile(join(tempDir, 'ktx.yaml'), 'utf-8'));
254
- expect(await readFile(join(tempDir, 'ktx.yaml'), 'utf-8')).not.toContain('completed_steps:');
255
- expect(config.ingest.embeddings.backend).toBe('none');
256
- expect(io.stderr()).toContain('Local embedding health check failed: 401 invalid api key [redacted]');
257
- expect(io.stderr()).toContain('Prepare the runtime with: ktx admin runtime start --feature local-embeddings');
258
- expect(io.stderr()).not.toContain('skip for now');
259
- });
260
- it('prints the recent daemon stderr tail when local embedding health check fails', async () => {
261
- const io = makeIo();
262
- const stderrLog = join(tempDir, '.ktx', 'runtime', 'daemon.stderr.log');
263
- await mkdir(join(tempDir, '.ktx', 'runtime'), { recursive: true });
264
- await writeFile(stderrLog, Array.from({ length: 45 }, (_value, index) => `daemon traceback line ${index + 1}`).join('\n'));
265
- const result = await runKtxSetupEmbeddingsStep({
266
- projectDir: tempDir,
267
- inputMode: 'disabled',
268
- cliVersion: '0.2.0',
269
- runtimeInstallPolicy: 'auto',
270
- skipEmbeddings: false,
271
- }, io.io, {
272
- env: {},
273
- ensureLocalEmbeddings: vi.fn(async () => managedDaemon('http://127.0.0.1:61234', { stderrLog })),
274
- healthCheck: vi.fn(async () => ({ ok: false, message: 'HTTP 500' })),
275
- });
276
- expect(result.status).toBe('failed');
277
- expect(io.stderr()).toContain('Recent KTX daemon stderr:');
278
- expect(io.stderr()).toContain('daemon traceback line 6');
279
- expect(io.stderr()).toContain('daemon traceback line 45');
280
- expect(io.stderr()).not.toContain('daemon traceback line 5');
281
- });
282
- it('does not print daemon stderr diagnostics when the log is unavailable or empty', async () => {
283
- const io = makeIo();
284
- const result = await runKtxSetupEmbeddingsStep({
285
- projectDir: tempDir,
286
- inputMode: 'disabled',
287
- cliVersion: '0.2.0',
288
- runtimeInstallPolicy: 'auto',
289
- skipEmbeddings: false,
290
- }, io.io, {
291
- env: {},
292
- ensureLocalEmbeddings: vi.fn(async () => managedDaemon('http://127.0.0.1:61234', {
293
- stderrLog: join(tempDir, '.ktx', 'runtime', 'missing.stderr.log'),
294
- })),
295
- healthCheck: vi.fn(async () => ({ ok: false, message: 'HTTP 500' })),
296
- });
297
- expect(result.status).toBe('failed');
298
- expect(io.stderr()).not.toContain('Recent KTX daemon stderr:');
299
- });
300
- it('uses fixed OpenAI defaults and only asks for credentials when OpenAI is selected', async () => {
301
- const io = makeIo();
302
- const healthCheck = vi.fn(async () => ({ ok: true }));
303
- const result = await runKtxSetupEmbeddingsStep({
304
- projectDir: tempDir,
305
- inputMode: 'disabled',
306
- embeddingBackend: 'openai',
307
- embeddingApiKeyEnv: 'OPENAI_API_KEY', // pragma: allowlist secret
308
- cliVersion: '0.2.0',
309
- runtimeInstallPolicy: 'auto',
310
- skipEmbeddings: false,
311
- }, io.io, {
312
- env: { OPENAI_API_KEY: 'sk-openai-test' }, // pragma: allowlist secret
313
- healthCheck,
314
- });
315
- expect(result.status).toBe('ready');
316
- expect(healthCheck).toHaveBeenCalledWith({
317
- backend: 'openai',
318
- model: 'text-embedding-3-small',
319
- dimensions: 1536,
320
- openai: { apiKey: 'sk-openai-test' }, // pragma: allowlist secret
321
- });
322
- const config = parseKtxProjectConfig(await readFile(join(tempDir, 'ktx.yaml'), 'utf-8'));
323
- expect(config.ingest.embeddings).toMatchObject({
324
- backend: 'openai',
325
- model: 'text-embedding-3-small',
326
- dimensions: 1536,
327
- openai: { api_key: 'env:OPENAI_API_KEY' }, // pragma: allowlist secret
328
- });
329
- expect(io.stdout()).not.toContain('sk-openai-test');
330
- });
331
- it('can fall back to OpenAI after the default local daemon is unavailable', async () => {
332
- const io = makeIo();
333
- const prompts = makePromptAdapter({ selectValues: ['sentence-transformers', 'openai', 'env'] });
334
- const healthCheck = vi
335
- .fn()
336
- .mockResolvedValueOnce({ ok: false, message: 'fetch failed' })
337
- .mockResolvedValueOnce({ ok: true });
338
- const result = await runKtxSetupEmbeddingsStep({
339
- projectDir: tempDir,
340
- inputMode: 'auto',
341
- cliVersion: '0.2.0',
342
- runtimeInstallPolicy: 'auto',
343
- skipEmbeddings: false,
344
- }, io.io, {
345
- prompts,
346
- env: { OPENAI_API_KEY: 'sk-openai-test' }, // pragma: allowlist secret
347
- healthCheck,
348
- ensureLocalEmbeddings: vi.fn(async () => managedDaemon()),
349
- });
350
- expect(result.status).toBe('ready');
351
- expect(healthCheck).toHaveBeenNthCalledWith(1, {
352
- backend: 'sentence-transformers',
353
- model: 'all-MiniLM-L6-v2',
354
- dimensions: 384,
355
- sentenceTransformers: { baseURL: 'http://127.0.0.1:61234', pathPrefix: '' },
356
- });
357
- expect(healthCheck).toHaveBeenNthCalledWith(2, {
358
- backend: 'openai',
359
- model: 'text-embedding-3-small',
360
- dimensions: 1536,
361
- openai: { apiKey: 'sk-openai-test' }, // pragma: allowlist secret
362
- });
363
- expect(prompts.select).toHaveBeenCalledWith(expect.objectContaining({
364
- message: 'Local embeddings are not reachable. Start the local KTX daemon, then retry.',
365
- options: expect.arrayContaining([expect.objectContaining({ value: 'openai' })]),
366
- }));
367
- expect(vi.mocked(prompts.select).mock.calls[1]?.[0].options).toEqual([
368
- { value: 'retry', label: 'Retry' },
369
- { value: 'openai', label: 'Use OpenAI embeddings' },
370
- { value: 'back', label: 'Back' },
371
- ]);
372
- const config = parseKtxProjectConfig(await readFile(join(tempDir, 'ktx.yaml'), 'utf-8'));
373
- expect(config.ingest.embeddings.backend).toBe('openai');
374
- });
375
- it('leaves setup incomplete when skipped', async () => {
376
- const result = await runKtxSetupEmbeddingsStep({
377
- projectDir: tempDir,
378
- inputMode: 'disabled',
379
- cliVersion: '0.2.0',
380
- runtimeInstallPolicy: 'auto',
381
- skipEmbeddings: true,
382
- }, makeIo().io);
383
- expect(result.status).toBe('skipped');
384
- const config = parseKtxProjectConfig(await readFile(join(tempDir, 'ktx.yaml'), 'utf-8'));
385
- expect(await readFile(join(tempDir, 'ktx.yaml'), 'utf-8')).not.toContain('completed_steps:');
386
- expect(config.ingest.embeddings.backend).toBe('none');
387
- });
388
- it('returns back without writing config when the local health check fails and Back is selected', async () => {
389
- const prompts = makePromptAdapter({ selectValues: ['sentence-transformers', 'back'] });
390
- const result = await runKtxSetupEmbeddingsStep({
391
- projectDir: tempDir,
392
- inputMode: 'auto',
393
- cliVersion: '0.2.0',
394
- runtimeInstallPolicy: 'auto',
395
- skipEmbeddings: false,
396
- }, makeIo().io, {
397
- prompts,
398
- env: {},
399
- ensureLocalEmbeddings: vi.fn(async () => managedDaemon()),
400
- healthCheck: vi.fn(async () => ({ ok: false, message: 'daemon unavailable' })),
401
- });
402
- expect(result.status).toBe('back');
403
- const config = parseKtxProjectConfig(await readFile(join(tempDir, 'ktx.yaml'), 'utf-8'));
404
- expect(config.ingest.embeddings.backend).toBe('none');
405
- });
406
- it('preserves already completed embeddings setup when no embedding args request changes', async () => {
407
- await mkdir(join(tempDir, '.ktx'), { recursive: true });
408
- await initKtxProject({ projectDir: tempDir, force: true });
409
- await writeFile(join(tempDir, 'ktx.yaml'), [
410
- 'setup:',
411
- ' database_connection_ids: []',
412
- 'connections: {}',
413
- 'ingest:',
414
- ' embeddings:',
415
- ' backend: sentence-transformers',
416
- ' model: all-MiniLM-L6-v2',
417
- ' dimensions: 384',
418
- ' sentenceTransformers:',
419
- ' base_url: http://127.0.0.1:8765',
420
- " pathPrefix: ''",
421
- ].join('\n'), 'utf-8');
422
- await writeKtxSetupState(tempDir, { completed_steps: ['project', 'llm', 'embeddings'] });
423
- const healthCheck = vi.fn(async () => ({ ok: true }));
424
- await expect(runKtxSetupEmbeddingsStep({
425
- projectDir: tempDir,
426
- inputMode: 'disabled',
427
- cliVersion: '0.2.0',
428
- runtimeInstallPolicy: 'auto',
429
- skipEmbeddings: false,
430
- }, makeIo().io, {
431
- env: { OPENAI_API_KEY: 'sk-openai-test' }, // pragma: allowlist secret
432
- healthCheck,
433
- })).resolves.toMatchObject({ status: 'ready' });
434
- expect(healthCheck).not.toHaveBeenCalled();
435
- });
436
- });
@@ -1 +0,0 @@
1
- export {};