@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,213 +0,0 @@
1
- import { join } from 'node:path';
2
- import { describe, expect, it } from 'vitest';
3
- import { chunkLookmlProject } from './chunk.js';
4
- import { parseLookmlStagedDir } from './parse.js';
5
- const FIXTURE_ROOT = join(__dirname, '../../../../test/fixtures/lookml');
6
- describe('chunkLookmlProject — first run', () => {
7
- it('single-model bundle → 1 WU with model + all views in rawFiles', async () => {
8
- const stagedDir = join(FIXTURE_ROOT, 'single-model');
9
- const project = await parseLookmlStagedDir(stagedDir);
10
- const result = chunkLookmlProject(project);
11
- expect(result.workUnits).toHaveLength(1);
12
- const wu = result.workUnits[0];
13
- expect(wu.unitKey).toBe('lookml-orders');
14
- expect(wu.rawFiles.sort()).toEqual(['orders.model.lkml', 'views/customers.view.lkml', 'views/orders.view.lkml']);
15
- expect(wu.peerFileIndex).toEqual([]);
16
- expect(wu.dependencyPaths).toEqual([]);
17
- expect(result.eviction).toBeUndefined();
18
- });
19
- it('multi-model bundle → 1 WU per model; shared view owned by lex-first model; others see it in dependencyPaths + peerFileIndex is pathless-index', async () => {
20
- const stagedDir = join(FIXTURE_ROOT, 'multi-model');
21
- const project = await parseLookmlStagedDir(stagedDir);
22
- const result = chunkLookmlProject(project);
23
- expect(result.workUnits).toHaveLength(2);
24
- const marketing = result.workUnits.find((wu) => wu.unitKey === 'lookml-marketing');
25
- const orders = result.workUnits.find((wu) => wu.unitKey === 'lookml-orders');
26
- expect(marketing).toBeDefined();
27
- expect(orders).toBeDefined();
28
- if (!marketing || !orders) {
29
- throw new Error('expected marketing and orders work units');
30
- }
31
- // marketing sorts before orders → marketing owns shared_dims
32
- expect(marketing.rawFiles).toContain('views/shared_dims.view.lkml');
33
- expect(marketing.rawFiles).toContain('views/campaigns.view.lkml');
34
- expect(marketing.rawFiles).toContain('marketing.model.lkml');
35
- expect(marketing.rawFiles).not.toContain('views/orders.view.lkml');
36
- expect(marketing.dependencyPaths).toEqual([]);
37
- // orders does NOT own shared_dims — it's in dependencyPaths (read-only upstream).
38
- expect(orders.rawFiles).not.toContain('views/shared_dims.view.lkml');
39
- expect(orders.dependencyPaths).toEqual(['views/shared_dims.view.lkml']);
40
- expect(orders.rawFiles).toContain('views/orders.view.lkml');
41
- expect(orders.rawFiles).toContain('orders.model.lkml');
42
- // Each WU's peerFileIndex lists the OTHER model's files (paths-only index).
43
- expect(orders.peerFileIndex).toContain('marketing.model.lkml');
44
- expect(orders.peerFileIndex).toContain('views/campaigns.view.lkml');
45
- // Dependency paths should not be duplicated into peerFileIndex.
46
- expect(orders.peerFileIndex).not.toContain('views/shared_dims.view.lkml');
47
- });
48
- it('extends-chain fixture: single WU contains base + orders + orders_ext; chain order visible via graph', async () => {
49
- const stagedDir = join(FIXTURE_ROOT, 'extends-chain');
50
- const project = await parseLookmlStagedDir(stagedDir);
51
- const result = chunkLookmlProject(project);
52
- // One model ("orders") includes views/*.view.lkml — so all three views land in its WU.
53
- expect(result.workUnits).toHaveLength(1);
54
- const wu = result.workUnits[0];
55
- expect(wu.unitKey).toBe('lookml-orders');
56
- expect(wu.rawFiles.sort()).toEqual([
57
- 'orders.model.lkml',
58
- 'views/base.view.lkml',
59
- 'views/orders.view.lkml',
60
- 'views/orders_ext.view.lkml',
61
- ]);
62
- expect(wu.dependencyPaths).toEqual([]); // all ancestors already in rawFiles on first run
63
- expect(wu.notes).toMatch(/orders/);
64
- });
65
- it('is deterministic: two calls on the same project return structurally identical WorkUnits', async () => {
66
- const stagedDir = join(FIXTURE_ROOT, 'multi-model');
67
- const project = await parseLookmlStagedDir(stagedDir);
68
- const r1 = chunkLookmlProject(project);
69
- const r2 = chunkLookmlProject(project);
70
- expect(r1.workUnits).toEqual(r2.workUnits);
71
- });
72
- it('unitKey is model-name-derived (stable across parse+chunk cycles and across re-syncs)', async () => {
73
- const project = await parseLookmlStagedDir(join(FIXTURE_ROOT, 'multi-model'));
74
- const { workUnits } = chunkLookmlProject(project);
75
- expect(workUnits.map((wu) => wu.unitKey).sort()).toEqual(['lookml-marketing', 'lookml-orders']);
76
- });
77
- it('marks mismatched model WorkUnits as SL-disallowed and keeps wiki ingest enabled', () => {
78
- const project = {
79
- models: [
80
- {
81
- path: 'b2b.model.lkml',
82
- name: 'b2b',
83
- includes: ['views/orders.view.lkml'],
84
- explores: ['orders'],
85
- connectionName: 'wrong_connection',
86
- },
87
- ],
88
- views: [{ path: 'views/orders.view.lkml', name: 'orders', extendsFrom: [], rawSqlTableName: 'public.orders' }],
89
- dashboards: [],
90
- allPaths: ['b2b.model.lkml', 'views/orders.view.lkml'],
91
- };
92
- const result = chunkLookmlProject(project, { mismatchedModelNames: new Set(['b2b']) });
93
- const wu = result.workUnits[0];
94
- expect(wu.unitKey).toBe('lookml-b2b');
95
- expect(wu.rawFiles).toEqual(['b2b.model.lkml', 'views/orders.view.lkml']);
96
- expect(wu.slDisallowed).toBe(true);
97
- expect(wu.slDisallowedReason).toBe('lookml_connection_mismatch');
98
- expect(wu.notes).toContain('[LOOKML SL WRITES DISALLOWED]');
99
- expect(wu.notes).toContain('reason: lookml_connection_mismatch');
100
- expect(wu.notes).toContain('Do not call sl_write_source or sl_edit_source for this WorkUnit.');
101
- });
102
- });
103
- describe('chunkLookmlProject — re-sync', () => {
104
- it("modified file in one model only emits that model's WU", async () => {
105
- const stagedDir = join(FIXTURE_ROOT, 'multi-model');
106
- const project = await parseLookmlStagedDir(stagedDir);
107
- const result = chunkLookmlProject(project, {
108
- diffSet: {
109
- added: [],
110
- modified: ['views/campaigns.view.lkml'],
111
- deleted: [],
112
- unchanged: [
113
- 'marketing.model.lkml',
114
- 'orders.model.lkml',
115
- 'views/orders.view.lkml',
116
- 'views/shared_dims.view.lkml',
117
- ],
118
- },
119
- });
120
- expect(result.workUnits).toHaveLength(1);
121
- expect(result.workUnits[0].unitKey).toBe('lookml-marketing');
122
- });
123
- it("added file under a model emits that model's WU with the new path in rawFiles", async () => {
124
- const stagedDir = join(FIXTURE_ROOT, 'single-model');
125
- const project = await parseLookmlStagedDir(stagedDir);
126
- const result = chunkLookmlProject(project, {
127
- diffSet: {
128
- added: ['views/customers.view.lkml'],
129
- modified: [],
130
- deleted: [],
131
- unchanged: ['orders.model.lkml', 'views/orders.view.lkml'],
132
- },
133
- });
134
- expect(result.workUnits).toHaveLength(1);
135
- expect(result.workUnits[0].rawFiles).toContain('views/customers.view.lkml');
136
- });
137
- it('widens dependencyPaths with transitive extends ancestors on re-sync', async () => {
138
- const stagedDir = join(FIXTURE_ROOT, 'extends-chain');
139
- const project = await parseLookmlStagedDir(stagedDir);
140
- // Only orders_ext is touched; base and orders are upstream ancestors.
141
- // Because the single-model WU's rawFiles ALREADY include all three on first run,
142
- // they remain in rawFiles — dependencyPaths stays empty. Widening matters when
143
- // re-sync drops some files from rawFiles, which doesn't apply for a monolithic
144
- // single-model WU. Assert the baseline invariant.
145
- const result = chunkLookmlProject(project, {
146
- diffSet: {
147
- added: [],
148
- modified: ['views/orders_ext.view.lkml'],
149
- deleted: [],
150
- unchanged: ['orders.model.lkml', 'views/base.view.lkml', 'views/orders.view.lkml'],
151
- },
152
- });
153
- expect(result.workUnits).toHaveLength(1);
154
- const wu = result.workUnits[0];
155
- expect(wu.rawFiles).toContain('views/orders_ext.view.lkml');
156
- // Ancestors already in rawFiles → not duplicated into dependencyPaths.
157
- expect(wu.dependencyPaths).toEqual([]);
158
- });
159
- it('widens dependencyPaths when an ancestor is OUTSIDE the WU (synthesized cross-model case)', () => {
160
- // Synthesize a scenario in-memory: two models, "a" owns base.view.lkml,
161
- // "b" owns derived.view.lkml which extends base. A diff that only touches
162
- // derived.view.lkml should widen b's WU with base.view.lkml in dependencyPaths
163
- // if base lives outside b's rawFiles. In practice with the current emit rules,
164
- // base.view.lkml would already be in dependencyPaths because model b lists
165
- // base.view.lkml under its `include:`. Here we confirm the widening is idempotent.
166
- const project = {
167
- models: [
168
- { path: 'a.model.lkml', name: 'a', includes: ['views/base.view.lkml'], explores: [], connectionName: null },
169
- {
170
- path: 'b.model.lkml',
171
- name: 'b',
172
- includes: ['views/base.view.lkml', 'views/derived.view.lkml'],
173
- explores: [],
174
- connectionName: null,
175
- },
176
- ],
177
- views: [
178
- { path: 'views/base.view.lkml', name: 'base', extendsFrom: [], rawSqlTableName: null },
179
- { path: 'views/derived.view.lkml', name: 'derived', extendsFrom: ['base'], rawSqlTableName: null },
180
- ],
181
- dashboards: [],
182
- allPaths: ['a.model.lkml', 'b.model.lkml', 'views/base.view.lkml', 'views/derived.view.lkml'],
183
- };
184
- const result = chunkLookmlProject(project, {
185
- diffSet: {
186
- added: [],
187
- modified: ['views/derived.view.lkml'],
188
- deleted: [],
189
- unchanged: ['a.model.lkml', 'b.model.lkml', 'views/base.view.lkml'],
190
- },
191
- });
192
- const b = result.workUnits.find((wu) => wu.unitKey === 'lookml-b');
193
- expect(b).toBeDefined();
194
- if (!b) {
195
- throw new Error('expected lookml-b work unit');
196
- }
197
- expect(b.dependencyPaths).toContain('views/base.view.lkml');
198
- });
199
- it('passes through diffSet.deleted as an EvictionUnit', async () => {
200
- const project = await parseLookmlStagedDir(join(FIXTURE_ROOT, 'single-model'));
201
- const result = chunkLookmlProject(project, {
202
- diffSet: {
203
- added: [],
204
- modified: [],
205
- deleted: ['views/zombie.view.lkml'],
206
- unchanged: ['orders.model.lkml', 'views/customers.view.lkml', 'views/orders.view.lkml'],
207
- },
208
- });
209
- expect(result.eviction).toEqual({ deletedRawPaths: ['views/zombie.view.lkml'] });
210
- // No WU emitted because no current files are touched.
211
- expect(result.workUnits).toEqual([]);
212
- });
213
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,37 +0,0 @@
1
- import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises';
2
- import { tmpdir } from 'node:os';
3
- import { join } from 'node:path';
4
- import { afterEach, beforeEach, describe, expect, it } from 'vitest';
5
- import { detectLookmlStagedDir } from './detect.js';
6
- describe('detectLookmlStagedDir', () => {
7
- let stagedDir;
8
- beforeEach(async () => {
9
- stagedDir = await mkdtemp(join(tmpdir(), 'lkml-detect-'));
10
- });
11
- afterEach(async () => rm(stagedDir, { recursive: true, force: true }));
12
- it('returns true when a .model.lkml is present at root', async () => {
13
- await writeFile(join(stagedDir, 'orders.model.lkml'), 'include: "views/*"\n', 'utf-8');
14
- expect(await detectLookmlStagedDir(stagedDir)).toBe(true);
15
- });
16
- it('returns true when only a .view.lkml is present (no model)', async () => {
17
- await writeFile(join(stagedDir, 'x.view.lkml'), 'view: x {}\n', 'utf-8');
18
- expect(await detectLookmlStagedDir(stagedDir)).toBe(true);
19
- });
20
- it('returns true when .lkml files are nested under any subdirectory', async () => {
21
- await mkdir(join(stagedDir, 'nested', 'deeper'), { recursive: true });
22
- await writeFile(join(stagedDir, 'nested', 'deeper', 'x.view.lkml'), 'view: x {}\n', 'utf-8');
23
- expect(await detectLookmlStagedDir(stagedDir)).toBe(true);
24
- });
25
- it('accepts the .lookml extension as well as .lkml', async () => {
26
- await writeFile(join(stagedDir, 'x.view.lookml'), 'view: x {}\n', 'utf-8');
27
- expect(await detectLookmlStagedDir(stagedDir)).toBe(true);
28
- });
29
- it('returns false for a bundle with no .lkml files at all', async () => {
30
- await writeFile(join(stagedDir, 'README.md'), '# hi\n', 'utf-8');
31
- await writeFile(join(stagedDir, 'config.yaml'), 'a: 1\n', 'utf-8');
32
- expect(await detectLookmlStagedDir(stagedDir)).toBe(false);
33
- });
34
- it('returns false for an empty directory', async () => {
35
- expect(await detectLookmlStagedDir(stagedDir)).toBe(false);
36
- });
37
- });
@@ -1,82 +0,0 @@
1
- import { mkdtemp, readFile, rm } from 'node:fs/promises';
2
- import { tmpdir } from 'node:os';
3
- import { join } from 'node:path';
4
- import { afterEach, beforeEach, describe, expect, it } from 'vitest';
5
- import { LOOKML_FETCH_REPORT_FILE, LOOKML_MISMATCHED_MODELS_FILE, buildLookmlValidationArtifacts, readLookmlFetchReport, readLookmlMismatchedModelNames, writeLookmlValidationArtifacts, } from './fetch-report.js';
6
- function project(models) {
7
- return { models, views: [], dashboards: [], allPaths: models.map((m) => m.path) };
8
- }
9
- describe('LookML validation fetch report', () => {
10
- let stagedDir;
11
- beforeEach(async () => {
12
- stagedDir = await mkdtemp(join(tmpdir(), 'lookml-report-'));
13
- });
14
- afterEach(async () => rm(stagedDir, { recursive: true, force: true }));
15
- it('emits partial warning artifacts for mismatched model connection names', async () => {
16
- const artifacts = buildLookmlValidationArtifacts(project([
17
- {
18
- path: 'b2b.model.lkml',
19
- name: 'b2b',
20
- includes: [],
21
- explores: ['orders'],
22
- connectionName: 'staging_pg',
23
- },
24
- {
25
- path: 'finance.model.lkml',
26
- name: 'finance',
27
- includes: [],
28
- explores: ['revenue'],
29
- connectionName: 'b2b_sandbox_bq',
30
- },
31
- ]), { expectedLookerConnectionName: 'b2b_sandbox_bq' });
32
- expect(artifacts.mismatchedModelNames).toEqual(['b2b']);
33
- expect(artifacts.report.status).toBe('partial');
34
- expect(artifacts.report.warnings).toEqual([
35
- {
36
- rawPath: 'b2b.model.lkml',
37
- entityType: 'lookml_models',
38
- entityId: 'b2b',
39
- severity: 'warning',
40
- statusCode: null,
41
- message: 'LookML model b2b declares connection staging_pg but this warehouse expects b2b_sandbox_bq; SL writes are disabled for this model.',
42
- retryRecommended: false,
43
- kind: 'lookml_connection_mismatch',
44
- details: { model: 'b2b', declared: 'staging_pg', expected: 'b2b_sandbox_bq' },
45
- },
46
- ]);
47
- });
48
- it('emits success when no expected connection is configured', () => {
49
- const artifacts = buildLookmlValidationArtifacts(project([
50
- {
51
- path: 'b2b.model.lkml',
52
- name: 'b2b',
53
- includes: [],
54
- explores: [],
55
- connectionName: 'staging_pg',
56
- },
57
- ]), { expectedLookerConnectionName: null });
58
- expect(artifacts.mismatchedModelNames).toEqual([]);
59
- expect(artifacts.report).toEqual({
60
- status: 'success',
61
- retryRecommended: false,
62
- skipped: [],
63
- warnings: [],
64
- });
65
- });
66
- it('round-trips the fetch report and mismatched model sidecar', async () => {
67
- const artifacts = buildLookmlValidationArtifacts(project([
68
- {
69
- path: 'orders.model.lkml',
70
- name: 'orders',
71
- includes: [],
72
- explores: [],
73
- connectionName: 'wrong',
74
- },
75
- ]), { expectedLookerConnectionName: 'expected' });
76
- await writeLookmlValidationArtifacts(stagedDir, artifacts);
77
- await expect(readFile(join(stagedDir, LOOKML_FETCH_REPORT_FILE), 'utf-8')).resolves.toContain('lookml_connection_mismatch');
78
- await expect(readFile(join(stagedDir, LOOKML_MISMATCHED_MODELS_FILE), 'utf-8')).resolves.toContain('orders');
79
- await expect(readLookmlFetchReport(stagedDir)).resolves.toEqual(artifacts.report);
80
- await expect(readLookmlMismatchedModelNames(stagedDir)).resolves.toEqual(new Set(['orders']));
81
- });
82
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,121 +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 { afterEach, beforeEach, describe, expect, it } from 'vitest';
5
- import { makeLocalGitRepo } from '../../../test/make-local-git-repo.js';
6
- import { fetchLookmlRepo } from './fetch.js';
7
- const FIXTURE_ROOT = join(__dirname, '../../../../test/fixtures/lookml');
8
- function pullConfig(overrides) {
9
- return {
10
- branch: 'main',
11
- path: null,
12
- authToken: null,
13
- expectedLookerConnectionName: null,
14
- parsedTargetTables: {},
15
- ...overrides,
16
- };
17
- }
18
- describe('fetchLookmlRepo', () => {
19
- let tmpRoot;
20
- beforeEach(async () => {
21
- tmpRoot = await mkdtemp(join(tmpdir(), 'fetch-lookml-'));
22
- });
23
- afterEach(async () => rm(tmpRoot, { recursive: true, force: true }));
24
- it('clones a local file:// repo and materializes only .lkml/.lookml files into stagedDir', async () => {
25
- const repo = await makeLocalGitRepo(join(FIXTURE_ROOT, 'single-model'), join(tmpRoot, 'origin'));
26
- // Add a non-LookML file to prove we filter it out.
27
- await repo.writeFile('README.md', '# readme\n');
28
- await repo.commit('add readme');
29
- const stagedDir = join(tmpRoot, 'staged');
30
- const cacheDir = join(tmpRoot, 'cache', 'conn-1');
31
- await mkdir(stagedDir, { recursive: true });
32
- const result = await fetchLookmlRepo({
33
- config: pullConfig({ repoUrl: repo.repoUrl }),
34
- cacheDir,
35
- stagedDir,
36
- });
37
- expect(result.filesCopied).toBe(3); // orders.model.lkml + 2 views
38
- expect(result.commitHash).toMatch(/^[0-9a-f]{40}$/);
39
- await expect(readFile(join(stagedDir, 'orders.model.lkml'), 'utf-8')).resolves.toMatch(/connection:/);
40
- await expect(readFile(join(stagedDir, 'views', 'orders.view.lkml'), 'utf-8')).resolves.toMatch(/view: orders/);
41
- // README.md is present in the cache but NOT in stagedDir.
42
- await expect(readFile(join(stagedDir, 'README.md'), 'utf-8')).rejects.toThrow();
43
- await expect(readFile(join(cacheDir, 'README.md'), 'utf-8')).resolves.toMatch(/readme/);
44
- });
45
- it('pulls an existing cache dir (second call) and surfaces the new commit', async () => {
46
- const repo = await makeLocalGitRepo(join(FIXTURE_ROOT, 'single-model'), join(tmpRoot, 'origin'));
47
- const stagedDir1 = join(tmpRoot, 'staged-1');
48
- const stagedDir2 = join(tmpRoot, 'staged-2');
49
- const cacheDir = join(tmpRoot, 'cache', 'conn-1');
50
- await mkdir(stagedDir1, { recursive: true });
51
- await mkdir(stagedDir2, { recursive: true });
52
- const r1 = await fetchLookmlRepo({
53
- config: pullConfig({ repoUrl: repo.repoUrl }),
54
- cacheDir,
55
- stagedDir: stagedDir1,
56
- });
57
- // Commit a new revision in the origin — a modified view.
58
- await repo.writeFile('views/orders.view.lkml', 'view: orders { sql_table_name: public.orders_v2 ;; }\n');
59
- await repo.commit('bump');
60
- const r2 = await fetchLookmlRepo({
61
- config: pullConfig({ repoUrl: repo.repoUrl }),
62
- cacheDir,
63
- stagedDir: stagedDir2,
64
- });
65
- expect(r2.commitHash).not.toBe(r1.commitHash);
66
- await expect(readFile(join(stagedDir2, 'views', 'orders.view.lkml'), 'utf-8')).resolves.toMatch(/orders_v2/);
67
- });
68
- it('respects config.path — only files under that subtree land in stagedDir', async () => {
69
- // Build a multi-subdir repo: models/... + views/...
70
- const originRoot = join(tmpRoot, 'origin');
71
- await mkdir(originRoot, { recursive: true });
72
- await mkdir(join(originRoot, 'fixture-src', 'models'), { recursive: true });
73
- await mkdir(join(originRoot, 'fixture-src', 'views'), { recursive: true });
74
- await writeFile(join(originRoot, 'fixture-src', 'models', 'orders.model.lkml'), 'connection: "c"\n', 'utf-8');
75
- await writeFile(join(originRoot, 'fixture-src', 'views', 'orders.view.lkml'), 'view: orders {}\n', 'utf-8');
76
- const repo = await makeLocalGitRepo(join(originRoot, 'fixture-src'), join(originRoot, 'git'));
77
- const stagedDir = join(tmpRoot, 'staged');
78
- const cacheDir = join(tmpRoot, 'cache', 'conn-path');
79
- await mkdir(stagedDir, { recursive: true });
80
- const result = await fetchLookmlRepo({
81
- config: pullConfig({ repoUrl: repo.repoUrl, path: 'views' }),
82
- cacheDir,
83
- stagedDir,
84
- });
85
- expect(result.filesCopied).toBe(1);
86
- await expect(readFile(join(stagedDir, 'orders.view.lkml'), 'utf-8')).resolves.toMatch(/view: orders/);
87
- // The model under `models/` is NOT copied because we scoped to `views/`.
88
- await expect(readFile(join(stagedDir, 'orders.model.lkml'), 'utf-8')).rejects.toThrow();
89
- });
90
- it('falls back to fresh clone when the cache dir is corrupt', async () => {
91
- const repo = await makeLocalGitRepo(join(FIXTURE_ROOT, 'single-model'), join(tmpRoot, 'origin'));
92
- const stagedDir = join(tmpRoot, 'staged');
93
- const cacheDir = join(tmpRoot, 'cache', 'conn-bad');
94
- await mkdir(stagedDir, { recursive: true });
95
- // Pre-create a cacheDir that looks like a git repo but is corrupt.
96
- await mkdir(join(cacheDir, '.git'), { recursive: true });
97
- await writeFile(join(cacheDir, '.git', 'HEAD'), 'garbage\n', 'utf-8');
98
- const result = await fetchLookmlRepo({
99
- config: pullConfig({ repoUrl: repo.repoUrl }),
100
- cacheDir,
101
- stagedDir,
102
- });
103
- expect(result.filesCopied).toBeGreaterThan(0);
104
- });
105
- it('sanitizes auth tokens out of error messages when clone fails', async () => {
106
- const stagedDir = join(tmpRoot, 'staged');
107
- const cacheDir = join(tmpRoot, 'cache', 'conn-bad-url');
108
- await mkdir(stagedDir, { recursive: true });
109
- await expect(fetchLookmlRepo({
110
- config: pullConfig({
111
- repoUrl: 'http://definitely-not-a-real-host.test/r.git',
112
- authToken: 'supersecret-token',
113
- }),
114
- cacheDir,
115
- stagedDir,
116
- })).rejects.toThrow(
117
- // Error is thrown with sanitized message — the token is replaced by '***'.
118
- // The exact message depends on simple-git's failure mode; we assert the token does NOT appear.
119
- expect.objectContaining({ message: expect.not.stringContaining('supersecret-token') }));
120
- });
121
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,105 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { buildLookmlGraph } from './graph.js';
3
- const mkProject = (overrides) => ({
4
- dashboards: [],
5
- allPaths: [],
6
- ...overrides,
7
- models: (overrides.models ?? []).map((model) => ({ connectionName: null, ...model })),
8
- views: (overrides.views ?? []).map((view) => ({ rawSqlTableName: null, ...view })),
9
- });
10
- describe('buildLookmlGraph', () => {
11
- it('assigns a single model as owner of all its included views', () => {
12
- const project = mkProject({
13
- models: [{ path: 'orders.model.lkml', name: 'orders', includes: ['views/*.view.lkml'], explores: ['orders'] }],
14
- views: [
15
- { path: 'views/orders.view.lkml', name: 'orders', extendsFrom: [] },
16
- { path: 'views/customers.view.lkml', name: 'customers', extendsFrom: [] },
17
- ],
18
- allPaths: ['orders.model.lkml', 'views/customers.view.lkml', 'views/orders.view.lkml'],
19
- });
20
- const graph = buildLookmlGraph(project);
21
- expect(graph.ownerByViewPath.get('views/orders.view.lkml')).toBe('orders');
22
- expect(graph.ownerByViewPath.get('views/customers.view.lkml')).toBe('orders');
23
- expect(graph.viewsIncludedByModel.get('orders')?.sort()).toEqual([
24
- 'views/customers.view.lkml',
25
- 'views/orders.view.lkml',
26
- ]);
27
- });
28
- it('assigns shared views to the lexicographically-first model that includes them', () => {
29
- const project = mkProject({
30
- models: [
31
- { path: 'marketing.model.lkml', name: 'marketing', includes: ['views/shared.view.lkml'], explores: [] },
32
- {
33
- path: 'orders.model.lkml',
34
- name: 'orders',
35
- includes: ['views/shared.view.lkml', 'views/orders.view.lkml'],
36
- explores: [],
37
- },
38
- ],
39
- views: [
40
- { path: 'views/shared.view.lkml', name: 'shared', extendsFrom: [] },
41
- { path: 'views/orders.view.lkml', name: 'orders', extendsFrom: [] },
42
- ],
43
- allPaths: ['marketing.model.lkml', 'orders.model.lkml', 'views/orders.view.lkml', 'views/shared.view.lkml'],
44
- });
45
- const graph = buildLookmlGraph(project);
46
- // "marketing" sorts before "orders", so marketing owns the shared view.
47
- expect(graph.ownerByViewPath.get('views/shared.view.lkml')).toBe('marketing');
48
- expect(graph.ownerByViewPath.get('views/orders.view.lkml')).toBe('orders');
49
- // Both models list the shared view in their include set:
50
- expect(graph.includersByViewPath.get('views/shared.view.lkml')?.sort()).toEqual(['marketing', 'orders']);
51
- });
52
- it('resolves transitive extends chains into dependency paths', () => {
53
- const project = mkProject({
54
- models: [{ path: 'orders.model.lkml', name: 'orders', includes: ['views/*.view.lkml'], explores: [] }],
55
- views: [
56
- { path: 'views/base.view.lkml', name: 'base', extendsFrom: [] },
57
- { path: 'views/orders.view.lkml', name: 'orders', extendsFrom: ['base'] },
58
- { path: 'views/orders_ext.view.lkml', name: 'orders_ext', extendsFrom: ['orders'] },
59
- ],
60
- allPaths: ['orders.model.lkml', 'views/base.view.lkml', 'views/orders.view.lkml', 'views/orders_ext.view.lkml'],
61
- });
62
- const graph = buildLookmlGraph(project);
63
- expect(graph.extendsAncestorsByViewName.get('orders_ext')?.sort()).toEqual(['base', 'orders']);
64
- expect(graph.extendsAncestorsByViewName.get('orders')?.sort()).toEqual(['base']);
65
- expect(graph.extendsAncestorsByViewName.get('base')?.sort()).toEqual([]);
66
- });
67
- it('resolves glob-style include patterns (views/*.view.lkml) against allPaths', () => {
68
- const project = mkProject({
69
- models: [{ path: 'orders.model.lkml', name: 'orders', includes: ['views/*.view.lkml'], explores: [] }],
70
- views: [
71
- { path: 'views/a.view.lkml', name: 'a', extendsFrom: [] },
72
- { path: 'views/sub/b.view.lkml', name: 'b', extendsFrom: [] },
73
- ],
74
- allPaths: ['orders.model.lkml', 'views/a.view.lkml', 'views/sub/b.view.lkml'],
75
- });
76
- const graph = buildLookmlGraph(project);
77
- // Single-star glob matches one path segment — "views/sub/b.view.lkml" is NOT matched.
78
- expect(graph.viewsIncludedByModel.get('orders')?.sort()).toEqual(['views/a.view.lkml']);
79
- });
80
- it('resolves double-star include patterns (views/**/*.view.lkml) recursively', () => {
81
- const project = mkProject({
82
- models: [{ path: 'orders.model.lkml', name: 'orders', includes: ['views/**/*.view.lkml'], explores: [] }],
83
- views: [
84
- { path: 'views/a.view.lkml', name: 'a', extendsFrom: [] },
85
- { path: 'views/sub/b.view.lkml', name: 'b', extendsFrom: [] },
86
- ],
87
- allPaths: ['orders.model.lkml', 'views/a.view.lkml', 'views/sub/b.view.lkml'],
88
- });
89
- const graph = buildLookmlGraph(project);
90
- expect(graph.viewsIncludedByModel.get('orders')?.sort()).toEqual(['views/a.view.lkml', 'views/sub/b.view.lkml']);
91
- });
92
- it('leaves a view ownerless when no model includes it', () => {
93
- const project = mkProject({
94
- models: [{ path: 'other.model.lkml', name: 'other', includes: ['views/included.view.lkml'], explores: [] }],
95
- views: [
96
- { path: 'views/included.view.lkml', name: 'included', extendsFrom: [] },
97
- { path: 'views/orphan.view.lkml', name: 'orphan', extendsFrom: [] },
98
- ],
99
- allPaths: ['other.model.lkml', 'views/included.view.lkml', 'views/orphan.view.lkml'],
100
- });
101
- const graph = buildLookmlGraph(project);
102
- expect(graph.ownerByViewPath.has('views/orphan.view.lkml')).toBe(false);
103
- expect(graph.ownerByViewPath.get('views/included.view.lkml')).toBe('other');
104
- });
105
- });
@@ -1,49 +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 { afterEach, beforeEach, describe, expect, it } from 'vitest';
5
- import { makeLocalGitRepo } from '../../../test/make-local-git-repo.js';
6
- import { LOOKML_FETCH_REPORT_FILE } from './fetch-report.js';
7
- import { LookmlSourceAdapter } from './lookml.adapter.js';
8
- describe('LookmlSourceAdapter validation sidecars', () => {
9
- let tmpRoot;
10
- beforeEach(async () => {
11
- tmpRoot = await mkdtemp(join(tmpdir(), 'lookml-adapter-'));
12
- });
13
- afterEach(async () => rm(tmpRoot, { recursive: true, force: true }));
14
- it('returns configured target warehouse connection ids', async () => {
15
- const adapter = new LookmlSourceAdapter({
16
- homeDir: join(tmpRoot, 'home'),
17
- targetConnectionIds: ['warehouse', 'analytics', 'warehouse'],
18
- });
19
- await expect(adapter.listTargetConnectionIds?.(join(tmpRoot, 'staged'))).resolves.toEqual([
20
- 'analytics',
21
- 'warehouse',
22
- ]);
23
- });
24
- it('writes a partial fetch report and marks mismatched chunks as SL-disallowed', async () => {
25
- const originRoot = join(tmpRoot, 'origin-src');
26
- await mkdir(join(originRoot, 'views'), { recursive: true });
27
- await writeFile(join(originRoot, 'b2b.model.lkml'), 'connection: "wrong_connection"\ninclude: "views/*.view.lkml"\nexplore: orders {}\n', 'utf-8');
28
- await writeFile(join(originRoot, 'views', 'orders.view.lkml'), 'view: orders { sql_table_name: public.orders ;; }\n', 'utf-8');
29
- const repo = await makeLocalGitRepo(originRoot, join(tmpRoot, 'origin'));
30
- const stagedDir = join(tmpRoot, 'staged');
31
- await mkdir(stagedDir, { recursive: true });
32
- const adapter = new LookmlSourceAdapter({ homeDir: join(tmpRoot, 'home') });
33
- await adapter.fetch({
34
- repoUrl: repo.repoUrl,
35
- branch: 'main',
36
- path: null,
37
- authToken: null,
38
- expectedLookerConnectionName: 'expected_connection',
39
- }, stagedDir, { connectionId: '11111111-1111-4111-8111-111111111111', sourceKey: 'lookml' });
40
- await expect(readFile(join(stagedDir, LOOKML_FETCH_REPORT_FILE), 'utf-8')).resolves.toContain('lookml_connection_mismatch');
41
- await expect(adapter.readFetchReport(stagedDir)).resolves.toMatchObject({ status: 'partial' });
42
- const chunks = await adapter.chunk(stagedDir);
43
- expect(chunks.workUnits[0]).toMatchObject({
44
- unitKey: 'lookml-b2b',
45
- slDisallowed: true,
46
- slDisallowedReason: 'lookml_connection_mismatch',
47
- });
48
- });
49
- });
@@ -1 +0,0 @@
1
- export {};