@kaelio/ktx 0.0.0 → 0.1.0-rc.1

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 (1752) hide show
  1. package/LICENSE +201 -0
  2. package/assets/demo/orbit/demo.db +0 -0
  3. package/assets/demo/orbit/links/provenance.json +209 -0
  4. package/assets/demo/orbit/manifest.json +58 -0
  5. package/assets/demo/orbit/raw-sources/bi/account_retention.view.lkml +67 -0
  6. package/assets/demo/orbit/raw-sources/bi/arr_daily.view.lkml +28 -0
  7. package/assets/demo/orbit/raw-sources/bi/customer_health.view.lkml +50 -0
  8. package/assets/demo/orbit/raw-sources/bi/procurement_activity.view.lkml +46 -0
  9. package/assets/demo/orbit/raw-sources/bi/retention_exec_q1.dashboard.lookml +28 -0
  10. package/assets/demo/orbit/raw-sources/bi/revenue_daily.view.lkml +52 -0
  11. package/assets/demo/orbit/raw-sources/bi/revenue_exec.dashboard.lookml +28 -0
  12. package/assets/demo/orbit/raw-sources/dbt/dbt_project.yml +10 -0
  13. package/assets/demo/orbit/raw-sources/dbt/models/marts/mart_arr_daily.sql +5 -0
  14. package/assets/demo/orbit/raw-sources/dbt/models/marts/mart_customer_health.sql +10 -0
  15. package/assets/demo/orbit/raw-sources/dbt/models/marts/mart_revenue_daily.sql +8 -0
  16. package/assets/demo/orbit/raw-sources/dbt/schema.yml +455 -0
  17. package/assets/demo/orbit/raw-sources/dbt/sources.yml +48 -0
  18. package/assets/demo/orbit/raw-sources/notion/activation-policy-decision-record.md +49 -0
  19. package/assets/demo/orbit/raw-sources/notion/analyst-onboarding.md +35 -0
  20. package/assets/demo/orbit/raw-sources/notion/arr-and-contract-reporting-notes.md +64 -0
  21. package/assets/demo/orbit/raw-sources/notion/customer-health-playbook.md +55 -0
  22. package/assets/demo/orbit/raw-sources/notion/retention-and-nrr-definition-notes.md +58 -0
  23. package/assets/demo/orbit/raw-sources/notion/revenue-reporting-policy.md +64 -0
  24. package/assets/demo/orbit/raw-sources/notion/sales-ops-segmentation-guide.md +58 -0
  25. package/assets/demo/orbit/raw-sources/notion/support-escalation-runbook.md +38 -0
  26. package/assets/demo/orbit/raw-sources/warehouse/accounts.csv +211 -0
  27. package/assets/demo/orbit/raw-sources/warehouse/arr_movements.csv +721 -0
  28. package/assets/demo/orbit/raw-sources/warehouse/contracts.csv +321 -0
  29. package/assets/demo/orbit/raw-sources/warehouse/invoices.csv +3001 -0
  30. package/assets/demo/orbit/raw-sources/warehouse/plans.csv +5 -0
  31. package/assets/demo/orbit/raw-sources/warehouse/purchase_requests.csv +5201 -0
  32. package/assets/demo/orbit/raw-sources/warehouse/support_tickets.csv +521 -0
  33. package/assets/demo/orbit/raw-sources/warehouse/users.csv +1261 -0
  34. package/assets/demo/orbit/replay.memory-flow.v1.json +707 -0
  35. package/assets/demo/orbit/reports/seeded-demo-report.json +40 -0
  36. package/assets/demo/orbit/semantic-layer/.gitkeep +0 -0
  37. package/assets/demo/orbit/semantic-layer/dbt-main/int_activation_policy_windows.yaml +27 -0
  38. package/assets/demo/orbit/semantic-layer/dbt-main/int_active_contract_arr.yaml +24 -0
  39. package/assets/demo/orbit/semantic-layer/dbt-main/int_customer_health_signals.yaml +25 -0
  40. package/assets/demo/orbit/semantic-layer/dbt-main/int_parent_account_arr_movements.yaml +49 -0
  41. package/assets/demo/orbit/semantic-layer/dbt-main/int_procurement_qualifying_actions.yaml +27 -0
  42. package/assets/demo/orbit/semantic-layer/dbt-main/int_revenue_components.yaml +37 -0
  43. package/assets/demo/orbit/semantic-layer/dbt-main/mart_account_activity.yaml +23 -0
  44. package/assets/demo/orbit/semantic-layer/dbt-main/mart_account_segments.yaml +27 -0
  45. package/assets/demo/orbit/semantic-layer/dbt-main/mart_arr_daily.yaml +20 -0
  46. package/assets/demo/orbit/semantic-layer/dbt-main/mart_customer_health.yaml +30 -0
  47. package/assets/demo/orbit/semantic-layer/dbt-main/mart_nrr_quarterly.yaml +22 -0
  48. package/assets/demo/orbit/semantic-layer/dbt-main/mart_procurement_activity.yaml +24 -0
  49. package/assets/demo/orbit/semantic-layer/dbt-main/mart_retention_movement_breakout.yaml +31 -0
  50. package/assets/demo/orbit/semantic-layer/dbt-main/mart_revenue_daily.yaml +37 -0
  51. package/assets/demo/orbit/semantic-layer/dbt-main/stg_account_hierarchy.yaml +25 -0
  52. package/assets/demo/orbit/semantic-layer/dbt-main/stg_account_owners.yaml +33 -0
  53. package/assets/demo/orbit/semantic-layer/dbt-main/stg_accounts.yaml +25 -0
  54. package/assets/demo/orbit/semantic-layer/dbt-main/stg_activation_events.yaml +33 -0
  55. package/assets/demo/orbit/semantic-layer/dbt-main/stg_approval_events.yaml +25 -0
  56. package/assets/demo/orbit/semantic-layer/dbt-main/stg_arr_movements.yaml +29 -0
  57. package/assets/demo/orbit/semantic-layer/dbt-main/stg_contract_discount_terms.yaml +25 -0
  58. package/assets/demo/orbit/semantic-layer/dbt-main/stg_contracts.yaml +29 -0
  59. package/assets/demo/orbit/semantic-layer/dbt-main/stg_invoice_line_items.yaml +25 -0
  60. package/assets/demo/orbit/semantic-layer/dbt-main/stg_invoices.yaml +33 -0
  61. package/assets/demo/orbit/semantic-layer/dbt-main/stg_plan_segment_mapping.yaml +33 -0
  62. package/assets/demo/orbit/semantic-layer/dbt-main/stg_plans.yaml +17 -0
  63. package/assets/demo/orbit/semantic-layer/dbt-main/stg_purchase_orders.yaml +29 -0
  64. package/assets/demo/orbit/semantic-layer/dbt-main/stg_purchase_requests.yaml +29 -0
  65. package/assets/demo/orbit/semantic-layer/dbt-main/stg_refunds.yaml +29 -0
  66. package/assets/demo/orbit/semantic-layer/dbt-main/stg_sessions.yaml +25 -0
  67. package/assets/demo/orbit/semantic-layer/dbt-main/stg_subscriptions.yaml +25 -0
  68. package/assets/demo/orbit/semantic-layer/dbt-main/stg_supplier_onboarding_events.yaml +29 -0
  69. package/assets/demo/orbit/semantic-layer/dbt-main/stg_suppliers.yaml +21 -0
  70. package/assets/demo/orbit/semantic-layer/dbt-main/stg_support_tickets.yaml +29 -0
  71. package/assets/demo/orbit/semantic-layer/dbt-main/stg_users.yaml +21 -0
  72. package/assets/demo/orbit/semantic-layer/postgres-warehouse/_schema/orbit_analytics.yaml +1400 -0
  73. package/assets/demo/orbit/semantic-layer/postgres-warehouse/_schema/orbit_raw.yaml +989 -0
  74. package/assets/demo/orbit/semantic-layer/postgres-warehouse/large_contract_requesters.yaml +44 -0
  75. package/assets/demo/orbit/semantic-layer/postgres-warehouse/mart_account_activity.yaml +10 -0
  76. package/assets/demo/orbit/semantic-layer/postgres-warehouse/mart_account_segments.yaml +18 -0
  77. package/assets/demo/orbit/semantic-layer/postgres-warehouse/mart_arr_daily.yaml +10 -0
  78. package/assets/demo/orbit/semantic-layer/postgres-warehouse/mart_customer_health.yaml +27 -0
  79. package/assets/demo/orbit/semantic-layer/postgres-warehouse/mart_nrr_quarterly.yaml +19 -0
  80. package/assets/demo/orbit/semantic-layer/postgres-warehouse/mart_procurement_activity.yaml +13 -0
  81. package/assets/demo/orbit/semantic-layer/postgres-warehouse/mart_retention_movement_breakout.yaml +25 -0
  82. package/assets/demo/orbit/semantic-layer/postgres-warehouse/mart_revenue_daily.yaml +20 -0
  83. package/assets/demo/orbit/wiki/global/.gitkeep +0 -0
  84. package/assets/demo/orbit/wiki/global/customer-communication-policy.md +44 -0
  85. package/assets/demo/orbit/wiki/global/new-hire-onboarding-policy.md +47 -0
  86. package/assets/demo/orbit/wiki/global/orbit-activation-kpi-glossary.md +64 -0
  87. package/assets/demo/orbit/wiki/global/orbit-activation-policy-change-jan-2026.md +46 -0
  88. package/assets/demo/orbit/wiki/global/orbit-arr-contract-first-definition.md +39 -0
  89. package/assets/demo/orbit/wiki/global/orbit-company-overview.md +71 -0
  90. package/assets/demo/orbit/wiki/global/orbit-customer-health-risk-definition.md +46 -0
  91. package/assets/demo/orbit/wiki/global/orbit-customer-stakeholder-needs.md +42 -0
  92. package/assets/demo/orbit/wiki/global/orbit-customers-source.md +60 -0
  93. package/assets/demo/orbit/wiki/global/orbit-dbt-exposures.md +44 -0
  94. package/assets/demo/orbit/wiki/global/orbit-dbt-project-overview.md +54 -0
  95. package/assets/demo/orbit/wiki/global/orbit-how-we-work.md +75 -0
  96. package/assets/demo/orbit/wiki/global/orbit-known-product-gaps.md +47 -0
  97. package/assets/demo/orbit/wiki/global/orbit-mart-account-activity.md +49 -0
  98. package/assets/demo/orbit/wiki/global/orbit-mart-account-segments.md +55 -0
  99. package/assets/demo/orbit/wiki/global/orbit-mart-arr-daily.md +46 -0
  100. package/assets/demo/orbit/wiki/global/orbit-mart-nrr-quarterly.md +55 -0
  101. package/assets/demo/orbit/wiki/global/orbit-mart-procurement-activity.md +47 -0
  102. package/assets/demo/orbit/wiki/global/orbit-mart-retention-movement-breakout.md +55 -0
  103. package/assets/demo/orbit/wiki/global/orbit-mart-revenue-daily.md +56 -0
  104. package/assets/demo/orbit/wiki/global/orbit-metabase-sql-library-patterns.md +71 -0
  105. package/assets/demo/orbit/wiki/global/orbit-nrr-discount-expiration-treatment.md +47 -0
  106. package/assets/demo/orbit/wiki/global/orbit-plan-segment-normalization.md +49 -0
  107. package/assets/demo/orbit/wiki/global/orbit-procurement-qualifying-actions.md +46 -0
  108. package/assets/demo/orbit/wiki/global/orbit-product-design-principles.md +43 -0
  109. package/assets/demo/orbit/wiki/global/orbit-product-review-checklist.md +44 -0
  110. package/assets/demo/orbit/wiki/global/orbit-revenue-gross-to-net-reconciliation.md +50 -0
  111. package/assets/demo/orbit/wiki/global/sales-ops-cs-handoff-process.md +58 -0
  112. package/assets/python/kaelio_ktx-0.1.0-py3-none-any.whl +0 -0
  113. package/assets/python/manifest.json +11 -0
  114. package/dist/bin.d.ts +2 -0
  115. package/dist/bin.js +7 -0
  116. package/dist/clack.d.ts +26 -0
  117. package/dist/clack.js +45 -0
  118. package/dist/claude-code-prompt-caching.d.ts +4 -0
  119. package/dist/claude-code-prompt-caching.js +22 -0
  120. package/dist/cli-program.d.ts +53 -0
  121. package/dist/cli-program.js +372 -0
  122. package/dist/cli-program.test.d.ts +1 -0
  123. package/dist/cli-program.test.js +45 -0
  124. package/dist/cli-runtime.d.ts +46 -0
  125. package/dist/cli-runtime.js +44 -0
  126. package/dist/command-schemas.d.ts +34 -0
  127. package/dist/command-schemas.js +32 -0
  128. package/dist/command-tree.d.ts +10 -0
  129. package/dist/command-tree.js +41 -0
  130. package/dist/command-tree.test.d.ts +1 -0
  131. package/dist/command-tree.test.js +126 -0
  132. package/dist/commands/connection-commands.d.ts +3 -0
  133. package/dist/commands/connection-commands.js +46 -0
  134. package/dist/commands/ingest-commands.d.ts +9 -0
  135. package/dist/commands/ingest-commands.js +65 -0
  136. package/dist/commands/knowledge-commands.d.ts +3 -0
  137. package/dist/commands/knowledge-commands.js +57 -0
  138. package/dist/commands/mcp-commands.d.ts +3 -0
  139. package/dist/commands/mcp-commands.js +117 -0
  140. package/dist/commands/mcp-commands.test.d.ts +1 -0
  141. package/dist/commands/mcp-commands.test.js +47 -0
  142. package/dist/commands/runtime-commands.d.ts +3 -0
  143. package/dist/commands/runtime-commands.js +68 -0
  144. package/dist/commands/setup-commands.d.ts +3 -0
  145. package/dist/commands/setup-commands.js +347 -0
  146. package/dist/commands/sl-commands.d.ts +3 -0
  147. package/dist/commands/sl-commands.js +130 -0
  148. package/dist/commands/status-commands.d.ts +3 -0
  149. package/dist/commands/status-commands.js +47 -0
  150. package/dist/connection.d.ts +28 -0
  151. package/dist/connection.js +258 -0
  152. package/dist/connection.test.d.ts +1 -0
  153. package/dist/connection.test.js +405 -0
  154. package/dist/context-build-view.d.ts +106 -0
  155. package/dist/context-build-view.js +868 -0
  156. package/dist/context-build-view.test.d.ts +1 -0
  157. package/dist/context-build-view.test.js +927 -0
  158. package/dist/database-tree-picker.d.ts +24 -0
  159. package/dist/database-tree-picker.js +134 -0
  160. package/dist/database-tree-picker.test.d.ts +1 -0
  161. package/dist/database-tree-picker.test.js +135 -0
  162. package/dist/demo-assets.d.ts +17 -0
  163. package/dist/demo-assets.js +150 -0
  164. package/dist/demo-assets.test.d.ts +1 -0
  165. package/dist/demo-assets.test.js +95 -0
  166. package/dist/demo-metrics.d.ts +35 -0
  167. package/dist/demo-metrics.js +131 -0
  168. package/dist/demo-metrics.test.d.ts +1 -0
  169. package/dist/demo-metrics.test.js +108 -0
  170. package/dist/dev.d.ts +3 -0
  171. package/dist/dev.js +48 -0
  172. package/dist/dev.test.d.ts +1 -0
  173. package/dist/dev.test.js +169 -0
  174. package/dist/doctor.d.ts +72 -0
  175. package/dist/doctor.js +460 -0
  176. package/dist/doctor.test.d.ts +1 -0
  177. package/dist/doctor.test.js +604 -0
  178. package/dist/example-smoke.test.d.ts +1 -0
  179. package/dist/example-smoke.test.js +83 -0
  180. package/dist/index.d.ts +15 -0
  181. package/dist/index.js +12 -0
  182. package/dist/index.test.d.ts +1 -0
  183. package/dist/index.test.js +1213 -0
  184. package/dist/ingest-depth.d.ts +8 -0
  185. package/dist/ingest-depth.js +58 -0
  186. package/dist/ingest-query-executor.d.ts +9 -0
  187. package/dist/ingest-query-executor.js +30 -0
  188. package/dist/ingest-query-executor.test.d.ts +1 -0
  189. package/dist/ingest-query-executor.test.js +71 -0
  190. package/dist/ingest-report-file.d.ts +2 -0
  191. package/dist/ingest-report-file.js +20 -0
  192. package/dist/ingest-report-file.test.d.ts +1 -0
  193. package/dist/ingest-report-file.test.js +63 -0
  194. package/dist/ingest-viz.test.d.ts +1 -0
  195. package/dist/ingest-viz.test.js +691 -0
  196. package/dist/ingest.d.ts +64 -0
  197. package/dist/ingest.js +561 -0
  198. package/dist/ingest.test-utils.d.ts +119 -0
  199. package/dist/ingest.test-utils.js +625 -0
  200. package/dist/ingest.test.d.ts +1 -0
  201. package/dist/ingest.test.js +1302 -0
  202. package/dist/io/logger.d.ts +11 -0
  203. package/dist/io/logger.js +22 -0
  204. package/dist/io/logger.test.d.ts +1 -0
  205. package/dist/io/logger.test.js +55 -0
  206. package/dist/io/mode.d.ts +9 -0
  207. package/dist/io/mode.js +28 -0
  208. package/dist/io/mode.test.d.ts +1 -0
  209. package/dist/io/mode.test.js +48 -0
  210. package/dist/io/print-list.d.ts +42 -0
  211. package/dist/io/print-list.js +192 -0
  212. package/dist/io/print-list.test.d.ts +1 -0
  213. package/dist/io/print-list.test.js +275 -0
  214. package/dist/io/symbols.d.ts +10 -0
  215. package/dist/io/symbols.js +33 -0
  216. package/dist/knowledge.d.ts +23 -0
  217. package/dist/knowledge.js +86 -0
  218. package/dist/knowledge.test.d.ts +1 -0
  219. package/dist/knowledge.test.js +113 -0
  220. package/dist/local-adapters.d.ts +13 -0
  221. package/dist/local-adapters.js +295 -0
  222. package/dist/local-adapters.test.d.ts +1 -0
  223. package/dist/local-adapters.test.js +162 -0
  224. package/dist/local-scan-connectors.d.ts +3 -0
  225. package/dist/local-scan-connectors.js +54 -0
  226. package/dist/local-scan-connectors.test.d.ts +1 -0
  227. package/dist/local-scan-connectors.test.js +92 -0
  228. package/dist/managed-local-embeddings.d.ts +38 -0
  229. package/dist/managed-local-embeddings.js +49 -0
  230. package/dist/managed-local-embeddings.test.d.ts +1 -0
  231. package/dist/managed-local-embeddings.test.js +161 -0
  232. package/dist/managed-mcp-daemon.d.ts +73 -0
  233. package/dist/managed-mcp-daemon.js +183 -0
  234. package/dist/managed-mcp-daemon.test.d.ts +1 -0
  235. package/dist/managed-mcp-daemon.test.js +104 -0
  236. package/dist/managed-python-command.d.ts +29 -0
  237. package/dist/managed-python-command.js +77 -0
  238. package/dist/managed-python-command.test.d.ts +1 -0
  239. package/dist/managed-python-command.test.js +206 -0
  240. package/dist/managed-python-daemon.d.ts +112 -0
  241. package/dist/managed-python-daemon.js +585 -0
  242. package/dist/managed-python-daemon.test.d.ts +1 -0
  243. package/dist/managed-python-daemon.test.js +340 -0
  244. package/dist/managed-python-http.d.ts +39 -0
  245. package/dist/managed-python-http.js +110 -0
  246. package/dist/managed-python-http.test.d.ts +1 -0
  247. package/dist/managed-python-http.test.js +177 -0
  248. package/dist/managed-python-runtime.d.ts +122 -0
  249. package/dist/managed-python-runtime.js +313 -0
  250. package/dist/managed-python-runtime.test.d.ts +1 -0
  251. package/dist/managed-python-runtime.test.js +396 -0
  252. package/dist/mcp-http-server.d.ts +43 -0
  253. package/dist/mcp-http-server.js +270 -0
  254. package/dist/mcp-http-server.test.d.ts +1 -0
  255. package/dist/mcp-http-server.test.js +209 -0
  256. package/dist/memory-flow-hud.d.ts +32 -0
  257. package/dist/memory-flow-hud.js +219 -0
  258. package/dist/memory-flow-interactive.d.ts +29 -0
  259. package/dist/memory-flow-interactive.js +94 -0
  260. package/dist/memory-flow-interactive.test.d.ts +1 -0
  261. package/dist/memory-flow-interactive.test.js +109 -0
  262. package/dist/memory-flow-tui.d.ts +76 -0
  263. package/dist/memory-flow-tui.js +343 -0
  264. package/dist/memory-flow-tui.test.d.ts +1 -0
  265. package/dist/memory-flow-tui.test.js +247 -0
  266. package/dist/next-steps.d.ts +36 -0
  267. package/dist/next-steps.js +67 -0
  268. package/dist/next-steps.test.d.ts +1 -0
  269. package/dist/next-steps.test.js +75 -0
  270. package/dist/notion-page-picker.d.ts +35 -0
  271. package/dist/notion-page-picker.js +208 -0
  272. package/dist/notion-page-picker.test.d.ts +1 -0
  273. package/dist/notion-page-picker.test.js +244 -0
  274. package/dist/print-command-tree.d.ts +4 -0
  275. package/dist/print-command-tree.js +31 -0
  276. package/dist/print-command-tree.test.d.ts +1 -0
  277. package/dist/print-command-tree.test.js +37 -0
  278. package/dist/project-dir.test.d.ts +1 -0
  279. package/dist/project-dir.test.js +124 -0
  280. package/dist/project-resolver.d.ts +7 -0
  281. package/dist/project-resolver.js +42 -0
  282. package/dist/project-resolver.test.d.ts +1 -0
  283. package/dist/project-resolver.test.js +49 -0
  284. package/dist/prompt-navigation.d.ts +6 -0
  285. package/dist/prompt-navigation.js +60 -0
  286. package/dist/prompt-navigation.test.d.ts +1 -0
  287. package/dist/prompt-navigation.test.js +33 -0
  288. package/dist/public-ingest-copy.d.ts +3 -0
  289. package/dist/public-ingest-copy.js +32 -0
  290. package/dist/public-ingest-copy.test.d.ts +1 -0
  291. package/dist/public-ingest-copy.test.js +24 -0
  292. package/dist/public-ingest.d.ts +111 -0
  293. package/dist/public-ingest.js +546 -0
  294. package/dist/public-ingest.test.d.ts +1 -0
  295. package/dist/public-ingest.test.js +737 -0
  296. package/dist/runtime.d.ts +44 -0
  297. package/dist/runtime.js +151 -0
  298. package/dist/runtime.test.d.ts +1 -0
  299. package/dist/runtime.test.js +380 -0
  300. package/dist/scan.d.ts +34 -0
  301. package/dist/scan.js +275 -0
  302. package/dist/scan.test.d.ts +1 -0
  303. package/dist/scan.test.js +983 -0
  304. package/dist/setup-agents.d.ts +87 -0
  305. package/dist/setup-agents.js +471 -0
  306. package/dist/setup-agents.test.d.ts +1 -0
  307. package/dist/setup-agents.test.js +352 -0
  308. package/dist/setup-context.d.ts +86 -0
  309. package/dist/setup-context.js +553 -0
  310. package/dist/setup-context.test.d.ts +1 -0
  311. package/dist/setup-context.test.js +490 -0
  312. package/dist/setup-database-context-depth.d.ts +22 -0
  313. package/dist/setup-database-context-depth.js +83 -0
  314. package/dist/setup-databases.d.ts +82 -0
  315. package/dist/setup-databases.js +1858 -0
  316. package/dist/setup-databases.test.d.ts +1 -0
  317. package/dist/setup-databases.test.js +1883 -0
  318. package/dist/setup-demo-tour.d.ts +33 -0
  319. package/dist/setup-demo-tour.js +302 -0
  320. package/dist/setup-demo-tour.test.d.ts +1 -0
  321. package/dist/setup-demo-tour.test.js +221 -0
  322. package/dist/setup-embeddings.d.ts +57 -0
  323. package/dist/setup-embeddings.js +347 -0
  324. package/dist/setup-embeddings.test.d.ts +1 -0
  325. package/dist/setup-embeddings.test.js +379 -0
  326. package/dist/setup-interrupt.d.ts +15 -0
  327. package/dist/setup-interrupt.js +71 -0
  328. package/dist/setup-interrupt.test.d.ts +1 -0
  329. package/dist/setup-interrupt.test.js +77 -0
  330. package/dist/setup-models.d.ts +90 -0
  331. package/dist/setup-models.js +760 -0
  332. package/dist/setup-models.test.d.ts +1 -0
  333. package/dist/setup-models.test.js +857 -0
  334. package/dist/setup-project.d.ts +45 -0
  335. package/dist/setup-project.js +289 -0
  336. package/dist/setup-project.test.d.ts +1 -0
  337. package/dist/setup-project.test.js +229 -0
  338. package/dist/setup-prompts.d.ts +54 -0
  339. package/dist/setup-prompts.js +88 -0
  340. package/dist/setup-prompts.test.d.ts +1 -0
  341. package/dist/setup-prompts.test.js +170 -0
  342. package/dist/setup-ready-menu.d.ts +18 -0
  343. package/dist/setup-ready-menu.js +31 -0
  344. package/dist/setup-ready-menu.test.d.ts +1 -0
  345. package/dist/setup-ready-menu.test.js +41 -0
  346. package/dist/setup-secrets.d.ts +7 -0
  347. package/dist/setup-secrets.js +15 -0
  348. package/dist/setup-secrets.test.d.ts +1 -0
  349. package/dist/setup-secrets.test.js +30 -0
  350. package/dist/setup-sources.d.ts +105 -0
  351. package/dist/setup-sources.js +1606 -0
  352. package/dist/setup-sources.test.d.ts +1 -0
  353. package/dist/setup-sources.test.js +1277 -0
  354. package/dist/setup.d.ts +130 -0
  355. package/dist/setup.js +478 -0
  356. package/dist/setup.test.d.ts +1 -0
  357. package/dist/setup.test.js +1478 -0
  358. package/dist/skills/research/SKILL.md +49 -0
  359. package/dist/sl.d.ts +60 -0
  360. package/dist/sl.js +167 -0
  361. package/dist/sl.test.d.ts +1 -0
  362. package/dist/sl.test.js +452 -0
  363. package/dist/source-mapping.d.ts +26 -0
  364. package/dist/source-mapping.js +151 -0
  365. package/dist/standalone-smoke.test.d.ts +1 -0
  366. package/dist/standalone-smoke.test.js +247 -0
  367. package/dist/startup-profile.d.ts +3 -0
  368. package/dist/startup-profile.js +44 -0
  369. package/dist/status-project.d.ts +118 -0
  370. package/dist/status-project.js +723 -0
  371. package/dist/text-ingest.d.ts +29 -0
  372. package/dist/text-ingest.js +270 -0
  373. package/dist/text-ingest.test.d.ts +1 -0
  374. package/dist/text-ingest.test.js +247 -0
  375. package/dist/tree-picker-state.d.ts +73 -0
  376. package/dist/tree-picker-state.js +416 -0
  377. package/dist/tree-picker-state.test.d.ts +1 -0
  378. package/dist/tree-picker-state.test.js +303 -0
  379. package/dist/tree-picker-tui.d.ts +78 -0
  380. package/dist/tree-picker-tui.js +226 -0
  381. package/dist/tree-picker-tui.test.d.ts +1 -0
  382. package/dist/tree-picker-tui.test.js +248 -0
  383. package/dist/viz-fallback.d.ts +28 -0
  384. package/dist/viz-fallback.js +51 -0
  385. package/dist/viz-fallback.test.d.ts +1 -0
  386. package/dist/viz-fallback.test.js +77 -0
  387. package/node_modules/@ktx/connector-bigquery/dist/connector.d.ts +141 -0
  388. package/node_modules/@ktx/connector-bigquery/dist/connector.js +371 -0
  389. package/node_modules/@ktx/connector-bigquery/dist/connector.test.d.ts +1 -0
  390. package/node_modules/@ktx/connector-bigquery/dist/connector.test.js +247 -0
  391. package/node_modules/@ktx/connector-bigquery/dist/dialect.d.ts +29 -0
  392. package/node_modules/@ktx/connector-bigquery/dist/dialect.js +178 -0
  393. package/node_modules/@ktx/connector-bigquery/dist/dialect.test.d.ts +1 -0
  394. package/node_modules/@ktx/connector-bigquery/dist/dialect.test.js +36 -0
  395. package/node_modules/@ktx/connector-bigquery/dist/index.d.ts +3 -0
  396. package/node_modules/@ktx/connector-bigquery/dist/index.js +3 -0
  397. package/node_modules/@ktx/connector-bigquery/dist/live-database-introspection.d.ts +10 -0
  398. package/node_modules/@ktx/connector-bigquery/dist/live-database-introspection.js +20 -0
  399. package/node_modules/@ktx/connector-bigquery/dist/package-exports.test.d.ts +1 -0
  400. package/node_modules/@ktx/connector-bigquery/dist/package-exports.test.js +10 -0
  401. package/node_modules/@ktx/connector-bigquery/package.json +20 -0
  402. package/node_modules/@ktx/connector-clickhouse/dist/connector.d.ts +113 -0
  403. package/node_modules/@ktx/connector-clickhouse/dist/connector.js +345 -0
  404. package/node_modules/@ktx/connector-clickhouse/dist/connector.test.d.ts +1 -0
  405. package/node_modules/@ktx/connector-clickhouse/dist/connector.test.js +228 -0
  406. package/node_modules/@ktx/connector-clickhouse/dist/dialect.d.ts +33 -0
  407. package/node_modules/@ktx/connector-clickhouse/dist/dialect.js +236 -0
  408. package/node_modules/@ktx/connector-clickhouse/dist/dialect.test.d.ts +1 -0
  409. package/node_modules/@ktx/connector-clickhouse/dist/dialect.test.js +36 -0
  410. package/node_modules/@ktx/connector-clickhouse/dist/index.d.ts +3 -0
  411. package/node_modules/@ktx/connector-clickhouse/dist/index.js +3 -0
  412. package/node_modules/@ktx/connector-clickhouse/dist/live-database-introspection.d.ts +11 -0
  413. package/node_modules/@ktx/connector-clickhouse/dist/live-database-introspection.js +21 -0
  414. package/node_modules/@ktx/connector-clickhouse/dist/package-exports.test.d.ts +1 -0
  415. package/node_modules/@ktx/connector-clickhouse/dist/package-exports.test.js +10 -0
  416. package/node_modules/@ktx/connector-clickhouse/package.json +20 -0
  417. package/node_modules/@ktx/connector-mysql/dist/connector.d.ts +116 -0
  418. package/node_modules/@ktx/connector-mysql/dist/connector.js +385 -0
  419. package/node_modules/@ktx/connector-mysql/dist/connector.test.d.ts +1 -0
  420. package/node_modules/@ktx/connector-mysql/dist/connector.test.js +218 -0
  421. package/node_modules/@ktx/connector-mysql/dist/dialect.d.ts +29 -0
  422. package/node_modules/@ktx/connector-mysql/dist/dialect.js +171 -0
  423. package/node_modules/@ktx/connector-mysql/dist/dialect.test.d.ts +1 -0
  424. package/node_modules/@ktx/connector-mysql/dist/dialect.test.js +36 -0
  425. package/node_modules/@ktx/connector-mysql/dist/index.d.ts +3 -0
  426. package/node_modules/@ktx/connector-mysql/dist/index.js +3 -0
  427. package/node_modules/@ktx/connector-mysql/dist/live-database-introspection.d.ts +11 -0
  428. package/node_modules/@ktx/connector-mysql/dist/live-database-introspection.js +21 -0
  429. package/node_modules/@ktx/connector-mysql/dist/package-exports.test.d.ts +1 -0
  430. package/node_modules/@ktx/connector-mysql/dist/package-exports.test.js +11 -0
  431. package/node_modules/@ktx/connector-mysql/package.json +20 -0
  432. package/node_modules/@ktx/connector-postgres/dist/connector.d.ts +140 -0
  433. package/node_modules/@ktx/connector-postgres/dist/connector.js +497 -0
  434. package/node_modules/@ktx/connector-postgres/dist/connector.test.d.ts +1 -0
  435. package/node_modules/@ktx/connector-postgres/dist/connector.test.js +336 -0
  436. package/node_modules/@ktx/connector-postgres/dist/dialect.d.ts +29 -0
  437. package/node_modules/@ktx/connector-postgres/dist/dialect.js +182 -0
  438. package/node_modules/@ktx/connector-postgres/dist/dialect.test.d.ts +1 -0
  439. package/node_modules/@ktx/connector-postgres/dist/dialect.test.js +37 -0
  440. package/node_modules/@ktx/connector-postgres/dist/historic-sql-query-client.d.ts +14 -0
  441. package/node_modules/@ktx/connector-postgres/dist/historic-sql-query-client.js +24 -0
  442. package/node_modules/@ktx/connector-postgres/dist/historic-sql-query-client.test.d.ts +1 -0
  443. package/node_modules/@ktx/connector-postgres/dist/historic-sql-query-client.test.js +45 -0
  444. package/node_modules/@ktx/connector-postgres/dist/index.d.ts +4 -0
  445. package/node_modules/@ktx/connector-postgres/dist/index.js +4 -0
  446. package/node_modules/@ktx/connector-postgres/dist/live-database-introspection.d.ts +11 -0
  447. package/node_modules/@ktx/connector-postgres/dist/live-database-introspection.js +21 -0
  448. package/node_modules/@ktx/connector-postgres/dist/package-exports.test.d.ts +1 -0
  449. package/node_modules/@ktx/connector-postgres/dist/package-exports.test.js +12 -0
  450. package/node_modules/@ktx/connector-postgres/package.json +20 -0
  451. package/node_modules/@ktx/connector-snowflake/dist/connector.d.ts +129 -0
  452. package/node_modules/@ktx/connector-snowflake/dist/connector.js +517 -0
  453. package/node_modules/@ktx/connector-snowflake/dist/connector.test.d.ts +1 -0
  454. package/node_modules/@ktx/connector-snowflake/dist/connector.test.js +210 -0
  455. package/node_modules/@ktx/connector-snowflake/dist/dialect.d.ts +29 -0
  456. package/node_modules/@ktx/connector-snowflake/dist/dialect.js +156 -0
  457. package/node_modules/@ktx/connector-snowflake/dist/dialect.test.d.ts +1 -0
  458. package/node_modules/@ktx/connector-snowflake/dist/dialect.test.js +34 -0
  459. package/node_modules/@ktx/connector-snowflake/dist/index.d.ts +3 -0
  460. package/node_modules/@ktx/connector-snowflake/dist/index.js +3 -0
  461. package/node_modules/@ktx/connector-snowflake/dist/live-database-introspection.d.ts +11 -0
  462. package/node_modules/@ktx/connector-snowflake/dist/live-database-introspection.js +21 -0
  463. package/node_modules/@ktx/connector-snowflake/dist/package-exports.test.d.ts +1 -0
  464. package/node_modules/@ktx/connector-snowflake/dist/package-exports.test.js +10 -0
  465. package/node_modules/@ktx/connector-snowflake/package.json +20 -0
  466. package/node_modules/@ktx/connector-sqlite/dist/connector.d.ts +59 -0
  467. package/node_modules/@ktx/connector-sqlite/dist/connector.js +251 -0
  468. package/node_modules/@ktx/connector-sqlite/dist/connector.test.d.ts +1 -0
  469. package/node_modules/@ktx/connector-sqlite/dist/connector.test.js +196 -0
  470. package/node_modules/@ktx/connector-sqlite/dist/dialect.d.ts +29 -0
  471. package/node_modules/@ktx/connector-sqlite/dist/dialect.js +146 -0
  472. package/node_modules/@ktx/connector-sqlite/dist/dialect.test.d.ts +1 -0
  473. package/node_modules/@ktx/connector-sqlite/dist/dialect.test.js +23 -0
  474. package/node_modules/@ktx/connector-sqlite/dist/index.d.ts +3 -0
  475. package/node_modules/@ktx/connector-sqlite/dist/index.js +3 -0
  476. package/node_modules/@ktx/connector-sqlite/dist/live-database-introspection.d.ts +8 -0
  477. package/node_modules/@ktx/connector-sqlite/dist/live-database-introspection.js +20 -0
  478. package/node_modules/@ktx/connector-sqlite/dist/package-exports.test.d.ts +1 -0
  479. package/node_modules/@ktx/connector-sqlite/dist/package-exports.test.js +11 -0
  480. package/node_modules/@ktx/connector-sqlite/package.json +20 -0
  481. package/node_modules/@ktx/connector-sqlserver/dist/connector.d.ts +137 -0
  482. package/node_modules/@ktx/connector-sqlserver/dist/connector.js +503 -0
  483. package/node_modules/@ktx/connector-sqlserver/dist/connector.test.d.ts +1 -0
  484. package/node_modules/@ktx/connector-sqlserver/dist/connector.test.js +269 -0
  485. package/node_modules/@ktx/connector-sqlserver/dist/dialect.d.ts +30 -0
  486. package/node_modules/@ktx/connector-sqlserver/dist/dialect.js +169 -0
  487. package/node_modules/@ktx/connector-sqlserver/dist/dialect.test.d.ts +1 -0
  488. package/node_modules/@ktx/connector-sqlserver/dist/dialect.test.js +36 -0
  489. package/node_modules/@ktx/connector-sqlserver/dist/index.d.ts +3 -0
  490. package/node_modules/@ktx/connector-sqlserver/dist/index.js +3 -0
  491. package/node_modules/@ktx/connector-sqlserver/dist/live-database-introspection.d.ts +11 -0
  492. package/node_modules/@ktx/connector-sqlserver/dist/live-database-introspection.js +21 -0
  493. package/node_modules/@ktx/connector-sqlserver/dist/package-exports.test.d.ts +1 -0
  494. package/node_modules/@ktx/connector-sqlserver/dist/package-exports.test.js +10 -0
  495. package/node_modules/@ktx/connector-sqlserver/package.json +20 -0
  496. package/node_modules/@ktx/context/dist/agent/agent-runner.service.d.ts +18 -0
  497. package/node_modules/@ktx/context/dist/agent/agent-runner.service.js +10 -0
  498. package/node_modules/@ktx/context/dist/agent/agent-runner.service.test.d.ts +1 -0
  499. package/node_modules/@ktx/context/dist/agent/agent-runner.service.test.js +308 -0
  500. package/node_modules/@ktx/context/dist/agent/index.d.ts +2 -0
  501. package/node_modules/@ktx/context/dist/agent/index.js +1 -0
  502. package/node_modules/@ktx/context/dist/connections/connection-type.d.ts +25 -0
  503. package/node_modules/@ktx/context/dist/connections/connection-type.js +24 -0
  504. package/node_modules/@ktx/context/dist/connections/dialects.d.ts +9 -0
  505. package/node_modules/@ktx/context/dist/connections/dialects.js +71 -0
  506. package/node_modules/@ktx/context/dist/connections/dialects.test.d.ts +1 -0
  507. package/node_modules/@ktx/context/dist/connections/dialects.test.js +24 -0
  508. package/node_modules/@ktx/context/dist/connections/index.d.ts +11 -0
  509. package/node_modules/@ktx/context/dist/connections/index.js +9 -0
  510. package/node_modules/@ktx/context/dist/connections/local-query-executor.d.ts +6 -0
  511. package/node_modules/@ktx/context/dist/connections/local-query-executor.js +21 -0
  512. package/node_modules/@ktx/context/dist/connections/local-query-executor.test.d.ts +1 -0
  513. package/node_modules/@ktx/context/dist/connections/local-query-executor.test.js +48 -0
  514. package/node_modules/@ktx/context/dist/connections/local-warehouse-descriptor.d.ts +20 -0
  515. package/node_modules/@ktx/context/dist/connections/local-warehouse-descriptor.js +72 -0
  516. package/node_modules/@ktx/context/dist/connections/local-warehouse-descriptor.test.d.ts +1 -0
  517. package/node_modules/@ktx/context/dist/connections/local-warehouse-descriptor.test.js +53 -0
  518. package/node_modules/@ktx/context/dist/connections/notion-config.d.ts +41 -0
  519. package/node_modules/@ktx/context/dist/connections/notion-config.js +132 -0
  520. package/node_modules/@ktx/context/dist/connections/notion-config.test.d.ts +1 -0
  521. package/node_modules/@ktx/context/dist/connections/notion-config.test.js +121 -0
  522. package/node_modules/@ktx/context/dist/connections/postgres-query-executor.d.ts +25 -0
  523. package/node_modules/@ktx/context/dist/connections/postgres-query-executor.js +53 -0
  524. package/node_modules/@ktx/context/dist/connections/postgres-query-executor.test.d.ts +1 -0
  525. package/node_modules/@ktx/context/dist/connections/postgres-query-executor.test.js +91 -0
  526. package/node_modules/@ktx/context/dist/connections/query-executor.d.ts +19 -0
  527. package/node_modules/@ktx/context/dist/connections/query-executor.js +3 -0
  528. package/node_modules/@ktx/context/dist/connections/read-only-sql.d.ts +2 -0
  529. package/node_modules/@ktx/context/dist/connections/read-only-sql.js +19 -0
  530. package/node_modules/@ktx/context/dist/connections/read-only-sql.test.d.ts +1 -0
  531. package/node_modules/@ktx/context/dist/connections/read-only-sql.test.js +20 -0
  532. package/node_modules/@ktx/context/dist/connections/sqlite-query-executor.d.ts +3 -0
  533. package/node_modules/@ktx/context/dist/connections/sqlite-query-executor.js +73 -0
  534. package/node_modules/@ktx/context/dist/connections/sqlite-query-executor.test.d.ts +1 -0
  535. package/node_modules/@ktx/context/dist/connections/sqlite-query-executor.test.js +113 -0
  536. package/node_modules/@ktx/context/dist/core/config-reference.d.ts +2 -0
  537. package/node_modules/@ktx/context/dist/core/config-reference.js +29 -0
  538. package/node_modules/@ktx/context/dist/core/config-reference.test.d.ts +1 -0
  539. package/node_modules/@ktx/context/dist/core/config-reference.test.js +27 -0
  540. package/node_modules/@ktx/context/dist/core/config.d.ts +25 -0
  541. package/node_modules/@ktx/context/dist/core/config.js +14 -0
  542. package/node_modules/@ktx/context/dist/core/embedding.d.ts +5 -0
  543. package/node_modules/@ktx/context/dist/core/embedding.js +1 -0
  544. package/node_modules/@ktx/context/dist/core/file-store.d.ts +30 -0
  545. package/node_modules/@ktx/context/dist/core/file-store.js +1 -0
  546. package/node_modules/@ktx/context/dist/core/git-env.d.ts +2 -0
  547. package/node_modules/@ktx/context/dist/core/git-env.js +26 -0
  548. package/node_modules/@ktx/context/dist/core/git.service.assert-worktree-clean.test.d.ts +1 -0
  549. package/node_modules/@ktx/context/dist/core/git.service.assert-worktree-clean.test.js +62 -0
  550. package/node_modules/@ktx/context/dist/core/git.service.d.ts +194 -0
  551. package/node_modules/@ktx/context/dist/core/git.service.delete-directories.test.d.ts +1 -0
  552. package/node_modules/@ktx/context/dist/core/git.service.delete-directories.test.js +61 -0
  553. package/node_modules/@ktx/context/dist/core/git.service.js +804 -0
  554. package/node_modules/@ktx/context/dist/core/git.service.reset-hard.test.d.ts +1 -0
  555. package/node_modules/@ktx/context/dist/core/git.service.reset-hard.test.js +47 -0
  556. package/node_modules/@ktx/context/dist/core/git.service.test.d.ts +1 -0
  557. package/node_modules/@ktx/context/dist/core/git.service.test.js +325 -0
  558. package/node_modules/@ktx/context/dist/core/index.d.ts +10 -0
  559. package/node_modules/@ktx/context/dist/core/index.js +5 -0
  560. package/node_modules/@ktx/context/dist/core/redaction.d.ts +4 -0
  561. package/node_modules/@ktx/context/dist/core/redaction.js +39 -0
  562. package/node_modules/@ktx/context/dist/core/session-worktree.service.d.ts +38 -0
  563. package/node_modules/@ktx/context/dist/core/session-worktree.service.js +65 -0
  564. package/node_modules/@ktx/context/dist/core/session-worktree.service.test.d.ts +1 -0
  565. package/node_modules/@ktx/context/dist/core/session-worktree.service.test.js +97 -0
  566. package/node_modules/@ktx/context/dist/daemon/index.d.ts +1 -0
  567. package/node_modules/@ktx/context/dist/daemon/index.js +1 -0
  568. package/node_modules/@ktx/context/dist/daemon/semantic-layer-compute.d.ts +72 -0
  569. package/node_modules/@ktx/context/dist/daemon/semantic-layer-compute.js +191 -0
  570. package/node_modules/@ktx/context/dist/daemon/semantic-layer-compute.test.d.ts +1 -0
  571. package/node_modules/@ktx/context/dist/daemon/semantic-layer-compute.test.js +301 -0
  572. package/node_modules/@ktx/context/dist/index.d.ts +21 -0
  573. package/node_modules/@ktx/context/dist/index.js +18 -0
  574. package/node_modules/@ktx/context/dist/index.test.d.ts +1 -0
  575. package/node_modules/@ktx/context/dist/index.test.js +10 -0
  576. package/node_modules/@ktx/context/dist/ingest/action-identity.d.ts +3 -0
  577. package/node_modules/@ktx/context/dist/ingest/action-identity.js +6 -0
  578. package/node_modules/@ktx/context/dist/ingest/action-identity.test.d.ts +1 -0
  579. package/node_modules/@ktx/context/dist/ingest/action-identity.test.js +19 -0
  580. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/chunk.d.ts +7 -0
  581. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/chunk.js +110 -0
  582. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/chunk.test.d.ts +1 -0
  583. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/chunk.test.js +30 -0
  584. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/dbt.adapter.d.ts +18 -0
  585. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/dbt.adapter.js +43 -0
  586. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/dbt.adapter.test.d.ts +1 -0
  587. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/dbt.adapter.test.js +43 -0
  588. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/detect.d.ts +1 -0
  589. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/detect.js +12 -0
  590. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/fetch.d.ts +19 -0
  591. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/fetch.js +43 -0
  592. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/fetch.test.d.ts +1 -0
  593. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/fetch.test.js +30 -0
  594. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/parse.d.ts +6 -0
  595. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/parse.js +23 -0
  596. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/parse.test.d.ts +1 -0
  597. package/node_modules/@ktx/context/dist/ingest/adapters/dbt/parse.test.js +7 -0
  598. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/match-tables.d.ts +27 -0
  599. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/match-tables.js +80 -0
  600. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/match-tables.test.d.ts +1 -0
  601. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/match-tables.test.js +59 -0
  602. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/merge-semantic-model-tables.d.ts +3 -0
  603. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/merge-semantic-model-tables.js +28 -0
  604. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/merge-semantic-model-tables.test.d.ts +1 -0
  605. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/merge-semantic-model-tables.test.js +55 -0
  606. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/parse-schema.d.ts +65 -0
  607. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/parse-schema.js +432 -0
  608. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/parse-schema.test.d.ts +1 -0
  609. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/parse-schema.test.js +195 -0
  610. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-description-updates.d.ts +13 -0
  611. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-description-updates.js +46 -0
  612. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-description-updates.test.d.ts +1 -0
  613. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-description-updates.test.js +88 -0
  614. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-metadata-updates.d.ts +9 -0
  615. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-metadata-updates.js +57 -0
  616. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-metadata-updates.test.d.ts +1 -0
  617. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-metadata-updates.test.js +68 -0
  618. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-relationship-updates.d.ts +12 -0
  619. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-relationship-updates.js +34 -0
  620. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-relationship-updates.test.d.ts +1 -0
  621. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-descriptions/to-relationship-updates.test.js +56 -0
  622. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-extraction-golden-parity.test.d.ts +1 -0
  623. package/node_modules/@ktx/context/dist/ingest/adapters/dbt-extraction-golden-parity.test.js +392 -0
  624. package/node_modules/@ktx/context/dist/ingest/adapters/fake/fake.adapter.d.ts +7 -0
  625. package/node_modules/@ktx/context/dist/ingest/adapters/fake/fake.adapter.js +42 -0
  626. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/bigquery-query-history-reader.d.ts +14 -0
  627. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/bigquery-query-history-reader.js +199 -0
  628. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/bigquery-query-history-reader.test.d.ts +1 -0
  629. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/bigquery-query-history-reader.test.js +121 -0
  630. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/buckets.d.ts +6 -0
  631. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/buckets.js +64 -0
  632. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/buckets.test.d.ts +1 -0
  633. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/buckets.test.js +49 -0
  634. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/chunk-unified.d.ts +3 -0
  635. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/chunk-unified.js +86 -0
  636. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/chunk-unified.test.d.ts +1 -0
  637. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/chunk-unified.test.js +160 -0
  638. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/detect.d.ts +1 -0
  639. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/detect.js +25 -0
  640. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/detect.test.d.ts +1 -0
  641. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/detect.test.js +48 -0
  642. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/errors.d.ts +35 -0
  643. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/errors.js +32 -0
  644. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/evidence-tool.d.ts +41 -0
  645. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/evidence-tool.js +88 -0
  646. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/evidence-tool.test.d.ts +1 -0
  647. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/evidence-tool.test.js +67 -0
  648. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/evidence.d.ts +77 -0
  649. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/evidence.js +32 -0
  650. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/evidence.test.d.ts +1 -0
  651. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/evidence.test.js +43 -0
  652. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/historic-sql.adapter.d.ts +14 -0
  653. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/historic-sql.adapter.js +33 -0
  654. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/historic-sql.adapter.test.d.ts +1 -0
  655. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/historic-sql.adapter.test.js +98 -0
  656. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/local-ingest-acceptance.test.d.ts +1 -0
  657. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/local-ingest-acceptance.test.js +235 -0
  658. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/pattern-inputs.d.ts +21 -0
  659. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/pattern-inputs.js +66 -0
  660. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/pattern-inputs.test.d.ts +1 -0
  661. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/pattern-inputs.test.js +68 -0
  662. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/post-processor.d.ts +4 -0
  663. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/post-processor.js +38 -0
  664. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/post-processor.test.d.ts +1 -0
  665. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/post-processor.test.js +63 -0
  666. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/postgres-pgss-reader.d.ts +5 -0
  667. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/postgres-pgss-reader.js +233 -0
  668. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/postgres-pgss-reader.test.d.ts +1 -0
  669. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/postgres-pgss-reader.test.js +205 -0
  670. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/projection.d.ts +19 -0
  671. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/projection.js +272 -0
  672. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/projection.test.d.ts +1 -0
  673. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/projection.test.js +309 -0
  674. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/redaction.d.ts +6 -0
  675. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/redaction.js +30 -0
  676. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/redaction.test.d.ts +1 -0
  677. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/redaction.test.js +22 -0
  678. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/skill-schemas.d.ts +37 -0
  679. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/skill-schemas.js +24 -0
  680. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/skill-schemas.test.d.ts +1 -0
  681. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/skill-schemas.test.js +62 -0
  682. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/snowflake-query-history-reader.d.ts +8 -0
  683. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/snowflake-query-history-reader.js +180 -0
  684. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/snowflake-query-history-reader.test.d.ts +1 -0
  685. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/snowflake-query-history-reader.test.js +117 -0
  686. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/stage-unified.d.ts +13 -0
  687. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/stage-unified.js +269 -0
  688. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/stage-unified.test.d.ts +1 -0
  689. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/stage-unified.test.js +405 -0
  690. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/types.d.ts +184 -0
  691. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/types.js +99 -0
  692. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/types.test.d.ts +1 -0
  693. package/node_modules/@ktx/context/dist/ingest/adapters/historic-sql/types.test.js +87 -0
  694. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/chunk.d.ts +2 -0
  695. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/chunk.js +44 -0
  696. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/chunk.test.d.ts +1 -0
  697. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/chunk.test.js +95 -0
  698. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/daemon-introspection.d.ts +20 -0
  699. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/daemon-introspection.js +187 -0
  700. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/daemon-introspection.test.d.ts +1 -0
  701. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/daemon-introspection.test.js +204 -0
  702. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/extracted-schema.d.ts +29 -0
  703. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/extracted-schema.js +28 -0
  704. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/extracted-schema.test.d.ts +1 -0
  705. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/extracted-schema.test.js +129 -0
  706. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/live-database.adapter.d.ts +11 -0
  707. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/live-database.adapter.js +24 -0
  708. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/live-database.adapter.test.d.ts +1 -0
  709. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/live-database.adapter.test.js +55 -0
  710. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/manifest.d.ts +65 -0
  711. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/manifest.js +190 -0
  712. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/manifest.test.d.ts +1 -0
  713. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/manifest.test.js +291 -0
  714. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/stage.d.ts +12 -0
  715. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/stage.js +105 -0
  716. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/stage.test.d.ts +1 -0
  717. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/stage.test.js +133 -0
  718. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/structural-sync.d.ts +89 -0
  719. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/structural-sync.js +335 -0
  720. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/structural-sync.test.d.ts +1 -0
  721. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/structural-sync.test.js +416 -0
  722. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/types.d.ts +8 -0
  723. package/node_modules/@ktx/context/dist/ingest/adapters/live-database/types.js +1 -0
  724. package/node_modules/@ktx/context/dist/ingest/adapters/looker/chunk.d.ts +2 -0
  725. package/node_modules/@ktx/context/dist/ingest/adapters/looker/chunk.js +146 -0
  726. package/node_modules/@ktx/context/dist/ingest/adapters/looker/chunk.test.d.ts +1 -0
  727. package/node_modules/@ktx/context/dist/ingest/adapters/looker/chunk.test.js +142 -0
  728. package/node_modules/@ktx/context/dist/ingest/adapters/looker/client-boundary.test.d.ts +1 -0
  729. package/node_modules/@ktx/context/dist/ingest/adapters/looker/client-boundary.test.js +12 -0
  730. package/node_modules/@ktx/context/dist/ingest/adapters/looker/client.d.ts +83 -0
  731. package/node_modules/@ktx/context/dist/ingest/adapters/looker/client.js +554 -0
  732. package/node_modules/@ktx/context/dist/ingest/adapters/looker/client.test.d.ts +1 -0
  733. package/node_modules/@ktx/context/dist/ingest/adapters/looker/client.test.js +407 -0
  734. package/node_modules/@ktx/context/dist/ingest/adapters/looker/daemon-table-identifier-parser.d.ts +7 -0
  735. package/node_modules/@ktx/context/dist/ingest/adapters/looker/daemon-table-identifier-parser.js +57 -0
  736. package/node_modules/@ktx/context/dist/ingest/adapters/looker/daemon-table-identifier-parser.test.d.ts +1 -0
  737. package/node_modules/@ktx/context/dist/ingest/adapters/looker/daemon-table-identifier-parser.test.js +40 -0
  738. package/node_modules/@ktx/context/dist/ingest/adapters/looker/detect.d.ts +1 -0
  739. package/node_modules/@ktx/context/dist/ingest/adapters/looker/detect.js +26 -0
  740. package/node_modules/@ktx/context/dist/ingest/adapters/looker/detect.test.d.ts +1 -0
  741. package/node_modules/@ktx/context/dist/ingest/adapters/looker/detect.test.js +39 -0
  742. package/node_modules/@ktx/context/dist/ingest/adapters/looker/evidence-documents.d.ts +3 -0
  743. package/node_modules/@ktx/context/dist/ingest/adapters/looker/evidence-documents.js +311 -0
  744. package/node_modules/@ktx/context/dist/ingest/adapters/looker/evidence-documents.test.d.ts +1 -0
  745. package/node_modules/@ktx/context/dist/ingest/adapters/looker/evidence-documents.test.js +178 -0
  746. package/node_modules/@ktx/context/dist/ingest/adapters/looker/factory.d.ts +21 -0
  747. package/node_modules/@ktx/context/dist/ingest/adapters/looker/factory.js +22 -0
  748. package/node_modules/@ktx/context/dist/ingest/adapters/looker/factory.test.d.ts +1 -0
  749. package/node_modules/@ktx/context/dist/ingest/adapters/looker/factory.test.js +55 -0
  750. package/node_modules/@ktx/context/dist/ingest/adapters/looker/fetch-report.d.ts +3 -0
  751. package/node_modules/@ktx/context/dist/ingest/adapters/looker/fetch-report.js +21 -0
  752. package/node_modules/@ktx/context/dist/ingest/adapters/looker/fetch-report.test.d.ts +1 -0
  753. package/node_modules/@ktx/context/dist/ingest/adapters/looker/fetch-report.test.js +71 -0
  754. package/node_modules/@ktx/context/dist/ingest/adapters/looker/fetch.d.ts +31 -0
  755. package/node_modules/@ktx/context/dist/ingest/adapters/looker/fetch.js +395 -0
  756. package/node_modules/@ktx/context/dist/ingest/adapters/looker/fetch.test.d.ts +1 -0
  757. package/node_modules/@ktx/context/dist/ingest/adapters/looker/fetch.test.js +592 -0
  758. package/node_modules/@ktx/context/dist/ingest/adapters/looker/local-looker.adapter.d.ts +11 -0
  759. package/node_modules/@ktx/context/dist/ingest/adapters/looker/local-looker.adapter.js +45 -0
  760. package/node_modules/@ktx/context/dist/ingest/adapters/looker/local-runtime-store.d.ts +50 -0
  761. package/node_modules/@ktx/context/dist/ingest/adapters/looker/local-runtime-store.js +196 -0
  762. package/node_modules/@ktx/context/dist/ingest/adapters/looker/local-runtime-store.test.d.ts +1 -0
  763. package/node_modules/@ktx/context/dist/ingest/adapters/looker/local-runtime-store.test.js +106 -0
  764. package/node_modules/@ktx/context/dist/ingest/adapters/looker/looker.adapter.d.ts +57 -0
  765. package/node_modules/@ktx/context/dist/ingest/adapters/looker/looker.adapter.js +47 -0
  766. package/node_modules/@ktx/context/dist/ingest/adapters/looker/looker.adapter.test.d.ts +1 -0
  767. package/node_modules/@ktx/context/dist/ingest/adapters/looker/looker.adapter.test.js +99 -0
  768. package/node_modules/@ktx/context/dist/ingest/adapters/looker/mapping.d.ts +126 -0
  769. package/node_modules/@ktx/context/dist/ingest/adapters/looker/mapping.js +303 -0
  770. package/node_modules/@ktx/context/dist/ingest/adapters/looker/mapping.test.d.ts +1 -0
  771. package/node_modules/@ktx/context/dist/ingest/adapters/looker/mapping.test.js +334 -0
  772. package/node_modules/@ktx/context/dist/ingest/adapters/looker/reconcile.d.ts +2 -0
  773. package/node_modules/@ktx/context/dist/ingest/adapters/looker/reconcile.js +20 -0
  774. package/node_modules/@ktx/context/dist/ingest/adapters/looker/reconcile.test.d.ts +1 -0
  775. package/node_modules/@ktx/context/dist/ingest/adapters/looker/reconcile.test.js +22 -0
  776. package/node_modules/@ktx/context/dist/ingest/adapters/looker/scope.d.ts +6 -0
  777. package/node_modules/@ktx/context/dist/ingest/adapters/looker/scope.js +55 -0
  778. package/node_modules/@ktx/context/dist/ingest/adapters/looker/scope.test.d.ts +1 -0
  779. package/node_modules/@ktx/context/dist/ingest/adapters/looker/scope.test.js +84 -0
  780. package/node_modules/@ktx/context/dist/ingest/adapters/looker/target-connections.d.ts +1 -0
  781. package/node_modules/@ktx/context/dist/ingest/adapters/looker/target-connections.js +38 -0
  782. package/node_modules/@ktx/context/dist/ingest/adapters/looker/target-connections.test.d.ts +1 -0
  783. package/node_modules/@ktx/context/dist/ingest/adapters/looker/target-connections.test.js +71 -0
  784. package/node_modules/@ktx/context/dist/ingest/adapters/looker/tools/looker-query-to-sl.tool.d.ts +107 -0
  785. package/node_modules/@ktx/context/dist/ingest/adapters/looker/tools/looker-query-to-sl.tool.js +236 -0
  786. package/node_modules/@ktx/context/dist/ingest/adapters/looker/tools/looker-query-to-sl.tool.test.d.ts +1 -0
  787. package/node_modules/@ktx/context/dist/ingest/adapters/looker/tools/looker-query-to-sl.tool.test.js +211 -0
  788. package/node_modules/@ktx/context/dist/ingest/adapters/looker/types.d.ts +438 -0
  789. package/node_modules/@ktx/context/dist/ingest/adapters/looker/types.js +198 -0
  790. package/node_modules/@ktx/context/dist/ingest/adapters/looker/types.test.d.ts +1 -0
  791. package/node_modules/@ktx/context/dist/ingest/adapters/looker/types.test.js +260 -0
  792. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/chunk.d.ts +19 -0
  793. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/chunk.js +128 -0
  794. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/chunk.test.d.ts +1 -0
  795. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/chunk.test.js +213 -0
  796. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/detect.d.ts +1 -0
  797. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/detect.js +11 -0
  798. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/detect.test.d.ts +1 -0
  799. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/detect.test.js +37 -0
  800. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/fetch-report.d.ts +15 -0
  801. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/fetch-report.js +98 -0
  802. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/fetch-report.test.d.ts +1 -0
  803. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/fetch-report.test.js +82 -0
  804. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/fetch.d.ts +15 -0
  805. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/fetch.js +54 -0
  806. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/fetch.test.d.ts +1 -0
  807. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/fetch.test.js +121 -0
  808. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/graph.d.ts +16 -0
  809. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/graph.js +85 -0
  810. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/graph.test.d.ts +1 -0
  811. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/graph.test.js +105 -0
  812. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/lookml.adapter.d.ts +17 -0
  813. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/lookml.adapter.js +44 -0
  814. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/lookml.adapter.test.d.ts +1 -0
  815. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/lookml.adapter.test.js +49 -0
  816. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/parse.d.ts +35 -0
  817. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/parse.js +149 -0
  818. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/parse.test.d.ts +1 -0
  819. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/parse.test.js +118 -0
  820. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/pull-config.d.ts +37 -0
  821. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/pull-config.js +26 -0
  822. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/pull-config.test.d.ts +1 -0
  823. package/node_modules/@ktx/context/dist/ingest/adapters/lookml/pull-config.test.js +128 -0
  824. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/card-references.d.ts +13 -0
  825. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/card-references.js +37 -0
  826. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/card-references.test.d.ts +1 -0
  827. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/card-references.test.js +36 -0
  828. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/chunk.d.ts +6 -0
  829. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/chunk.js +208 -0
  830. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/chunk.test.d.ts +1 -0
  831. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/chunk.test.js +299 -0
  832. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/client-boundary.test.d.ts +1 -0
  833. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/client-boundary.test.js +38 -0
  834. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/client-port.d.ts +167 -0
  835. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/client-port.js +9 -0
  836. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/client-port.test.d.ts +1 -0
  837. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/client-port.test.js +86 -0
  838. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/client.d.ts +114 -0
  839. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/client.js +671 -0
  840. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/client.test.d.ts +1 -0
  841. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/client.test.js +377 -0
  842. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/detect.d.ts +1 -0
  843. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/detect.js +20 -0
  844. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/detect.test.d.ts +1 -0
  845. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/detect.test.js +42 -0
  846. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/fanout-planner.d.ts +17 -0
  847. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/fanout-planner.js +23 -0
  848. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/fanout-planner.test.d.ts +1 -0
  849. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/fanout-planner.test.js +44 -0
  850. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/fetch-scope.d.ts +31 -0
  851. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/fetch-scope.js +72 -0
  852. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/fetch-scope.test.d.ts +1 -0
  853. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/fetch-scope.test.js +124 -0
  854. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/fetch.d.ts +16 -0
  855. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/fetch.js +239 -0
  856. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/fetch.test.d.ts +1 -0
  857. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/fetch.test.js +516 -0
  858. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/local-metabase.adapter.d.ts +13 -0
  859. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/local-metabase.adapter.js +41 -0
  860. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/local-metabase.adapter.test.d.ts +1 -0
  861. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/local-metabase.adapter.test.js +56 -0
  862. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/local-source-state-store.d.ts +43 -0
  863. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/local-source-state-store.js +176 -0
  864. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/local-source-state-store.test.d.ts +1 -0
  865. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/local-source-state-store.test.js +99 -0
  866. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/mapping.d.ts +92 -0
  867. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/mapping.js +220 -0
  868. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/mapping.test.d.ts +1 -0
  869. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/mapping.test.js +215 -0
  870. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/metabase.adapter.d.ts +19 -0
  871. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/metabase.adapter.js +41 -0
  872. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/metabase.adapter.test.d.ts +1 -0
  873. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/metabase.adapter.test.js +129 -0
  874. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/serialize-card.d.ts +53 -0
  875. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/serialize-card.js +67 -0
  876. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/serialize-card.test.d.ts +1 -0
  877. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/serialize-card.test.js +205 -0
  878. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/source-state-port.d.ts +23 -0
  879. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/source-state-port.js +1 -0
  880. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/types.d.ts +142 -0
  881. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/types.js +106 -0
  882. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/types.test.d.ts +1 -0
  883. package/node_modules/@ktx/context/dist/ingest/adapters/metabase/types.test.js +75 -0
  884. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/chunk.d.ts +19 -0
  885. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/chunk.js +81 -0
  886. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/chunk.test.d.ts +1 -0
  887. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/chunk.test.js +114 -0
  888. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/deep-parse.d.ts +77 -0
  889. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/deep-parse.js +460 -0
  890. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/deep-parse.test.d.ts +1 -0
  891. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/deep-parse.test.js +1139 -0
  892. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/detect.d.ts +1 -0
  893. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/detect.js +34 -0
  894. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/detect.test.d.ts +1 -0
  895. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/detect.test.js +43 -0
  896. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/fetch.d.ts +11 -0
  897. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/fetch.js +51 -0
  898. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/fetch.test.d.ts +1 -0
  899. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/fetch.test.js +97 -0
  900. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/graph.d.ts +25 -0
  901. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/graph.js +163 -0
  902. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/graph.test.d.ts +1 -0
  903. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/graph.test.js +245 -0
  904. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/import-semantic-models.d.ts +29 -0
  905. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/import-semantic-models.js +136 -0
  906. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/import-semantic-models.test.d.ts +1 -0
  907. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/import-semantic-models.test.js +318 -0
  908. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/metricflow.adapter.d.ts +16 -0
  909. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/metricflow.adapter.js +44 -0
  910. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/metricflow.adapter.test.d.ts +1 -0
  911. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/metricflow.adapter.test.js +97 -0
  912. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/parse.d.ts +42 -0
  913. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/parse.js +150 -0
  914. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/parse.test.d.ts +1 -0
  915. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/parse.test.js +171 -0
  916. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/pull-config.d.ts +37 -0
  917. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/pull-config.js +24 -0
  918. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/pull-config.test.d.ts +1 -0
  919. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/pull-config.test.js +57 -0
  920. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/semantic-models.d.ts +39 -0
  921. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/semantic-models.js +278 -0
  922. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/semantic-models.test.d.ts +1 -0
  923. package/node_modules/@ktx/context/dist/ingest/adapters/metricflow/semantic-models.test.js +204 -0
  924. package/node_modules/@ktx/context/dist/ingest/adapters/notion/chunk.d.ts +4 -0
  925. package/node_modules/@ktx/context/dist/ingest/adapters/notion/chunk.js +137 -0
  926. package/node_modules/@ktx/context/dist/ingest/adapters/notion/cluster.d.ts +10 -0
  927. package/node_modules/@ktx/context/dist/ingest/adapters/notion/cluster.js +82 -0
  928. package/node_modules/@ktx/context/dist/ingest/adapters/notion/cluster.test.d.ts +1 -0
  929. package/node_modules/@ktx/context/dist/ingest/adapters/notion/cluster.test.js +123 -0
  930. package/node_modules/@ktx/context/dist/ingest/adapters/notion/detect.d.ts +1 -0
  931. package/node_modules/@ktx/context/dist/ingest/adapters/notion/detect.js +20 -0
  932. package/node_modules/@ktx/context/dist/ingest/adapters/notion/fetch.d.ts +13 -0
  933. package/node_modules/@ktx/context/dist/ingest/adapters/notion/fetch.js +517 -0
  934. package/node_modules/@ktx/context/dist/ingest/adapters/notion/fetch.test.d.ts +1 -0
  935. package/node_modules/@ktx/context/dist/ingest/adapters/notion/fetch.test.js +358 -0
  936. package/node_modules/@ktx/context/dist/ingest/adapters/notion/local-state-store.d.ts +12 -0
  937. package/node_modules/@ktx/context/dist/ingest/adapters/notion/local-state-store.js +46 -0
  938. package/node_modules/@ktx/context/dist/ingest/adapters/notion/local-state-store.test.d.ts +1 -0
  939. package/node_modules/@ktx/context/dist/ingest/adapters/notion/local-state-store.test.js +29 -0
  940. package/node_modules/@ktx/context/dist/ingest/adapters/notion/normalize.d.ts +10 -0
  941. package/node_modules/@ktx/context/dist/ingest/adapters/notion/normalize.js +165 -0
  942. package/node_modules/@ktx/context/dist/ingest/adapters/notion/normalize.test.d.ts +1 -0
  943. package/node_modules/@ktx/context/dist/ingest/adapters/notion/normalize.test.js +64 -0
  944. package/node_modules/@ktx/context/dist/ingest/adapters/notion/notion-client.d.ts +74 -0
  945. package/node_modules/@ktx/context/dist/ingest/adapters/notion/notion-client.js +107 -0
  946. package/node_modules/@ktx/context/dist/ingest/adapters/notion/notion-client.test.d.ts +1 -0
  947. package/node_modules/@ktx/context/dist/ingest/adapters/notion/notion-client.test.js +49 -0
  948. package/node_modules/@ktx/context/dist/ingest/adapters/notion/notion.adapter.d.ts +46 -0
  949. package/node_modules/@ktx/context/dist/ingest/adapters/notion/notion.adapter.js +119 -0
  950. package/node_modules/@ktx/context/dist/ingest/adapters/notion/notion.adapter.test.d.ts +1 -0
  951. package/node_modules/@ktx/context/dist/ingest/adapters/notion/notion.adapter.test.js +315 -0
  952. package/node_modules/@ktx/context/dist/ingest/adapters/notion/pull-config.d.ts +2 -0
  953. package/node_modules/@ktx/context/dist/ingest/adapters/notion/pull-config.js +4 -0
  954. package/node_modules/@ktx/context/dist/ingest/adapters/notion/types.d.ts +97 -0
  955. package/node_modules/@ktx/context/dist/ingest/adapters/notion/types.js +62 -0
  956. package/node_modules/@ktx/context/dist/ingest/canonical-pins.d.ts +10 -0
  957. package/node_modules/@ktx/context/dist/ingest/canonical-pins.js +43 -0
  958. package/node_modules/@ktx/context/dist/ingest/canonical-pins.test.d.ts +1 -0
  959. package/node_modules/@ktx/context/dist/ingest/canonical-pins.test.js +66 -0
  960. package/node_modules/@ktx/context/dist/ingest/clustering/kmeans.d.ts +11 -0
  961. package/node_modules/@ktx/context/dist/ingest/clustering/kmeans.js +101 -0
  962. package/node_modules/@ktx/context/dist/ingest/clustering/kmeans.test.d.ts +1 -0
  963. package/node_modules/@ktx/context/dist/ingest/clustering/kmeans.test.js +61 -0
  964. package/node_modules/@ktx/context/dist/ingest/context-candidates/candidate-dedup.service.d.ts +27 -0
  965. package/node_modules/@ktx/context/dist/ingest/context-candidates/candidate-dedup.service.js +234 -0
  966. package/node_modules/@ktx/context/dist/ingest/context-candidates/candidate-dedup.service.test.d.ts +1 -0
  967. package/node_modules/@ktx/context/dist/ingest/context-candidates/candidate-dedup.service.test.js +216 -0
  968. package/node_modules/@ktx/context/dist/ingest/context-candidates/context-candidate-carryforward.service.d.ts +31 -0
  969. package/node_modules/@ktx/context/dist/ingest/context-candidates/context-candidate-carryforward.service.js +131 -0
  970. package/node_modules/@ktx/context/dist/ingest/context-candidates/context-candidate-carryforward.service.test.d.ts +1 -0
  971. package/node_modules/@ktx/context/dist/ingest/context-candidates/context-candidate-carryforward.service.test.js +161 -0
  972. package/node_modules/@ktx/context/dist/ingest/context-candidates/curator-pagination.service.d.ts +64 -0
  973. package/node_modules/@ktx/context/dist/ingest/context-candidates/curator-pagination.service.js +240 -0
  974. package/node_modules/@ktx/context/dist/ingest/context-candidates/curator-pagination.service.test.d.ts +1 -0
  975. package/node_modules/@ktx/context/dist/ingest/context-candidates/curator-pagination.service.test.js +168 -0
  976. package/node_modules/@ktx/context/dist/ingest/context-candidates/embedding-text.d.ts +6 -0
  977. package/node_modules/@ktx/context/dist/ingest/context-candidates/embedding-text.js +3 -0
  978. package/node_modules/@ktx/context/dist/ingest/context-candidates/embedding-text.test.d.ts +1 -0
  979. package/node_modules/@ktx/context/dist/ingest/context-candidates/embedding-text.test.js +10 -0
  980. package/node_modules/@ktx/context/dist/ingest/context-candidates/index.d.ts +9 -0
  981. package/node_modules/@ktx/context/dist/ingest/context-candidates/index.js +4 -0
  982. package/node_modules/@ktx/context/dist/ingest/context-candidates/store.d.ts +24 -0
  983. package/node_modules/@ktx/context/dist/ingest/context-candidates/store.js +1 -0
  984. package/node_modules/@ktx/context/dist/ingest/context-candidates/store.test.d.ts +1 -0
  985. package/node_modules/@ktx/context/dist/ingest/context-candidates/store.test.js +67 -0
  986. package/node_modules/@ktx/context/dist/ingest/context-candidates/types.d.ts +103 -0
  987. package/node_modules/@ktx/context/dist/ingest/context-candidates/types.js +1 -0
  988. package/node_modules/@ktx/context/dist/ingest/context-evidence/context-evidence-index.service.d.ts +53 -0
  989. package/node_modules/@ktx/context/dist/ingest/context-evidence/context-evidence-index.service.js +303 -0
  990. package/node_modules/@ktx/context/dist/ingest/context-evidence/context-evidence-index.service.test.d.ts +1 -0
  991. package/node_modules/@ktx/context/dist/ingest/context-evidence/context-evidence-index.service.test.js +374 -0
  992. package/node_modules/@ktx/context/dist/ingest/context-evidence/index.d.ts +5 -0
  993. package/node_modules/@ktx/context/dist/ingest/context-evidence/index.js +2 -0
  994. package/node_modules/@ktx/context/dist/ingest/context-evidence/sqlite-context-evidence-store.d.ts +89 -0
  995. package/node_modules/@ktx/context/dist/ingest/context-evidence/sqlite-context-evidence-store.js +1025 -0
  996. package/node_modules/@ktx/context/dist/ingest/context-evidence/sqlite-context-evidence-store.test.d.ts +1 -0
  997. package/node_modules/@ktx/context/dist/ingest/context-evidence/sqlite-context-evidence-store.test.js +416 -0
  998. package/node_modules/@ktx/context/dist/ingest/context-evidence/store.d.ts +10 -0
  999. package/node_modules/@ktx/context/dist/ingest/context-evidence/store.js +1 -0
  1000. package/node_modules/@ktx/context/dist/ingest/context-evidence/store.test.d.ts +1 -0
  1001. package/node_modules/@ktx/context/dist/ingest/context-evidence/store.test.js +55 -0
  1002. package/node_modules/@ktx/context/dist/ingest/context-evidence/types.d.ts +49 -0
  1003. package/node_modules/@ktx/context/dist/ingest/context-evidence/types.js +1 -0
  1004. package/node_modules/@ktx/context/dist/ingest/dbt-shared/project-vars.d.ts +12 -0
  1005. package/node_modules/@ktx/context/dist/ingest/dbt-shared/project-vars.js +86 -0
  1006. package/node_modules/@ktx/context/dist/ingest/dbt-shared/project-vars.test.d.ts +1 -0
  1007. package/node_modules/@ktx/context/dist/ingest/dbt-shared/project-vars.test.js +90 -0
  1008. package/node_modules/@ktx/context/dist/ingest/dbt-shared/schema-files.d.ts +3 -0
  1009. package/node_modules/@ktx/context/dist/ingest/dbt-shared/schema-files.js +62 -0
  1010. package/node_modules/@ktx/context/dist/ingest/dbt-shared/schema-files.test.d.ts +1 -0
  1011. package/node_modules/@ktx/context/dist/ingest/dbt-shared/schema-files.test.js +35 -0
  1012. package/node_modules/@ktx/context/dist/ingest/diff-set.service.d.ts +8 -0
  1013. package/node_modules/@ktx/context/dist/ingest/diff-set.service.js +41 -0
  1014. package/node_modules/@ktx/context/dist/ingest/diff-set.service.test.d.ts +1 -0
  1015. package/node_modules/@ktx/context/dist/ingest/diff-set.service.test.js +132 -0
  1016. package/node_modules/@ktx/context/dist/ingest/git-env.d.ts +2 -0
  1017. package/node_modules/@ktx/context/dist/ingest/git-env.js +33 -0
  1018. package/node_modules/@ktx/context/dist/ingest/index.d.ts +148 -0
  1019. package/node_modules/@ktx/context/dist/ingest/index.js +93 -0
  1020. package/node_modules/@ktx/context/dist/ingest/ingest-bundle.runner.d.ts +38 -0
  1021. package/node_modules/@ktx/context/dist/ingest/ingest-bundle.runner.js +1263 -0
  1022. package/node_modules/@ktx/context/dist/ingest/ingest-bundle.runner.test.d.ts +1 -0
  1023. package/node_modules/@ktx/context/dist/ingest/ingest-bundle.runner.test.js +1727 -0
  1024. package/node_modules/@ktx/context/dist/ingest/ingest-prompts.test.d.ts +1 -0
  1025. package/node_modules/@ktx/context/dist/ingest/ingest-prompts.test.js +32 -0
  1026. package/node_modules/@ktx/context/dist/ingest/ingest-runtime-assets.test.d.ts +1 -0
  1027. package/node_modules/@ktx/context/dist/ingest/ingest-runtime-assets.test.js +89 -0
  1028. package/node_modules/@ktx/context/dist/ingest/local-adapters.d.ts +35 -0
  1029. package/node_modules/@ktx/context/dist/ingest/local-adapters.js +247 -0
  1030. package/node_modules/@ktx/context/dist/ingest/local-adapters.test.d.ts +1 -0
  1031. package/node_modules/@ktx/context/dist/ingest/local-adapters.test.js +625 -0
  1032. package/node_modules/@ktx/context/dist/ingest/local-bundle-ingest.test.d.ts +1 -0
  1033. package/node_modules/@ktx/context/dist/ingest/local-bundle-ingest.test.js +768 -0
  1034. package/node_modules/@ktx/context/dist/ingest/local-bundle-runtime.d.ts +32 -0
  1035. package/node_modules/@ktx/context/dist/ingest/local-bundle-runtime.js +558 -0
  1036. package/node_modules/@ktx/context/dist/ingest/local-bundle-runtime.test.d.ts +1 -0
  1037. package/node_modules/@ktx/context/dist/ingest/local-bundle-runtime.test.js +160 -0
  1038. package/node_modules/@ktx/context/dist/ingest/local-embedding-provider.integration.test.d.ts +1 -0
  1039. package/node_modules/@ktx/context/dist/ingest/local-embedding-provider.integration.test.js +140 -0
  1040. package/node_modules/@ktx/context/dist/ingest/local-ingest.d.ts +86 -0
  1041. package/node_modules/@ktx/context/dist/ingest/local-ingest.js +302 -0
  1042. package/node_modules/@ktx/context/dist/ingest/local-mapping-reconcile.d.ts +2 -0
  1043. package/node_modules/@ktx/context/dist/ingest/local-mapping-reconcile.js +26 -0
  1044. package/node_modules/@ktx/context/dist/ingest/local-mapping-reconcile.test.d.ts +1 -0
  1045. package/node_modules/@ktx/context/dist/ingest/local-mapping-reconcile.test.js +61 -0
  1046. package/node_modules/@ktx/context/dist/ingest/local-metabase-ingest.test.d.ts +1 -0
  1047. package/node_modules/@ktx/context/dist/ingest/local-metabase-ingest.test.js +227 -0
  1048. package/node_modules/@ktx/context/dist/ingest/local-stage-ingest.d.ts +53 -0
  1049. package/node_modules/@ktx/context/dist/ingest/local-stage-ingest.js +280 -0
  1050. package/node_modules/@ktx/context/dist/ingest/local-stage-ingest.test.d.ts +1 -0
  1051. package/node_modules/@ktx/context/dist/ingest/local-stage-ingest.test.js +552 -0
  1052. package/node_modules/@ktx/context/dist/ingest/memory-flow/acceptance-fixtures.d.ts +6 -0
  1053. package/node_modules/@ktx/context/dist/ingest/memory-flow/acceptance-fixtures.js +155 -0
  1054. package/node_modules/@ktx/context/dist/ingest/memory-flow/acceptance.test.d.ts +1 -0
  1055. package/node_modules/@ktx/context/dist/ingest/memory-flow/acceptance.test.js +43 -0
  1056. package/node_modules/@ktx/context/dist/ingest/memory-flow/events.d.ts +9 -0
  1057. package/node_modules/@ktx/context/dist/ingest/memory-flow/events.js +196 -0
  1058. package/node_modules/@ktx/context/dist/ingest/memory-flow/events.test.d.ts +1 -0
  1059. package/node_modules/@ktx/context/dist/ingest/memory-flow/events.test.js +319 -0
  1060. package/node_modules/@ktx/context/dist/ingest/memory-flow/index.d.ts +6 -0
  1061. package/node_modules/@ktx/context/dist/ingest/memory-flow/index.js +4 -0
  1062. package/node_modules/@ktx/context/dist/ingest/memory-flow/interaction.d.ts +9 -0
  1063. package/node_modules/@ktx/context/dist/ingest/memory-flow/interaction.js +315 -0
  1064. package/node_modules/@ktx/context/dist/ingest/memory-flow/interaction.test.d.ts +1 -0
  1065. package/node_modules/@ktx/context/dist/ingest/memory-flow/interaction.test.js +264 -0
  1066. package/node_modules/@ktx/context/dist/ingest/memory-flow/interactive-render.d.ts +2 -0
  1067. package/node_modules/@ktx/context/dist/ingest/memory-flow/interactive-render.js +121 -0
  1068. package/node_modules/@ktx/context/dist/ingest/memory-flow/interactive-render.test.d.ts +1 -0
  1069. package/node_modules/@ktx/context/dist/ingest/memory-flow/interactive-render.test.js +160 -0
  1070. package/node_modules/@ktx/context/dist/ingest/memory-flow/known-errors.d.ts +7 -0
  1071. package/node_modules/@ktx/context/dist/ingest/memory-flow/known-errors.js +17 -0
  1072. package/node_modules/@ktx/context/dist/ingest/memory-flow/live-buffer.d.ts +3 -0
  1073. package/node_modules/@ktx/context/dist/ingest/memory-flow/live-buffer.js +53 -0
  1074. package/node_modules/@ktx/context/dist/ingest/memory-flow/live-buffer.test.d.ts +1 -0
  1075. package/node_modules/@ktx/context/dist/ingest/memory-flow/live-buffer.test.js +77 -0
  1076. package/node_modules/@ktx/context/dist/ingest/memory-flow/package-export.test.d.ts +1 -0
  1077. package/node_modules/@ktx/context/dist/ingest/memory-flow/package-export.test.js +9 -0
  1078. package/node_modules/@ktx/context/dist/ingest/memory-flow/render.d.ts +2 -0
  1079. package/node_modules/@ktx/context/dist/ingest/memory-flow/render.js +84 -0
  1080. package/node_modules/@ktx/context/dist/ingest/memory-flow/render.test.d.ts +1 -0
  1081. package/node_modules/@ktx/context/dist/ingest/memory-flow/render.test.js +105 -0
  1082. package/node_modules/@ktx/context/dist/ingest/memory-flow/schema.d.ts +190 -0
  1083. package/node_modules/@ktx/context/dist/ingest/memory-flow/schema.js +155 -0
  1084. package/node_modules/@ktx/context/dist/ingest/memory-flow/schema.test.d.ts +1 -0
  1085. package/node_modules/@ktx/context/dist/ingest/memory-flow/schema.test.js +146 -0
  1086. package/node_modules/@ktx/context/dist/ingest/memory-flow/summary.d.ts +2 -0
  1087. package/node_modules/@ktx/context/dist/ingest/memory-flow/summary.js +88 -0
  1088. package/node_modules/@ktx/context/dist/ingest/memory-flow/summary.test.d.ts +1 -0
  1089. package/node_modules/@ktx/context/dist/ingest/memory-flow/summary.test.js +130 -0
  1090. package/node_modules/@ktx/context/dist/ingest/memory-flow/types.d.ts +207 -0
  1091. package/node_modules/@ktx/context/dist/ingest/memory-flow/types.js +1 -0
  1092. package/node_modules/@ktx/context/dist/ingest/memory-flow/view-model.d.ts +2 -0
  1093. package/node_modules/@ktx/context/dist/ingest/memory-flow/view-model.js +450 -0
  1094. package/node_modules/@ktx/context/dist/ingest/memory-flow/view-model.test.d.ts +1 -0
  1095. package/node_modules/@ktx/context/dist/ingest/memory-flow/view-model.test.js +397 -0
  1096. package/node_modules/@ktx/context/dist/ingest/memory-flow/visuals.d.ts +20 -0
  1097. package/node_modules/@ktx/context/dist/ingest/memory-flow/visuals.js +44 -0
  1098. package/node_modules/@ktx/context/dist/ingest/memory-flow/visuals.test.d.ts +1 -0
  1099. package/node_modules/@ktx/context/dist/ingest/memory-flow/visuals.test.js +49 -0
  1100. package/node_modules/@ktx/context/dist/ingest/metabase-mapping.d.ts +2 -0
  1101. package/node_modules/@ktx/context/dist/ingest/metabase-mapping.js +1 -0
  1102. package/node_modules/@ktx/context/dist/ingest/page-triage/index.d.ts +2 -0
  1103. package/node_modules/@ktx/context/dist/ingest/page-triage/index.js +1 -0
  1104. package/node_modules/@ktx/context/dist/ingest/page-triage/page-triage.service.d.ts +84 -0
  1105. package/node_modules/@ktx/context/dist/ingest/page-triage/page-triage.service.js +318 -0
  1106. package/node_modules/@ktx/context/dist/ingest/page-triage/page-triage.service.test.d.ts +1 -0
  1107. package/node_modules/@ktx/context/dist/ingest/page-triage/page-triage.service.test.js +311 -0
  1108. package/node_modules/@ktx/context/dist/ingest/parsed-target-table.d.ts +21 -0
  1109. package/node_modules/@ktx/context/dist/ingest/parsed-target-table.js +24 -0
  1110. package/node_modules/@ktx/context/dist/ingest/ports.d.ts +339 -0
  1111. package/node_modules/@ktx/context/dist/ingest/ports.js +1 -0
  1112. package/node_modules/@ktx/context/dist/ingest/raw-sources-paths.d.ts +4 -0
  1113. package/node_modules/@ktx/context/dist/ingest/raw-sources-paths.js +16 -0
  1114. package/node_modules/@ktx/context/dist/ingest/raw-sources-paths.test.d.ts +1 -0
  1115. package/node_modules/@ktx/context/dist/ingest/raw-sources-paths.test.js +18 -0
  1116. package/node_modules/@ktx/context/dist/ingest/repo-fetch.d.ts +34 -0
  1117. package/node_modules/@ktx/context/dist/ingest/repo-fetch.js +132 -0
  1118. package/node_modules/@ktx/context/dist/ingest/repo-fetch.test.d.ts +1 -0
  1119. package/node_modules/@ktx/context/dist/ingest/repo-fetch.test.js +168 -0
  1120. package/node_modules/@ktx/context/dist/ingest/report-snapshot.d.ts +202 -0
  1121. package/node_modules/@ktx/context/dist/ingest/report-snapshot.js +160 -0
  1122. package/node_modules/@ktx/context/dist/ingest/report-snapshot.test.d.ts +1 -0
  1123. package/node_modules/@ktx/context/dist/ingest/report-snapshot.test.js +205 -0
  1124. package/node_modules/@ktx/context/dist/ingest/reports.d.ts +79 -0
  1125. package/node_modules/@ktx/context/dist/ingest/reports.js +54 -0
  1126. package/node_modules/@ktx/context/dist/ingest/source-adapter-registry.d.ts +8 -0
  1127. package/node_modules/@ktx/context/dist/ingest/source-adapter-registry.js +23 -0
  1128. package/node_modules/@ktx/context/dist/ingest/source-adapter-registry.test.d.ts +1 -0
  1129. package/node_modules/@ktx/context/dist/ingest/source-adapter-registry.test.js +35 -0
  1130. package/node_modules/@ktx/context/dist/ingest/sqlite-bundle-ingest-store.d.ts +38 -0
  1131. package/node_modules/@ktx/context/dist/ingest/sqlite-bundle-ingest-store.js +501 -0
  1132. package/node_modules/@ktx/context/dist/ingest/sqlite-bundle-ingest-store.test.d.ts +1 -0
  1133. package/node_modules/@ktx/context/dist/ingest/sqlite-bundle-ingest-store.test.js +517 -0
  1134. package/node_modules/@ktx/context/dist/ingest/sqlite-local-ingest-store.d.ts +19 -0
  1135. package/node_modules/@ktx/context/dist/ingest/sqlite-local-ingest-store.js +190 -0
  1136. package/node_modules/@ktx/context/dist/ingest/sqlite-local-ingest-store.test.d.ts +1 -0
  1137. package/node_modules/@ktx/context/dist/ingest/sqlite-local-ingest-store.test.js +143 -0
  1138. package/node_modules/@ktx/context/dist/ingest/stages/build-reconcile-context.context-candidates.test.d.ts +1 -0
  1139. package/node_modules/@ktx/context/dist/ingest/stages/build-reconcile-context.context-candidates.test.js +102 -0
  1140. package/node_modules/@ktx/context/dist/ingest/stages/build-reconcile-context.d.ts +61 -0
  1141. package/node_modules/@ktx/context/dist/ingest/stages/build-reconcile-context.js +122 -0
  1142. package/node_modules/@ktx/context/dist/ingest/stages/build-reconcile-context.test.d.ts +1 -0
  1143. package/node_modules/@ktx/context/dist/ingest/stages/build-reconcile-context.test.js +141 -0
  1144. package/node_modules/@ktx/context/dist/ingest/stages/build-wu-context.d.ts +27 -0
  1145. package/node_modules/@ktx/context/dist/ingest/stages/build-wu-context.js +87 -0
  1146. package/node_modules/@ktx/context/dist/ingest/stages/build-wu-context.test.d.ts +1 -0
  1147. package/node_modules/@ktx/context/dist/ingest/stages/build-wu-context.test.js +196 -0
  1148. package/node_modules/@ktx/context/dist/ingest/stages/stage-1-stage-raw-files.d.ts +13 -0
  1149. package/node_modules/@ktx/context/dist/ingest/stages/stage-1-stage-raw-files.js +24 -0
  1150. package/node_modules/@ktx/context/dist/ingest/stages/stage-1-stage-raw-files.test.d.ts +1 -0
  1151. package/node_modules/@ktx/context/dist/ingest/stages/stage-1-stage-raw-files.test.js +54 -0
  1152. package/node_modules/@ktx/context/dist/ingest/stages/stage-3-work-units.d.ts +44 -0
  1153. package/node_modules/@ktx/context/dist/ingest/stages/stage-3-work-units.js +104 -0
  1154. package/node_modules/@ktx/context/dist/ingest/stages/stage-3-work-units.test.d.ts +1 -0
  1155. package/node_modules/@ktx/context/dist/ingest/stages/stage-3-work-units.test.js +146 -0
  1156. package/node_modules/@ktx/context/dist/ingest/stages/stage-4-reconciliation.d.ts +28 -0
  1157. package/node_modules/@ktx/context/dist/ingest/stages/stage-4-reconciliation.js +17 -0
  1158. package/node_modules/@ktx/context/dist/ingest/stages/stage-4-reconciliation.test.d.ts +1 -0
  1159. package/node_modules/@ktx/context/dist/ingest/stages/stage-4-reconciliation.test.js +144 -0
  1160. package/node_modules/@ktx/context/dist/ingest/stages/stage-index.types.d.ts +50 -0
  1161. package/node_modules/@ktx/context/dist/ingest/stages/stage-index.types.js +1 -0
  1162. package/node_modules/@ktx/context/dist/ingest/stages/validate-wu-sources.d.ts +9 -0
  1163. package/node_modules/@ktx/context/dist/ingest/stages/validate-wu-sources.js +14 -0
  1164. package/node_modules/@ktx/context/dist/ingest/stages/validate-wu-sources.test.d.ts +1 -0
  1165. package/node_modules/@ktx/context/dist/ingest/stages/validate-wu-sources.test.js +27 -0
  1166. package/node_modules/@ktx/context/dist/ingest/tools/emit-artifact-resolution.tool.d.ts +13 -0
  1167. package/node_modules/@ktx/context/dist/ingest/tools/emit-artifact-resolution.tool.js +40 -0
  1168. package/node_modules/@ktx/context/dist/ingest/tools/emit-conflict-resolution.tool.d.ts +13 -0
  1169. package/node_modules/@ktx/context/dist/ingest/tools/emit-conflict-resolution.tool.js +31 -0
  1170. package/node_modules/@ktx/context/dist/ingest/tools/emit-eviction-decision.tool.d.ts +13 -0
  1171. package/node_modules/@ktx/context/dist/ingest/tools/emit-eviction-decision.tool.js +38 -0
  1172. package/node_modules/@ktx/context/dist/ingest/tools/emit-reconciliation-records.tool.test.d.ts +1 -0
  1173. package/node_modules/@ktx/context/dist/ingest/tools/emit-reconciliation-records.tool.test.js +237 -0
  1174. package/node_modules/@ktx/context/dist/ingest/tools/emit-unmapped-fallback.tool.d.ts +14 -0
  1175. package/node_modules/@ktx/context/dist/ingest/tools/emit-unmapped-fallback.tool.js +91 -0
  1176. package/node_modules/@ktx/context/dist/ingest/tools/eviction-list.tool.d.ts +8 -0
  1177. package/node_modules/@ktx/context/dist/ingest/tools/eviction-list.tool.js +25 -0
  1178. package/node_modules/@ktx/context/dist/ingest/tools/eviction-list.tool.test.d.ts +1 -0
  1179. package/node_modules/@ktx/context/dist/ingest/tools/eviction-list.tool.test.js +44 -0
  1180. package/node_modules/@ktx/context/dist/ingest/tools/read-raw-file.tool.d.ts +8 -0
  1181. package/node_modules/@ktx/context/dist/ingest/tools/read-raw-file.tool.js +34 -0
  1182. package/node_modules/@ktx/context/dist/ingest/tools/read-raw-file.tool.test.d.ts +1 -0
  1183. package/node_modules/@ktx/context/dist/ingest/tools/read-raw-file.tool.test.js +45 -0
  1184. package/node_modules/@ktx/context/dist/ingest/tools/read-raw-span.tool.d.ts +10 -0
  1185. package/node_modules/@ktx/context/dist/ingest/tools/read-raw-span.tool.js +40 -0
  1186. package/node_modules/@ktx/context/dist/ingest/tools/read-raw-span.tool.test.d.ts +1 -0
  1187. package/node_modules/@ktx/context/dist/ingest/tools/read-raw-span.tool.test.js +34 -0
  1188. package/node_modules/@ktx/context/dist/ingest/tools/stage-diff.tool.d.ts +8 -0
  1189. package/node_modules/@ktx/context/dist/ingest/tools/stage-diff.tool.js +37 -0
  1190. package/node_modules/@ktx/context/dist/ingest/tools/stage-diff.tool.test.d.ts +1 -0
  1191. package/node_modules/@ktx/context/dist/ingest/tools/stage-diff.tool.test.js +112 -0
  1192. package/node_modules/@ktx/context/dist/ingest/tools/stage-list.tool.d.ts +5 -0
  1193. package/node_modules/@ktx/context/dist/ingest/tools/stage-list.tool.js +32 -0
  1194. package/node_modules/@ktx/context/dist/ingest/tools/stage-list.tool.test.d.ts +1 -0
  1195. package/node_modules/@ktx/context/dist/ingest/tools/stage-list.tool.test.js +58 -0
  1196. package/node_modules/@ktx/context/dist/ingest/tools/tool-call-logger.d.ts +33 -0
  1197. package/node_modules/@ktx/context/dist/ingest/tools/tool-call-logger.js +80 -0
  1198. package/node_modules/@ktx/context/dist/ingest/tools/tool-transcript-summary.d.ts +13 -0
  1199. package/node_modules/@ktx/context/dist/ingest/tools/tool-transcript-summary.js +150 -0
  1200. package/node_modules/@ktx/context/dist/ingest/tools/tool-transcript-summary.test.d.ts +1 -0
  1201. package/node_modules/@ktx/context/dist/ingest/tools/tool-transcript-summary.test.js +141 -0
  1202. package/node_modules/@ktx/context/dist/ingest/tools/verification-ledger.tool.d.ts +14 -0
  1203. package/node_modules/@ktx/context/dist/ingest/tools/verification-ledger.tool.js +71 -0
  1204. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/discover-data.tool.d.ts +36 -0
  1205. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/discover-data.tool.js +94 -0
  1206. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/discover-data.tool.test.d.ts +1 -0
  1207. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/discover-data.tool.test.js +107 -0
  1208. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/entity-details.tool.d.ts +43 -0
  1209. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/entity-details.tool.js +137 -0
  1210. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/entity-details.tool.test.d.ts +1 -0
  1211. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/entity-details.tool.test.js +146 -0
  1212. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/index.d.ts +9 -0
  1213. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/index.js +18 -0
  1214. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/sql-execution.tool.d.ts +31 -0
  1215. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/sql-execution.tool.js +84 -0
  1216. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/sql-execution.tool.test.d.ts +1 -0
  1217. package/node_modules/@ktx/context/dist/ingest/tools/warehouse-verification/sql-execution.tool.test.js +50 -0
  1218. package/node_modules/@ktx/context/dist/ingest/types.d.ts +144 -0
  1219. package/node_modules/@ktx/context/dist/ingest/types.js +1 -0
  1220. package/node_modules/@ktx/context/dist/ingest/wiki-sl-ref-repair.d.ts +19 -0
  1221. package/node_modules/@ktx/context/dist/ingest/wiki-sl-ref-repair.js +89 -0
  1222. package/node_modules/@ktx/context/dist/ingest/wiki-sl-ref-repair.test.d.ts +1 -0
  1223. package/node_modules/@ktx/context/dist/ingest/wiki-sl-ref-repair.test.js +81 -0
  1224. package/node_modules/@ktx/context/dist/llm/ai-sdk-runtime.d.ts +23 -0
  1225. package/node_modules/@ktx/context/dist/llm/ai-sdk-runtime.js +133 -0
  1226. package/node_modules/@ktx/context/dist/llm/claude-code-env.d.ts +2 -0
  1227. package/node_modules/@ktx/context/dist/llm/claude-code-env.js +21 -0
  1228. package/node_modules/@ktx/context/dist/llm/claude-code-env.test.d.ts +1 -0
  1229. package/node_modules/@ktx/context/dist/llm/claude-code-env.test.js +17 -0
  1230. package/node_modules/@ktx/context/dist/llm/claude-code-models.d.ts +1 -0
  1231. package/node_modules/@ktx/context/dist/llm/claude-code-models.js +17 -0
  1232. package/node_modules/@ktx/context/dist/llm/claude-code-models.test.d.ts +1 -0
  1233. package/node_modules/@ktx/context/dist/llm/claude-code-models.test.js +15 -0
  1234. package/node_modules/@ktx/context/dist/llm/claude-code-runtime.d.ts +36 -0
  1235. package/node_modules/@ktx/context/dist/llm/claude-code-runtime.js +242 -0
  1236. package/node_modules/@ktx/context/dist/llm/claude-code-runtime.test.d.ts +1 -0
  1237. package/node_modules/@ktx/context/dist/llm/claude-code-runtime.test.js +384 -0
  1238. package/node_modules/@ktx/context/dist/llm/debug-request-recorder.d.ts +44 -0
  1239. package/node_modules/@ktx/context/dist/llm/debug-request-recorder.js +79 -0
  1240. package/node_modules/@ktx/context/dist/llm/debug-request-recorder.test.d.ts +1 -0
  1241. package/node_modules/@ktx/context/dist/llm/debug-request-recorder.test.js +112 -0
  1242. package/node_modules/@ktx/context/dist/llm/embedding-port.d.ts +17 -0
  1243. package/node_modules/@ktx/context/dist/llm/embedding-port.js +31 -0
  1244. package/node_modules/@ktx/context/dist/llm/embedding-port.test.d.ts +1 -0
  1245. package/node_modules/@ktx/context/dist/llm/embedding-port.test.js +34 -0
  1246. package/node_modules/@ktx/context/dist/llm/generation.d.ts +8 -0
  1247. package/node_modules/@ktx/context/dist/llm/generation.js +6 -0
  1248. package/node_modules/@ktx/context/dist/llm/index.d.ts +13 -0
  1249. package/node_modules/@ktx/context/dist/llm/index.js +10 -0
  1250. package/node_modules/@ktx/context/dist/llm/local-config.d.ts +22 -0
  1251. package/node_modules/@ktx/context/dist/llm/local-config.js +145 -0
  1252. package/node_modules/@ktx/context/dist/llm/local-config.test.d.ts +1 -0
  1253. package/node_modules/@ktx/context/dist/llm/local-config.test.js +165 -0
  1254. package/node_modules/@ktx/context/dist/llm/runtime-local-config.test.d.ts +1 -0
  1255. package/node_modules/@ktx/context/dist/llm/runtime-local-config.test.js +17 -0
  1256. package/node_modules/@ktx/context/dist/llm/runtime-port.d.ts +59 -0
  1257. package/node_modules/@ktx/context/dist/llm/runtime-port.js +9 -0
  1258. package/node_modules/@ktx/context/dist/llm/runtime-tools.d.ts +10 -0
  1259. package/node_modules/@ktx/context/dist/llm/runtime-tools.js +68 -0
  1260. package/node_modules/@ktx/context/dist/llm/runtime-tools.test.d.ts +1 -0
  1261. package/node_modules/@ktx/context/dist/llm/runtime-tools.test.js +36 -0
  1262. package/node_modules/@ktx/context/dist/mcp/context-tools.d.ts +9 -0
  1263. package/node_modules/@ktx/context/dist/mcp/context-tools.js +398 -0
  1264. package/node_modules/@ktx/context/dist/mcp/index.d.ts +5 -0
  1265. package/node_modules/@ktx/context/dist/mcp/index.js +3 -0
  1266. package/node_modules/@ktx/context/dist/mcp/local-project-ports.d.ts +18 -0
  1267. package/node_modules/@ktx/context/dist/mcp/local-project-ports.js +631 -0
  1268. package/node_modules/@ktx/context/dist/mcp/local-project-ports.test.d.ts +1 -0
  1269. package/node_modules/@ktx/context/dist/mcp/local-project-ports.test.js +1388 -0
  1270. package/node_modules/@ktx/context/dist/mcp/server.d.ts +7 -0
  1271. package/node_modules/@ktx/context/dist/mcp/server.js +69 -0
  1272. package/node_modules/@ktx/context/dist/mcp/server.test.d.ts +1 -0
  1273. package/node_modules/@ktx/context/dist/mcp/server.test.js +991 -0
  1274. package/node_modules/@ktx/context/dist/mcp/types.d.ts +347 -0
  1275. package/node_modules/@ktx/context/dist/mcp/types.js +1 -0
  1276. package/node_modules/@ktx/context/dist/memory/capture-signals.d.ts +8 -0
  1277. package/node_modules/@ktx/context/dist/memory/capture-signals.js +103 -0
  1278. package/node_modules/@ktx/context/dist/memory/index.d.ts +6 -0
  1279. package/node_modules/@ktx/context/dist/memory/index.js +5 -0
  1280. package/node_modules/@ktx/context/dist/memory/local-memory-runs.d.ts +22 -0
  1281. package/node_modules/@ktx/context/dist/memory/local-memory-runs.js +165 -0
  1282. package/node_modules/@ktx/context/dist/memory/local-memory.d.ts +22 -0
  1283. package/node_modules/@ktx/context/dist/memory/local-memory.js +385 -0
  1284. package/node_modules/@ktx/context/dist/memory/local-memory.test.d.ts +1 -0
  1285. package/node_modules/@ktx/context/dist/memory/local-memory.test.js +159 -0
  1286. package/node_modules/@ktx/context/dist/memory/memory-agent.service.d.ts +59 -0
  1287. package/node_modules/@ktx/context/dist/memory/memory-agent.service.ingest.test.d.ts +1 -0
  1288. package/node_modules/@ktx/context/dist/memory/memory-agent.service.ingest.test.js +355 -0
  1289. package/node_modules/@ktx/context/dist/memory/memory-agent.service.js +539 -0
  1290. package/node_modules/@ktx/context/dist/memory/memory-agent.service.test.d.ts +1 -0
  1291. package/node_modules/@ktx/context/dist/memory/memory-agent.service.test.js +413 -0
  1292. package/node_modules/@ktx/context/dist/memory/memory-runs.d.ts +54 -0
  1293. package/node_modules/@ktx/context/dist/memory/memory-runs.js +78 -0
  1294. package/node_modules/@ktx/context/dist/memory/memory-runs.test.d.ts +1 -0
  1295. package/node_modules/@ktx/context/dist/memory/memory-runs.test.js +158 -0
  1296. package/node_modules/@ktx/context/dist/memory/memory-runtime-assets.test.d.ts +1 -0
  1297. package/node_modules/@ktx/context/dist/memory/memory-runtime-assets.test.js +162 -0
  1298. package/node_modules/@ktx/context/dist/memory/types.d.ts +133 -0
  1299. package/node_modules/@ktx/context/dist/memory/types.js +1 -0
  1300. package/node_modules/@ktx/context/dist/package-exports.test.d.ts +1 -0
  1301. package/node_modules/@ktx/context/dist/package-exports.test.js +249 -0
  1302. package/node_modules/@ktx/context/dist/project/config.d.ts +568 -0
  1303. package/node_modules/@ktx/context/dist/project/config.js +331 -0
  1304. package/node_modules/@ktx/context/dist/project/config.test.d.ts +1 -0
  1305. package/node_modules/@ktx/context/dist/project/config.test.js +467 -0
  1306. package/node_modules/@ktx/context/dist/project/driver-schemas.d.ts +98 -0
  1307. package/node_modules/@ktx/context/dist/project/driver-schemas.js +180 -0
  1308. package/node_modules/@ktx/context/dist/project/driver-schemas.test.d.ts +1 -0
  1309. package/node_modules/@ktx/context/dist/project/driver-schemas.test.js +125 -0
  1310. package/node_modules/@ktx/context/dist/project/index.d.ts +12 -0
  1311. package/node_modules/@ktx/context/dist/project/index.js +6 -0
  1312. package/node_modules/@ktx/context/dist/project/local-git-file-store.d.ts +23 -0
  1313. package/node_modules/@ktx/context/dist/project/local-git-file-store.js +140 -0
  1314. package/node_modules/@ktx/context/dist/project/local-git-file-store.test.d.ts +1 -0
  1315. package/node_modules/@ktx/context/dist/project/local-git-file-store.test.js +71 -0
  1316. package/node_modules/@ktx/context/dist/project/local-state-db.d.ts +2 -0
  1317. package/node_modules/@ktx/context/dist/project/local-state-db.js +4 -0
  1318. package/node_modules/@ktx/context/dist/project/mappings-yaml-schema.d.ts +58 -0
  1319. package/node_modules/@ktx/context/dist/project/mappings-yaml-schema.js +109 -0
  1320. package/node_modules/@ktx/context/dist/project/mappings-yaml-schema.test.d.ts +1 -0
  1321. package/node_modules/@ktx/context/dist/project/mappings-yaml-schema.test.js +79 -0
  1322. package/node_modules/@ktx/context/dist/project/project.d.ts +29 -0
  1323. package/node_modules/@ktx/context/dist/project/project.js +93 -0
  1324. package/node_modules/@ktx/context/dist/project/project.test.d.ts +1 -0
  1325. package/node_modules/@ktx/context/dist/project/project.test.js +55 -0
  1326. package/node_modules/@ktx/context/dist/project/setup-config.d.ts +12 -0
  1327. package/node_modules/@ktx/context/dist/project/setup-config.js +70 -0
  1328. package/node_modules/@ktx/context/dist/project/setup-config.test.d.ts +1 -0
  1329. package/node_modules/@ktx/context/dist/project/setup-config.test.js +37 -0
  1330. package/node_modules/@ktx/context/dist/prompts/index.d.ts +2 -0
  1331. package/node_modules/@ktx/context/dist/prompts/index.js +1 -0
  1332. package/node_modules/@ktx/context/dist/prompts/prompt.service.d.ts +28 -0
  1333. package/node_modules/@ktx/context/dist/prompts/prompt.service.js +84 -0
  1334. package/node_modules/@ktx/context/dist/prompts/prompt.service.test.d.ts +1 -0
  1335. package/node_modules/@ktx/context/dist/prompts/prompt.service.test.js +43 -0
  1336. package/node_modules/@ktx/context/dist/scan/credentials.d.ts +8 -0
  1337. package/node_modules/@ktx/context/dist/scan/credentials.js +38 -0
  1338. package/node_modules/@ktx/context/dist/scan/credentials.test.d.ts +1 -0
  1339. package/node_modules/@ktx/context/dist/scan/credentials.test.js +161 -0
  1340. package/node_modules/@ktx/context/dist/scan/data-dictionary.d.ts +22 -0
  1341. package/node_modules/@ktx/context/dist/scan/data-dictionary.js +66 -0
  1342. package/node_modules/@ktx/context/dist/scan/data-dictionary.test.d.ts +1 -0
  1343. package/node_modules/@ktx/context/dist/scan/data-dictionary.test.js +92 -0
  1344. package/node_modules/@ktx/context/dist/scan/description-generation.d.ts +122 -0
  1345. package/node_modules/@ktx/context/dist/scan/description-generation.js +556 -0
  1346. package/node_modules/@ktx/context/dist/scan/description-generation.test.d.ts +1 -0
  1347. package/node_modules/@ktx/context/dist/scan/description-generation.test.js +587 -0
  1348. package/node_modules/@ktx/context/dist/scan/embedding-text.d.ts +21 -0
  1349. package/node_modules/@ktx/context/dist/scan/embedding-text.js +23 -0
  1350. package/node_modules/@ktx/context/dist/scan/embedding-text.test.d.ts +1 -0
  1351. package/node_modules/@ktx/context/dist/scan/embedding-text.test.js +36 -0
  1352. package/node_modules/@ktx/context/dist/scan/enrichment-state.d.ts +48 -0
  1353. package/node_modules/@ktx/context/dist/scan/enrichment-state.js +44 -0
  1354. package/node_modules/@ktx/context/dist/scan/enrichment-state.test.d.ts +1 -0
  1355. package/node_modules/@ktx/context/dist/scan/enrichment-state.test.js +147 -0
  1356. package/node_modules/@ktx/context/dist/scan/enrichment-summary.d.ts +4 -0
  1357. package/node_modules/@ktx/context/dist/scan/enrichment-summary.js +44 -0
  1358. package/node_modules/@ktx/context/dist/scan/enrichment-summary.test.d.ts +1 -0
  1359. package/node_modules/@ktx/context/dist/scan/enrichment-summary.test.js +34 -0
  1360. package/node_modules/@ktx/context/dist/scan/enrichment-types.d.ts +104 -0
  1361. package/node_modules/@ktx/context/dist/scan/enrichment-types.js +1 -0
  1362. package/node_modules/@ktx/context/dist/scan/enrichment-types.test.d.ts +1 -0
  1363. package/node_modules/@ktx/context/dist/scan/enrichment-types.test.js +141 -0
  1364. package/node_modules/@ktx/context/dist/scan/entity-details.d.ts +57 -0
  1365. package/node_modules/@ktx/context/dist/scan/entity-details.js +216 -0
  1366. package/node_modules/@ktx/context/dist/scan/entity-details.test.d.ts +1 -0
  1367. package/node_modules/@ktx/context/dist/scan/entity-details.test.js +234 -0
  1368. package/node_modules/@ktx/context/dist/scan/index.d.ts +72 -0
  1369. package/node_modules/@ktx/context/dist/scan/index.js +37 -0
  1370. package/node_modules/@ktx/context/dist/scan/local-enrichment-artifacts.d.ts +32 -0
  1371. package/node_modules/@ktx/context/dist/scan/local-enrichment-artifacts.js +274 -0
  1372. package/node_modules/@ktx/context/dist/scan/local-enrichment-artifacts.test.d.ts +1 -0
  1373. package/node_modules/@ktx/context/dist/scan/local-enrichment-artifacts.test.js +767 -0
  1374. package/node_modules/@ktx/context/dist/scan/local-enrichment.d.ts +49 -0
  1375. package/node_modules/@ktx/context/dist/scan/local-enrichment.js +494 -0
  1376. package/node_modules/@ktx/context/dist/scan/local-enrichment.test.d.ts +1 -0
  1377. package/node_modules/@ktx/context/dist/scan/local-enrichment.test.js +757 -0
  1378. package/node_modules/@ktx/context/dist/scan/local-scan.d.ts +68 -0
  1379. package/node_modules/@ktx/context/dist/scan/local-scan.js +427 -0
  1380. package/node_modules/@ktx/context/dist/scan/local-scan.test.d.ts +1 -0
  1381. package/node_modules/@ktx/context/dist/scan/local-scan.test.js +1399 -0
  1382. package/node_modules/@ktx/context/dist/scan/local-structural-artifacts.d.ts +10 -0
  1383. package/node_modules/@ktx/context/dist/scan/local-structural-artifacts.js +86 -0
  1384. package/node_modules/@ktx/context/dist/scan/local-structural-artifacts.test.d.ts +1 -0
  1385. package/node_modules/@ktx/context/dist/scan/local-structural-artifacts.test.js +144 -0
  1386. package/node_modules/@ktx/context/dist/scan/orchestrator.d.ts +44 -0
  1387. package/node_modules/@ktx/context/dist/scan/orchestrator.js +186 -0
  1388. package/node_modules/@ktx/context/dist/scan/orchestrator.test.d.ts +1 -0
  1389. package/node_modules/@ktx/context/dist/scan/orchestrator.test.js +335 -0
  1390. package/node_modules/@ktx/context/dist/scan/relationship-artifacts.d.ts +20 -0
  1391. package/node_modules/@ktx/context/dist/scan/relationship-artifacts.js +45 -0
  1392. package/node_modules/@ktx/context/dist/scan/relationship-artifacts.test.d.ts +1 -0
  1393. package/node_modules/@ktx/context/dist/scan/relationship-artifacts.test.js +268 -0
  1394. package/node_modules/@ktx/context/dist/scan/relationship-benchmark-report.d.ts +52 -0
  1395. package/node_modules/@ktx/context/dist/scan/relationship-benchmark-report.js +252 -0
  1396. package/node_modules/@ktx/context/dist/scan/relationship-benchmark-report.test.d.ts +1 -0
  1397. package/node_modules/@ktx/context/dist/scan/relationship-benchmark-report.test.js +389 -0
  1398. package/node_modules/@ktx/context/dist/scan/relationship-benchmarks.d.ts +148 -0
  1399. package/node_modules/@ktx/context/dist/scan/relationship-benchmarks.js +646 -0
  1400. package/node_modules/@ktx/context/dist/scan/relationship-benchmarks.test.d.ts +1 -0
  1401. package/node_modules/@ktx/context/dist/scan/relationship-benchmarks.test.js +1072 -0
  1402. package/node_modules/@ktx/context/dist/scan/relationship-budget.d.ts +19 -0
  1403. package/node_modules/@ktx/context/dist/scan/relationship-budget.js +34 -0
  1404. package/node_modules/@ktx/context/dist/scan/relationship-budget.test.d.ts +1 -0
  1405. package/node_modules/@ktx/context/dist/scan/relationship-budget.test.js +71 -0
  1406. package/node_modules/@ktx/context/dist/scan/relationship-candidates.d.ts +49 -0
  1407. package/node_modules/@ktx/context/dist/scan/relationship-candidates.js +556 -0
  1408. package/node_modules/@ktx/context/dist/scan/relationship-candidates.test.d.ts +1 -0
  1409. package/node_modules/@ktx/context/dist/scan/relationship-candidates.test.js +747 -0
  1410. package/node_modules/@ktx/context/dist/scan/relationship-composite-candidates.d.ts +66 -0
  1411. package/node_modules/@ktx/context/dist/scan/relationship-composite-candidates.js +422 -0
  1412. package/node_modules/@ktx/context/dist/scan/relationship-composite-candidates.test.d.ts +1 -0
  1413. package/node_modules/@ktx/context/dist/scan/relationship-composite-candidates.test.js +69 -0
  1414. package/node_modules/@ktx/context/dist/scan/relationship-diagnostics.d.ts +94 -0
  1415. package/node_modules/@ktx/context/dist/scan/relationship-diagnostics.js +224 -0
  1416. package/node_modules/@ktx/context/dist/scan/relationship-diagnostics.test.d.ts +1 -0
  1417. package/node_modules/@ktx/context/dist/scan/relationship-diagnostics.test.js +333 -0
  1418. package/node_modules/@ktx/context/dist/scan/relationship-discovery.d.ts +27 -0
  1419. package/node_modules/@ktx/context/dist/scan/relationship-discovery.js +247 -0
  1420. package/node_modules/@ktx/context/dist/scan/relationship-discovery.test.d.ts +1 -0
  1421. package/node_modules/@ktx/context/dist/scan/relationship-discovery.test.js +618 -0
  1422. package/node_modules/@ktx/context/dist/scan/relationship-feedback-calibration.d.ts +70 -0
  1423. package/node_modules/@ktx/context/dist/scan/relationship-feedback-calibration.js +170 -0
  1424. package/node_modules/@ktx/context/dist/scan/relationship-feedback-calibration.test.d.ts +1 -0
  1425. package/node_modules/@ktx/context/dist/scan/relationship-feedback-calibration.test.js +175 -0
  1426. package/node_modules/@ktx/context/dist/scan/relationship-feedback-export.d.ts +54 -0
  1427. package/node_modules/@ktx/context/dist/scan/relationship-feedback-export.js +96 -0
  1428. package/node_modules/@ktx/context/dist/scan/relationship-feedback-export.test.d.ts +1 -0
  1429. package/node_modules/@ktx/context/dist/scan/relationship-feedback-export.test.js +241 -0
  1430. package/node_modules/@ktx/context/dist/scan/relationship-formal-metadata.d.ts +7 -0
  1431. package/node_modules/@ktx/context/dist/scan/relationship-formal-metadata.js +43 -0
  1432. package/node_modules/@ktx/context/dist/scan/relationship-formal-metadata.test.d.ts +1 -0
  1433. package/node_modules/@ktx/context/dist/scan/relationship-formal-metadata.test.js +125 -0
  1434. package/node_modules/@ktx/context/dist/scan/relationship-graph-resolver.d.ts +48 -0
  1435. package/node_modules/@ktx/context/dist/scan/relationship-graph-resolver.js +367 -0
  1436. package/node_modules/@ktx/context/dist/scan/relationship-graph-resolver.test.d.ts +1 -0
  1437. package/node_modules/@ktx/context/dist/scan/relationship-graph-resolver.test.js +604 -0
  1438. package/node_modules/@ktx/context/dist/scan/relationship-llm-proposal.d.ts +25 -0
  1439. package/node_modules/@ktx/context/dist/scan/relationship-llm-proposal.js +193 -0
  1440. package/node_modules/@ktx/context/dist/scan/relationship-llm-proposal.test.d.ts +1 -0
  1441. package/node_modules/@ktx/context/dist/scan/relationship-llm-proposal.test.js +197 -0
  1442. package/node_modules/@ktx/context/dist/scan/relationship-locality.d.ts +15 -0
  1443. package/node_modules/@ktx/context/dist/scan/relationship-locality.js +129 -0
  1444. package/node_modules/@ktx/context/dist/scan/relationship-locality.test.d.ts +1 -0
  1445. package/node_modules/@ktx/context/dist/scan/relationship-locality.test.js +128 -0
  1446. package/node_modules/@ktx/context/dist/scan/relationship-name-similarity.d.ts +13 -0
  1447. package/node_modules/@ktx/context/dist/scan/relationship-name-similarity.js +123 -0
  1448. package/node_modules/@ktx/context/dist/scan/relationship-name-similarity.test.d.ts +1 -0
  1449. package/node_modules/@ktx/context/dist/scan/relationship-name-similarity.test.js +68 -0
  1450. package/node_modules/@ktx/context/dist/scan/relationship-profiling.d.ts +55 -0
  1451. package/node_modules/@ktx/context/dist/scan/relationship-profiling.js +321 -0
  1452. package/node_modules/@ktx/context/dist/scan/relationship-profiling.test.d.ts +1 -0
  1453. package/node_modules/@ktx/context/dist/scan/relationship-profiling.test.js +313 -0
  1454. package/node_modules/@ktx/context/dist/scan/relationship-review-apply.d.ts +34 -0
  1455. package/node_modules/@ktx/context/dist/scan/relationship-review-apply.js +152 -0
  1456. package/node_modules/@ktx/context/dist/scan/relationship-review-apply.test.d.ts +1 -0
  1457. package/node_modules/@ktx/context/dist/scan/relationship-review-apply.test.js +321 -0
  1458. package/node_modules/@ktx/context/dist/scan/relationship-review-decisions.d.ts +46 -0
  1459. package/node_modules/@ktx/context/dist/scan/relationship-review-decisions.js +92 -0
  1460. package/node_modules/@ktx/context/dist/scan/relationship-review-decisions.test.d.ts +1 -0
  1461. package/node_modules/@ktx/context/dist/scan/relationship-review-decisions.test.js +312 -0
  1462. package/node_modules/@ktx/context/dist/scan/relationship-scoring.d.ts +29 -0
  1463. package/node_modules/@ktx/context/dist/scan/relationship-scoring.js +95 -0
  1464. package/node_modules/@ktx/context/dist/scan/relationship-scoring.test.d.ts +1 -0
  1465. package/node_modules/@ktx/context/dist/scan/relationship-scoring.test.js +86 -0
  1466. package/node_modules/@ktx/context/dist/scan/relationship-threshold-advice.d.ts +60 -0
  1467. package/node_modules/@ktx/context/dist/scan/relationship-threshold-advice.js +190 -0
  1468. package/node_modules/@ktx/context/dist/scan/relationship-threshold-advice.test.d.ts +1 -0
  1469. package/node_modules/@ktx/context/dist/scan/relationship-threshold-advice.test.js +205 -0
  1470. package/node_modules/@ktx/context/dist/scan/relationship-validation.d.ts +44 -0
  1471. package/node_modules/@ktx/context/dist/scan/relationship-validation.js +240 -0
  1472. package/node_modules/@ktx/context/dist/scan/relationship-validation.test.d.ts +1 -0
  1473. package/node_modules/@ktx/context/dist/scan/relationship-validation.test.js +450 -0
  1474. package/node_modules/@ktx/context/dist/scan/sqlite-local-enrichment-state-store.d.ts +12 -0
  1475. package/node_modules/@ktx/context/dist/scan/sqlite-local-enrichment-state-store.js +190 -0
  1476. package/node_modules/@ktx/context/dist/scan/type-normalization.d.ts +8 -0
  1477. package/node_modules/@ktx/context/dist/scan/type-normalization.js +23 -0
  1478. package/node_modules/@ktx/context/dist/scan/type-normalization.test.d.ts +1 -0
  1479. package/node_modules/@ktx/context/dist/scan/type-normalization.test.js +21 -0
  1480. package/node_modules/@ktx/context/dist/scan/types.d.ts +309 -0
  1481. package/node_modules/@ktx/context/dist/scan/types.js +13 -0
  1482. package/node_modules/@ktx/context/dist/scan/types.test.d.ts +1 -0
  1483. package/node_modules/@ktx/context/dist/scan/types.test.js +206 -0
  1484. package/node_modules/@ktx/context/dist/scan/warehouse-catalog.d.ts +69 -0
  1485. package/node_modules/@ktx/context/dist/scan/warehouse-catalog.js +311 -0
  1486. package/node_modules/@ktx/context/dist/scan/warehouse-catalog.test.d.ts +1 -0
  1487. package/node_modules/@ktx/context/dist/scan/warehouse-catalog.test.js +158 -0
  1488. package/node_modules/@ktx/context/dist/search/backend-conformance.d.ts +39 -0
  1489. package/node_modules/@ktx/context/dist/search/backend-conformance.js +88 -0
  1490. package/node_modules/@ktx/context/dist/search/backend-conformance.test.d.ts +1 -0
  1491. package/node_modules/@ktx/context/dist/search/backend-conformance.test.js +408 -0
  1492. package/node_modules/@ktx/context/dist/search/discover.d.ts +30 -0
  1493. package/node_modules/@ktx/context/dist/search/discover.js +340 -0
  1494. package/node_modules/@ktx/context/dist/search/discover.test.d.ts +1 -0
  1495. package/node_modules/@ktx/context/dist/search/discover.test.js +197 -0
  1496. package/node_modules/@ktx/context/dist/search/hybrid-search-core.d.ts +4 -0
  1497. package/node_modules/@ktx/context/dist/search/hybrid-search-core.js +106 -0
  1498. package/node_modules/@ktx/context/dist/search/hybrid-search-core.test.d.ts +1 -0
  1499. package/node_modules/@ktx/context/dist/search/hybrid-search-core.test.js +113 -0
  1500. package/node_modules/@ktx/context/dist/search/index.d.ts +8 -0
  1501. package/node_modules/@ktx/context/dist/search/index.js +5 -0
  1502. package/node_modules/@ktx/context/dist/search/pglite-owner-process.d.ts +27 -0
  1503. package/node_modules/@ktx/context/dist/search/pglite-owner-process.js +89 -0
  1504. package/node_modules/@ktx/context/dist/search/pglite-owner-process.test.d.ts +1 -0
  1505. package/node_modules/@ktx/context/dist/search/pglite-owner-process.test.js +286 -0
  1506. package/node_modules/@ktx/context/dist/search/pglite-runtime-boundary.test.d.ts +1 -0
  1507. package/node_modules/@ktx/context/dist/search/pglite-runtime-boundary.test.js +48 -0
  1508. package/node_modules/@ktx/context/dist/search/pglite-spike.test.d.ts +1 -0
  1509. package/node_modules/@ktx/context/dist/search/pglite-spike.test.js +249 -0
  1510. package/node_modules/@ktx/context/dist/search/query.d.ts +3 -0
  1511. package/node_modules/@ktx/context/dist/search/query.js +15 -0
  1512. package/node_modules/@ktx/context/dist/search/query.test.d.ts +1 -0
  1513. package/node_modules/@ktx/context/dist/search/query.test.js +23 -0
  1514. package/node_modules/@ktx/context/dist/search/rrf.d.ts +5 -0
  1515. package/node_modules/@ktx/context/dist/search/rrf.js +13 -0
  1516. package/node_modules/@ktx/context/dist/search/rrf.test.d.ts +1 -0
  1517. package/node_modules/@ktx/context/dist/search/rrf.test.js +47 -0
  1518. package/node_modules/@ktx/context/dist/search/types.d.ts +73 -0
  1519. package/node_modules/@ktx/context/dist/search/types.js +1 -0
  1520. package/node_modules/@ktx/context/dist/skills/index.d.ts +2 -0
  1521. package/node_modules/@ktx/context/dist/skills/index.js +1 -0
  1522. package/node_modules/@ktx/context/dist/skills/skills-registry.service.d.ts +35 -0
  1523. package/node_modules/@ktx/context/dist/skills/skills-registry.service.js +215 -0
  1524. package/node_modules/@ktx/context/dist/skills/skills-registry.service.test.d.ts +1 -0
  1525. package/node_modules/@ktx/context/dist/skills/skills-registry.service.test.js +161 -0
  1526. package/node_modules/@ktx/context/dist/sl/description-normalization.d.ts +5 -0
  1527. package/node_modules/@ktx/context/dist/sl/description-normalization.js +100 -0
  1528. package/node_modules/@ktx/context/dist/sl/descriptions.d.ts +14 -0
  1529. package/node_modules/@ktx/context/dist/sl/descriptions.js +20 -0
  1530. package/node_modules/@ktx/context/dist/sl/dictionary-search.d.ts +42 -0
  1531. package/node_modules/@ktx/context/dist/sl/dictionary-search.js +121 -0
  1532. package/node_modules/@ktx/context/dist/sl/dictionary-search.test.d.ts +1 -0
  1533. package/node_modules/@ktx/context/dist/sl/dictionary-search.test.js +204 -0
  1534. package/node_modules/@ktx/context/dist/sl/index.d.ts +15 -0
  1535. package/node_modules/@ktx/context/dist/sl/index.js +10 -0
  1536. package/node_modules/@ktx/context/dist/sl/local-query.d.ts +17 -0
  1537. package/node_modules/@ktx/context/dist/sl/local-query.js +111 -0
  1538. package/node_modules/@ktx/context/dist/sl/local-query.test.d.ts +1 -0
  1539. package/node_modules/@ktx/context/dist/sl/local-query.test.js +218 -0
  1540. package/node_modules/@ktx/context/dist/sl/local-sl.d.ts +60 -0
  1541. package/node_modules/@ktx/context/dist/sl/local-sl.js +484 -0
  1542. package/node_modules/@ktx/context/dist/sl/local-sl.test.d.ts +1 -0
  1543. package/node_modules/@ktx/context/dist/sl/local-sl.test.js +334 -0
  1544. package/node_modules/@ktx/context/dist/sl/pglite-sl-search-prototype.d.ts +16 -0
  1545. package/node_modules/@ktx/context/dist/sl/pglite-sl-search-prototype.js +433 -0
  1546. package/node_modules/@ktx/context/dist/sl/pglite-sl-search-prototype.test.d.ts +1 -0
  1547. package/node_modules/@ktx/context/dist/sl/pglite-sl-search-prototype.test.js +240 -0
  1548. package/node_modules/@ktx/context/dist/sl/ports.d.ts +61 -0
  1549. package/node_modules/@ktx/context/dist/sl/ports.js +1 -0
  1550. package/node_modules/@ktx/context/dist/sl/schemas.contract.test.d.ts +1 -0
  1551. package/node_modules/@ktx/context/dist/sl/schemas.contract.test.js +62 -0
  1552. package/node_modules/@ktx/context/dist/sl/schemas.d.ts +282 -0
  1553. package/node_modules/@ktx/context/dist/sl/schemas.js +181 -0
  1554. package/node_modules/@ktx/context/dist/sl/semantic-layer.service.d.ts +214 -0
  1555. package/node_modules/@ktx/context/dist/sl/semantic-layer.service.js +1334 -0
  1556. package/node_modules/@ktx/context/dist/sl/semantic-layer.service.test.d.ts +1 -0
  1557. package/node_modules/@ktx/context/dist/sl/semantic-layer.service.test.js +1084 -0
  1558. package/node_modules/@ktx/context/dist/sl/sl-dictionary-profile.d.ts +9 -0
  1559. package/node_modules/@ktx/context/dist/sl/sl-dictionary-profile.js +80 -0
  1560. package/node_modules/@ktx/context/dist/sl/sl-dictionary-profile.test.d.ts +1 -0
  1561. package/node_modules/@ktx/context/dist/sl/sl-dictionary-profile.test.js +88 -0
  1562. package/node_modules/@ktx/context/dist/sl/sl-search.service.d.ts +17 -0
  1563. package/node_modules/@ktx/context/dist/sl/sl-search.service.js +156 -0
  1564. package/node_modules/@ktx/context/dist/sl/sl-search.service.test.d.ts +1 -0
  1565. package/node_modules/@ktx/context/dist/sl/sl-search.service.test.js +195 -0
  1566. package/node_modules/@ktx/context/dist/sl/sl-validator.port.d.ts +7 -0
  1567. package/node_modules/@ktx/context/dist/sl/sl-validator.port.js +1 -0
  1568. package/node_modules/@ktx/context/dist/sl/sqlite-sl-sources-index.d.ts +56 -0
  1569. package/node_modules/@ktx/context/dist/sl/sqlite-sl-sources-index.js +419 -0
  1570. package/node_modules/@ktx/context/dist/sl/sqlite-sl-sources-index.test.d.ts +1 -0
  1571. package/node_modules/@ktx/context/dist/sl/sqlite-sl-sources-index.test.js +151 -0
  1572. package/node_modules/@ktx/context/dist/sl/tools/base-semantic-layer.tool.d.ts +45 -0
  1573. package/node_modules/@ktx/context/dist/sl/tools/base-semantic-layer.tool.js +91 -0
  1574. package/node_modules/@ktx/context/dist/sl/tools/connection-id-schema.d.ts +2 -0
  1575. package/node_modules/@ktx/context/dist/sl/tools/connection-id-schema.js +5 -0
  1576. package/node_modules/@ktx/context/dist/sl/tools/connection-id-schema.test.d.ts +1 -0
  1577. package/node_modules/@ktx/context/dist/sl/tools/connection-id-schema.test.js +14 -0
  1578. package/node_modules/@ktx/context/dist/sl/tools/index.d.ts +11 -0
  1579. package/node_modules/@ktx/context/dist/sl/tools/index.js +8 -0
  1580. package/node_modules/@ktx/context/dist/sl/tools/sl-discover.tool.d.ts +52 -0
  1581. package/node_modules/@ktx/context/dist/sl/tools/sl-discover.tool.js +260 -0
  1582. package/node_modules/@ktx/context/dist/sl/tools/sl-discover.tool.test.d.ts +1 -0
  1583. package/node_modules/@ktx/context/dist/sl/tools/sl-discover.tool.test.js +72 -0
  1584. package/node_modules/@ktx/context/dist/sl/tools/sl-edit-source.tool.d.ts +33 -0
  1585. package/node_modules/@ktx/context/dist/sl/tools/sl-edit-source.tool.js +173 -0
  1586. package/node_modules/@ktx/context/dist/sl/tools/sl-edit-source.tool.test.d.ts +1 -0
  1587. package/node_modules/@ktx/context/dist/sl/tools/sl-edit-source.tool.test.js +169 -0
  1588. package/node_modules/@ktx/context/dist/sl/tools/sl-read-source.tool.d.ts +23 -0
  1589. package/node_modules/@ktx/context/dist/sl/tools/sl-read-source.tool.js +47 -0
  1590. package/node_modules/@ktx/context/dist/sl/tools/sl-read-source.tool.session.test.d.ts +1 -0
  1591. package/node_modules/@ktx/context/dist/sl/tools/sl-read-source.tool.session.test.js +55 -0
  1592. package/node_modules/@ktx/context/dist/sl/tools/sl-rollback.tool.d.ts +25 -0
  1593. package/node_modules/@ktx/context/dist/sl/tools/sl-rollback.tool.js +63 -0
  1594. package/node_modules/@ktx/context/dist/sl/tools/sl-rollback.tool.test.d.ts +1 -0
  1595. package/node_modules/@ktx/context/dist/sl/tools/sl-rollback.tool.test.js +57 -0
  1596. package/node_modules/@ktx/context/dist/sl/tools/sl-validate.tool.d.ts +23 -0
  1597. package/node_modules/@ktx/context/dist/sl/tools/sl-validate.tool.js +100 -0
  1598. package/node_modules/@ktx/context/dist/sl/tools/sl-validate.tool.test.d.ts +1 -0
  1599. package/node_modules/@ktx/context/dist/sl/tools/sl-validate.tool.test.js +54 -0
  1600. package/node_modules/@ktx/context/dist/sl/tools/sl-warehouse-validation.d.ts +29 -0
  1601. package/node_modules/@ktx/context/dist/sl/tools/sl-warehouse-validation.js +245 -0
  1602. package/node_modules/@ktx/context/dist/sl/tools/sl-warehouse-validation.test.d.ts +1 -0
  1603. package/node_modules/@ktx/context/dist/sl/tools/sl-warehouse-validation.test.js +136 -0
  1604. package/node_modules/@ktx/context/dist/sl/tools/sl-write-source.tool.d.ts +422 -0
  1605. package/node_modules/@ktx/context/dist/sl/tools/sl-write-source.tool.js +315 -0
  1606. package/node_modules/@ktx/context/dist/sl/tools/sl-write-source.tool.test.d.ts +1 -0
  1607. package/node_modules/@ktx/context/dist/sl/tools/sl-write-source.tool.test.js +285 -0
  1608. package/node_modules/@ktx/context/dist/sl/types.d.ts +147 -0
  1609. package/node_modules/@ktx/context/dist/sl/types.js +1 -0
  1610. package/node_modules/@ktx/context/dist/sql-analysis/http-sql-analysis-port.d.ts +7 -0
  1611. package/node_modules/@ktx/context/dist/sql-analysis/http-sql-analysis-port.js +188 -0
  1612. package/node_modules/@ktx/context/dist/sql-analysis/http-sql-analysis-port.test.d.ts +1 -0
  1613. package/node_modules/@ktx/context/dist/sql-analysis/http-sql-analysis-port.test.js +147 -0
  1614. package/node_modules/@ktx/context/dist/sql-analysis/index.d.ts +3 -0
  1615. package/node_modules/@ktx/context/dist/sql-analysis/index.js +1 -0
  1616. package/node_modules/@ktx/context/dist/sql-analysis/ports.d.ts +33 -0
  1617. package/node_modules/@ktx/context/dist/sql-analysis/ports.js +1 -0
  1618. package/node_modules/@ktx/context/dist/test/make-local-git-repo.d.ts +10 -0
  1619. package/node_modules/@ktx/context/dist/test/make-local-git-repo.js +34 -0
  1620. package/node_modules/@ktx/context/dist/tools/action-raw-paths.d.ts +10 -0
  1621. package/node_modules/@ktx/context/dist/tools/action-raw-paths.js +18 -0
  1622. package/node_modules/@ktx/context/dist/tools/authors.d.ts +8 -0
  1623. package/node_modules/@ktx/context/dist/tools/authors.js +4 -0
  1624. package/node_modules/@ktx/context/dist/tools/base-tool.d.ts +85 -0
  1625. package/node_modules/@ktx/context/dist/tools/base-tool.js +94 -0
  1626. package/node_modules/@ktx/context/dist/tools/context-candidate-mark.tool.d.ts +41 -0
  1627. package/node_modules/@ktx/context/dist/tools/context-candidate-mark.tool.js +44 -0
  1628. package/node_modules/@ktx/context/dist/tools/context-candidate-write.tool.d.ts +64 -0
  1629. package/node_modules/@ktx/context/dist/tools/context-candidate-write.tool.js +140 -0
  1630. package/node_modules/@ktx/context/dist/tools/context-evidence-ids.d.ts +3 -0
  1631. package/node_modules/@ktx/context/dist/tools/context-evidence-ids.js +12 -0
  1632. package/node_modules/@ktx/context/dist/tools/context-evidence-neighbors.tool.d.ts +48 -0
  1633. package/node_modules/@ktx/context/dist/tools/context-evidence-neighbors.tool.js +69 -0
  1634. package/node_modules/@ktx/context/dist/tools/context-evidence-read.tool.d.ts +37 -0
  1635. package/node_modules/@ktx/context/dist/tools/context-evidence-read.tool.js +118 -0
  1636. package/node_modules/@ktx/context/dist/tools/context-evidence-search.tool.d.ts +57 -0
  1637. package/node_modules/@ktx/context/dist/tools/context-evidence-search.tool.js +92 -0
  1638. package/node_modules/@ktx/context/dist/tools/context-evidence-tool-store.d.ts +112 -0
  1639. package/node_modules/@ktx/context/dist/tools/context-evidence-tool-store.js +1 -0
  1640. package/node_modules/@ktx/context/dist/tools/context-evidence-tools.test.d.ts +1 -0
  1641. package/node_modules/@ktx/context/dist/tools/context-evidence-tools.test.js +486 -0
  1642. package/node_modules/@ktx/context/dist/tools/context-ingest-metadata.d.ts +9 -0
  1643. package/node_modules/@ktx/context/dist/tools/context-ingest-metadata.js +13 -0
  1644. package/node_modules/@ktx/context/dist/tools/index.d.ts +18 -0
  1645. package/node_modules/@ktx/context/dist/tools/index.js +11 -0
  1646. package/node_modules/@ktx/context/dist/tools/sql-edit-replacer.d.ts +16 -0
  1647. package/node_modules/@ktx/context/dist/tools/sql-edit-replacer.js +173 -0
  1648. package/node_modules/@ktx/context/dist/tools/tool-session.d.ts +54 -0
  1649. package/node_modules/@ktx/context/dist/tools/tool-session.js +1 -0
  1650. package/node_modules/@ktx/context/dist/tools/touched-sl-sources.d.ts +12 -0
  1651. package/node_modules/@ktx/context/dist/tools/touched-sl-sources.js +47 -0
  1652. package/node_modules/@ktx/context/dist/tools/touched-sl-sources.test.d.ts +1 -0
  1653. package/node_modules/@ktx/context/dist/tools/touched-sl-sources.test.js +31 -0
  1654. package/node_modules/@ktx/context/dist/wiki/index.d.ts +9 -0
  1655. package/node_modules/@ktx/context/dist/wiki/index.js +6 -0
  1656. package/node_modules/@ktx/context/dist/wiki/keys.d.ts +11 -0
  1657. package/node_modules/@ktx/context/dist/wiki/keys.js +26 -0
  1658. package/node_modules/@ktx/context/dist/wiki/knowledge-search-text.d.ts +1 -0
  1659. package/node_modules/@ktx/context/dist/wiki/knowledge-search-text.js +7 -0
  1660. package/node_modules/@ktx/context/dist/wiki/knowledge-wiki.service.d.ts +76 -0
  1661. package/node_modules/@ktx/context/dist/wiki/knowledge-wiki.service.js +346 -0
  1662. package/node_modules/@ktx/context/dist/wiki/knowledge-wiki.service.test.d.ts +1 -0
  1663. package/node_modules/@ktx/context/dist/wiki/knowledge-wiki.service.test.js +134 -0
  1664. package/node_modules/@ktx/context/dist/wiki/local-knowledge.d.ts +55 -0
  1665. package/node_modules/@ktx/context/dist/wiki/local-knowledge.js +286 -0
  1666. package/node_modules/@ktx/context/dist/wiki/local-knowledge.test.d.ts +1 -0
  1667. package/node_modules/@ktx/context/dist/wiki/local-knowledge.test.js +226 -0
  1668. package/node_modules/@ktx/context/dist/wiki/ports.d.ts +70 -0
  1669. package/node_modules/@ktx/context/dist/wiki/ports.js +1 -0
  1670. package/node_modules/@ktx/context/dist/wiki/sqlite-knowledge-index.d.ts +43 -0
  1671. package/node_modules/@ktx/context/dist/wiki/sqlite-knowledge-index.js +208 -0
  1672. package/node_modules/@ktx/context/dist/wiki/sqlite-knowledge-index.test.d.ts +1 -0
  1673. package/node_modules/@ktx/context/dist/wiki/sqlite-knowledge-index.test.js +103 -0
  1674. package/node_modules/@ktx/context/dist/wiki/tools/index.d.ts +5 -0
  1675. package/node_modules/@ktx/context/dist/wiki/tools/index.js +5 -0
  1676. package/node_modules/@ktx/context/dist/wiki/tools/wiki-list-tags.tool.d.ts +16 -0
  1677. package/node_modules/@ktx/context/dist/wiki/tools/wiki-list-tags.tool.js +34 -0
  1678. package/node_modules/@ktx/context/dist/wiki/tools/wiki-list-tags.tool.test.d.ts +1 -0
  1679. package/node_modules/@ktx/context/dist/wiki/tools/wiki-list-tags.tool.test.js +35 -0
  1680. package/node_modules/@ktx/context/dist/wiki/tools/wiki-read.tool.d.ts +28 -0
  1681. package/node_modules/@ktx/context/dist/wiki/tools/wiki-read.tool.js +59 -0
  1682. package/node_modules/@ktx/context/dist/wiki/tools/wiki-read.tool.test.d.ts +1 -0
  1683. package/node_modules/@ktx/context/dist/wiki/tools/wiki-read.tool.test.js +66 -0
  1684. package/node_modules/@ktx/context/dist/wiki/tools/wiki-remove.tool.d.ts +28 -0
  1685. package/node_modules/@ktx/context/dist/wiki/tools/wiki-remove.tool.js +85 -0
  1686. package/node_modules/@ktx/context/dist/wiki/tools/wiki-remove.tool.test.d.ts +1 -0
  1687. package/node_modules/@ktx/context/dist/wiki/tools/wiki-remove.tool.test.js +95 -0
  1688. package/node_modules/@ktx/context/dist/wiki/tools/wiki-search.tool.d.ts +49 -0
  1689. package/node_modules/@ktx/context/dist/wiki/tools/wiki-search.tool.js +51 -0
  1690. package/node_modules/@ktx/context/dist/wiki/tools/wiki-search.tool.test.d.ts +1 -0
  1691. package/node_modules/@ktx/context/dist/wiki/tools/wiki-search.tool.test.js +35 -0
  1692. package/node_modules/@ktx/context/dist/wiki/tools/wiki-write.tool.d.ts +80 -0
  1693. package/node_modules/@ktx/context/dist/wiki/tools/wiki-write.tool.js +255 -0
  1694. package/node_modules/@ktx/context/dist/wiki/tools/wiki-write.tool.test.d.ts +1 -0
  1695. package/node_modules/@ktx/context/dist/wiki/tools/wiki-write.tool.test.js +236 -0
  1696. package/node_modules/@ktx/context/dist/wiki/types.d.ts +50 -0
  1697. package/node_modules/@ktx/context/dist/wiki/types.js +1 -0
  1698. package/node_modules/@ktx/context/package.json +117 -0
  1699. package/node_modules/@ktx/context/prompts/memory_agent_backfill.md +21 -0
  1700. package/node_modules/@ktx/context/prompts/memory_agent_bundle_ingest_reconcile.md +29 -0
  1701. package/node_modules/@ktx/context/prompts/memory_agent_bundle_ingest_work_unit.md +32 -0
  1702. package/node_modules/@ktx/context/prompts/memory_agent_external_ingest.md +28 -0
  1703. package/node_modules/@ktx/context/prompts/memory_agent_research.md +30 -0
  1704. package/node_modules/@ktx/context/prompts/skills/light_extraction.md +40 -0
  1705. package/node_modules/@ktx/context/prompts/skills/page_triage_classifier.md +40 -0
  1706. package/node_modules/@ktx/context/skills/_shared/identifier-verification.md +27 -0
  1707. package/node_modules/@ktx/context/skills/dbt_ingest/SKILL.md +76 -0
  1708. package/node_modules/@ktx/context/skills/historic_sql_patterns/SKILL.md +91 -0
  1709. package/node_modules/@ktx/context/skills/historic_sql_table_digest/SKILL.md +89 -0
  1710. package/node_modules/@ktx/context/skills/ingest_triage/SKILL.md +77 -0
  1711. package/node_modules/@ktx/context/skills/live_database_ingest/SKILL.md +89 -0
  1712. package/node_modules/@ktx/context/skills/looker_ingest/SKILL.md +248 -0
  1713. package/node_modules/@ktx/context/skills/lookml_ingest/SKILL.md +219 -0
  1714. package/node_modules/@ktx/context/skills/metabase_ingest/SKILL.md +253 -0
  1715. package/node_modules/@ktx/context/skills/metricflow_ingest/SKILL.md +313 -0
  1716. package/node_modules/@ktx/context/skills/notion_synthesize/SKILL.md +104 -0
  1717. package/node_modules/@ktx/context/skills/sl/SKILL.md +247 -0
  1718. package/node_modules/@ktx/context/skills/sl_capture/SKILL.md +346 -0
  1719. package/node_modules/@ktx/context/skills/wiki_capture/SKILL.md +160 -0
  1720. package/node_modules/@ktx/llm/dist/embedding-health.d.ts +14 -0
  1721. package/node_modules/@ktx/llm/dist/embedding-health.js +36 -0
  1722. package/node_modules/@ktx/llm/dist/embedding-health.test.d.ts +1 -0
  1723. package/node_modules/@ktx/llm/dist/embedding-health.test.js +72 -0
  1724. package/node_modules/@ktx/llm/dist/embedding-provider.d.ts +35 -0
  1725. package/node_modules/@ktx/llm/dist/embedding-provider.js +287 -0
  1726. package/node_modules/@ktx/llm/dist/embedding-provider.test.d.ts +1 -0
  1727. package/node_modules/@ktx/llm/dist/embedding-provider.test.js +99 -0
  1728. package/node_modules/@ktx/llm/dist/index.d.ts +11 -0
  1729. package/node_modules/@ktx/llm/dist/index.js +6 -0
  1730. package/node_modules/@ktx/llm/dist/message-builder.d.ts +45 -0
  1731. package/node_modules/@ktx/llm/dist/message-builder.js +151 -0
  1732. package/node_modules/@ktx/llm/dist/message-builder.test.d.ts +1 -0
  1733. package/node_modules/@ktx/llm/dist/message-builder.test.js +127 -0
  1734. package/node_modules/@ktx/llm/dist/model-health.d.ts +18 -0
  1735. package/node_modules/@ktx/llm/dist/model-health.js +38 -0
  1736. package/node_modules/@ktx/llm/dist/model-health.test.d.ts +1 -0
  1737. package/node_modules/@ktx/llm/dist/model-health.test.js +55 -0
  1738. package/node_modules/@ktx/llm/dist/model-provider.d.ts +22 -0
  1739. package/node_modules/@ktx/llm/dist/model-provider.js +150 -0
  1740. package/node_modules/@ktx/llm/dist/model-provider.test.d.ts +1 -0
  1741. package/node_modules/@ktx/llm/dist/model-provider.test.js +246 -0
  1742. package/node_modules/@ktx/llm/dist/package-exports.test.d.ts +1 -0
  1743. package/node_modules/@ktx/llm/dist/package-exports.test.js +17 -0
  1744. package/node_modules/@ktx/llm/dist/repair.d.ts +8 -0
  1745. package/node_modules/@ktx/llm/dist/repair.js +75 -0
  1746. package/node_modules/@ktx/llm/dist/repair.test.d.ts +1 -0
  1747. package/node_modules/@ktx/llm/dist/repair.test.js +78 -0
  1748. package/node_modules/@ktx/llm/dist/types.d.ts +105 -0
  1749. package/node_modules/@ktx/llm/dist/types.js +1 -0
  1750. package/node_modules/@ktx/llm/package.json +20 -0
  1751. package/package.json +74 -7
  1752. package/README.md +0 -3
@@ -0,0 +1,1858 @@
1
+ import { execFile as execFileCallback } from 'node:child_process';
2
+ import { readFile, writeFile } from 'node:fs/promises';
3
+ import { delimiter, dirname, join } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { promisify } from 'node:util';
6
+ import { loadKtxProject, markKtxSetupStateStepComplete, serializeKtxProjectConfig, setKtxSetupDatabaseConnectionIds, } from '@ktx/context/project';
7
+ import { runKtxConnection } from './connection.js';
8
+ import { pickDatabaseScope as defaultPickDatabaseScope, } from './database-tree-picker.js';
9
+ import { withMultiselectNavigation, withTextInputNavigation } from './prompt-navigation.js';
10
+ import { runKtxScan } from './scan.js';
11
+ import { applySetupDatabaseContextDepth } from './setup-database-context-depth.js';
12
+ import { writeProjectLocalSecretReference } from './setup-secrets.js';
13
+ import { createKtxSetupPromptAdapter, } from './setup-prompts.js';
14
+ const HISTORIC_SQL_WORK_UNIT_MAX_CONCURRENCY = 6;
15
+ const execFileAsync = promisify(execFileCallback);
16
+ const DRIVER_OPTIONS = [
17
+ { value: 'sqlite', label: 'SQLite' },
18
+ { value: 'postgres', label: 'PostgreSQL' },
19
+ { value: 'mysql', label: 'MySQL' },
20
+ { value: 'clickhouse', label: 'ClickHouse' },
21
+ { value: 'sqlserver', label: 'SQL Server' },
22
+ { value: 'bigquery', label: 'BigQuery' },
23
+ { value: 'snowflake', label: 'Snowflake' },
24
+ ];
25
+ const DRIVER_LABELS = Object.fromEntries(DRIVER_OPTIONS.map((option) => [option.value, option.label]));
26
+ const HISTORIC_SQL_DIALECT_BY_DRIVER = {
27
+ snowflake: 'snowflake',
28
+ bigquery: 'bigquery',
29
+ postgres: 'postgres',
30
+ };
31
+ const DEFAULT_CONNECTION_IDS = {
32
+ sqlite: 'sqlite-local',
33
+ postgres: 'postgres-warehouse',
34
+ mysql: 'mysql-warehouse',
35
+ clickhouse: 'clickhouse-warehouse',
36
+ sqlserver: 'sqlserver-warehouse',
37
+ bigquery: 'bigquery-warehouse',
38
+ snowflake: 'snowflake-warehouse',
39
+ };
40
+ const SCOPE_DISCOVERY_SPECS = {
41
+ postgres: {
42
+ noun: 'schema',
43
+ nounPlural: 'schemas',
44
+ promptLabel: 'PostgreSQL schemas',
45
+ configArrayField: 'schemas',
46
+ configSingleField: 'schema',
47
+ defaultSelection(schemas) {
48
+ const nonPublic = schemas.filter((s) => s !== 'public');
49
+ return nonPublic.length > 0 ? nonPublic : schemas;
50
+ },
51
+ },
52
+ sqlserver: {
53
+ noun: 'schema',
54
+ nounPlural: 'schemas',
55
+ promptLabel: 'SQL Server schemas',
56
+ configArrayField: 'schemas',
57
+ configSingleField: 'schema',
58
+ defaultSelection: (schemas) => schemas,
59
+ },
60
+ bigquery: {
61
+ noun: 'dataset',
62
+ nounPlural: 'datasets',
63
+ promptLabel: 'BigQuery datasets',
64
+ configArrayField: 'dataset_ids',
65
+ configSingleField: 'dataset_id',
66
+ defaultSelection: (datasets) => datasets,
67
+ },
68
+ snowflake: {
69
+ noun: 'schema',
70
+ nounPlural: 'schemas',
71
+ promptLabel: 'Snowflake schemas',
72
+ configArrayField: 'schema_names',
73
+ configSingleField: 'schema_name',
74
+ defaultSelection(schemas) {
75
+ const nonPublic = schemas.filter((s) => s !== 'PUBLIC');
76
+ return nonPublic.length > 0 ? nonPublic : schemas;
77
+ },
78
+ },
79
+ };
80
+ const DRIVER_CONNECTION_DEFAULTS = {
81
+ postgres: { port: '5432' },
82
+ mysql: { port: '3306' },
83
+ clickhouse: { port: '8123' },
84
+ sqlserver: { port: '1433' },
85
+ };
86
+ function driverLabel(driver) {
87
+ return DRIVER_LABELS[driver];
88
+ }
89
+ function connectionNamePrompt(label) {
90
+ return `Name this ${label} connection\nKTX will use this short name in commands and config. You can rename it now.`;
91
+ }
92
+ function missingConnectionDetailsPrompt(label, canReturnToDriverSelection) {
93
+ const backDestination = canReturnToDriverSelection ? 'database selection' : 'the previous setup step';
94
+ return {
95
+ message: `Some ${label} connection details are missing.\n` +
96
+ `Continue entering details, or go back to ${backDestination}.`,
97
+ options: [
98
+ { value: 'retry', label: `Continue entering ${label} details` },
99
+ { value: 'back', label: `Back to ${backDestination}` },
100
+ ],
101
+ };
102
+ }
103
+ function createPromptAdapter() {
104
+ return createKtxSetupPromptAdapter({
105
+ selectCancelValue: 'back',
106
+ multiselectCancelValue: 'back',
107
+ confirmEmptyOptionalMultiselect: true,
108
+ });
109
+ }
110
+ function normalizeDriver(driver) {
111
+ const normalized = String(driver ?? '').toLowerCase();
112
+ if (normalized === 'postgresql')
113
+ return 'postgres';
114
+ if (normalized === 'sqlite3')
115
+ return 'sqlite';
116
+ return DRIVER_OPTIONS.some((option) => option.value === normalized) ? normalized : null;
117
+ }
118
+ function unique(values) {
119
+ return [...new Set(values.filter((value) => value.trim().length > 0))];
120
+ }
121
+ function assertSafeDatabaseConnectionId(connectionId) {
122
+ if (!/^[a-zA-Z0-9][a-zA-Z0-9_-]*$/.test(connectionId)) {
123
+ throw new Error(`Unsafe connection id: ${connectionId}`);
124
+ }
125
+ }
126
+ function stringConfigField(connection, field) {
127
+ const value = connection?.[field];
128
+ return typeof value === 'string' && value.trim().length > 0 ? value.trim() : undefined;
129
+ }
130
+ function numberConfigField(connection, field) {
131
+ const value = connection?.[field];
132
+ return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
133
+ }
134
+ function historicSqlConfigRecord(connection) {
135
+ const historicSql = connection?.historicSql;
136
+ return historicSql && typeof historicSql === 'object' && !Array.isArray(historicSql)
137
+ ? historicSql
138
+ : null;
139
+ }
140
+ function contextRecord(connection) {
141
+ const context = connection?.context;
142
+ return context && typeof context === 'object' && !Array.isArray(context) ? context : {};
143
+ }
144
+ function queryHistoryConfigRecord(connection) {
145
+ const queryHistory = contextRecord(connection).queryHistory;
146
+ return queryHistory && typeof queryHistory === 'object' && !Array.isArray(queryHistory)
147
+ ? queryHistory
148
+ : null;
149
+ }
150
+ function stripLegacyHistoricSql(connection) {
151
+ const { historicSql: _historicSql, ...rest } = connection;
152
+ return rest;
153
+ }
154
+ function withQueryHistoryConfig(connection, queryHistory) {
155
+ return {
156
+ ...stripLegacyHistoricSql(connection),
157
+ context: {
158
+ ...contextRecord(connection),
159
+ queryHistory,
160
+ },
161
+ };
162
+ }
163
+ function migrateLegacyHistoricSqlConnection(connection) {
164
+ const existingQueryHistory = queryHistoryConfigRecord(connection);
165
+ const legacy = historicSqlConfigRecord(connection);
166
+ if (existingQueryHistory || !legacy) {
167
+ return existingQueryHistory ? stripLegacyHistoricSql(connection) : connection;
168
+ }
169
+ const { dialect: _dialect, ...queryHistory } = legacy;
170
+ return withQueryHistoryConfig(connection, queryHistory);
171
+ }
172
+ function historicSqlProbeFailureLines(error) {
173
+ if (error instanceof Error && error.name === 'HistoricSqlExtensionMissingError') {
174
+ return [
175
+ ' FAIL pg_stat_statements extension is not installed in the connection database',
176
+ ' Fix: Run (against this database): CREATE EXTENSION pg_stat_statements;',
177
+ " Fix: Ensure shared_preload_libraries includes 'pg_stat_statements'.",
178
+ ];
179
+ }
180
+ if (error instanceof Error && error.name === 'HistoricSqlGrantsMissingError') {
181
+ return [
182
+ ' FAIL Postgres connection role lacks pg_read_all_stats',
183
+ ' Fix: Run: GRANT pg_read_all_stats TO <connection role>;',
184
+ ];
185
+ }
186
+ if (error instanceof Error && error.name === 'HistoricSqlVersionUnsupportedError') {
187
+ return [` FAIL ${error.message}`];
188
+ }
189
+ return [` FAIL Query history probe failed: ${error instanceof Error ? error.message : String(error)}`];
190
+ }
191
+ async function defaultHistoricSqlProbe(input) {
192
+ if (input.dialect !== 'postgres') {
193
+ return { ok: true, lines: [] };
194
+ }
195
+ const project = await loadKtxProject({ projectDir: input.projectDir });
196
+ const connection = project.config.connections[input.connectionId];
197
+ const [{ PostgresPgssReader }, { KtxPostgresHistoricSqlQueryClient, isKtxPostgresConnectionConfig }] = await Promise.all([import('@ktx/context/ingest'), import('@ktx/connector-postgres')]);
198
+ const postgresConnection = connection;
199
+ if (!isKtxPostgresConnectionConfig(postgresConnection)) {
200
+ return {
201
+ ok: false,
202
+ lines: [` FAIL Connection ${input.connectionId} is not a native Postgres connection.`],
203
+ };
204
+ }
205
+ const client = new KtxPostgresHistoricSqlQueryClient({
206
+ connectionId: input.connectionId,
207
+ connection: postgresConnection,
208
+ });
209
+ try {
210
+ const result = await new PostgresPgssReader().probe(client);
211
+ return {
212
+ ok: true,
213
+ lines: [
214
+ ` OK pg_stat_statements ready (${result.pgServerVersion})`,
215
+ ...result.warnings.map((warning) => ` ! ${warning}`),
216
+ ],
217
+ };
218
+ }
219
+ catch (error) {
220
+ return { ok: false, lines: historicSqlProbeFailureLines(error) };
221
+ }
222
+ finally {
223
+ await client.cleanup();
224
+ }
225
+ }
226
+ async function defaultListSchemas(projectDir, connectionId) {
227
+ const project = await loadKtxProject({ projectDir });
228
+ const connection = project.config.connections[connectionId];
229
+ const driver = normalizeDriver(connection?.driver);
230
+ if (driver === 'postgres') {
231
+ const { KtxPostgresScanConnector, isKtxPostgresConnectionConfig } = await import('@ktx/connector-postgres');
232
+ if (!isKtxPostgresConnectionConfig(connection))
233
+ return [];
234
+ const connector = new KtxPostgresScanConnector({ connectionId, connection });
235
+ try {
236
+ return await connector.listSchemas();
237
+ }
238
+ finally {
239
+ await connector.cleanup();
240
+ }
241
+ }
242
+ if (driver === 'sqlserver') {
243
+ const { KtxSqlServerScanConnector, isKtxSqlServerConnectionConfig } = await import('@ktx/connector-sqlserver');
244
+ if (!isKtxSqlServerConnectionConfig(connection))
245
+ return [];
246
+ const connector = new KtxSqlServerScanConnector({ connectionId, connection });
247
+ try {
248
+ return await connector.listSchemas();
249
+ }
250
+ finally {
251
+ await connector.cleanup();
252
+ }
253
+ }
254
+ if (driver === 'bigquery') {
255
+ const { KtxBigQueryScanConnector, isKtxBigQueryConnectionConfig } = await import('@ktx/connector-bigquery');
256
+ if (!isKtxBigQueryConnectionConfig(connection))
257
+ return [];
258
+ const connector = new KtxBigQueryScanConnector({ connectionId, connection });
259
+ try {
260
+ return await connector.listDatasets();
261
+ }
262
+ finally {
263
+ await connector.cleanup();
264
+ }
265
+ }
266
+ if (driver === 'snowflake') {
267
+ const { KtxSnowflakeScanConnector, isKtxSnowflakeConnectionConfig } = await import('@ktx/connector-snowflake');
268
+ if (!isKtxSnowflakeConnectionConfig(connection))
269
+ return [];
270
+ const connector = new KtxSnowflakeScanConnector({ connectionId, connection });
271
+ try {
272
+ return await connector.listSchemas();
273
+ }
274
+ finally {
275
+ await connector.cleanup();
276
+ }
277
+ }
278
+ return [];
279
+ }
280
+ function configuredSchemas(connection, driver) {
281
+ if (!connection)
282
+ return undefined;
283
+ const spec = SCOPE_DISCOVERY_SPECS[driver];
284
+ if (!spec)
285
+ return undefined;
286
+ const values = configuredScopeValues(connection, spec);
287
+ return values.length > 0 ? values : undefined;
288
+ }
289
+ async function defaultListTables(projectDir, connectionId, schemasOverride) {
290
+ const project = await loadKtxProject({ projectDir });
291
+ const connection = project.config.connections[connectionId];
292
+ const driver = normalizeDriver(connection?.driver);
293
+ const schemas = schemasOverride ?? (driver ? configuredSchemas(connection, driver) : undefined);
294
+ if (driver === 'postgres') {
295
+ const { KtxPostgresScanConnector, isKtxPostgresConnectionConfig } = await import('@ktx/connector-postgres');
296
+ if (!isKtxPostgresConnectionConfig(connection))
297
+ return [];
298
+ const connector = new KtxPostgresScanConnector({ connectionId, connection });
299
+ try {
300
+ return await connector.listTables(schemas);
301
+ }
302
+ finally {
303
+ await connector.cleanup();
304
+ }
305
+ }
306
+ if (driver === 'mysql') {
307
+ const { KtxMysqlScanConnector, isKtxMysqlConnectionConfig } = await import('@ktx/connector-mysql');
308
+ if (!isKtxMysqlConnectionConfig(connection))
309
+ return [];
310
+ const connector = new KtxMysqlScanConnector({ connectionId, connection });
311
+ try {
312
+ return await connector.listTables(schemas);
313
+ }
314
+ finally {
315
+ await connector.cleanup();
316
+ }
317
+ }
318
+ if (driver === 'sqlserver') {
319
+ const { KtxSqlServerScanConnector, isKtxSqlServerConnectionConfig } = await import('@ktx/connector-sqlserver');
320
+ if (!isKtxSqlServerConnectionConfig(connection))
321
+ return [];
322
+ const connector = new KtxSqlServerScanConnector({ connectionId, connection });
323
+ try {
324
+ return await connector.listTables(schemas);
325
+ }
326
+ finally {
327
+ await connector.cleanup();
328
+ }
329
+ }
330
+ if (driver === 'bigquery') {
331
+ const { KtxBigQueryScanConnector, isKtxBigQueryConnectionConfig } = await import('@ktx/connector-bigquery');
332
+ if (!isKtxBigQueryConnectionConfig(connection))
333
+ return [];
334
+ const connector = new KtxBigQueryScanConnector({ connectionId, connection });
335
+ try {
336
+ return await connector.listTables(schemas);
337
+ }
338
+ finally {
339
+ await connector.cleanup();
340
+ }
341
+ }
342
+ if (driver === 'snowflake') {
343
+ const { KtxSnowflakeScanConnector, isKtxSnowflakeConnectionConfig } = await import('@ktx/connector-snowflake');
344
+ if (!isKtxSnowflakeConnectionConfig(connection))
345
+ return [];
346
+ const connector = new KtxSnowflakeScanConnector({ connectionId, connection });
347
+ try {
348
+ return await connector.listTables(schemas);
349
+ }
350
+ finally {
351
+ await connector.cleanup();
352
+ }
353
+ }
354
+ if (driver === 'clickhouse') {
355
+ const { KtxClickHouseScanConnector, isKtxClickHouseConnectionConfig } = await import('@ktx/connector-clickhouse');
356
+ if (!isKtxClickHouseConnectionConfig(connection))
357
+ return [];
358
+ const connector = new KtxClickHouseScanConnector({ connectionId, connection });
359
+ try {
360
+ return await connector.listTables(schemas);
361
+ }
362
+ finally {
363
+ await connector.cleanup();
364
+ }
365
+ }
366
+ return [];
367
+ }
368
+ function existingConnectionIdsByDriver(connections, driver) {
369
+ return Object.entries(connections)
370
+ .filter(([, connection]) => normalizeDriver(connection.driver) === driver)
371
+ .map(([connectionId]) => connectionId)
372
+ .sort((left, right) => left.localeCompare(right));
373
+ }
374
+ function configuredPrimaryConnectionIds(connections, setupConnectionIds) {
375
+ const configuredIds = setupConnectionIds
376
+ ?.filter((connectionId) => normalizeDriver(connections[connectionId]?.driver) !== null)
377
+ .filter((connectionId, index, ids) => ids.indexOf(connectionId) === index) ?? [];
378
+ if (configuredIds.length > 0) {
379
+ return configuredIds;
380
+ }
381
+ return Object.entries(connections)
382
+ .filter(([, connection]) => normalizeDriver(connection.driver) !== null)
383
+ .map(([connectionId]) => connectionId)
384
+ .sort((left, right) => left.localeCompare(right));
385
+ }
386
+ function configuredPrimaryDrivers(connections, connectionIds) {
387
+ const configured = new Set(connectionIds
388
+ .map((connectionId) => normalizeDriver(connections[connectionId]?.driver))
389
+ .filter((driver) => driver !== null));
390
+ return DRIVER_OPTIONS.map((option) => option.value).filter((driver) => configured.has(driver));
391
+ }
392
+ function configuredPrimarySourcesPrompt(connectionIds) {
393
+ return {
394
+ message: `Databases configured: ${connectionIds.join(', ')}\nWhat would you like to do?`,
395
+ options: [
396
+ { value: 'continue', label: 'Continue to context sources' },
397
+ { value: 'edit', label: 'Edit an existing database' },
398
+ { value: 'add', label: 'Add another database' },
399
+ ],
400
+ };
401
+ }
402
+ function pushUniqueConnectionId(connectionIds, connectionId) {
403
+ if (!connectionIds.includes(connectionId)) {
404
+ connectionIds.push(connectionId);
405
+ }
406
+ }
407
+ function defaultConnectionIdForDriver(connections, driver) {
408
+ const base = DEFAULT_CONNECTION_IDS[driver];
409
+ if (!connections[base]) {
410
+ return base;
411
+ }
412
+ let index = 2;
413
+ while (connections[`${base}-${index}`]) {
414
+ index += 1;
415
+ }
416
+ return `${base}-${index}`;
417
+ }
418
+ async function promptText(prompts, message, fallback) {
419
+ const value = await prompts.text({
420
+ message: withTextInputNavigation(message),
421
+ ...(fallback ? { placeholder: fallback, initialValue: fallback } : {}),
422
+ });
423
+ if (value === undefined) {
424
+ return undefined;
425
+ }
426
+ return value.trim() || fallback || '';
427
+ }
428
+ function urlHasCredentials(url) {
429
+ return /:\/\/[^/\s]*@/.test(url);
430
+ }
431
+ function normalizeInputReference(value) {
432
+ if (value.startsWith('$') && /^\$[A-Z_][A-Z0-9_]*$/i.test(value)) {
433
+ return `env:${value.slice(1)}`;
434
+ }
435
+ return value;
436
+ }
437
+ function normalizeFileReference(value) {
438
+ const normalized = normalizeInputReference(value);
439
+ if (normalized.startsWith('env:') || normalized.startsWith('file:')) {
440
+ return normalized;
441
+ }
442
+ return `file:${normalized}`;
443
+ }
444
+ async function promptCredential(input) {
445
+ const value = await input.prompts.password({
446
+ message: withTextInputNavigation(input.message),
447
+ });
448
+ if (value === undefined)
449
+ return 'back';
450
+ if (!value.trim())
451
+ return null;
452
+ const normalized = normalizeInputReference(value.trim());
453
+ if (normalized.startsWith('env:') || normalized.startsWith('file:')) {
454
+ return normalized;
455
+ }
456
+ return await writeProjectLocalSecretReference({
457
+ projectDir: input.projectDir,
458
+ fileName: `${input.connectionId}-${input.secretName}`,
459
+ value: normalized,
460
+ });
461
+ }
462
+ async function buildFieldsConnectionConfig(input) {
463
+ const label = driverLabel(input.driver);
464
+ const defaults = DRIVER_CONNECTION_DEFAULTS[input.driver];
465
+ const host = await promptText(input.prompts, `${label} host`, stringConfigField(input.existingConnection, 'host') ?? 'localhost');
466
+ if (host === undefined)
467
+ return 'back';
468
+ if (!host)
469
+ return null;
470
+ const portStr = await promptText(input.prompts, `${label} port`, String(numberConfigField(input.existingConnection, 'port') ?? defaults.port));
471
+ if (portStr === undefined)
472
+ return 'back';
473
+ const port = Number(portStr || defaults.port);
474
+ const database = await promptText(input.prompts, `${label} database name`, stringConfigField(input.existingConnection, 'database'));
475
+ if (database === undefined)
476
+ return 'back';
477
+ if (!database)
478
+ return null;
479
+ const username = await promptText(input.prompts, `${label} username`, stringConfigField(input.existingConnection, 'username'));
480
+ if (username === undefined)
481
+ return 'back';
482
+ if (!username)
483
+ return null;
484
+ let passwordRef;
485
+ {
486
+ const credentialResult = await promptCredential({
487
+ prompts: input.prompts,
488
+ message: `${label} password`,
489
+ projectDir: input.args.projectDir,
490
+ connectionId: input.connectionId,
491
+ secretName: 'password', // pragma: allowlist secret
492
+ });
493
+ if (credentialResult === 'back')
494
+ return 'back';
495
+ if (credentialResult)
496
+ passwordRef = credentialResult;
497
+ if (!credentialResult)
498
+ passwordRef = stringConfigField(input.existingConnection, 'password');
499
+ }
500
+ return {
501
+ driver: input.driver,
502
+ host,
503
+ port,
504
+ database,
505
+ username,
506
+ ...(passwordRef ? { password: passwordRef } : {}),
507
+ ...(input.args.databaseSchemas.length > 0 ? { schemas: input.args.databaseSchemas } : {}),
508
+ };
509
+ }
510
+ async function buildPastedUrlConnectionConfig(input) {
511
+ const label = driverLabel(input.driver);
512
+ const rawUrl = await promptText(input.prompts, `${label} connection URL`, stringConfigField(input.existingConnection, 'url'));
513
+ if (rawUrl === undefined)
514
+ return 'back';
515
+ if (!rawUrl)
516
+ return null;
517
+ const url = normalizeInputReference(rawUrl);
518
+ if (url.startsWith('env:') || url.startsWith('file:')) {
519
+ return {
520
+ driver: input.driver,
521
+ url,
522
+ ...(input.args.databaseSchemas.length > 0 ? { schemas: input.args.databaseSchemas } : {}),
523
+ };
524
+ }
525
+ if (urlHasCredentials(url)) {
526
+ const ref = await writeProjectLocalSecretReference({
527
+ projectDir: input.args.projectDir,
528
+ fileName: `${input.connectionId}-url`,
529
+ value: url,
530
+ });
531
+ return {
532
+ driver: input.driver,
533
+ url: ref,
534
+ ...(input.args.databaseSchemas.length > 0 ? { schemas: input.args.databaseSchemas } : {}),
535
+ };
536
+ }
537
+ return {
538
+ driver: input.driver,
539
+ url,
540
+ ...(input.args.databaseSchemas.length > 0 ? { schemas: input.args.databaseSchemas } : {}),
541
+ };
542
+ }
543
+ async function buildUrlConnectionConfig(input) {
544
+ if (input.args.inputMode === 'disabled' && !input.args.databaseUrl)
545
+ return null;
546
+ if (input.args.databaseUrl) {
547
+ const url = normalizeInputReference(input.args.databaseUrl);
548
+ if (urlHasCredentials(url)) {
549
+ const ref = await writeProjectLocalSecretReference({
550
+ projectDir: input.args.projectDir,
551
+ fileName: `${input.connectionId}-url`,
552
+ value: url,
553
+ });
554
+ return {
555
+ driver: input.driver,
556
+ url: ref,
557
+ ...(input.args.databaseSchemas.length > 0 ? { schemas: input.args.databaseSchemas } : {}),
558
+ };
559
+ }
560
+ return {
561
+ driver: input.driver,
562
+ url,
563
+ ...(input.args.databaseSchemas.length > 0 ? { schemas: input.args.databaseSchemas } : {}),
564
+ };
565
+ }
566
+ const label = driverLabel(input.driver);
567
+ while (true) {
568
+ const choice = await input.prompts.select({
569
+ message: `How do you want to connect to ${label}?`,
570
+ options: [
571
+ { value: 'url', label: 'Paste a connection URL' },
572
+ { value: 'fields', label: 'Enter connection details (host, port, database, user)' },
573
+ { value: 'back', label: 'Back' },
574
+ ],
575
+ });
576
+ if (choice === 'back')
577
+ return 'back';
578
+ const result = choice === 'url' ? await buildPastedUrlConnectionConfig(input) : await buildFieldsConnectionConfig(input);
579
+ if (result === 'back')
580
+ continue;
581
+ return result;
582
+ }
583
+ }
584
+ async function buildConnectionConfig(input) {
585
+ const { driver, args, prompts } = input;
586
+ if (driver === 'sqlite') {
587
+ if (args.inputMode === 'disabled' && !args.databaseUrl)
588
+ return null;
589
+ const path = args.databaseUrl ??
590
+ (await promptText(prompts, 'SQLite database file\nEnter a relative or absolute path, for example ./warehouse.sqlite.', stringConfigField(input.existingConnection, 'path')));
591
+ if (path === undefined)
592
+ return 'back';
593
+ return path ? { driver: 'sqlite', path } : null;
594
+ }
595
+ if (driver === 'postgres' || driver === 'mysql' || driver === 'clickhouse' || driver === 'sqlserver') {
596
+ return await buildUrlConnectionConfig({
597
+ driver,
598
+ connectionId: input.connectionId,
599
+ args,
600
+ prompts,
601
+ existingConnection: input.existingConnection,
602
+ });
603
+ }
604
+ if (driver === 'bigquery') {
605
+ const datasetId = await promptText(prompts, 'BigQuery dataset\nFor example analytics.', stringConfigField(input.existingConnection, 'dataset_id'));
606
+ if (datasetId === undefined)
607
+ return 'back';
608
+ const credentialsPath = await promptText(prompts, 'Path to service account JSON file', stringConfigField(input.existingConnection, 'credentials_json'));
609
+ if (credentialsPath === undefined)
610
+ return 'back';
611
+ const location = await promptText(prompts, 'BigQuery location\nPress Enter for US, or enter a location like EU.', stringConfigField(input.existingConnection, 'location') ?? 'US');
612
+ if (location === undefined)
613
+ return 'back';
614
+ if (!datasetId || !credentialsPath)
615
+ return null;
616
+ return {
617
+ driver: 'bigquery',
618
+ dataset_id: datasetId,
619
+ credentials_json: normalizeFileReference(credentialsPath),
620
+ ...(location ? { location } : {}),
621
+ };
622
+ }
623
+ if (driver === 'snowflake') {
624
+ const account = await promptText(prompts, 'Snowflake account identifier', stringConfigField(input.existingConnection, 'account'));
625
+ if (account === undefined)
626
+ return 'back';
627
+ const warehouse = await promptText(prompts, 'Snowflake warehouse\nFor example ANALYTICS_WH.', stringConfigField(input.existingConnection, 'warehouse'));
628
+ if (warehouse === undefined)
629
+ return 'back';
630
+ const database = await promptText(prompts, 'Snowflake database name', stringConfigField(input.existingConnection, 'database'));
631
+ if (database === undefined)
632
+ return 'back';
633
+ const schemaName = await promptText(prompts, 'Snowflake schema\nPress Enter for PUBLIC, or enter a schema name.', stringConfigField(input.existingConnection, 'schema_name') ?? 'PUBLIC');
634
+ if (schemaName === undefined)
635
+ return 'back';
636
+ const username = await promptText(prompts, 'Snowflake username', stringConfigField(input.existingConnection, 'username'));
637
+ if (username === undefined)
638
+ return 'back';
639
+ const passwordRef = await promptCredential({
640
+ prompts,
641
+ message: 'Snowflake password',
642
+ projectDir: args.projectDir,
643
+ connectionId: input.connectionId,
644
+ secretName: 'password', // pragma: allowlist secret
645
+ });
646
+ if (passwordRef === 'back')
647
+ return 'back'; // pragma: allowlist secret
648
+ const role = await promptText(prompts, 'Snowflake role (optional)\nPress Enter to skip.', stringConfigField(input.existingConnection, 'role'));
649
+ if (role === undefined)
650
+ return 'back';
651
+ const resolvedPasswordRef = passwordRef ?? stringConfigField(input.existingConnection, 'password');
652
+ if (!account || !warehouse || !database || !schemaName || !username || !resolvedPasswordRef)
653
+ return null;
654
+ return {
655
+ driver: 'snowflake',
656
+ authMethod: 'password',
657
+ account,
658
+ warehouse,
659
+ database,
660
+ schema_name: schemaName,
661
+ username,
662
+ password: resolvedPasswordRef,
663
+ ...(role ? { role } : {}),
664
+ };
665
+ }
666
+ throw new Error(`Unsupported database driver: ${driver}`);
667
+ }
668
+ async function maybeApplyHistoricSqlConfig(input) {
669
+ const dialect = HISTORIC_SQL_DIALECT_BY_DRIVER[input.driver];
670
+ if (!dialect) {
671
+ if (input.args.enableQueryHistory === true) {
672
+ throw new Error(`Query history setup is only supported for Snowflake, BigQuery, and Postgres, not ${driverLabel(input.driver)}.`);
673
+ }
674
+ return input.connection;
675
+ }
676
+ let enabled = input.args.enableQueryHistory === true;
677
+ if (input.args.disableQueryHistory === true) {
678
+ enabled = false;
679
+ }
680
+ else if (input.args.inputMode !== 'disabled' && input.args.enableQueryHistory !== true) {
681
+ const choice = await input.prompts.select({
682
+ message: `Enable query-history ingest for this ${driverLabel(input.driver)} connection?`,
683
+ options: [
684
+ { value: 'yes', label: 'Enable query history (recommended)' },
685
+ { value: 'no', label: 'Do not enable query history' },
686
+ { value: 'back', label: 'Back' },
687
+ ],
688
+ });
689
+ if (choice === 'back')
690
+ return 'back';
691
+ if (choice === 'yes') {
692
+ enabled = true;
693
+ }
694
+ else if (choice === 'no') {
695
+ enabled = false;
696
+ }
697
+ else {
698
+ return input.connection;
699
+ }
700
+ }
701
+ const existingRecord = queryHistoryConfigRecord(input.connection) ?? historicSqlConfigRecord(input.connection) ?? {};
702
+ const { dialect: _dialect, ...existing } = existingRecord;
703
+ if (!enabled) {
704
+ return withQueryHistoryConfig(input.connection, { ...existing, enabled: false });
705
+ }
706
+ const common = {
707
+ ...existing,
708
+ enabled: true,
709
+ filters: historicSqlFiltersForSetup(input.args.queryHistoryServiceAccountPatterns),
710
+ };
711
+ if (dialect === 'postgres') {
712
+ return withQueryHistoryConfig(input.connection, {
713
+ ...common,
714
+ minExecutions: input.args.queryHistoryMinExecutions ?? 5,
715
+ });
716
+ }
717
+ return withQueryHistoryConfig(input.connection, {
718
+ ...common,
719
+ windowDays: input.args.queryHistoryWindowDays ?? 90,
720
+ redactionPatterns: input.args.queryHistoryRedactionPatterns ?? [],
721
+ });
722
+ }
723
+ function historicSqlFiltersForSetup(patterns) {
724
+ const serviceAccountPatterns = patterns ?? [];
725
+ return {
726
+ dropTrivialProbes: true,
727
+ ...(serviceAccountPatterns.length > 0
728
+ ? {
729
+ serviceAccounts: {
730
+ patterns: serviceAccountPatterns,
731
+ mode: 'exclude',
732
+ },
733
+ }
734
+ : {}),
735
+ };
736
+ }
737
+ async function defaultTestConnection(projectDir, connectionId, io) {
738
+ return await runKtxConnection({ command: 'test', projectDir, connectionId }, io);
739
+ }
740
+ async function defaultScanConnection(projectDir, connectionId, io) {
741
+ return await runKtxScan({
742
+ command: 'run',
743
+ projectDir,
744
+ connectionId,
745
+ mode: 'structural',
746
+ detectRelationships: false,
747
+ dryRun: false,
748
+ }, io);
749
+ }
750
+ function createBufferedCommandIo() {
751
+ let stdout = '';
752
+ let stderr = '';
753
+ return {
754
+ stdout: {
755
+ isTTY: false,
756
+ write(chunk) {
757
+ stdout += chunk;
758
+ },
759
+ },
760
+ stderr: {
761
+ write(chunk) {
762
+ stderr += chunk;
763
+ },
764
+ },
765
+ stdoutText() {
766
+ return stdout;
767
+ },
768
+ stderrText() {
769
+ return stderr;
770
+ },
771
+ };
772
+ }
773
+ function flushBufferedCommandOutput(io, bufferedIo) {
774
+ const stdout = bufferedIo.stdoutText();
775
+ const stderr = bufferedIo.stderrText();
776
+ if (stdout.length > 0) {
777
+ io.stdout.write(stdout);
778
+ }
779
+ if (stderr.length > 0) {
780
+ io.stderr.write(stderr);
781
+ }
782
+ }
783
+ function writePrefixedLines(write, output) {
784
+ for (const line of output.split(/\r?\n/)) {
785
+ if (line.length > 0) {
786
+ write(`│ ${line}\n`);
787
+ }
788
+ }
789
+ }
790
+ function envWithCurrentNodeFirst(env = process.env) {
791
+ return {
792
+ ...env,
793
+ PATH: `${dirname(process.execPath)}${delimiter}${env.PATH ?? ''}`,
794
+ };
795
+ }
796
+ function errorTextProperty(error, property) {
797
+ if (typeof error !== 'object' || error === null || !(property in error)) {
798
+ return '';
799
+ }
800
+ const value = error[property];
801
+ return typeof value === 'string' ? value : '';
802
+ }
803
+ function commandFailureOutput(error) {
804
+ const stderr = errorTextProperty(error, 'stderr');
805
+ const stdout = errorTextProperty(error, 'stdout');
806
+ const message = error instanceof Error ? error.message : String(error);
807
+ return [stderr.trim(), stdout.trim(), message.trim()].filter((line) => line.length > 0).join('\n');
808
+ }
809
+ async function packageJsonScriptStatus(packageJsonPath, scriptName) {
810
+ try {
811
+ const parsed = JSON.parse(await readFile(packageJsonPath, 'utf-8'));
812
+ if (typeof parsed !== 'object' || parsed === null || !('scripts' in parsed)) {
813
+ return 'exists';
814
+ }
815
+ const scripts = parsed.scripts;
816
+ return typeof scripts === 'object' && scripts !== null && scriptName in scripts ? 'has-script' : 'exists';
817
+ }
818
+ catch {
819
+ return 'missing';
820
+ }
821
+ }
822
+ async function nativeSqliteRebuildCommand() {
823
+ let dir = dirname(fileURLToPath(import.meta.url));
824
+ let packageRoot;
825
+ while (true) {
826
+ const status = await packageJsonScriptStatus(join(dir, 'package.json'), 'native:rebuild');
827
+ if (status === 'has-script') {
828
+ return { cwd: dir, args: ['run', 'native:rebuild'] };
829
+ }
830
+ if (status === 'exists') {
831
+ packageRoot ??= dir;
832
+ }
833
+ const parent = dirname(dir);
834
+ if (parent === dir) {
835
+ return { cwd: packageRoot ?? process.cwd(), args: ['rebuild', 'better-sqlite3'] };
836
+ }
837
+ dir = parent;
838
+ }
839
+ }
840
+ async function defaultRebuildNativeSqlite(io) {
841
+ const command = await nativeSqliteRebuildCommand();
842
+ try {
843
+ await execFileAsync('pnpm', command.args, {
844
+ cwd: command.cwd,
845
+ env: envWithCurrentNodeFirst(),
846
+ maxBuffer: 1024 * 1024 * 16,
847
+ });
848
+ return 0;
849
+ }
850
+ catch (error) {
851
+ writePrefixedLines((chunk) => io.stderr.write(chunk), commandFailureOutput(error));
852
+ return typeof error?.code === 'number' ? error.code : 1;
853
+ }
854
+ }
855
+ function flushPrefixedBufferedCommandOutput(io, bufferedIo) {
856
+ writePrefixedLines((chunk) => io.stdout.write(chunk), bufferedIo.stdoutText());
857
+ writePrefixedLines((chunk) => io.stderr.write(chunk), bufferedIo.stderrText());
858
+ }
859
+ function nativeSqliteAbiMismatchDetail(output) {
860
+ const mentionsBetterSqlite = /\bbetter-sqlite3\b|better_sqlite3/i.test(output);
861
+ const mentionsAbiMismatch = /compiled against a different Node\.js version|NODE_MODULE_VERSION/i.test(output);
862
+ if (!mentionsBetterSqlite || !mentionsAbiMismatch) {
863
+ return null;
864
+ }
865
+ const versionMatch = output.match(/compiled against[\s\S]*?NODE_MODULE_VERSION\s+(\d+)[\s\S]*?requires[\s\S]*?NODE_MODULE_VERSION\s+(\d+)/i);
866
+ if (!versionMatch) {
867
+ return 'better-sqlite3 native module could not load for the current Node.js runtime.';
868
+ }
869
+ return `better-sqlite3 was compiled for NODE_MODULE_VERSION ${versionMatch[1]}, but this Node.js requires ${versionMatch[2]}.`;
870
+ }
871
+ function readOutputValue(output, label) {
872
+ const escapedLabel = label.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
873
+ const match = new RegExp(`^\\s*${escapedLabel}:\\s*(.+?)\\s*$`, 'im').exec(output);
874
+ return match?.[1]?.trim();
875
+ }
876
+ function summarizeScanChanges(output) {
877
+ const newTables = Number(readOutputValue(output, 'New tables') ?? NaN);
878
+ const changedTables = Number(readOutputValue(output, 'Changed tables') ?? NaN);
879
+ const removedTables = Number(readOutputValue(output, 'Removed tables') ?? NaN);
880
+ const parts = [];
881
+ if (Number.isFinite(newTables) && newTables > 0) {
882
+ parts.push(`${newTables} new ${newTables === 1 ? 'table' : 'tables'}`);
883
+ }
884
+ if (Number.isFinite(changedTables) && changedTables > 0) {
885
+ parts.push(`${changedTables} changed ${changedTables === 1 ? 'table' : 'tables'}`);
886
+ }
887
+ if (Number.isFinite(removedTables) && removedTables > 0) {
888
+ parts.push(`${removedTables} removed ${removedTables === 1 ? 'table' : 'tables'}`);
889
+ }
890
+ if (parts.length > 0) {
891
+ return parts.join(' · ');
892
+ }
893
+ const semanticComparison = /^\s*Semantic layer comparison found\s+(.+?)\s*$/im.exec(output)?.[1]?.trim();
894
+ if (semanticComparison) {
895
+ return semanticComparison;
896
+ }
897
+ return 'no table changes';
898
+ }
899
+ function writeSetupSection(io, title, lines) {
900
+ io.stdout.write(`◇ ${title}\n`);
901
+ for (const line of lines) {
902
+ io.stdout.write(`│ ${line}\n`);
903
+ }
904
+ io.stdout.write('│\n');
905
+ }
906
+ async function writeConnectionConfig(input) {
907
+ const project = await loadKtxProject({ projectDir: input.projectDir });
908
+ const migratedConnections = Object.fromEntries(Object.entries(project.config.connections).map(([connectionId, connection]) => [
909
+ connectionId,
910
+ migrateLegacyHistoricSqlConnection(connection),
911
+ ]));
912
+ const nextConnection = migrateLegacyHistoricSqlConnection(input.connection);
913
+ const config = {
914
+ ...project.config,
915
+ connections: {
916
+ ...migratedConnections,
917
+ [input.connectionId]: nextConnection,
918
+ },
919
+ };
920
+ await writeFile(project.configPath, serializeKtxProjectConfig(config), 'utf-8');
921
+ const queryHistory = queryHistoryConfigRecord(nextConnection);
922
+ if (queryHistory?.enabled === true) {
923
+ await ensureHistoricSqlIngestDefaults(input.projectDir);
924
+ }
925
+ }
926
+ async function createConnectionConfigRollback(projectDir, connectionId) {
927
+ const project = await loadKtxProject({ projectDir });
928
+ const previousConnection = project.config.connections[connectionId];
929
+ const hadPreviousConnection = previousConnection !== undefined;
930
+ return async () => {
931
+ const latest = await loadKtxProject({ projectDir });
932
+ const connections = { ...latest.config.connections };
933
+ if (hadPreviousConnection) {
934
+ connections[connectionId] = previousConnection;
935
+ }
936
+ else {
937
+ delete connections[connectionId];
938
+ }
939
+ await writeFile(latest.configPath, serializeKtxProjectConfig({
940
+ ...latest.config,
941
+ connections,
942
+ }), 'utf-8');
943
+ };
944
+ }
945
+ function withExistingPrimaryEditPromptDefaults(input) {
946
+ const merged = { ...input.next };
947
+ const spec = SCOPE_DISCOVERY_SPECS[input.driver];
948
+ if (spec) {
949
+ const nextArray = input.next[spec.configArrayField];
950
+ const previousArray = input.previous[spec.configArrayField];
951
+ if (!(Array.isArray(nextArray) && nextArray.length > 0) &&
952
+ Array.isArray(previousArray) &&
953
+ previousArray.length > 0) {
954
+ delete merged[spec.configSingleField];
955
+ merged[spec.configArrayField] = previousArray;
956
+ }
957
+ else if (!Object.hasOwn(input.next, spec.configArrayField) && !Object.hasOwn(input.next, spec.configSingleField)) {
958
+ const previousSingle = input.previous[spec.configSingleField];
959
+ if (typeof previousSingle === 'string' && previousSingle.trim().length > 0) {
960
+ merged[spec.configSingleField] = previousSingle;
961
+ }
962
+ }
963
+ }
964
+ if (!Object.hasOwn(input.next, 'enabled_tables') && Array.isArray(input.previous.enabled_tables)) {
965
+ merged.enabled_tables = input.previous.enabled_tables;
966
+ }
967
+ return merged;
968
+ }
969
+ function configuredScopeValues(connection, spec) {
970
+ if (!connection)
971
+ return [];
972
+ const arrayVal = connection[spec.configArrayField];
973
+ if (Array.isArray(arrayVal)) {
974
+ return arrayVal
975
+ .filter((v) => typeof v === 'string' && v.trim().length > 0)
976
+ .map((v) => v.trim());
977
+ }
978
+ const singleVal = connection[spec.configSingleField];
979
+ return typeof singleVal === 'string' && singleVal.trim().length > 0 ? [singleVal.trim()] : [];
980
+ }
981
+ async function writeScopeConfig(input) {
982
+ const project = await loadKtxProject({ projectDir: input.projectDir });
983
+ const connection = project.config.connections[input.connectionId];
984
+ if (!connection)
985
+ return;
986
+ const cleaned = Object.fromEntries(Object.entries(connection).filter(([key]) => key !== input.spec.configSingleField));
987
+ await writeConnectionConfig({
988
+ projectDir: input.projectDir,
989
+ connectionId: input.connectionId,
990
+ connection: {
991
+ ...cleaned,
992
+ [input.spec.configArrayField]: unique(input.values),
993
+ },
994
+ });
995
+ }
996
+ async function maybeConfigureDatabaseScope(input) {
997
+ const project = await loadKtxProject({ projectDir: input.projectDir });
998
+ const connection = project.config.connections[input.connectionId];
999
+ const driver = normalizeDriver(connection?.driver);
1000
+ if (!driver || driver === 'sqlite')
1001
+ return 'ready';
1002
+ const spec = SCOPE_DISCOVERY_SPECS[driver];
1003
+ const existingTables = connection?.enabled_tables;
1004
+ const hasExistingTables = Array.isArray(existingTables) && existingTables.length > 0;
1005
+ const existingScope = spec ? configuredScopeValues(connection, spec) : [];
1006
+ const hasExistingScope = !spec || existingScope.length > 0;
1007
+ if (hasExistingTables && hasExistingScope && input.forcePrompt !== true) {
1008
+ return 'ready';
1009
+ }
1010
+ const cliSchemas = input.args.databaseSchemas;
1011
+ if (input.args.inputMode === 'disabled') {
1012
+ if (spec) {
1013
+ let scopeToWrite = cliSchemas;
1014
+ if (scopeToWrite.length === 0) {
1015
+ try {
1016
+ scopeToWrite = unique(await (input.deps.listSchemas ?? defaultListSchemas)(input.projectDir, input.connectionId));
1017
+ }
1018
+ catch (error) {
1019
+ const detail = error instanceof Error ? error.message : String(error);
1020
+ input.io.stderr.write(`Could not discover ${spec.promptLabel.toLowerCase()} for ${input.connectionId}; ${detail}\n`);
1021
+ return 'ready';
1022
+ }
1023
+ }
1024
+ if (scopeToWrite.length > 0) {
1025
+ await writeScopeConfig({
1026
+ projectDir: input.projectDir,
1027
+ connectionId: input.connectionId,
1028
+ values: scopeToWrite,
1029
+ spec,
1030
+ });
1031
+ const capitalNounPlural = spec.nounPlural[0].toUpperCase() + spec.nounPlural.slice(1);
1032
+ writeSetupSection(input.io, `${capitalNounPlural} saved for ${input.connectionId}`, [
1033
+ `✓ ${scopeToWrite.join(', ')}`,
1034
+ ]);
1035
+ }
1036
+ }
1037
+ return 'ready';
1038
+ }
1039
+ if (spec && cliSchemas.length > 0) {
1040
+ await writeScopeConfig({
1041
+ projectDir: input.projectDir,
1042
+ connectionId: input.connectionId,
1043
+ values: cliSchemas,
1044
+ spec,
1045
+ });
1046
+ }
1047
+ writeSetupSection(input.io, 'Discovering tables', [
1048
+ `Connecting to ${input.connectionId}…`,
1049
+ ]);
1050
+ const schemasFilter = await (async () => {
1051
+ if (cliSchemas.length > 0)
1052
+ return cliSchemas;
1053
+ if (!spec)
1054
+ return [];
1055
+ try {
1056
+ return unique(await (input.deps.listSchemas ?? defaultListSchemas)(input.projectDir, input.connectionId));
1057
+ }
1058
+ catch (error) {
1059
+ const detail = error instanceof Error ? error.message : String(error);
1060
+ input.io.stderr.write(`Could not discover ${spec.promptLabel.toLowerCase()} for ${input.connectionId}; ${detail}\n`);
1061
+ return [];
1062
+ }
1063
+ })();
1064
+ let discovered;
1065
+ try {
1066
+ discovered = await (input.deps.listTables ?? defaultListTables)(input.projectDir, input.connectionId, schemasFilter.length > 0 ? schemasFilter : undefined);
1067
+ }
1068
+ catch (error) {
1069
+ const detail = error instanceof Error ? error.message : String(error);
1070
+ input.io.stderr.write(input.forcePrompt === true
1071
+ ? `Could not discover tables for ${input.connectionId}; edit was not saved. ${detail}\n`
1072
+ : `Could not discover tables for ${input.connectionId}; continuing without table filter. ${detail}\n`);
1073
+ return input.forcePrompt === true ? 'failed' : 'ready';
1074
+ }
1075
+ if (discovered.length === 0) {
1076
+ if (input.forcePrompt === true) {
1077
+ input.io.stderr.write(`No tables discovered for ${input.connectionId}; edit was not saved.\n`);
1078
+ }
1079
+ return input.forcePrompt === true ? 'failed' : 'ready';
1080
+ }
1081
+ const allQualified = discovered.map((t) => `${t.schema}.${t.name}`);
1082
+ const schemasInDiscovery = unique(discovered.map((t) => t.schema));
1083
+ const defaultSchemas = (() => {
1084
+ if (cliSchemas.length > 0)
1085
+ return cliSchemas;
1086
+ if (!spec)
1087
+ return schemasInDiscovery;
1088
+ return spec.defaultSelection(schemasInDiscovery);
1089
+ })();
1090
+ const existingEnabled = hasExistingTables && input.forcePrompt === true
1091
+ ? (existingTables ?? []).filter((table) => typeof table === 'string' && allQualified.includes(table))
1092
+ : [];
1093
+ let activeSchemas;
1094
+ let enabledTables;
1095
+ if (discovered.length === 1) {
1096
+ enabledTables = allQualified;
1097
+ activeSchemas = spec ? schemasInDiscovery : [];
1098
+ }
1099
+ else {
1100
+ const pickResult = await (input.deps.pickDatabaseScope ?? defaultPickDatabaseScope)({
1101
+ connectionId: input.connectionId,
1102
+ schemaNoun: spec?.noun ?? 'schema',
1103
+ schemaNounPlural: spec?.nounPlural ?? 'schemas',
1104
+ discovered,
1105
+ existing: { enabledTables: existingEnabled },
1106
+ defaultSchemas,
1107
+ supportsSchemaScope: spec !== undefined,
1108
+ }, input.io);
1109
+ if (pickResult.kind === 'back') {
1110
+ return 'back';
1111
+ }
1112
+ enabledTables = pickResult.enabledTables;
1113
+ activeSchemas = pickResult.activeSchemas;
1114
+ }
1115
+ if (spec) {
1116
+ await writeScopeConfig({
1117
+ projectDir: input.projectDir,
1118
+ connectionId: input.connectionId,
1119
+ values: activeSchemas,
1120
+ spec,
1121
+ });
1122
+ }
1123
+ const refreshedProject = await loadKtxProject({ projectDir: input.projectDir });
1124
+ const currentConnection = refreshedProject.config.connections[input.connectionId];
1125
+ if (!currentConnection)
1126
+ return 'ready';
1127
+ await writeConnectionConfig({
1128
+ projectDir: input.projectDir,
1129
+ connectionId: input.connectionId,
1130
+ connection: { ...currentConnection, enabled_tables: enabledTables },
1131
+ });
1132
+ if (spec && activeSchemas.length > 0) {
1133
+ const capitalNounPlural = spec.nounPlural[0].toUpperCase() + spec.nounPlural.slice(1);
1134
+ writeSetupSection(input.io, `${capitalNounPlural} saved for ${input.connectionId}`, [
1135
+ `✓ ${activeSchemas.join(', ')}`,
1136
+ ]);
1137
+ }
1138
+ writeSetupSection(input.io, `Tables enabled for ${input.connectionId}`, [
1139
+ `✓ ${enabledTables.length}/${discovered.length} tables enabled`,
1140
+ ]);
1141
+ return 'ready';
1142
+ }
1143
+ async function ensureHistoricSqlIngestDefaults(projectDir) {
1144
+ const project = await loadKtxProject({ projectDir });
1145
+ const maxConcurrency = Math.max(project.config.ingest.workUnits.maxConcurrency, HISTORIC_SQL_WORK_UNIT_MAX_CONCURRENCY);
1146
+ if (maxConcurrency === project.config.ingest.workUnits.maxConcurrency) {
1147
+ return;
1148
+ }
1149
+ await writeFile(project.configPath, serializeKtxProjectConfig({
1150
+ ...project.config,
1151
+ ingest: {
1152
+ ...project.config.ingest,
1153
+ workUnits: {
1154
+ ...project.config.ingest.workUnits,
1155
+ maxConcurrency,
1156
+ },
1157
+ },
1158
+ }), 'utf-8');
1159
+ }
1160
+ async function markDatabasesComplete(projectDir, connectionIds) {
1161
+ const project = await loadKtxProject({ projectDir });
1162
+ const config = setKtxSetupDatabaseConnectionIds({
1163
+ ...project.config,
1164
+ connections: Object.fromEntries(Object.entries(project.config.connections).map(([connectionId, connection]) => [
1165
+ connectionId,
1166
+ migrateLegacyHistoricSqlConnection(connection),
1167
+ ])),
1168
+ }, unique(connectionIds));
1169
+ await writeFile(project.configPath, serializeKtxProjectConfig(config), 'utf-8');
1170
+ await markKtxSetupStateStepComplete(projectDir, 'databases');
1171
+ }
1172
+ async function maybeRunHistoricSqlSetupProbe(input) {
1173
+ const project = await loadKtxProject({ projectDir: input.projectDir });
1174
+ const connection = project.config.connections[input.connectionId];
1175
+ const queryHistory = queryHistoryConfigRecord(connection) ?? historicSqlConfigRecord(connection);
1176
+ const driver = normalizeDriver(connection?.driver);
1177
+ if (queryHistory?.enabled !== true || driver !== 'postgres') {
1178
+ return;
1179
+ }
1180
+ input.io.stdout.write('│ Query history probe...\n');
1181
+ const probe = input.deps.historicSqlProbe ?? defaultHistoricSqlProbe;
1182
+ const result = await probe({
1183
+ projectDir: input.projectDir,
1184
+ connectionId: input.connectionId,
1185
+ dialect: 'postgres',
1186
+ });
1187
+ for (const line of result.lines) {
1188
+ input.io.stdout.write(`│${line}\n`);
1189
+ }
1190
+ if (!result.ok) {
1191
+ input.io.stdout.write('│ Setup written; first ingest run will fail until fixed.\n');
1192
+ }
1193
+ }
1194
+ async function applyHistoricSqlConfigToExistingConnection(input) {
1195
+ if (input.args.inputMode === 'disabled' &&
1196
+ input.args.enableQueryHistory !== true &&
1197
+ input.args.disableQueryHistory !== true) {
1198
+ return;
1199
+ }
1200
+ const project = await loadKtxProject({ projectDir: input.projectDir });
1201
+ const existing = project.config.connections[input.connectionId];
1202
+ const driver = normalizeDriver(existing?.driver);
1203
+ if (!existing || !driver) {
1204
+ return;
1205
+ }
1206
+ const withHistoricSql = await maybeApplyHistoricSqlConfig({
1207
+ connection: existing,
1208
+ driver,
1209
+ args: input.args,
1210
+ prompts: input.prompts,
1211
+ });
1212
+ if (withHistoricSql === 'back')
1213
+ return 'back';
1214
+ const withContextDepth = await maybeApplyContextDepthConfig({
1215
+ projectDir: input.projectDir,
1216
+ connectionId: input.connectionId,
1217
+ connection: withHistoricSql,
1218
+ args: input.args,
1219
+ prompts: input.prompts,
1220
+ });
1221
+ if (withContextDepth === 'back')
1222
+ return 'back';
1223
+ await writeConnectionConfig({
1224
+ projectDir: input.projectDir,
1225
+ connectionId: input.connectionId,
1226
+ connection: withContextDepth,
1227
+ });
1228
+ }
1229
+ async function maybeApplyContextDepthConfig(input) {
1230
+ const project = await loadKtxProject({ projectDir: input.projectDir });
1231
+ return await applySetupDatabaseContextDepth({
1232
+ project: {
1233
+ ...project,
1234
+ config: {
1235
+ ...project.config,
1236
+ connections: {
1237
+ ...project.config.connections,
1238
+ [input.connectionId]: input.connection,
1239
+ },
1240
+ },
1241
+ },
1242
+ connection: input.connection,
1243
+ args: {
1244
+ inputMode: input.args.inputMode === 'disabled' || input.args.databaseUrl ? 'disabled' : input.args.inputMode,
1245
+ },
1246
+ prompts: input.prompts,
1247
+ });
1248
+ }
1249
+ async function validateAndScanConnection(input) {
1250
+ const testConnection = input.deps.testConnection ?? defaultTestConnection;
1251
+ const scanConnection = input.deps.scanConnection ?? defaultScanConnection;
1252
+ const project = await loadKtxProject({ projectDir: input.projectDir });
1253
+ const configuredDriver = normalizeDriver(project.config.connections[input.connectionId]?.driver);
1254
+ const configuredDriverLabel = configuredDriver ? driverLabel(configuredDriver) : undefined;
1255
+ const testIo = createBufferedCommandIo();
1256
+ const testCode = await testConnection(input.projectDir, input.connectionId, testIo);
1257
+ if (testCode !== 0) {
1258
+ flushBufferedCommandOutput(input.io, testIo);
1259
+ input.io.stderr.write(`Connection test failed for ${input.connectionId}.\n`);
1260
+ return 'failed';
1261
+ }
1262
+ const testOutput = testIo.stdoutText();
1263
+ const outputDriver = normalizeDriver(readOutputValue(testOutput, 'Driver'));
1264
+ const driverDisplay = outputDriver ? driverLabel(outputDriver) : (configuredDriverLabel ?? 'Unknown driver');
1265
+ const testLines = ['✓ Connection test passed', `Driver: ${driverDisplay}`];
1266
+ writeSetupSection(input.io, `Testing ${input.connectionId}`, testLines);
1267
+ const scopeStatus = await maybeConfigureDatabaseScope({ ...input, forcePrompt: input.forceScopeAndTables });
1268
+ if (scopeStatus !== 'ready') {
1269
+ return scopeStatus;
1270
+ }
1271
+ await maybeRunHistoricSqlSetupProbe({
1272
+ projectDir: input.projectDir,
1273
+ connectionId: input.connectionId,
1274
+ io: input.io,
1275
+ deps: input.deps,
1276
+ });
1277
+ writeSetupSection(input.io, `Building schema context for ${input.connectionId}`, [
1278
+ 'Running fast database ingest…',
1279
+ ]);
1280
+ let scanIo = createBufferedCommandIo();
1281
+ let scanCode = await scanConnection(input.projectDir, input.connectionId, scanIo);
1282
+ if (scanCode !== 0) {
1283
+ const nativeSqliteDetail = nativeSqliteAbiMismatchDetail(`${scanIo.stderrText()}\n${scanIo.stdoutText()}`);
1284
+ if (nativeSqliteDetail) {
1285
+ writePrefixedLines((chunk) => input.io.stderr.write(chunk), [
1286
+ `Fast database ingest failed for ${input.connectionId}.`,
1287
+ 'Native SQLite is built for a different Node.js ABI.',
1288
+ `Detail: ${nativeSqliteDetail}`,
1289
+ 'Rebuilding Native SQLite with pnpm run native:rebuild…',
1290
+ ].join('\n'));
1291
+ const rebuildNativeSqlite = input.deps.rebuildNativeSqlite ?? defaultRebuildNativeSqlite;
1292
+ const rebuildCode = await rebuildNativeSqlite(input.io);
1293
+ if (rebuildCode === 0) {
1294
+ writePrefixedLines((chunk) => input.io.stderr.write(chunk), 'Native SQLite rebuild complete. Retrying fast database ingest…');
1295
+ const retryScanIo = createBufferedCommandIo();
1296
+ scanCode = await scanConnection(input.projectDir, input.connectionId, retryScanIo);
1297
+ scanIo = retryScanIo;
1298
+ }
1299
+ if (scanCode !== 0) {
1300
+ writePrefixedLines((chunk) => input.io.stderr.write(chunk), [
1301
+ rebuildCode === 0
1302
+ ? `Fast database ingest still failed for ${input.connectionId} after rebuilding Native SQLite.`
1303
+ : `Native SQLite rebuild failed for ${input.connectionId}.`,
1304
+ 'Fix: pnpm run native:rebuild',
1305
+ `Retry: ktx ingest ${input.connectionId} --project-dir ${input.projectDir} --fast`,
1306
+ ].join('\n'));
1307
+ }
1308
+ }
1309
+ else {
1310
+ flushPrefixedBufferedCommandOutput(input.io, scanIo);
1311
+ writePrefixedLines((chunk) => input.io.stderr.write(chunk), [
1312
+ `Fast database ingest failed for ${input.connectionId}.`,
1313
+ `Debug command: ktx ingest ${input.connectionId} --project-dir ${input.projectDir} --fast --debug`,
1314
+ ].join('\n'));
1315
+ }
1316
+ if (scanCode !== 0) {
1317
+ return 'failed';
1318
+ }
1319
+ }
1320
+ const scanOutput = scanIo.stdoutText();
1321
+ writeSetupSection(input.io, `Schema context complete for ${input.connectionId}`, [`Changes: ${summarizeScanChanges(scanOutput)}`]);
1322
+ writeSetupSection(input.io, 'Database ready', [
1323
+ `${input.connectionId} · ${driverDisplay} · schema context complete`,
1324
+ ]);
1325
+ return 'ready';
1326
+ }
1327
+ async function chooseDrivers(args, io, prompts, options) {
1328
+ if (args.databaseDrivers && args.databaseDrivers.length > 0) {
1329
+ return [...new Set(args.databaseDrivers)];
1330
+ }
1331
+ if (args.databaseConnectionIds && args.databaseConnectionIds.length > 0) {
1332
+ return [];
1333
+ }
1334
+ if (args.inputMode === 'disabled') {
1335
+ io.stderr.write('KTX cannot work without a database. Pass --database or --database-connection-id, or pass --skip-databases to leave setup incomplete.\n');
1336
+ return 'missing-input';
1337
+ }
1338
+ const initialValues = unique(options?.initialDrivers ?? []);
1339
+ const choices = await prompts.multiselect({
1340
+ message: withMultiselectNavigation('Which databases should KTX connect to?'),
1341
+ options: [...DRIVER_OPTIONS],
1342
+ ...(initialValues.length > 0 ? { initialValues } : {}),
1343
+ required: true,
1344
+ });
1345
+ if (choices.includes('back')) {
1346
+ return 'back';
1347
+ }
1348
+ return choices;
1349
+ }
1350
+ async function chooseConnectionIdForDriver(input) {
1351
+ if (input.args.databaseConnectionId) {
1352
+ assertSafeDatabaseConnectionId(input.args.databaseConnectionId);
1353
+ return { kind: 'new', connectionId: input.args.databaseConnectionId };
1354
+ }
1355
+ if (input.args.inputMode === 'disabled') {
1356
+ if (!input.args.databaseConnectionId)
1357
+ return 'missing-input';
1358
+ assertSafeDatabaseConnectionId(input.args.databaseConnectionId);
1359
+ return { kind: 'new', connectionId: input.args.databaseConnectionId };
1360
+ }
1361
+ const existingIds = existingConnectionIdsByDriver(input.connections, input.driver);
1362
+ const defaultId = defaultConnectionIdForDriver(input.connections, input.driver);
1363
+ const label = driverLabel(input.driver);
1364
+ if (existingIds.length === 0) {
1365
+ const entered = await input.prompts.text({
1366
+ message: withTextInputNavigation(connectionNamePrompt(label)),
1367
+ placeholder: defaultId,
1368
+ initialValue: defaultId,
1369
+ });
1370
+ if (entered === undefined)
1371
+ return 'back';
1372
+ const connectionId = entered.trim() || defaultId;
1373
+ assertSafeDatabaseConnectionId(connectionId);
1374
+ return connectionId ? { kind: 'new', connectionId } : 'missing-input';
1375
+ }
1376
+ while (true) {
1377
+ const choice = await input.prompts.select({
1378
+ message: `Configure ${label}`,
1379
+ options: [
1380
+ ...existingIds.map((connectionId) => ({
1381
+ value: `existing:${connectionId}`,
1382
+ label: `Keep existing ${label} connection: ${connectionId}`,
1383
+ })),
1384
+ ...existingIds.map((connectionId) => ({
1385
+ value: `edit:${connectionId}`,
1386
+ label: `Edit ${label} connection: ${connectionId}`,
1387
+ })),
1388
+ { value: 'new', label: `Add another ${label} connection` },
1389
+ { value: 'back', label: 'Back' },
1390
+ ],
1391
+ });
1392
+ if (choice === 'back')
1393
+ return 'back';
1394
+ if (choice.startsWith('existing:'))
1395
+ return { kind: 'existing', connectionId: choice.slice('existing:'.length) };
1396
+ if (choice.startsWith('edit:'))
1397
+ return { kind: 'edit', connectionId: choice.slice('edit:'.length) };
1398
+ const entered = await input.prompts.text({
1399
+ message: withTextInputNavigation(connectionNamePrompt(label)),
1400
+ placeholder: defaultId,
1401
+ initialValue: defaultId,
1402
+ });
1403
+ if (entered === undefined)
1404
+ continue;
1405
+ const connectionId = entered.trim() || defaultId;
1406
+ assertSafeDatabaseConnectionId(connectionId);
1407
+ return connectionId ? { kind: 'new', connectionId } : 'missing-input';
1408
+ }
1409
+ }
1410
+ async function choosePrimarySourceToEdit(input) {
1411
+ const project = await loadKtxProject({ projectDir: input.projectDir });
1412
+ const options = input.connectionIds
1413
+ .map((connectionId) => {
1414
+ const driver = normalizeDriver(project.config.connections[connectionId]?.driver);
1415
+ if (!driver)
1416
+ return null;
1417
+ return { value: connectionId, label: `${connectionId} (${driverLabel(driver)})` };
1418
+ })
1419
+ .filter((option) => option !== null);
1420
+ if (options.length === 0)
1421
+ return 'back';
1422
+ const choice = await input.prompts.select({
1423
+ message: 'Database to edit',
1424
+ options: [...options, { value: 'back', label: 'Back' }],
1425
+ });
1426
+ return choice === 'back' ? 'back' : choice;
1427
+ }
1428
+ async function runPrimarySourceFullEdit(input) {
1429
+ const project = await loadKtxProject({ projectDir: input.projectDir });
1430
+ const existing = project.config.connections[input.connectionId];
1431
+ const driver = normalizeDriver(existing?.driver);
1432
+ if (!existing || !driver) {
1433
+ input.io.stderr.write(`Connection "${input.connectionId}" is not a configured database.\n`);
1434
+ return 'failed';
1435
+ }
1436
+ const rollback = await createConnectionConfigRollback(input.projectDir, input.connectionId);
1437
+ const replacement = await buildConnectionConfig({
1438
+ driver,
1439
+ connectionId: input.connectionId,
1440
+ args: input.args,
1441
+ prompts: input.prompts,
1442
+ existingConnection: existing,
1443
+ });
1444
+ if (replacement === 'back') {
1445
+ await rollback();
1446
+ return 'back';
1447
+ }
1448
+ if (!replacement) {
1449
+ await rollback();
1450
+ return 'failed';
1451
+ }
1452
+ const withHistoricSql = await maybeApplyHistoricSqlConfig({
1453
+ connection: replacement,
1454
+ driver,
1455
+ args: input.args,
1456
+ prompts: input.prompts,
1457
+ });
1458
+ if (withHistoricSql === 'back') {
1459
+ await rollback();
1460
+ return 'back';
1461
+ }
1462
+ await writeConnectionConfig({
1463
+ projectDir: input.projectDir,
1464
+ connectionId: input.connectionId,
1465
+ connection: withExistingPrimaryEditPromptDefaults({
1466
+ previous: existing,
1467
+ next: {
1468
+ ...withHistoricSql,
1469
+ ...(!Object.hasOwn(withHistoricSql, 'historicSql') && existing.historicSql !== undefined
1470
+ ? { historicSql: existing.historicSql }
1471
+ : {}),
1472
+ },
1473
+ driver,
1474
+ }),
1475
+ });
1476
+ const validated = await validateAndScanConnection({
1477
+ projectDir: input.projectDir,
1478
+ connectionId: input.connectionId,
1479
+ io: input.io,
1480
+ deps: input.deps,
1481
+ args: input.args,
1482
+ prompts: input.prompts,
1483
+ forceScopeAndTables: true,
1484
+ });
1485
+ if (validated !== 'ready') {
1486
+ await rollback();
1487
+ return validated;
1488
+ }
1489
+ return 'ready';
1490
+ }
1491
+ export async function runKtxSetupDatabasesStep(args, io, deps = {}) {
1492
+ if (args.skipDatabases) {
1493
+ io.stdout.write('│ Database setup skipped. KTX cannot work until you add a database.\n');
1494
+ return { status: 'skipped', projectDir: args.projectDir };
1495
+ }
1496
+ const prompts = deps.prompts ?? createPromptAdapter();
1497
+ if (args.databaseConnectionIds && args.databaseConnectionIds.length > 0) {
1498
+ const selectedConnectionIds = [];
1499
+ for (const connectionId of unique(args.databaseConnectionIds)) {
1500
+ const historicSqlResult = await applyHistoricSqlConfigToExistingConnection({
1501
+ projectDir: args.projectDir,
1502
+ connectionId,
1503
+ args,
1504
+ prompts,
1505
+ });
1506
+ if (historicSqlResult === 'back')
1507
+ return { status: 'back', projectDir: args.projectDir };
1508
+ const setupStatus = await validateAndScanConnection({
1509
+ projectDir: args.projectDir,
1510
+ connectionId,
1511
+ io,
1512
+ deps,
1513
+ args,
1514
+ prompts,
1515
+ });
1516
+ if (setupStatus === 'back') {
1517
+ return { status: 'back', projectDir: args.projectDir };
1518
+ }
1519
+ if (setupStatus === 'failed') {
1520
+ return { status: 'failed', projectDir: args.projectDir };
1521
+ }
1522
+ selectedConnectionIds.push(connectionId);
1523
+ }
1524
+ await markDatabasesComplete(args.projectDir, selectedConnectionIds);
1525
+ return { status: 'ready', projectDir: args.projectDir, connectionIds: selectedConnectionIds };
1526
+ }
1527
+ const canReturnToDriverSelection = args.databaseDrivers === undefined || args.databaseDrivers.length === 0;
1528
+ const initialProject = await loadKtxProject({ projectDir: args.projectDir });
1529
+ const selectedConnectionIds = args.inputMode !== 'disabled' && canReturnToDriverSelection
1530
+ ? configuredPrimaryConnectionIds(initialProject.config.connections, initialProject.config.setup?.database_connection_ids)
1531
+ : [];
1532
+ let showConfiguredPrimaryMenu = selectedConnectionIds.length > 0;
1533
+ while (true) {
1534
+ if (showConfiguredPrimaryMenu) {
1535
+ const action = await prompts.select(configuredPrimarySourcesPrompt(selectedConnectionIds));
1536
+ if (action === 'continue' || action === 'back') {
1537
+ await markDatabasesComplete(args.projectDir, selectedConnectionIds);
1538
+ return { status: 'ready', projectDir: args.projectDir, connectionIds: selectedConnectionIds };
1539
+ }
1540
+ if (action === 'edit') {
1541
+ const connectionId = await choosePrimarySourceToEdit({
1542
+ projectDir: args.projectDir,
1543
+ connectionIds: selectedConnectionIds,
1544
+ prompts,
1545
+ });
1546
+ if (connectionId === 'back') {
1547
+ showConfiguredPrimaryMenu = true;
1548
+ continue;
1549
+ }
1550
+ const editResult = await runPrimarySourceFullEdit({
1551
+ projectDir: args.projectDir,
1552
+ connectionId,
1553
+ args,
1554
+ prompts,
1555
+ io,
1556
+ deps,
1557
+ });
1558
+ if (editResult === 'back') {
1559
+ showConfiguredPrimaryMenu = true;
1560
+ continue;
1561
+ }
1562
+ if (editResult === 'failed') {
1563
+ return { status: 'failed', projectDir: args.projectDir };
1564
+ }
1565
+ pushUniqueConnectionId(selectedConnectionIds, connectionId);
1566
+ showConfiguredPrimaryMenu = true;
1567
+ continue;
1568
+ }
1569
+ }
1570
+ showConfiguredPrimaryMenu = false;
1571
+ const driverProject = await loadKtxProject({ projectDir: args.projectDir });
1572
+ const drivers = await chooseDrivers(args, io, prompts, {
1573
+ hasPrimarySources: selectedConnectionIds.length > 0,
1574
+ initialDrivers: configuredPrimaryDrivers(driverProject.config.connections, selectedConnectionIds),
1575
+ });
1576
+ if (drivers === 'back') {
1577
+ if (selectedConnectionIds.length > 0 && canReturnToDriverSelection && args.inputMode !== 'disabled') {
1578
+ showConfiguredPrimaryMenu = true;
1579
+ continue;
1580
+ }
1581
+ return { status: 'back', projectDir: args.projectDir };
1582
+ }
1583
+ if (drivers === 'missing-input')
1584
+ return { status: 'missing-input', projectDir: args.projectDir };
1585
+ if (drivers.length === 0) {
1586
+ await markDatabasesComplete(args.projectDir, []);
1587
+ io.stdout.write('│ KTX cannot work without a database.\n');
1588
+ return { status: 'skipped', projectDir: args.projectDir };
1589
+ }
1590
+ let returnToDriverSelection = false;
1591
+ for (const driver of drivers) {
1592
+ const project = await loadKtxProject({ projectDir: args.projectDir });
1593
+ let connectionChoice;
1594
+ try {
1595
+ connectionChoice = await chooseConnectionIdForDriver({
1596
+ driver,
1597
+ connections: project.config.connections,
1598
+ args,
1599
+ prompts,
1600
+ });
1601
+ }
1602
+ catch (error) {
1603
+ io.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
1604
+ return { status: 'failed', projectDir: args.projectDir };
1605
+ }
1606
+ if (connectionChoice === 'back') {
1607
+ if (!canReturnToDriverSelection)
1608
+ return { status: 'back', projectDir: args.projectDir };
1609
+ returnToDriverSelection = true;
1610
+ break;
1611
+ }
1612
+ if (connectionChoice === 'missing-input') {
1613
+ io.stderr.write('Missing database connection id: pass --database-connection-id.\n');
1614
+ return { status: 'missing-input', projectDir: args.projectDir };
1615
+ }
1616
+ let connectionAlreadyValidated = false;
1617
+ if (connectionChoice.kind === 'edit') {
1618
+ const editResult = await runPrimarySourceFullEdit({
1619
+ projectDir: args.projectDir,
1620
+ connectionId: connectionChoice.connectionId,
1621
+ args,
1622
+ prompts,
1623
+ io,
1624
+ deps,
1625
+ });
1626
+ if (editResult === 'back') {
1627
+ if (!canReturnToDriverSelection)
1628
+ return { status: 'back', projectDir: args.projectDir };
1629
+ returnToDriverSelection = true;
1630
+ break;
1631
+ }
1632
+ if (editResult === 'failed') {
1633
+ return { status: 'failed', projectDir: args.projectDir };
1634
+ }
1635
+ connectionAlreadyValidated = true;
1636
+ }
1637
+ else if (connectionChoice.kind === 'new') {
1638
+ let connection = await buildConnectionConfig({
1639
+ driver,
1640
+ connectionId: connectionChoice.connectionId,
1641
+ args,
1642
+ prompts,
1643
+ });
1644
+ if (connection === 'back') {
1645
+ if (!canReturnToDriverSelection)
1646
+ return { status: 'back', projectDir: args.projectDir };
1647
+ returnToDriverSelection = true;
1648
+ break;
1649
+ }
1650
+ while (!connection && args.inputMode !== 'disabled') {
1651
+ const label = driverLabel(driver);
1652
+ const action = await prompts.select(missingConnectionDetailsPrompt(label, canReturnToDriverSelection));
1653
+ if (action === 'back') {
1654
+ if (!canReturnToDriverSelection)
1655
+ return { status: 'back', projectDir: args.projectDir };
1656
+ returnToDriverSelection = true;
1657
+ break;
1658
+ }
1659
+ connection = await buildConnectionConfig({
1660
+ driver,
1661
+ connectionId: connectionChoice.connectionId,
1662
+ args,
1663
+ prompts,
1664
+ });
1665
+ if (connection === 'back') {
1666
+ if (!canReturnToDriverSelection)
1667
+ return { status: 'back', projectDir: args.projectDir };
1668
+ returnToDriverSelection = true;
1669
+ break;
1670
+ }
1671
+ }
1672
+ if (returnToDriverSelection) {
1673
+ break;
1674
+ }
1675
+ if (connection === 'back') {
1676
+ break;
1677
+ }
1678
+ if (!connection) {
1679
+ io.stderr.write(`Missing connection details for ${driverLabel(driver)}.\n`);
1680
+ return { status: 'missing-input', projectDir: args.projectDir };
1681
+ }
1682
+ const withHistoricSql = await maybeApplyHistoricSqlConfig({ connection, driver, args, prompts });
1683
+ if (withHistoricSql === 'back') {
1684
+ if (!canReturnToDriverSelection)
1685
+ return { status: 'back', projectDir: args.projectDir };
1686
+ returnToDriverSelection = true;
1687
+ break;
1688
+ }
1689
+ const withContextDepth = await maybeApplyContextDepthConfig({
1690
+ projectDir: args.projectDir,
1691
+ connectionId: connectionChoice.connectionId,
1692
+ connection: withHistoricSql,
1693
+ args,
1694
+ prompts,
1695
+ });
1696
+ if (withContextDepth === 'back') {
1697
+ if (!canReturnToDriverSelection)
1698
+ return { status: 'back', projectDir: args.projectDir };
1699
+ returnToDriverSelection = true;
1700
+ break;
1701
+ }
1702
+ await writeConnectionConfig({
1703
+ projectDir: args.projectDir,
1704
+ connectionId: connectionChoice.connectionId,
1705
+ connection: withContextDepth,
1706
+ });
1707
+ }
1708
+ else {
1709
+ const existing = project.config.connections[connectionChoice.connectionId];
1710
+ const withHistoricSql = await maybeApplyHistoricSqlConfig({ connection: existing, driver, args, prompts });
1711
+ if (withHistoricSql === 'back') {
1712
+ if (!canReturnToDriverSelection)
1713
+ return { status: 'back', projectDir: args.projectDir };
1714
+ returnToDriverSelection = true;
1715
+ break;
1716
+ }
1717
+ const withContextDepth = await maybeApplyContextDepthConfig({
1718
+ projectDir: args.projectDir,
1719
+ connectionId: connectionChoice.connectionId,
1720
+ connection: withHistoricSql,
1721
+ args,
1722
+ prompts,
1723
+ });
1724
+ if (withContextDepth === 'back') {
1725
+ if (!canReturnToDriverSelection)
1726
+ return { status: 'back', projectDir: args.projectDir };
1727
+ returnToDriverSelection = true;
1728
+ break;
1729
+ }
1730
+ await writeConnectionConfig({
1731
+ projectDir: args.projectDir,
1732
+ connectionId: connectionChoice.connectionId,
1733
+ connection: withContextDepth,
1734
+ });
1735
+ }
1736
+ let connectionSkipped = false;
1737
+ let setupStatus = connectionAlreadyValidated
1738
+ ? 'ready'
1739
+ : await validateAndScanConnection({
1740
+ projectDir: args.projectDir,
1741
+ connectionId: connectionChoice.connectionId,
1742
+ io,
1743
+ deps,
1744
+ args,
1745
+ prompts,
1746
+ });
1747
+ while (!connectionAlreadyValidated && setupStatus !== 'ready') {
1748
+ if (setupStatus === 'back') {
1749
+ if (!canReturnToDriverSelection)
1750
+ return { status: 'back', projectDir: args.projectDir };
1751
+ returnToDriverSelection = true;
1752
+ break;
1753
+ }
1754
+ if (args.inputMode === 'disabled')
1755
+ return { status: 'failed', projectDir: args.projectDir };
1756
+ const action = await prompts.select({
1757
+ message: `Database setup failed for ${connectionChoice.connectionId}`,
1758
+ options: [
1759
+ { value: 'retry', label: 'Retry connection test' },
1760
+ { value: 're-enter', label: 'Re-enter connection details' },
1761
+ { value: 'skip', label: 'Skip this database' },
1762
+ { value: 'back', label: 'Back' },
1763
+ ],
1764
+ });
1765
+ if (action === 'back') {
1766
+ if (!canReturnToDriverSelection)
1767
+ return { status: 'back', projectDir: args.projectDir };
1768
+ returnToDriverSelection = true;
1769
+ break;
1770
+ }
1771
+ if (action === 'skip') {
1772
+ connectionSkipped = true;
1773
+ break;
1774
+ }
1775
+ if (action === 'retry') {
1776
+ setupStatus = await validateAndScanConnection({
1777
+ projectDir: args.projectDir,
1778
+ connectionId: connectionChoice.connectionId,
1779
+ io,
1780
+ deps,
1781
+ args,
1782
+ prompts,
1783
+ });
1784
+ }
1785
+ else if (action === 're-enter') {
1786
+ const connection = await buildConnectionConfig({
1787
+ driver,
1788
+ connectionId: connectionChoice.connectionId,
1789
+ args,
1790
+ prompts,
1791
+ });
1792
+ if (connection === 'back') {
1793
+ if (!canReturnToDriverSelection)
1794
+ return { status: 'back', projectDir: args.projectDir };
1795
+ returnToDriverSelection = true;
1796
+ break;
1797
+ }
1798
+ if (!connection)
1799
+ continue;
1800
+ const withHistoricSql = await maybeApplyHistoricSqlConfig({ connection, driver, args, prompts });
1801
+ if (withHistoricSql === 'back') {
1802
+ if (!canReturnToDriverSelection)
1803
+ return { status: 'back', projectDir: args.projectDir };
1804
+ returnToDriverSelection = true;
1805
+ break;
1806
+ }
1807
+ const withContextDepth = await maybeApplyContextDepthConfig({
1808
+ projectDir: args.projectDir,
1809
+ connectionId: connectionChoice.connectionId,
1810
+ connection: withHistoricSql,
1811
+ args,
1812
+ prompts,
1813
+ });
1814
+ if (withContextDepth === 'back') {
1815
+ if (!canReturnToDriverSelection)
1816
+ return { status: 'back', projectDir: args.projectDir };
1817
+ returnToDriverSelection = true;
1818
+ break;
1819
+ }
1820
+ await writeConnectionConfig({
1821
+ projectDir: args.projectDir,
1822
+ connectionId: connectionChoice.connectionId,
1823
+ connection: withContextDepth,
1824
+ });
1825
+ setupStatus = await validateAndScanConnection({
1826
+ projectDir: args.projectDir,
1827
+ connectionId: connectionChoice.connectionId,
1828
+ io,
1829
+ deps,
1830
+ args,
1831
+ prompts,
1832
+ });
1833
+ }
1834
+ }
1835
+ if (returnToDriverSelection)
1836
+ break;
1837
+ if (connectionSkipped)
1838
+ continue;
1839
+ pushUniqueConnectionId(selectedConnectionIds, connectionChoice.connectionId);
1840
+ }
1841
+ if (returnToDriverSelection) {
1842
+ if (selectedConnectionIds.length > 0 && canReturnToDriverSelection && args.inputMode !== 'disabled') {
1843
+ showConfiguredPrimaryMenu = true;
1844
+ }
1845
+ continue;
1846
+ }
1847
+ if (selectedConnectionIds.length === 0) {
1848
+ io.stderr.write('No database connections completed setup.\n');
1849
+ return { status: 'failed', projectDir: args.projectDir };
1850
+ }
1851
+ if (canReturnToDriverSelection && args.inputMode !== 'disabled') {
1852
+ showConfiguredPrimaryMenu = true;
1853
+ continue;
1854
+ }
1855
+ await markDatabasesComplete(args.projectDir, selectedConnectionIds);
1856
+ return { status: 'ready', projectDir: args.projectDir, connectionIds: selectedConnectionIds };
1857
+ }
1858
+ }