@kaelio/ktx 0.5.0 → 0.7.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 (875) hide show
  1. package/assets/python/{kaelio_ktx-0.5.0-py3-none-any.whl → kaelio_ktx-0.7.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/llm/claude-code-runtime.js +16 -1
  70. package/dist/context/mcp/context-tools.js +11 -48
  71. package/dist/context/mcp/local-project-ports.js +0 -3
  72. package/dist/context/project/config.d.ts +0 -8
  73. package/dist/context/project/driver-schemas.d.ts +0 -4
  74. package/dist/context/project/driver-schemas.js +0 -2
  75. package/dist/context/scan/constraint-discovery.d.ts +19 -0
  76. package/dist/context/scan/constraint-discovery.js +23 -0
  77. package/dist/context/scan/enabled-tables.d.ts +4 -5
  78. package/dist/context/scan/enabled-tables.js +4 -18
  79. package/dist/context/scan/entity-details.js +14 -44
  80. package/dist/context/scan/local-enrichment.js +13 -1
  81. package/dist/context/scan/local-scan.js +5 -4
  82. package/dist/context/scan/local-structural-artifacts.js +51 -0
  83. package/dist/context/scan/relationship-benchmarks.js +9 -6
  84. package/dist/context/scan/relationship-composite-candidates.d.ts +3 -2
  85. package/dist/context/scan/relationship-composite-candidates.js +21 -33
  86. package/dist/context/scan/relationship-discovery.d.ts +3 -2
  87. package/dist/context/scan/relationship-discovery.js +4 -4
  88. package/dist/context/scan/relationship-profiling.d.ts +2 -3
  89. package/dist/context/scan/relationship-profiling.js +25 -94
  90. package/dist/context/scan/relationship-validation.d.ts +3 -2
  91. package/dist/context/scan/relationship-validation.js +12 -22
  92. package/dist/context/scan/table-ref.d.ts +1 -2
  93. package/dist/context/scan/table-ref.js +3 -4
  94. package/dist/context/scan/types.d.ts +6 -2
  95. package/dist/context/scan/warehouse-catalog.js +31 -48
  96. package/dist/context/sl/local-query.js +0 -3
  97. package/dist/context/sl/local-sl.js +0 -13
  98. package/dist/context/sl/semantic-layer.service.js +1 -4
  99. package/dist/context/tools/context-candidate-write.tool.d.ts +2 -2
  100. package/dist/context-build-view.js +1 -1
  101. package/dist/database-tree-picker.js +14 -7
  102. package/dist/error-message.d.ts +1 -0
  103. package/dist/error-message.js +29 -0
  104. package/dist/ingest-depth.js +0 -1
  105. package/dist/ingest.js +2 -2
  106. package/dist/llm/embedding-health.js +2 -2
  107. package/dist/local-scan-connectors.js +13 -56
  108. package/dist/managed-local-embeddings.js +2 -1
  109. package/dist/managed-python-daemon.d.ts +5 -0
  110. package/dist/managed-python-daemon.js +29 -9
  111. package/dist/managed-python-http.js +2 -1
  112. package/dist/public-ingest.js +1 -6
  113. package/dist/runtime-requirements.js +2 -2
  114. package/dist/setup-agents.d.ts +1 -1
  115. package/dist/setup-agents.js +16 -74
  116. package/dist/setup-context.js +2 -1
  117. package/dist/setup-databases.d.ts +3 -13
  118. package/dist/setup-databases.js +141 -313
  119. package/dist/setup-embeddings.js +10 -2
  120. package/dist/setup-project.d.ts +0 -8
  121. package/dist/setup-project.js +3 -27
  122. package/dist/setup-runtime.js +2 -1
  123. package/dist/setup-sources.js +2 -1
  124. package/dist/setup.js +11 -18
  125. package/dist/skills/historic_sql_patterns/SKILL.md +1 -3
  126. package/dist/skills/historic_sql_table_digest/SKILL.md +0 -1
  127. package/dist/skills/sl/SKILL.md +2 -2
  128. package/dist/sql.js +0 -4
  129. package/dist/status-project.d.ts +3 -18
  130. package/dist/status-project.js +42 -216
  131. package/dist/telemetry/events.d.ts +1 -1
  132. package/dist/telemetry/index.js +8 -3
  133. package/dist/tree-picker-state.d.ts +2 -2
  134. package/dist/tree-picker-state.js +29 -13
  135. package/dist/tree-picker-tui.d.ts +3 -1
  136. package/dist/tree-picker-tui.js +20 -32
  137. package/package.json +6 -6
  138. package/dist/admin-reindex.test.d.ts +0 -1
  139. package/dist/admin-reindex.test.js +0 -119
  140. package/dist/admin.test.d.ts +0 -1
  141. package/dist/admin.test.js +0 -201
  142. package/dist/cli-program-telemetry.test.d.ts +0 -1
  143. package/dist/cli-program-telemetry.test.js +0 -89
  144. package/dist/cli-program.test.d.ts +0 -1
  145. package/dist/cli-program.test.js +0 -71
  146. package/dist/command-tree.test.d.ts +0 -1
  147. package/dist/command-tree.test.js +0 -126
  148. package/dist/commands/mcp-commands.test.d.ts +0 -1
  149. package/dist/commands/mcp-commands.test.js +0 -111
  150. package/dist/commands/sql-commands.test.d.ts +0 -1
  151. package/dist/commands/sql-commands.test.js +0 -68
  152. package/dist/connection.test.d.ts +0 -1
  153. package/dist/connection.test.js +0 -426
  154. package/dist/connectors/bigquery/connector.test.d.ts +0 -1
  155. package/dist/connectors/bigquery/connector.test.js +0 -363
  156. package/dist/connectors/bigquery/dialect.test.d.ts +0 -1
  157. package/dist/connectors/bigquery/dialect.test.js +0 -36
  158. package/dist/connectors/clickhouse/connector.test.d.ts +0 -1
  159. package/dist/connectors/clickhouse/connector.test.js +0 -342
  160. package/dist/connectors/clickhouse/dialect.test.d.ts +0 -1
  161. package/dist/connectors/clickhouse/dialect.test.js +0 -36
  162. package/dist/connectors/mysql/connector.test.d.ts +0 -1
  163. package/dist/connectors/mysql/connector.test.js +0 -365
  164. package/dist/connectors/mysql/dialect.test.d.ts +0 -1
  165. package/dist/connectors/mysql/dialect.test.js +0 -36
  166. package/dist/connectors/postgres/connector.test.d.ts +0 -1
  167. package/dist/connectors/postgres/connector.test.js +0 -391
  168. package/dist/connectors/postgres/dialect.test.d.ts +0 -1
  169. package/dist/connectors/postgres/dialect.test.js +0 -37
  170. package/dist/connectors/postgres/historic-sql-query-client.test.d.ts +0 -1
  171. package/dist/connectors/postgres/historic-sql-query-client.test.js +0 -45
  172. package/dist/connectors/snowflake/connector.test.d.ts +0 -1
  173. package/dist/connectors/snowflake/connector.test.js +0 -462
  174. package/dist/connectors/snowflake/dialect.test.d.ts +0 -1
  175. package/dist/connectors/snowflake/dialect.test.js +0 -34
  176. package/dist/connectors/snowflake/identifiers.test.d.ts +0 -1
  177. package/dist/connectors/snowflake/identifiers.test.js +0 -12
  178. package/dist/connectors/snowflake/sdk-logger.test.d.ts +0 -1
  179. package/dist/connectors/snowflake/sdk-logger.test.js +0 -47
  180. package/dist/connectors/sqlite/connector.test.d.ts +0 -1
  181. package/dist/connectors/sqlite/connector.test.js +0 -207
  182. package/dist/connectors/sqlite/dialect.test.d.ts +0 -1
  183. package/dist/connectors/sqlite/dialect.test.js +0 -23
  184. package/dist/connectors/sqlserver/connector.test.d.ts +0 -1
  185. package/dist/connectors/sqlserver/connector.test.js +0 -313
  186. package/dist/connectors/sqlserver/dialect.test.d.ts +0 -1
  187. package/dist/connectors/sqlserver/dialect.test.js +0 -36
  188. package/dist/context/connections/bigquery-identifiers.test.d.ts +0 -1
  189. package/dist/context/connections/bigquery-identifiers.test.js +0 -13
  190. package/dist/context/connections/dialects.test.d.ts +0 -1
  191. package/dist/context/connections/dialects.test.js +0 -24
  192. package/dist/context/connections/local-query-executor.test.d.ts +0 -1
  193. package/dist/context/connections/local-query-executor.test.js +0 -48
  194. package/dist/context/connections/local-warehouse-descriptor.test.d.ts +0 -1
  195. package/dist/context/connections/local-warehouse-descriptor.test.js +0 -53
  196. package/dist/context/connections/notion-config.test.d.ts +0 -1
  197. package/dist/context/connections/notion-config.test.js +0 -121
  198. package/dist/context/connections/postgres-query-executor.test.d.ts +0 -1
  199. package/dist/context/connections/postgres-query-executor.test.js +0 -91
  200. package/dist/context/connections/read-only-sql.test.d.ts +0 -1
  201. package/dist/context/connections/read-only-sql.test.js +0 -20
  202. package/dist/context/connections/sqlite-query-executor.test.d.ts +0 -1
  203. package/dist/context/connections/sqlite-query-executor.test.js +0 -113
  204. package/dist/context/core/config-reference.test.d.ts +0 -1
  205. package/dist/context/core/config-reference.test.js +0 -27
  206. package/dist/context/core/git.service.assert-worktree-clean.test.d.ts +0 -1
  207. package/dist/context/core/git.service.assert-worktree-clean.test.js +0 -62
  208. package/dist/context/core/git.service.delete-directories.test.d.ts +0 -1
  209. package/dist/context/core/git.service.delete-directories.test.js +0 -61
  210. package/dist/context/core/git.service.patch.test.d.ts +0 -1
  211. package/dist/context/core/git.service.patch.test.js +0 -40
  212. package/dist/context/core/git.service.reset-hard.test.d.ts +0 -1
  213. package/dist/context/core/git.service.reset-hard.test.js +0 -47
  214. package/dist/context/core/git.service.test.d.ts +0 -1
  215. package/dist/context/core/git.service.test.js +0 -357
  216. package/dist/context/core/session-worktree.service.test.d.ts +0 -1
  217. package/dist/context/core/session-worktree.service.test.js +0 -97
  218. package/dist/context/daemon/semantic-layer-compute.test.d.ts +0 -1
  219. package/dist/context/daemon/semantic-layer-compute.test.js +0 -305
  220. package/dist/context/index-sync/reindex.test.d.ts +0 -1
  221. package/dist/context/index-sync/reindex.test.js +0 -139
  222. package/dist/context/ingest/action-identity.test.d.ts +0 -1
  223. package/dist/context/ingest/action-identity.test.js +0 -19
  224. package/dist/context/ingest/adapters/dbt/chunk.test.d.ts +0 -1
  225. package/dist/context/ingest/adapters/dbt/chunk.test.js +0 -30
  226. package/dist/context/ingest/adapters/dbt/dbt.adapter.test.d.ts +0 -1
  227. package/dist/context/ingest/adapters/dbt/dbt.adapter.test.js +0 -43
  228. package/dist/context/ingest/adapters/dbt/fetch.test.d.ts +0 -1
  229. package/dist/context/ingest/adapters/dbt/fetch.test.js +0 -30
  230. package/dist/context/ingest/adapters/dbt/parse.test.d.ts +0 -1
  231. package/dist/context/ingest/adapters/dbt/parse.test.js +0 -7
  232. package/dist/context/ingest/adapters/dbt-descriptions/parse-schema.test.d.ts +0 -1
  233. package/dist/context/ingest/adapters/dbt-descriptions/parse-schema.test.js +0 -195
  234. package/dist/context/ingest/adapters/historic-sql/bigquery-query-history-reader.test.d.ts +0 -1
  235. package/dist/context/ingest/adapters/historic-sql/bigquery-query-history-reader.test.js +0 -121
  236. package/dist/context/ingest/adapters/historic-sql/buckets.test.d.ts +0 -1
  237. package/dist/context/ingest/adapters/historic-sql/buckets.test.js +0 -49
  238. package/dist/context/ingest/adapters/historic-sql/chunk-unified.test.d.ts +0 -1
  239. package/dist/context/ingest/adapters/historic-sql/chunk-unified.test.js +0 -160
  240. package/dist/context/ingest/adapters/historic-sql/detect.test.d.ts +0 -1
  241. package/dist/context/ingest/adapters/historic-sql/detect.test.js +0 -48
  242. package/dist/context/ingest/adapters/historic-sql/evidence-tool.test.d.ts +0 -1
  243. package/dist/context/ingest/adapters/historic-sql/evidence-tool.test.js +0 -67
  244. package/dist/context/ingest/adapters/historic-sql/evidence.test.d.ts +0 -1
  245. package/dist/context/ingest/adapters/historic-sql/evidence.test.js +0 -43
  246. package/dist/context/ingest/adapters/historic-sql/historic-sql.adapter.test.d.ts +0 -1
  247. package/dist/context/ingest/adapters/historic-sql/historic-sql.adapter.test.js +0 -98
  248. package/dist/context/ingest/adapters/historic-sql/local-ingest-acceptance.test.d.ts +0 -1
  249. package/dist/context/ingest/adapters/historic-sql/local-ingest-acceptance.test.js +0 -235
  250. package/dist/context/ingest/adapters/historic-sql/pattern-inputs.test.d.ts +0 -1
  251. package/dist/context/ingest/adapters/historic-sql/pattern-inputs.test.js +0 -68
  252. package/dist/context/ingest/adapters/historic-sql/postgres-pgss-reader.test.d.ts +0 -1
  253. package/dist/context/ingest/adapters/historic-sql/postgres-pgss-reader.test.js +0 -205
  254. package/dist/context/ingest/adapters/historic-sql/projection.test.d.ts +0 -1
  255. package/dist/context/ingest/adapters/historic-sql/projection.test.js +0 -392
  256. package/dist/context/ingest/adapters/historic-sql/redaction.test.d.ts +0 -1
  257. package/dist/context/ingest/adapters/historic-sql/redaction.test.js +0 -22
  258. package/dist/context/ingest/adapters/historic-sql/skill-schemas.test.d.ts +0 -1
  259. package/dist/context/ingest/adapters/historic-sql/skill-schemas.test.js +0 -62
  260. package/dist/context/ingest/adapters/historic-sql/snowflake-query-history-reader.test.d.ts +0 -1
  261. package/dist/context/ingest/adapters/historic-sql/snowflake-query-history-reader.test.js +0 -117
  262. package/dist/context/ingest/adapters/historic-sql/stage-unified.test.d.ts +0 -1
  263. package/dist/context/ingest/adapters/historic-sql/stage-unified.test.js +0 -405
  264. package/dist/context/ingest/adapters/historic-sql/types.test.d.ts +0 -1
  265. package/dist/context/ingest/adapters/historic-sql/types.test.js +0 -87
  266. package/dist/context/ingest/adapters/live-database/chunk.test.d.ts +0 -1
  267. package/dist/context/ingest/adapters/live-database/chunk.test.js +0 -95
  268. package/dist/context/ingest/adapters/live-database/daemon-introspection.test.d.ts +0 -1
  269. package/dist/context/ingest/adapters/live-database/daemon-introspection.test.js +0 -241
  270. package/dist/context/ingest/adapters/live-database/live-database.adapter.test.d.ts +0 -1
  271. package/dist/context/ingest/adapters/live-database/live-database.adapter.test.js +0 -105
  272. package/dist/context/ingest/adapters/live-database/manifest.test.d.ts +0 -1
  273. package/dist/context/ingest/adapters/live-database/manifest.test.js +0 -291
  274. package/dist/context/ingest/adapters/live-database/stage.test.d.ts +0 -1
  275. package/dist/context/ingest/adapters/live-database/stage.test.js +0 -133
  276. package/dist/context/ingest/adapters/looker/chunk.test.d.ts +0 -1
  277. package/dist/context/ingest/adapters/looker/chunk.test.js +0 -142
  278. package/dist/context/ingest/adapters/looker/client-boundary.test.d.ts +0 -1
  279. package/dist/context/ingest/adapters/looker/client-boundary.test.js +0 -12
  280. package/dist/context/ingest/adapters/looker/client.test.d.ts +0 -1
  281. package/dist/context/ingest/adapters/looker/client.test.js +0 -407
  282. package/dist/context/ingest/adapters/looker/daemon-table-identifier-parser.test.d.ts +0 -1
  283. package/dist/context/ingest/adapters/looker/daemon-table-identifier-parser.test.js +0 -40
  284. package/dist/context/ingest/adapters/looker/detect.test.d.ts +0 -1
  285. package/dist/context/ingest/adapters/looker/detect.test.js +0 -39
  286. package/dist/context/ingest/adapters/looker/evidence-documents.test.d.ts +0 -1
  287. package/dist/context/ingest/adapters/looker/evidence-documents.test.js +0 -178
  288. package/dist/context/ingest/adapters/looker/factory.test.d.ts +0 -1
  289. package/dist/context/ingest/adapters/looker/factory.test.js +0 -55
  290. package/dist/context/ingest/adapters/looker/fetch-report.test.d.ts +0 -1
  291. package/dist/context/ingest/adapters/looker/fetch-report.test.js +0 -71
  292. package/dist/context/ingest/adapters/looker/fetch.test.d.ts +0 -1
  293. package/dist/context/ingest/adapters/looker/fetch.test.js +0 -592
  294. package/dist/context/ingest/adapters/looker/local-runtime-store.test.d.ts +0 -1
  295. package/dist/context/ingest/adapters/looker/local-runtime-store.test.js +0 -106
  296. package/dist/context/ingest/adapters/looker/looker.adapter.test.d.ts +0 -1
  297. package/dist/context/ingest/adapters/looker/looker.adapter.test.js +0 -99
  298. package/dist/context/ingest/adapters/looker/mapping.test.d.ts +0 -1
  299. package/dist/context/ingest/adapters/looker/mapping.test.js +0 -334
  300. package/dist/context/ingest/adapters/looker/reconcile.test.d.ts +0 -1
  301. package/dist/context/ingest/adapters/looker/reconcile.test.js +0 -12
  302. package/dist/context/ingest/adapters/looker/scope.test.d.ts +0 -1
  303. package/dist/context/ingest/adapters/looker/scope.test.js +0 -84
  304. package/dist/context/ingest/adapters/looker/target-connections.test.d.ts +0 -1
  305. package/dist/context/ingest/adapters/looker/target-connections.test.js +0 -71
  306. package/dist/context/ingest/adapters/looker/tools/looker-query-to-sl.tool.test.d.ts +0 -1
  307. package/dist/context/ingest/adapters/looker/tools/looker-query-to-sl.tool.test.js +0 -211
  308. package/dist/context/ingest/adapters/looker/types.test.d.ts +0 -1
  309. package/dist/context/ingest/adapters/looker/types.test.js +0 -261
  310. package/dist/context/ingest/adapters/lookml/chunk.test.d.ts +0 -1
  311. package/dist/context/ingest/adapters/lookml/chunk.test.js +0 -213
  312. package/dist/context/ingest/adapters/lookml/detect.test.d.ts +0 -1
  313. package/dist/context/ingest/adapters/lookml/detect.test.js +0 -37
  314. package/dist/context/ingest/adapters/lookml/fetch-report.test.d.ts +0 -1
  315. package/dist/context/ingest/adapters/lookml/fetch-report.test.js +0 -82
  316. package/dist/context/ingest/adapters/lookml/fetch.test.d.ts +0 -1
  317. package/dist/context/ingest/adapters/lookml/fetch.test.js +0 -121
  318. package/dist/context/ingest/adapters/lookml/graph.test.d.ts +0 -1
  319. package/dist/context/ingest/adapters/lookml/graph.test.js +0 -105
  320. package/dist/context/ingest/adapters/lookml/lookml.adapter.test.d.ts +0 -1
  321. package/dist/context/ingest/adapters/lookml/lookml.adapter.test.js +0 -49
  322. package/dist/context/ingest/adapters/lookml/parse.test.d.ts +0 -1
  323. package/dist/context/ingest/adapters/lookml/parse.test.js +0 -118
  324. package/dist/context/ingest/adapters/lookml/pull-config.test.d.ts +0 -1
  325. package/dist/context/ingest/adapters/lookml/pull-config.test.js +0 -128
  326. package/dist/context/ingest/adapters/metabase/card-references.test.d.ts +0 -1
  327. package/dist/context/ingest/adapters/metabase/card-references.test.js +0 -36
  328. package/dist/context/ingest/adapters/metabase/chunk.test.d.ts +0 -1
  329. package/dist/context/ingest/adapters/metabase/chunk.test.js +0 -299
  330. package/dist/context/ingest/adapters/metabase/client-boundary.test.d.ts +0 -1
  331. package/dist/context/ingest/adapters/metabase/client-boundary.test.js +0 -38
  332. package/dist/context/ingest/adapters/metabase/client-port.test.d.ts +0 -1
  333. package/dist/context/ingest/adapters/metabase/client-port.test.js +0 -86
  334. package/dist/context/ingest/adapters/metabase/client.test.d.ts +0 -1
  335. package/dist/context/ingest/adapters/metabase/client.test.js +0 -377
  336. package/dist/context/ingest/adapters/metabase/detect.test.d.ts +0 -1
  337. package/dist/context/ingest/adapters/metabase/detect.test.js +0 -42
  338. package/dist/context/ingest/adapters/metabase/fanout-planner.test.d.ts +0 -1
  339. package/dist/context/ingest/adapters/metabase/fanout-planner.test.js +0 -44
  340. package/dist/context/ingest/adapters/metabase/fetch-scope.test.d.ts +0 -1
  341. package/dist/context/ingest/adapters/metabase/fetch-scope.test.js +0 -124
  342. package/dist/context/ingest/adapters/metabase/fetch.test.d.ts +0 -1
  343. package/dist/context/ingest/adapters/metabase/fetch.test.js +0 -557
  344. package/dist/context/ingest/adapters/metabase/local-metabase.adapter.test.d.ts +0 -1
  345. package/dist/context/ingest/adapters/metabase/local-metabase.adapter.test.js +0 -56
  346. package/dist/context/ingest/adapters/metabase/local-source-state-store.test.d.ts +0 -1
  347. package/dist/context/ingest/adapters/metabase/local-source-state-store.test.js +0 -99
  348. package/dist/context/ingest/adapters/metabase/mapping.test.d.ts +0 -1
  349. package/dist/context/ingest/adapters/metabase/mapping.test.js +0 -215
  350. package/dist/context/ingest/adapters/metabase/metabase.adapter.test.d.ts +0 -1
  351. package/dist/context/ingest/adapters/metabase/metabase.adapter.test.js +0 -129
  352. package/dist/context/ingest/adapters/metabase/serialize-card.test.d.ts +0 -1
  353. package/dist/context/ingest/adapters/metabase/serialize-card.test.js +0 -205
  354. package/dist/context/ingest/adapters/metabase/types.test.d.ts +0 -1
  355. package/dist/context/ingest/adapters/metabase/types.test.js +0 -75
  356. package/dist/context/ingest/adapters/metricflow/chunk.test.d.ts +0 -1
  357. package/dist/context/ingest/adapters/metricflow/chunk.test.js +0 -114
  358. package/dist/context/ingest/adapters/metricflow/deep-parse.test.d.ts +0 -1
  359. package/dist/context/ingest/adapters/metricflow/deep-parse.test.js +0 -1139
  360. package/dist/context/ingest/adapters/metricflow/detect.test.d.ts +0 -1
  361. package/dist/context/ingest/adapters/metricflow/detect.test.js +0 -43
  362. package/dist/context/ingest/adapters/metricflow/fetch.test.d.ts +0 -1
  363. package/dist/context/ingest/adapters/metricflow/fetch.test.js +0 -97
  364. package/dist/context/ingest/adapters/metricflow/graph.test.d.ts +0 -1
  365. package/dist/context/ingest/adapters/metricflow/graph.test.js +0 -245
  366. package/dist/context/ingest/adapters/metricflow/import-semantic-models.test.d.ts +0 -1
  367. package/dist/context/ingest/adapters/metricflow/import-semantic-models.test.js +0 -318
  368. package/dist/context/ingest/adapters/metricflow/metricflow.adapter.test.d.ts +0 -1
  369. package/dist/context/ingest/adapters/metricflow/metricflow.adapter.test.js +0 -212
  370. package/dist/context/ingest/adapters/metricflow/parse.test.d.ts +0 -1
  371. package/dist/context/ingest/adapters/metricflow/parse.test.js +0 -171
  372. package/dist/context/ingest/adapters/metricflow/pull-config.test.d.ts +0 -1
  373. package/dist/context/ingest/adapters/metricflow/pull-config.test.js +0 -57
  374. package/dist/context/ingest/adapters/metricflow/semantic-models.test.d.ts +0 -1
  375. package/dist/context/ingest/adapters/metricflow/semantic-models.test.js +0 -204
  376. package/dist/context/ingest/adapters/notion/cluster.test.d.ts +0 -1
  377. package/dist/context/ingest/adapters/notion/cluster.test.js +0 -123
  378. package/dist/context/ingest/adapters/notion/fetch.test.d.ts +0 -1
  379. package/dist/context/ingest/adapters/notion/fetch.test.js +0 -358
  380. package/dist/context/ingest/adapters/notion/local-state-store.test.d.ts +0 -1
  381. package/dist/context/ingest/adapters/notion/local-state-store.test.js +0 -29
  382. package/dist/context/ingest/adapters/notion/normalize.test.d.ts +0 -1
  383. package/dist/context/ingest/adapters/notion/normalize.test.js +0 -64
  384. package/dist/context/ingest/adapters/notion/notion-client.test.d.ts +0 -1
  385. package/dist/context/ingest/adapters/notion/notion-client.test.js +0 -49
  386. package/dist/context/ingest/adapters/notion/notion.adapter.test.d.ts +0 -1
  387. package/dist/context/ingest/adapters/notion/notion.adapter.test.js +0 -315
  388. package/dist/context/ingest/artifact-gates.test.d.ts +0 -1
  389. package/dist/context/ingest/artifact-gates.test.js +0 -167
  390. package/dist/context/ingest/canonical-pins.test.d.ts +0 -1
  391. package/dist/context/ingest/canonical-pins.test.js +0 -66
  392. package/dist/context/ingest/clustering/kmeans.test.d.ts +0 -1
  393. package/dist/context/ingest/clustering/kmeans.test.js +0 -61
  394. package/dist/context/ingest/context-candidates/candidate-dedup.service.test.d.ts +0 -1
  395. package/dist/context/ingest/context-candidates/candidate-dedup.service.test.js +0 -216
  396. package/dist/context/ingest/context-candidates/context-candidate-carryforward.service.test.d.ts +0 -1
  397. package/dist/context/ingest/context-candidates/context-candidate-carryforward.service.test.js +0 -161
  398. package/dist/context/ingest/context-candidates/curator-pagination.service.test.d.ts +0 -1
  399. package/dist/context/ingest/context-candidates/curator-pagination.service.test.js +0 -168
  400. package/dist/context/ingest/context-candidates/embedding-text.test.d.ts +0 -1
  401. package/dist/context/ingest/context-candidates/embedding-text.test.js +0 -10
  402. package/dist/context/ingest/context-candidates/store.test.d.ts +0 -1
  403. package/dist/context/ingest/context-candidates/store.test.js +0 -67
  404. package/dist/context/ingest/context-evidence/context-evidence-index.service.test.d.ts +0 -1
  405. package/dist/context/ingest/context-evidence/context-evidence-index.service.test.js +0 -374
  406. package/dist/context/ingest/context-evidence/sqlite-context-evidence-store.test.d.ts +0 -1
  407. package/dist/context/ingest/context-evidence/sqlite-context-evidence-store.test.js +0 -416
  408. package/dist/context/ingest/context-evidence/store.test.d.ts +0 -1
  409. package/dist/context/ingest/context-evidence/store.test.js +0 -55
  410. package/dist/context/ingest/dbt-shared/project-vars.test.d.ts +0 -1
  411. package/dist/context/ingest/dbt-shared/project-vars.test.js +0 -90
  412. package/dist/context/ingest/dbt-shared/schema-files.test.d.ts +0 -1
  413. package/dist/context/ingest/dbt-shared/schema-files.test.js +0 -35
  414. package/dist/context/ingest/diff-set.service.test.d.ts +0 -1
  415. package/dist/context/ingest/diff-set.service.test.js +0 -132
  416. package/dist/context/ingest/final-gate-repair.test.d.ts +0 -1
  417. package/dist/context/ingest/final-gate-repair.test.js +0 -109
  418. package/dist/context/ingest/finalization-scope.test.d.ts +0 -1
  419. package/dist/context/ingest/finalization-scope.test.js +0 -114
  420. package/dist/context/ingest/ingest-bundle.runner.isolated-diff.test.d.ts +0 -1
  421. package/dist/context/ingest/ingest-bundle.runner.isolated-diff.test.js +0 -1928
  422. package/dist/context/ingest/ingest-bundle.runner.test.d.ts +0 -1
  423. package/dist/context/ingest/ingest-bundle.runner.test.js +0 -1899
  424. package/dist/context/ingest/ingest-prompts.test.d.ts +0 -1
  425. package/dist/context/ingest/ingest-prompts.test.js +0 -32
  426. package/dist/context/ingest/ingest-runtime-assets.test.d.ts +0 -1
  427. package/dist/context/ingest/ingest-runtime-assets.test.js +0 -89
  428. package/dist/context/ingest/ingest-trace.test.d.ts +0 -1
  429. package/dist/context/ingest/ingest-trace.test.js +0 -76
  430. package/dist/context/ingest/isolated-diff/git-patch.test.d.ts +0 -1
  431. package/dist/context/ingest/isolated-diff/git-patch.test.js +0 -76
  432. package/dist/context/ingest/isolated-diff/patch-integrator.test.d.ts +0 -1
  433. package/dist/context/ingest/isolated-diff/patch-integrator.test.js +0 -369
  434. package/dist/context/ingest/isolated-diff/textual-conflict-resolver.test.d.ts +0 -1
  435. package/dist/context/ingest/isolated-diff/textual-conflict-resolver.test.js +0 -101
  436. package/dist/context/ingest/isolated-diff/work-unit-executor.test.d.ts +0 -1
  437. package/dist/context/ingest/isolated-diff/work-unit-executor.test.js +0 -137
  438. package/dist/context/ingest/local-adapters.test.d.ts +0 -1
  439. package/dist/context/ingest/local-adapters.test.js +0 -612
  440. package/dist/context/ingest/local-bundle-ingest.test.d.ts +0 -1
  441. package/dist/context/ingest/local-bundle-ingest.test.js +0 -794
  442. package/dist/context/ingest/local-bundle-runtime.test.d.ts +0 -1
  443. package/dist/context/ingest/local-bundle-runtime.test.js +0 -240
  444. package/dist/context/ingest/local-embedding-provider.integration.test.d.ts +0 -1
  445. package/dist/context/ingest/local-embedding-provider.integration.test.js +0 -139
  446. package/dist/context/ingest/local-mapping-reconcile.test.d.ts +0 -1
  447. package/dist/context/ingest/local-mapping-reconcile.test.js +0 -61
  448. package/dist/context/ingest/local-metabase-ingest.test.d.ts +0 -1
  449. package/dist/context/ingest/local-metabase-ingest.test.js +0 -227
  450. package/dist/context/ingest/local-stage-ingest.test.d.ts +0 -1
  451. package/dist/context/ingest/local-stage-ingest.test.js +0 -581
  452. package/dist/context/ingest/memory-flow/acceptance-fixtures.d.ts +0 -6
  453. package/dist/context/ingest/memory-flow/acceptance-fixtures.js +0 -155
  454. package/dist/context/ingest/memory-flow/acceptance.test.d.ts +0 -1
  455. package/dist/context/ingest/memory-flow/acceptance.test.js +0 -43
  456. package/dist/context/ingest/memory-flow/events.test.d.ts +0 -1
  457. package/dist/context/ingest/memory-flow/events.test.js +0 -319
  458. package/dist/context/ingest/memory-flow/interaction.test.d.ts +0 -1
  459. package/dist/context/ingest/memory-flow/interaction.test.js +0 -264
  460. package/dist/context/ingest/memory-flow/interactive-render.test.d.ts +0 -1
  461. package/dist/context/ingest/memory-flow/interactive-render.test.js +0 -160
  462. package/dist/context/ingest/memory-flow/live-buffer.test.d.ts +0 -1
  463. package/dist/context/ingest/memory-flow/live-buffer.test.js +0 -77
  464. package/dist/context/ingest/memory-flow/render.test.d.ts +0 -1
  465. package/dist/context/ingest/memory-flow/render.test.js +0 -105
  466. package/dist/context/ingest/memory-flow/schema.test.d.ts +0 -1
  467. package/dist/context/ingest/memory-flow/schema.test.js +0 -147
  468. package/dist/context/ingest/memory-flow/summary.test.d.ts +0 -1
  469. package/dist/context/ingest/memory-flow/summary.test.js +0 -130
  470. package/dist/context/ingest/memory-flow/view-model.test.d.ts +0 -1
  471. package/dist/context/ingest/memory-flow/view-model.test.js +0 -397
  472. package/dist/context/ingest/memory-flow/visuals.test.d.ts +0 -1
  473. package/dist/context/ingest/memory-flow/visuals.test.js +0 -49
  474. package/dist/context/ingest/page-triage/page-triage.service.test.d.ts +0 -1
  475. package/dist/context/ingest/page-triage/page-triage.service.test.js +0 -311
  476. package/dist/context/ingest/raw-sources-paths.test.d.ts +0 -1
  477. package/dist/context/ingest/raw-sources-paths.test.js +0 -18
  478. package/dist/context/ingest/repo-fetch.test.d.ts +0 -1
  479. package/dist/context/ingest/repo-fetch.test.js +0 -168
  480. package/dist/context/ingest/report-snapshot.test.d.ts +0 -1
  481. package/dist/context/ingest/report-snapshot.test.js +0 -329
  482. package/dist/context/ingest/semantic-layer-target-policy.test.d.ts +0 -1
  483. package/dist/context/ingest/semantic-layer-target-policy.test.js +0 -25
  484. package/dist/context/ingest/source-adapter-registry.test.d.ts +0 -1
  485. package/dist/context/ingest/source-adapter-registry.test.js +0 -35
  486. package/dist/context/ingest/sqlite-bundle-ingest-store.test.d.ts +0 -1
  487. package/dist/context/ingest/sqlite-bundle-ingest-store.test.js +0 -517
  488. package/dist/context/ingest/sqlite-local-ingest-store.test.d.ts +0 -1
  489. package/dist/context/ingest/sqlite-local-ingest-store.test.js +0 -143
  490. package/dist/context/ingest/stages/build-reconcile-context.context-candidates.test.d.ts +0 -1
  491. package/dist/context/ingest/stages/build-reconcile-context.context-candidates.test.js +0 -102
  492. package/dist/context/ingest/stages/build-reconcile-context.test.d.ts +0 -1
  493. package/dist/context/ingest/stages/build-reconcile-context.test.js +0 -141
  494. package/dist/context/ingest/stages/build-wu-context.test.d.ts +0 -1
  495. package/dist/context/ingest/stages/build-wu-context.test.js +0 -196
  496. package/dist/context/ingest/stages/stage-1-stage-raw-files.test.d.ts +0 -1
  497. package/dist/context/ingest/stages/stage-1-stage-raw-files.test.js +0 -54
  498. package/dist/context/ingest/stages/stage-3-work-units.test.d.ts +0 -1
  499. package/dist/context/ingest/stages/stage-3-work-units.test.js +0 -175
  500. package/dist/context/ingest/stages/stage-4-reconciliation.test.d.ts +0 -1
  501. package/dist/context/ingest/stages/stage-4-reconciliation.test.js +0 -144
  502. package/dist/context/ingest/stages/validate-wu-sources.test.d.ts +0 -1
  503. package/dist/context/ingest/stages/validate-wu-sources.test.js +0 -27
  504. package/dist/context/ingest/tools/emit-reconciliation-records.tool.test.d.ts +0 -1
  505. package/dist/context/ingest/tools/emit-reconciliation-records.tool.test.js +0 -237
  506. package/dist/context/ingest/tools/eviction-list.tool.test.d.ts +0 -1
  507. package/dist/context/ingest/tools/eviction-list.tool.test.js +0 -44
  508. package/dist/context/ingest/tools/read-raw-file.tool.test.d.ts +0 -1
  509. package/dist/context/ingest/tools/read-raw-file.tool.test.js +0 -45
  510. package/dist/context/ingest/tools/read-raw-span.tool.test.d.ts +0 -1
  511. package/dist/context/ingest/tools/read-raw-span.tool.test.js +0 -34
  512. package/dist/context/ingest/tools/stage-diff.tool.test.d.ts +0 -1
  513. package/dist/context/ingest/tools/stage-diff.tool.test.js +0 -112
  514. package/dist/context/ingest/tools/stage-list.tool.test.d.ts +0 -1
  515. package/dist/context/ingest/tools/stage-list.tool.test.js +0 -58
  516. package/dist/context/ingest/tools/tool-transcript-summary.test.d.ts +0 -1
  517. package/dist/context/ingest/tools/tool-transcript-summary.test.js +0 -141
  518. package/dist/context/ingest/tools/warehouse-verification/discover-data.tool.test.d.ts +0 -1
  519. package/dist/context/ingest/tools/warehouse-verification/discover-data.tool.test.js +0 -107
  520. package/dist/context/ingest/tools/warehouse-verification/entity-details.tool.test.d.ts +0 -1
  521. package/dist/context/ingest/tools/warehouse-verification/entity-details.tool.test.js +0 -146
  522. package/dist/context/ingest/tools/warehouse-verification/sql-execution.tool.test.d.ts +0 -1
  523. package/dist/context/ingest/tools/warehouse-verification/sql-execution.tool.test.js +0 -50
  524. package/dist/context/ingest/wiki-body-refs.test.d.ts +0 -1
  525. package/dist/context/ingest/wiki-body-refs.test.js +0 -138
  526. package/dist/context/ingest/wiki-sl-ref-repair.test.d.ts +0 -1
  527. package/dist/context/ingest/wiki-sl-ref-repair.test.js +0 -81
  528. package/dist/context/llm/ai-sdk-runtime.test.d.ts +0 -1
  529. package/dist/context/llm/ai-sdk-runtime.test.js +0 -308
  530. package/dist/context/llm/claude-code-env.test.d.ts +0 -1
  531. package/dist/context/llm/claude-code-env.test.js +0 -17
  532. package/dist/context/llm/claude-code-models.test.d.ts +0 -1
  533. package/dist/context/llm/claude-code-models.test.js +0 -15
  534. package/dist/context/llm/claude-code-runtime.test.d.ts +0 -1
  535. package/dist/context/llm/claude-code-runtime.test.js +0 -434
  536. package/dist/context/llm/debug-request-recorder.test.d.ts +0 -1
  537. package/dist/context/llm/debug-request-recorder.test.js +0 -112
  538. package/dist/context/llm/embedding-port.test.d.ts +0 -1
  539. package/dist/context/llm/embedding-port.test.js +0 -34
  540. package/dist/context/llm/local-config.test.d.ts +0 -1
  541. package/dist/context/llm/local-config.test.js +0 -164
  542. package/dist/context/llm/runtime-local-config.test.d.ts +0 -1
  543. package/dist/context/llm/runtime-local-config.test.js +0 -17
  544. package/dist/context/llm/runtime-tools.test.d.ts +0 -1
  545. package/dist/context/llm/runtime-tools.test.js +0 -36
  546. package/dist/context/mcp/local-project-ports.test.d.ts +0 -1
  547. package/dist/context/mcp/local-project-ports.test.js +0 -689
  548. package/dist/context/mcp/server.test.d.ts +0 -1
  549. package/dist/context/mcp/server.test.js +0 -902
  550. package/dist/context/memory/local-memory.test.d.ts +0 -1
  551. package/dist/context/memory/local-memory.test.js +0 -173
  552. package/dist/context/memory/memory-agent.service.ingest.test.d.ts +0 -1
  553. package/dist/context/memory/memory-agent.service.ingest.test.js +0 -355
  554. package/dist/context/memory/memory-agent.service.test.d.ts +0 -1
  555. package/dist/context/memory/memory-agent.service.test.js +0 -413
  556. package/dist/context/memory/memory-runs.test.d.ts +0 -1
  557. package/dist/context/memory/memory-runs.test.js +0 -158
  558. package/dist/context/memory/memory-runtime-assets.test.d.ts +0 -1
  559. package/dist/context/memory/memory-runtime-assets.test.js +0 -162
  560. package/dist/context/project/config.test.d.ts +0 -1
  561. package/dist/context/project/config.test.js +0 -467
  562. package/dist/context/project/driver-schemas.test.d.ts +0 -1
  563. package/dist/context/project/driver-schemas.test.js +0 -125
  564. package/dist/context/project/local-git-file-store.test.d.ts +0 -1
  565. package/dist/context/project/local-git-file-store.test.js +0 -71
  566. package/dist/context/project/mappings-yaml-schema.test.d.ts +0 -1
  567. package/dist/context/project/mappings-yaml-schema.test.js +0 -79
  568. package/dist/context/project/project.test.d.ts +0 -1
  569. package/dist/context/project/project.test.js +0 -55
  570. package/dist/context/project/setup-config.test.d.ts +0 -1
  571. package/dist/context/project/setup-config.test.js +0 -38
  572. package/dist/context/prompts/prompt.service.test.d.ts +0 -1
  573. package/dist/context/prompts/prompt.service.test.js +0 -43
  574. package/dist/context/scan/credentials.test.d.ts +0 -1
  575. package/dist/context/scan/credentials.test.js +0 -162
  576. package/dist/context/scan/data-dictionary.test.d.ts +0 -1
  577. package/dist/context/scan/data-dictionary.test.js +0 -92
  578. package/dist/context/scan/description-generation.test.d.ts +0 -1
  579. package/dist/context/scan/description-generation.test.js +0 -693
  580. package/dist/context/scan/embedding-text.test.d.ts +0 -1
  581. package/dist/context/scan/embedding-text.test.js +0 -36
  582. package/dist/context/scan/enrichment-state.test.d.ts +0 -1
  583. package/dist/context/scan/enrichment-state.test.js +0 -147
  584. package/dist/context/scan/enrichment-summary.test.d.ts +0 -1
  585. package/dist/context/scan/enrichment-summary.test.js +0 -34
  586. package/dist/context/scan/enrichment-types.test.d.ts +0 -1
  587. package/dist/context/scan/enrichment-types.test.js +0 -141
  588. package/dist/context/scan/entity-details.test.d.ts +0 -1
  589. package/dist/context/scan/entity-details.test.js +0 -234
  590. package/dist/context/scan/local-enrichment-artifacts.test.d.ts +0 -1
  591. package/dist/context/scan/local-enrichment-artifacts.test.js +0 -771
  592. package/dist/context/scan/local-enrichment.test.d.ts +0 -1
  593. package/dist/context/scan/local-enrichment.test.js +0 -765
  594. package/dist/context/scan/local-scan.test.d.ts +0 -1
  595. package/dist/context/scan/local-scan.test.js +0 -1663
  596. package/dist/context/scan/local-structural-artifacts.test.d.ts +0 -1
  597. package/dist/context/scan/local-structural-artifacts.test.js +0 -144
  598. package/dist/context/scan/relationship-benchmark-report.test.d.ts +0 -1
  599. package/dist/context/scan/relationship-benchmark-report.test.js +0 -389
  600. package/dist/context/scan/relationship-benchmarks.test.d.ts +0 -1
  601. package/dist/context/scan/relationship-benchmarks.test.js +0 -1072
  602. package/dist/context/scan/relationship-budget.test.d.ts +0 -1
  603. package/dist/context/scan/relationship-budget.test.js +0 -71
  604. package/dist/context/scan/relationship-candidates.test.d.ts +0 -1
  605. package/dist/context/scan/relationship-candidates.test.js +0 -747
  606. package/dist/context/scan/relationship-composite-candidates.test.d.ts +0 -1
  607. package/dist/context/scan/relationship-composite-candidates.test.js +0 -69
  608. package/dist/context/scan/relationship-diagnostics.test.d.ts +0 -1
  609. package/dist/context/scan/relationship-diagnostics.test.js +0 -333
  610. package/dist/context/scan/relationship-discovery.test.d.ts +0 -1
  611. package/dist/context/scan/relationship-discovery.test.js +0 -618
  612. package/dist/context/scan/relationship-formal-metadata.test.d.ts +0 -1
  613. package/dist/context/scan/relationship-formal-metadata.test.js +0 -125
  614. package/dist/context/scan/relationship-graph-resolver.test.d.ts +0 -1
  615. package/dist/context/scan/relationship-graph-resolver.test.js +0 -604
  616. package/dist/context/scan/relationship-llm-proposal.test.d.ts +0 -1
  617. package/dist/context/scan/relationship-llm-proposal.test.js +0 -197
  618. package/dist/context/scan/relationship-locality.test.d.ts +0 -1
  619. package/dist/context/scan/relationship-locality.test.js +0 -128
  620. package/dist/context/scan/relationship-name-similarity.test.d.ts +0 -1
  621. package/dist/context/scan/relationship-name-similarity.test.js +0 -68
  622. package/dist/context/scan/relationship-profiling.test.d.ts +0 -1
  623. package/dist/context/scan/relationship-profiling.test.js +0 -392
  624. package/dist/context/scan/relationship-scoring.test.d.ts +0 -1
  625. package/dist/context/scan/relationship-scoring.test.js +0 -86
  626. package/dist/context/scan/relationship-validation.test.d.ts +0 -1
  627. package/dist/context/scan/relationship-validation.test.js +0 -455
  628. package/dist/context/scan/table-ref.test.d.ts +0 -1
  629. package/dist/context/scan/table-ref.test.js +0 -53
  630. package/dist/context/scan/type-normalization.test.d.ts +0 -1
  631. package/dist/context/scan/type-normalization.test.js +0 -21
  632. package/dist/context/scan/types.test.d.ts +0 -1
  633. package/dist/context/scan/types.test.js +0 -206
  634. package/dist/context/scan/warehouse-catalog.test.d.ts +0 -1
  635. package/dist/context/scan/warehouse-catalog.test.js +0 -158
  636. package/dist/context/search/backend-conformance.test-utils.d.ts +0 -39
  637. package/dist/context/search/backend-conformance.test-utils.js +0 -88
  638. package/dist/context/search/backend-conformance.test-utils.test.d.ts +0 -1
  639. package/dist/context/search/backend-conformance.test-utils.test.js +0 -408
  640. package/dist/context/search/discover.test.d.ts +0 -1
  641. package/dist/context/search/discover.test.js +0 -197
  642. package/dist/context/search/hybrid-search-core.test.d.ts +0 -1
  643. package/dist/context/search/hybrid-search-core.test.js +0 -113
  644. package/dist/context/search/pglite-owner-process.test.d.ts +0 -1
  645. package/dist/context/search/pglite-owner-process.test.js +0 -273
  646. package/dist/context/search/pglite-runtime-boundary.test.d.ts +0 -1
  647. package/dist/context/search/pglite-runtime-boundary.test.js +0 -40
  648. package/dist/context/search/pglite-spike.test.d.ts +0 -1
  649. package/dist/context/search/pglite-spike.test.js +0 -249
  650. package/dist/context/search/query.test.d.ts +0 -1
  651. package/dist/context/search/query.test.js +0 -23
  652. package/dist/context/search/rrf.test.d.ts +0 -1
  653. package/dist/context/search/rrf.test.js +0 -47
  654. package/dist/context/skills/skills-registry.service.test.d.ts +0 -1
  655. package/dist/context/skills/skills-registry.service.test.js +0 -161
  656. package/dist/context/sl/dictionary-search.test.d.ts +0 -1
  657. package/dist/context/sl/dictionary-search.test.js +0 -204
  658. package/dist/context/sl/local-query.test.d.ts +0 -1
  659. package/dist/context/sl/local-query.test.js +0 -283
  660. package/dist/context/sl/local-sl.test.d.ts +0 -1
  661. package/dist/context/sl/local-sl.test.js +0 -334
  662. package/dist/context/sl/pglite-sl-search-prototype.test.d.ts +0 -1
  663. package/dist/context/sl/pglite-sl-search-prototype.test.js +0 -240
  664. package/dist/context/sl/schemas.contract.test.d.ts +0 -1
  665. package/dist/context/sl/schemas.contract.test.js +0 -62
  666. package/dist/context/sl/semantic-layer.service.test.d.ts +0 -1
  667. package/dist/context/sl/semantic-layer.service.test.js +0 -1107
  668. package/dist/context/sl/sl-dictionary-profile.test.d.ts +0 -1
  669. package/dist/context/sl/sl-dictionary-profile.test.js +0 -88
  670. package/dist/context/sl/sl-search.service.test.d.ts +0 -1
  671. package/dist/context/sl/sl-search.service.test.js +0 -256
  672. package/dist/context/sl/sqlite-sl-sources-index.test.d.ts +0 -1
  673. package/dist/context/sl/sqlite-sl-sources-index.test.js +0 -175
  674. package/dist/context/sl/tools/connection-id-schema.test.d.ts +0 -1
  675. package/dist/context/sl/tools/connection-id-schema.test.js +0 -14
  676. package/dist/context/sl/tools/sl-discover.tool.test.d.ts +0 -1
  677. package/dist/context/sl/tools/sl-discover.tool.test.js +0 -72
  678. package/dist/context/sl/tools/sl-edit-source.tool.test.d.ts +0 -1
  679. package/dist/context/sl/tools/sl-edit-source.tool.test.js +0 -184
  680. package/dist/context/sl/tools/sl-read-source.tool.session.test.d.ts +0 -1
  681. package/dist/context/sl/tools/sl-read-source.tool.session.test.js +0 -55
  682. package/dist/context/sl/tools/sl-rollback.tool.test.d.ts +0 -1
  683. package/dist/context/sl/tools/sl-rollback.tool.test.js +0 -57
  684. package/dist/context/sl/tools/sl-validate.tool.test.d.ts +0 -1
  685. package/dist/context/sl/tools/sl-validate.tool.test.js +0 -54
  686. package/dist/context/sl/tools/sl-warehouse-validation.test.d.ts +0 -1
  687. package/dist/context/sl/tools/sl-warehouse-validation.test.js +0 -136
  688. package/dist/context/sl/tools/sl-write-source.tool.test.d.ts +0 -1
  689. package/dist/context/sl/tools/sl-write-source.tool.test.js +0 -307
  690. package/dist/context/sql-analysis/http-sql-analysis-port.test.d.ts +0 -1
  691. package/dist/context/sql-analysis/http-sql-analysis-port.test.js +0 -147
  692. package/dist/context/test/make-local-git-repo.d.ts +0 -10
  693. package/dist/context/test/make-local-git-repo.js +0 -34
  694. package/dist/context/tools/context-evidence-tools.test.d.ts +0 -1
  695. package/dist/context/tools/context-evidence-tools.test.js +0 -486
  696. package/dist/context/tools/touched-sl-sources.test.d.ts +0 -1
  697. package/dist/context/tools/touched-sl-sources.test.js +0 -31
  698. package/dist/context/wiki/knowledge-wiki.service.test.d.ts +0 -1
  699. package/dist/context/wiki/knowledge-wiki.service.test.js +0 -205
  700. package/dist/context/wiki/local-knowledge.test.d.ts +0 -1
  701. package/dist/context/wiki/local-knowledge.test.js +0 -270
  702. package/dist/context/wiki/sqlite-knowledge-index.test.d.ts +0 -1
  703. package/dist/context/wiki/sqlite-knowledge-index.test.js +0 -129
  704. package/dist/context/wiki/tools/wiki-list-tags.tool.test.d.ts +0 -1
  705. package/dist/context/wiki/tools/wiki-list-tags.tool.test.js +0 -35
  706. package/dist/context/wiki/tools/wiki-read.tool.test.d.ts +0 -1
  707. package/dist/context/wiki/tools/wiki-read.tool.test.js +0 -66
  708. package/dist/context/wiki/tools/wiki-remove.tool.test.d.ts +0 -1
  709. package/dist/context/wiki/tools/wiki-remove.tool.test.js +0 -95
  710. package/dist/context/wiki/tools/wiki-search.tool.test.d.ts +0 -1
  711. package/dist/context/wiki/tools/wiki-search.tool.test.js +0 -35
  712. package/dist/context/wiki/tools/wiki-write.tool.test.d.ts +0 -1
  713. package/dist/context/wiki/tools/wiki-write.tool.test.js +0 -264
  714. package/dist/context/wiki/wiki-ref-validation.test.d.ts +0 -1
  715. package/dist/context/wiki/wiki-ref-validation.test.js +0 -64
  716. package/dist/context-build-view.test.d.ts +0 -1
  717. package/dist/context-build-view.test.js +0 -942
  718. package/dist/database-tree-picker.test.d.ts +0 -1
  719. package/dist/database-tree-picker.test.js +0 -188
  720. package/dist/demo-assets.test.d.ts +0 -1
  721. package/dist/demo-assets.test.js +0 -121
  722. package/dist/demo-metrics.test.d.ts +0 -1
  723. package/dist/demo-metrics.test.js +0 -108
  724. package/dist/doctor.test.d.ts +0 -1
  725. package/dist/doctor.test.js +0 -596
  726. package/dist/embedding-resolution.test.d.ts +0 -1
  727. package/dist/embedding-resolution.test.js +0 -132
  728. package/dist/example-smoke.test.d.ts +0 -1
  729. package/dist/example-smoke.test.js +0 -83
  730. package/dist/index.test.d.ts +0 -1
  731. package/dist/index.test.js +0 -1300
  732. package/dist/ingest-query-executor.test.d.ts +0 -1
  733. package/dist/ingest-query-executor.test.js +0 -71
  734. package/dist/ingest-report-file.test.d.ts +0 -1
  735. package/dist/ingest-report-file.test.js +0 -63
  736. package/dist/ingest-viz.test.d.ts +0 -1
  737. package/dist/ingest-viz.test.js +0 -691
  738. package/dist/ingest.test-utils.d.ts +0 -126
  739. package/dist/ingest.test-utils.js +0 -629
  740. package/dist/ingest.test.d.ts +0 -1
  741. package/dist/ingest.test.js +0 -1568
  742. package/dist/io/logger.test.d.ts +0 -1
  743. package/dist/io/logger.test.js +0 -55
  744. package/dist/io/mode.test.d.ts +0 -1
  745. package/dist/io/mode.test.js +0 -48
  746. package/dist/io/print-list.test.d.ts +0 -1
  747. package/dist/io/print-list.test.js +0 -277
  748. package/dist/knowledge.test.d.ts +0 -1
  749. package/dist/knowledge.test.js +0 -198
  750. package/dist/llm/embedding-health.test.d.ts +0 -1
  751. package/dist/llm/embedding-health.test.js +0 -72
  752. package/dist/llm/embedding-provider.test.d.ts +0 -1
  753. package/dist/llm/embedding-provider.test.js +0 -84
  754. package/dist/llm/message-builder.test.d.ts +0 -1
  755. package/dist/llm/message-builder.test.js +0 -127
  756. package/dist/llm/model-health.test.d.ts +0 -1
  757. package/dist/llm/model-health.test.js +0 -55
  758. package/dist/llm/model-provider.test.d.ts +0 -1
  759. package/dist/llm/model-provider.test.js +0 -246
  760. package/dist/llm/repair.test.d.ts +0 -1
  761. package/dist/llm/repair.test.js +0 -78
  762. package/dist/local-adapters.test.d.ts +0 -1
  763. package/dist/local-adapters.test.js +0 -166
  764. package/dist/local-scan-connectors.test.d.ts +0 -1
  765. package/dist/local-scan-connectors.test.js +0 -92
  766. package/dist/managed-local-embeddings.test.d.ts +0 -1
  767. package/dist/managed-local-embeddings.test.js +0 -229
  768. package/dist/managed-mcp-daemon.test.d.ts +0 -1
  769. package/dist/managed-mcp-daemon.test.js +0 -187
  770. package/dist/managed-python-command.test.d.ts +0 -1
  771. package/dist/managed-python-command.test.js +0 -262
  772. package/dist/managed-python-daemon.test.d.ts +0 -1
  773. package/dist/managed-python-daemon.test.js +0 -360
  774. package/dist/managed-python-http.test.d.ts +0 -1
  775. package/dist/managed-python-http.test.js +0 -177
  776. package/dist/managed-python-runtime.test.d.ts +0 -1
  777. package/dist/managed-python-runtime.test.js +0 -426
  778. package/dist/mcp-http-server.test.d.ts +0 -1
  779. package/dist/mcp-http-server.test.js +0 -209
  780. package/dist/mcp-server-factory.test.d.ts +0 -1
  781. package/dist/mcp-server-factory.test.js +0 -142
  782. package/dist/memory-flow-interactive.test.d.ts +0 -1
  783. package/dist/memory-flow-interactive.test.js +0 -109
  784. package/dist/memory-flow-tui.test.d.ts +0 -1
  785. package/dist/memory-flow-tui.test.js +0 -247
  786. package/dist/next-steps.test.d.ts +0 -1
  787. package/dist/next-steps.test.js +0 -77
  788. package/dist/notion-page-picker.test.d.ts +0 -1
  789. package/dist/notion-page-picker.test.js +0 -244
  790. package/dist/print-command-tree.test.d.ts +0 -1
  791. package/dist/print-command-tree.test.js +0 -37
  792. package/dist/project-dir.test.d.ts +0 -1
  793. package/dist/project-dir.test.js +0 -124
  794. package/dist/project-resolver.test.d.ts +0 -1
  795. package/dist/project-resolver.test.js +0 -49
  796. package/dist/prompt-navigation.test.d.ts +0 -1
  797. package/dist/prompt-navigation.test.js +0 -33
  798. package/dist/proxy-env.test.d.ts +0 -1
  799. package/dist/proxy-env.test.js +0 -17
  800. package/dist/public-ingest-copy.test.d.ts +0 -1
  801. package/dist/public-ingest-copy.test.js +0 -24
  802. package/dist/public-ingest.test.d.ts +0 -1
  803. package/dist/public-ingest.test.js +0 -891
  804. package/dist/runtime-requirements.test.d.ts +0 -1
  805. package/dist/runtime-requirements.test.js +0 -73
  806. package/dist/runtime.test.d.ts +0 -1
  807. package/dist/runtime.test.js +0 -381
  808. package/dist/scan.test.d.ts +0 -1
  809. package/dist/scan.test.js +0 -1123
  810. package/dist/setup-agents.test.d.ts +0 -1
  811. package/dist/setup-agents.test.js +0 -1028
  812. package/dist/setup-context.test.d.ts +0 -1
  813. package/dist/setup-context.test.js +0 -491
  814. package/dist/setup-databases.test.d.ts +0 -1
  815. package/dist/setup-databases.test.js +0 -2101
  816. package/dist/setup-demo-tour.test.d.ts +0 -1
  817. package/dist/setup-demo-tour.test.js +0 -221
  818. package/dist/setup-embeddings.test.d.ts +0 -1
  819. package/dist/setup-embeddings.test.js +0 -436
  820. package/dist/setup-interrupt.test.d.ts +0 -1
  821. package/dist/setup-interrupt.test.js +0 -77
  822. package/dist/setup-models.test.d.ts +0 -1
  823. package/dist/setup-models.test.js +0 -885
  824. package/dist/setup-project.test.d.ts +0 -1
  825. package/dist/setup-project.test.js +0 -209
  826. package/dist/setup-prompts.test.d.ts +0 -1
  827. package/dist/setup-prompts.test.js +0 -208
  828. package/dist/setup-ready-menu.test.d.ts +0 -1
  829. package/dist/setup-ready-menu.test.js +0 -44
  830. package/dist/setup-runtime.test.d.ts +0 -1
  831. package/dist/setup-runtime.test.js +0 -111
  832. package/dist/setup-secrets.test.d.ts +0 -1
  833. package/dist/setup-secrets.test.js +0 -30
  834. package/dist/setup-sources-notion.test.d.ts +0 -1
  835. package/dist/setup-sources-notion.test.js +0 -109
  836. package/dist/setup-sources.test.d.ts +0 -1
  837. package/dist/setup-sources.test.js +0 -1303
  838. package/dist/setup.test.d.ts +0 -1
  839. package/dist/setup.test.js +0 -1825
  840. package/dist/sl.test.d.ts +0 -1
  841. package/dist/sl.test.js +0 -567
  842. package/dist/source-mapping.test.d.ts +0 -1
  843. package/dist/source-mapping.test.js +0 -65
  844. package/dist/sql.test.d.ts +0 -1
  845. package/dist/sql.test.js +0 -253
  846. package/dist/standalone-smoke.test.d.ts +0 -1
  847. package/dist/standalone-smoke.test.js +0 -250
  848. package/dist/status-project.test.d.ts +0 -1
  849. package/dist/status-project.test.js +0 -502
  850. package/dist/telemetry/command-hook.test.d.ts +0 -1
  851. package/dist/telemetry/command-hook.test.js +0 -31
  852. package/dist/telemetry/demo-detect.test.d.ts +0 -1
  853. package/dist/telemetry/demo-detect.test.js +0 -22
  854. package/dist/telemetry/emitter.test.d.ts +0 -1
  855. package/dist/telemetry/emitter.test.js +0 -103
  856. package/dist/telemetry/events.snapshot.test.d.ts +0 -1
  857. package/dist/telemetry/events.snapshot.test.js +0 -135
  858. package/dist/telemetry/events.test.d.ts +0 -1
  859. package/dist/telemetry/events.test.js +0 -136
  860. package/dist/telemetry/identity.test.d.ts +0 -1
  861. package/dist/telemetry/identity.test.js +0 -148
  862. package/dist/telemetry/project-snapshot.test.d.ts +0 -1
  863. package/dist/telemetry/project-snapshot.test.js +0 -71
  864. package/dist/telemetry/schema-writer.test.d.ts +0 -1
  865. package/dist/telemetry/schema-writer.test.js +0 -23
  866. package/dist/telemetry/scrubber.test.d.ts +0 -1
  867. package/dist/telemetry/scrubber.test.js +0 -21
  868. package/dist/text-ingest.test.d.ts +0 -1
  869. package/dist/text-ingest.test.js +0 -247
  870. package/dist/tree-picker-state.test.d.ts +0 -1
  871. package/dist/tree-picker-state.test.js +0 -303
  872. package/dist/tree-picker-tui.test.d.ts +0 -1
  873. package/dist/tree-picker-tui.test.js +0 -248
  874. package/dist/viz-fallback.test.d.ts +0 -1
  875. 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 {};