recce-nightly 1.22.0.20251028__tar.gz → 1.25.0.20251118__tar.gz

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.

Potentially problematic release.


This version of recce-nightly might be problematic. Click here for more details.

Files changed (532) hide show
  1. recce_nightly-1.25.0.20251118/.editorconfig +26 -0
  2. recce_nightly-1.25.0.20251118/.flake8 +37 -0
  3. recce_nightly-1.25.0.20251118/.github/ISSUE_TEMPLATE/bug_report.yml +67 -0
  4. recce_nightly-1.25.0.20251118/.github/ISSUE_TEMPLATE/custom.md +10 -0
  5. recce_nightly-1.25.0.20251118/.github/ISSUE_TEMPLATE/feature_request.yml +42 -0
  6. recce_nightly-1.25.0.20251118/.github/PULL_REQUEST_TEMPLATE.md +21 -0
  7. recce_nightly-1.25.0.20251118/.github/copilot-instructions.md +331 -0
  8. recce_nightly-1.25.0.20251118/.github/instructions/backend-instructions.md +541 -0
  9. recce_nightly-1.25.0.20251118/.github/instructions/frontend-instructions.md +317 -0
  10. recce_nightly-1.25.0.20251118/.github/workflows/build-statics.yaml +65 -0
  11. recce_nightly-1.25.0.20251118/.github/workflows/bump.yaml +40 -0
  12. recce_nightly-1.25.0.20251118/.github/workflows/integration-tests-cloud.yaml +73 -0
  13. recce_nightly-1.25.0.20251118/.github/workflows/integration-tests-sqlmesh.yaml +33 -0
  14. recce_nightly-1.25.0.20251118/.github/workflows/integration-tests.yaml +56 -0
  15. recce_nightly-1.25.0.20251118/.github/workflows/nightly.yaml +214 -0
  16. recce_nightly-1.25.0.20251118/.github/workflows/release.yaml +143 -0
  17. recce_nightly-1.25.0.20251118/.github/workflows/tests-js.yaml +54 -0
  18. recce_nightly-1.25.0.20251118/.github/workflows/tests-python.yaml +103 -0
  19. recce_nightly-1.25.0.20251118/.gitignore +21 -0
  20. recce_nightly-1.25.0.20251118/.pre-commit-config.yaml +25 -0
  21. recce_nightly-1.25.0.20251118/CLAUDE.md +343 -0
  22. recce_nightly-1.25.0.20251118/CODE_OF_CONDUCT.md +128 -0
  23. recce_nightly-1.25.0.20251118/CONTRIBUTING.md +107 -0
  24. recce_nightly-1.25.0.20251118/Makefile +135 -0
  25. {recce_nightly-1.22.0.20251028/recce_nightly.egg-info → recce_nightly-1.25.0.20251118}/PKG-INFO +31 -4
  26. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/README.md +24 -2
  27. recce_nightly-1.25.0.20251118/RECCE_CLOUD.md +81 -0
  28. recce_nightly-1.25.0.20251118/SECURITY.md +25 -0
  29. recce_nightly-1.25.0.20251118/docs/PACKAGING.md +340 -0
  30. recce_nightly-1.25.0.20251118/docs/README.md +1 -0
  31. recce_nightly-1.25.0.20251118/integration_tests/dbt/.gitignore +9 -0
  32. recce_nightly-1.25.0.20251118/integration_tests/dbt/dbt_project.yml +26 -0
  33. recce_nightly-1.25.0.20251118/integration_tests/dbt/models/customers.sql +69 -0
  34. recce_nightly-1.25.0.20251118/integration_tests/dbt/models/docs.md +14 -0
  35. recce_nightly-1.25.0.20251118/integration_tests/dbt/models/orders.sql +56 -0
  36. recce_nightly-1.25.0.20251118/integration_tests/dbt/models/schema.yml +82 -0
  37. recce_nightly-1.25.0.20251118/integration_tests/dbt/models/staging/schema.yml +31 -0
  38. recce_nightly-1.25.0.20251118/integration_tests/dbt/models/staging/stg_customers.sql +22 -0
  39. recce_nightly-1.25.0.20251118/integration_tests/dbt/models/staging/stg_orders.sql +23 -0
  40. recce_nightly-1.25.0.20251118/integration_tests/dbt/models/staging/stg_payments.sql +25 -0
  41. recce_nightly-1.25.0.20251118/integration_tests/dbt/packages.yml +7 -0
  42. recce_nightly-1.25.0.20251118/integration_tests/dbt/profiles.yml +8 -0
  43. recce_nightly-1.25.0.20251118/integration_tests/dbt/seeds/raw_customers.csv +101 -0
  44. recce_nightly-1.25.0.20251118/integration_tests/dbt/seeds/raw_orders.csv +100 -0
  45. recce_nightly-1.25.0.20251118/integration_tests/dbt/seeds/raw_payments.csv +114 -0
  46. recce_nightly-1.25.0.20251118/integration_tests/dbt/seeds/raw_statuses.csv +5 -0
  47. recce_nightly-1.25.0.20251118/integration_tests/dbt/smoke_test.sh +72 -0
  48. recce_nightly-1.25.0.20251118/integration_tests/dbt/smoke_test_cloud.sh +71 -0
  49. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/.gitignore +3 -0
  50. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/audits/assert_item_price_above_zero.sql +9 -0
  51. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/audits/items.sql +7 -0
  52. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/audits/order_items.sql +7 -0
  53. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/config.py +171 -0
  54. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/helper.py +20 -0
  55. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/macros/macros.py +8 -0
  56. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/macros/macros.sql +8 -0
  57. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/macros/utils.py +11 -0
  58. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/metrics/metrics.sql +25 -0
  59. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/models/customer_revenue_by_day.sql +41 -0
  60. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/models/customer_revenue_lifetime.sql +60 -0
  61. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/models/customers.sql +32 -0
  62. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/models/items.py +95 -0
  63. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/models/marketing.sql +15 -0
  64. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/models/order_items.py +95 -0
  65. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/models/orders.py +70 -0
  66. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/models/raw_marketing.py +62 -0
  67. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/models/top_waiters.sql +23 -0
  68. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/models/waiter_as_customer_by_day.sql +29 -0
  69. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/models/waiter_names.sql +10 -0
  70. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/models/waiter_revenue_by_day.sql +29 -0
  71. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/models/waiters.py +62 -0
  72. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/prep_env.sh +16 -0
  73. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/recce.yml +13 -0
  74. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/schema.yaml +5 -0
  75. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/seeds/waiter_names.csv +11 -0
  76. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/test_server.sh +29 -0
  77. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/tests/test_customer_revenue_by_day.yaml +63 -0
  78. recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/tests/test_order_items.yaml +72 -0
  79. recce_nightly-1.25.0.20251118/js/.editorconfig +27 -0
  80. recce_nightly-1.25.0.20251118/js/.env.development +5 -0
  81. recce_nightly-1.25.0.20251118/js/.gitignore +38 -0
  82. recce_nightly-1.25.0.20251118/js/.husky/pre-commit +32 -0
  83. recce_nightly-1.25.0.20251118/js/.nvmrc +1 -0
  84. recce_nightly-1.25.0.20251118/js/README.md +39 -0
  85. recce_nightly-1.25.0.20251118/js/app/Providers.tsx +25 -0
  86. recce_nightly-1.25.0.20251118/js/app/global.css +23 -0
  87. recce_nightly-1.25.0.20251118/js/app/layout.tsx +24 -0
  88. recce_nightly-1.25.0.20251118/js/app/page.tsx +579 -0
  89. recce_nightly-1.25.0.20251118/js/biome.json +313 -0
  90. recce_nightly-1.25.0.20251118/js/jest.config.js +15 -0
  91. recce_nightly-1.25.0.20251118/js/jest.setup.js +2 -0
  92. recce_nightly-1.25.0.20251118/js/next.config.js +13 -0
  93. recce_nightly-1.25.0.20251118/js/package-lock.json +13843 -0
  94. recce_nightly-1.25.0.20251118/js/package.json +104 -0
  95. recce_nightly-1.25.0.20251118/js/pnpm-lock.yaml +6974 -0
  96. recce_nightly-1.25.0.20251118/js/pnpm-workspace.yaml +6 -0
  97. recce_nightly-1.25.0.20251118/js/postcss.config.js +5 -0
  98. recce_nightly-1.25.0.20251118/js/src/components/AuthModal/AuthModal.tsx +211 -0
  99. recce_nightly-1.25.0.20251118/js/src/components/app/AvatarDropdown.tsx +128 -0
  100. recce_nightly-1.25.0.20251118/js/src/components/app/EnvInfo.tsx +276 -0
  101. recce_nightly-1.25.0.20251118/js/src/components/app/Filename.tsx +400 -0
  102. recce_nightly-1.25.0.20251118/js/src/components/app/SetupConnectionPopover.tsx +89 -0
  103. recce_nightly-1.25.0.20251118/js/src/components/app/StateExporter.tsx +52 -0
  104. recce_nightly-1.25.0.20251118/js/src/components/app/StateImporter.tsx +180 -0
  105. recce_nightly-1.25.0.20251118/js/src/components/app/StateSharing.tsx +127 -0
  106. recce_nightly-1.25.0.20251118/js/src/components/app/StateSynchronizer.tsx +194 -0
  107. recce_nightly-1.25.0.20251118/js/src/components/charts/HistogramChart.tsx +267 -0
  108. recce_nightly-1.25.0.20251118/js/src/components/charts/SquareIcon.tsx +19 -0
  109. recce_nightly-1.25.0.20251118/js/src/components/charts/TopKSummaryList.tsx +382 -0
  110. recce_nightly-1.25.0.20251118/js/src/components/check/CheckBreadcrumb.tsx +97 -0
  111. recce_nightly-1.25.0.20251118/js/src/components/check/CheckDescription.tsx +109 -0
  112. recce_nightly-1.25.0.20251118/js/src/components/check/CheckDetail.tsx +601 -0
  113. recce_nightly-1.25.0.20251118/js/src/components/check/CheckEmptyState.tsx +74 -0
  114. recce_nightly-1.25.0.20251118/js/src/components/check/CheckList.tsx +311 -0
  115. recce_nightly-1.25.0.20251118/js/src/components/check/CheckPage.tsx +184 -0
  116. recce_nightly-1.25.0.20251118/js/src/components/check/LineageDiffView.tsx +32 -0
  117. recce_nightly-1.25.0.20251118/js/src/components/check/PresetCheckTemplateView.tsx +51 -0
  118. recce_nightly-1.25.0.20251118/js/src/components/check/SchemaDiffView.tsx +245 -0
  119. recce_nightly-1.25.0.20251118/js/src/components/check/check.ts +25 -0
  120. recce_nightly-1.25.0.20251118/js/src/components/data-grid/ScreenshotDataGrid.tsx +45 -0
  121. recce_nightly-1.25.0.20251118/js/src/components/errorboundary/ErrorBoundary.tsx +65 -0
  122. recce_nightly-1.25.0.20251118/js/src/components/histogram/HistogramDiffForm.tsx +145 -0
  123. recce_nightly-1.25.0.20251118/js/src/components/histogram/HistogramDiffResultView.tsx +55 -0
  124. recce_nightly-1.25.0.20251118/js/src/components/icons/index.tsx +142 -0
  125. recce_nightly-1.25.0.20251118/js/src/components/lineage/ActionControl.tsx +61 -0
  126. recce_nightly-1.25.0.20251118/js/src/components/lineage/ActionTag.tsx +136 -0
  127. recce_nightly-1.25.0.20251118/js/src/components/lineage/ChangeStatusLegend.tsx +37 -0
  128. recce_nightly-1.25.0.20251118/js/src/components/lineage/ColumnLevelLineageControl.tsx +277 -0
  129. recce_nightly-1.25.0.20251118/js/src/components/lineage/ColumnLevelLineageLegend.tsx +48 -0
  130. recce_nightly-1.25.0.20251118/js/src/components/lineage/GraphColumnNode.tsx +193 -0
  131. recce_nightly-1.25.0.20251118/js/src/components/lineage/GraphEdge.tsx +59 -0
  132. recce_nightly-1.25.0.20251118/js/src/components/lineage/GraphNode.tsx +483 -0
  133. recce_nightly-1.25.0.20251118/js/src/components/lineage/LineagePage.tsx +10 -0
  134. recce_nightly-1.25.0.20251118/js/src/components/lineage/LineageView.tsx +1260 -0
  135. recce_nightly-1.25.0.20251118/js/src/components/lineage/LineageViewContext.tsx +86 -0
  136. recce_nightly-1.25.0.20251118/js/src/components/lineage/LineageViewContextMenu.tsx +554 -0
  137. recce_nightly-1.25.0.20251118/js/src/components/lineage/LineageViewNotification.tsx +56 -0
  138. recce_nightly-1.25.0.20251118/js/src/components/lineage/LineageViewTopBar.tsx +515 -0
  139. recce_nightly-1.25.0.20251118/js/src/components/lineage/NodeSqlView.tsx +154 -0
  140. recce_nightly-1.25.0.20251118/js/src/components/lineage/NodeTag.tsx +240 -0
  141. recce_nightly-1.25.0.20251118/js/src/components/lineage/NodeView.tsx +538 -0
  142. recce_nightly-1.25.0.20251118/js/src/components/lineage/SandboxView.tsx +426 -0
  143. recce_nightly-1.25.0.20251118/js/src/components/lineage/SetupConnectionBanner.tsx +39 -0
  144. recce_nightly-1.25.0.20251118/js/src/components/lineage/SeverDisconnectedModalContent.tsx +88 -0
  145. recce_nightly-1.25.0.20251118/js/src/components/lineage/SingleEnvironmentQueryView.tsx +135 -0
  146. recce_nightly-1.25.0.20251118/js/src/components/lineage/graph.test.ts +31 -0
  147. recce_nightly-1.25.0.20251118/js/src/components/lineage/graph.ts +58 -0
  148. recce_nightly-1.25.0.20251118/js/src/components/lineage/lineage.test.ts +169 -0
  149. recce_nightly-1.25.0.20251118/js/src/components/lineage/lineage.ts +521 -0
  150. recce_nightly-1.25.0.20251118/js/src/components/lineage/styles.css +9 -0
  151. recce_nightly-1.25.0.20251118/js/src/components/lineage/styles.tsx +149 -0
  152. recce_nightly-1.25.0.20251118/js/src/components/lineage/useMultiNodesAction.ts +314 -0
  153. recce_nightly-1.25.0.20251118/js/src/components/lineage/useValueDiffAlertDialog.tsx +90 -0
  154. recce_nightly-1.25.0.20251118/js/src/components/onboarding-guide/Notification.tsx +47 -0
  155. recce_nightly-1.25.0.20251118/js/src/components/profile/ProfileDiffForm.tsx +98 -0
  156. recce_nightly-1.25.0.20251118/js/src/components/profile/ProfileDiffResultView.tsx +216 -0
  157. recce_nightly-1.25.0.20251118/js/src/components/query/ChangedOnlyCheckbox.tsx +24 -0
  158. recce_nightly-1.25.0.20251118/js/src/components/query/DiffText.tsx +105 -0
  159. recce_nightly-1.25.0.20251118/js/src/components/query/QueryDiffResultView.tsx +430 -0
  160. recce_nightly-1.25.0.20251118/js/src/components/query/QueryForm.tsx +71 -0
  161. recce_nightly-1.25.0.20251118/js/src/components/query/QueryPage.tsx +263 -0
  162. recce_nightly-1.25.0.20251118/js/src/components/query/QueryResultView.tsx +357 -0
  163. recce_nightly-1.25.0.20251118/js/src/components/query/SetupConnectionGuide.tsx +45 -0
  164. recce_nightly-1.25.0.20251118/js/src/components/query/SqlEditor.tsx +266 -0
  165. recce_nightly-1.25.0.20251118/js/src/components/query/ToggleSwitch.tsx +79 -0
  166. recce_nightly-1.25.0.20251118/js/src/components/query/querydiff.test.ts +252 -0
  167. recce_nightly-1.25.0.20251118/js/src/components/query/querydiff.tsx +739 -0
  168. recce_nightly-1.25.0.20251118/js/src/components/query/styles.css +59 -0
  169. recce_nightly-1.25.0.20251118/js/src/components/rowcount/RowCountDiffResultView.tsx +177 -0
  170. recce_nightly-1.25.0.20251118/js/src/components/rowcount/delta.ts +11 -0
  171. recce_nightly-1.25.0.20251118/js/src/components/run/RunList.tsx +268 -0
  172. recce_nightly-1.25.0.20251118/js/src/components/run/RunModal.tsx +158 -0
  173. recce_nightly-1.25.0.20251118/js/src/components/run/RunPage.tsx +24 -0
  174. recce_nightly-1.25.0.20251118/js/src/components/run/RunResultPane.tsx +418 -0
  175. recce_nightly-1.25.0.20251118/js/src/components/run/RunStatusAndDate.tsx +90 -0
  176. recce_nightly-1.25.0.20251118/js/src/components/run/RunToolbar.tsx +40 -0
  177. recce_nightly-1.25.0.20251118/js/src/components/run/RunView.tsx +161 -0
  178. recce_nightly-1.25.0.20251118/js/src/components/run/registry.ts +214 -0
  179. recce_nightly-1.25.0.20251118/js/src/components/run/types.ts +14 -0
  180. recce_nightly-1.25.0.20251118/js/src/components/schema/ColumnNameCell.tsx +158 -0
  181. recce_nightly-1.25.0.20251118/js/src/components/schema/SchemaView.tsx +265 -0
  182. recce_nightly-1.25.0.20251118/js/src/components/schema/schema.test.ts +118 -0
  183. recce_nightly-1.25.0.20251118/js/src/components/schema/schema.tsx +201 -0
  184. recce_nightly-1.25.0.20251118/js/src/components/schema/schemaDiff.ts +32 -0
  185. recce_nightly-1.25.0.20251118/js/src/components/schema/style.css +82 -0
  186. recce_nightly-1.25.0.20251118/js/src/components/screenshot/ScreenshotBox.tsx +32 -0
  187. recce_nightly-1.25.0.20251118/js/src/components/shared/HistoryToggle.tsx +32 -0
  188. recce_nightly-1.25.0.20251118/js/src/components/split/Split.tsx +40 -0
  189. recce_nightly-1.25.0.20251118/js/src/components/split/styles.css +19 -0
  190. recce_nightly-1.25.0.20251118/js/src/components/summary/ChangeSummary.tsx +233 -0
  191. recce_nightly-1.25.0.20251118/js/src/components/summary/SchemaSummary.tsx +118 -0
  192. recce_nightly-1.25.0.20251118/js/src/components/summary/SummaryView.tsx +24 -0
  193. recce_nightly-1.25.0.20251118/js/src/components/top-k/TopKDiffForm.tsx +57 -0
  194. recce_nightly-1.25.0.20251118/js/src/components/top-k/TopKDiffResultView.tsx +61 -0
  195. recce_nightly-1.25.0.20251118/js/src/components/ui/color-mode.tsx +108 -0
  196. recce_nightly-1.25.0.20251118/js/src/components/ui/provider.tsx +16 -0
  197. recce_nightly-1.25.0.20251118/js/src/components/ui/theme.ts +222 -0
  198. recce_nightly-1.25.0.20251118/js/src/components/ui/toaster.tsx +43 -0
  199. recce_nightly-1.25.0.20251118/js/src/components/ui/tooltip.tsx +46 -0
  200. recce_nightly-1.25.0.20251118/js/src/components/valuediff/ValueDiffDetailResultView.tsx +195 -0
  201. recce_nightly-1.25.0.20251118/js/src/components/valuediff/ValueDiffForm.tsx +144 -0
  202. recce_nightly-1.25.0.20251118/js/src/components/valuediff/ValueDiffResultView.tsx +217 -0
  203. recce_nightly-1.25.0.20251118/js/src/components/valuediff/shared.ts +39 -0
  204. recce_nightly-1.25.0.20251118/js/src/components/valuediff/valuediff.tsx +521 -0
  205. recce_nightly-1.25.0.20251118/js/src/constants/tooltipMessage.ts +3 -0
  206. recce_nightly-1.25.0.20251118/js/src/constants/urls.ts +1 -0
  207. recce_nightly-1.25.0.20251118/js/src/lib/UrlHash.ts +12 -0
  208. recce_nightly-1.25.0.20251118/js/src/lib/api/adhocQuery.ts +65 -0
  209. recce_nightly-1.25.0.20251118/js/src/lib/api/axiosClient.ts +9 -0
  210. recce_nightly-1.25.0.20251118/js/src/lib/api/cacheKeys.ts +12 -0
  211. recce_nightly-1.25.0.20251118/js/src/lib/api/checks.ts +107 -0
  212. recce_nightly-1.25.0.20251118/js/src/lib/api/cll.ts +50 -0
  213. recce_nightly-1.25.0.20251118/js/src/lib/api/connectToCloud.ts +10 -0
  214. recce_nightly-1.25.0.20251118/js/src/lib/api/flag.ts +34 -0
  215. recce_nightly-1.25.0.20251118/js/src/lib/api/info.ts +197 -0
  216. recce_nightly-1.25.0.20251118/js/src/lib/api/instanceInfo.ts +22 -0
  217. recce_nightly-1.25.0.20251118/js/src/lib/api/lineagecheck.ts +34 -0
  218. recce_nightly-1.25.0.20251118/js/src/lib/api/localStorageKeys.ts +7 -0
  219. recce_nightly-1.25.0.20251118/js/src/lib/api/models.ts +54 -0
  220. recce_nightly-1.25.0.20251118/js/src/lib/api/profile.ts +62 -0
  221. recce_nightly-1.25.0.20251118/js/src/lib/api/rowcount.ts +16 -0
  222. recce_nightly-1.25.0.20251118/js/src/lib/api/runs.ts +159 -0
  223. recce_nightly-1.25.0.20251118/js/src/lib/api/schemacheck.ts +30 -0
  224. recce_nightly-1.25.0.20251118/js/src/lib/api/select.ts +22 -0
  225. recce_nightly-1.25.0.20251118/js/src/lib/api/sessionStorageKeys.ts +8 -0
  226. recce_nightly-1.25.0.20251118/js/src/lib/api/state.ts +114 -0
  227. recce_nightly-1.25.0.20251118/js/src/lib/api/track.ts +131 -0
  228. recce_nightly-1.25.0.20251118/js/src/lib/api/types.ts +297 -0
  229. recce_nightly-1.25.0.20251118/js/src/lib/api/user.ts +42 -0
  230. recce_nightly-1.25.0.20251118/js/src/lib/api/valuediff.ts +42 -0
  231. recce_nightly-1.25.0.20251118/js/src/lib/api/version.ts +33 -0
  232. recce_nightly-1.25.0.20251118/js/src/lib/const.ts +9 -0
  233. recce_nightly-1.25.0.20251118/js/src/lib/formatSelect.ts +50 -0
  234. recce_nightly-1.25.0.20251118/js/src/lib/hooks/LineageGraphContext.tsx +447 -0
  235. recce_nightly-1.25.0.20251118/js/src/lib/hooks/RecceActionContext.tsx +257 -0
  236. recce_nightly-1.25.0.20251118/js/src/lib/hooks/RecceCheckContext.tsx +33 -0
  237. recce_nightly-1.25.0.20251118/js/src/lib/hooks/RecceContextProvider.tsx +34 -0
  238. recce_nightly-1.25.0.20251118/js/src/lib/hooks/RecceInstanceContext.tsx +124 -0
  239. recce_nightly-1.25.0.20251118/js/src/lib/hooks/RecceQueryContext.tsx +98 -0
  240. recce_nightly-1.25.0.20251118/js/src/lib/hooks/RecceShareStateContext.tsx +57 -0
  241. recce_nightly-1.25.0.20251118/js/src/lib/hooks/ScreenShot.tsx +357 -0
  242. recce_nightly-1.25.0.20251118/js/src/lib/hooks/useCheckToast.tsx +14 -0
  243. recce_nightly-1.25.0.20251118/js/src/lib/hooks/useClipBoardToast.tsx +27 -0
  244. recce_nightly-1.25.0.20251118/js/src/lib/hooks/useCountdownToast.tsx +102 -0
  245. recce_nightly-1.25.0.20251118/js/src/lib/hooks/useFeedbackCollectionToast.tsx +124 -0
  246. recce_nightly-1.25.0.20251118/js/src/lib/hooks/useGuideToast.tsx +45 -0
  247. recce_nightly-1.25.0.20251118/js/src/lib/hooks/useHashLocation.ts +19 -0
  248. recce_nightly-1.25.0.20251118/js/src/lib/hooks/useModelColumns.tsx +113 -0
  249. recce_nightly-1.25.0.20251118/js/src/lib/hooks/useRecceInstanceInfo.tsx +10 -0
  250. recce_nightly-1.25.0.20251118/js/src/lib/hooks/useRecceServerFlag.tsx +10 -0
  251. recce_nightly-1.25.0.20251118/js/src/lib/hooks/useRun.tsx +87 -0
  252. recce_nightly-1.25.0.20251118/js/src/lib/mergeKeys.test.ts +89 -0
  253. recce_nightly-1.25.0.20251118/js/src/lib/mergeKeys.ts +86 -0
  254. recce_nightly-1.25.0.20251118/js/src/lib/utils/urls.ts +16 -0
  255. recce_nightly-1.25.0.20251118/js/src/utils/DropdownValuesInput.tsx +235 -0
  256. recce_nightly-1.25.0.20251118/js/src/utils/formatters.tsx +237 -0
  257. recce_nightly-1.25.0.20251118/js/src/utils/transforms.ts +72 -0
  258. recce_nightly-1.25.0.20251118/js/theme/components/Checkbox.ts +108 -0
  259. recce_nightly-1.25.0.20251118/js/theme/components/Tooltip.ts +9 -0
  260. recce_nightly-1.25.0.20251118/js/tsconfig.json +37 -0
  261. recce_nightly-1.25.0.20251118/macros/README.md +8 -0
  262. recce_nightly-1.25.0.20251118/macros/recce_athena.sql +73 -0
  263. recce_nightly-1.25.0.20251118/pyproject.toml +15 -0
  264. recce_nightly-1.25.0.20251118/recce/VERSION +1 -0
  265. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/adapter/dbt_adapter/__init__.py +1 -0
  266. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/artifact.py +15 -0
  267. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/cli.py +277 -44
  268. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/core.py +2 -2
  269. recce_nightly-1.25.0.20251118/recce/data/404.html +1 -0
  270. recce_nightly-1.25.0.20251118/recce/data/__next.__PAGE__.txt +10 -0
  271. recce_nightly-1.25.0.20251118/recce/data/__next._full.txt +23 -0
  272. recce_nightly-1.25.0.20251118/recce/data/__next._head.txt +8 -0
  273. recce_nightly-1.25.0.20251118/recce/data/__next._index.txt +8 -0
  274. recce_nightly-1.25.0.20251118/recce/data/__next._tree.txt +5 -0
  275. recce_nightly-1.25.0.20251118/recce/data/_next/static/chunks/00696804343358a8.js +110 -0
  276. recce_nightly-1.25.0.20251118/recce/data/_next/static/chunks/02b996c7f6a29a06.js +4 -0
  277. recce_nightly-1.25.0.20251118/recce/data/_next/static/chunks/19c10d219a6a21ff.js +1 -0
  278. recce_nightly-1.25.0.20251118/recce/data/_next/static/chunks/2df9ec28a061971d.js +11 -0
  279. recce_nightly-1.25.0.20251118/recce/data/_next/static/chunks/3098c987393bda15.js +1 -0
  280. recce_nightly-1.25.0.20251118/recce/data/_next/static/chunks/393dc43e483f717a.css +2 -0
  281. recce_nightly-1.25.0.20251118/recce/data/_next/static/chunks/399e8d91a7e45073.js +2 -0
  282. recce_nightly-1.25.0.20251118/recce/data/_next/static/chunks/4d0186f631230245.js +1 -0
  283. recce_nightly-1.25.0.20251118/recce/data/_next/static/chunks/71f88fcc615bf282.js +1 -0
  284. recce_nightly-1.25.0.20251118/recce/data/_next/static/chunks/7875b534b7e90557.js +11 -0
  285. recce_nightly-1.25.0.20251118/recce/data/_next/static/chunks/80d2a95eaf1201ea.js +1 -0
  286. recce_nightly-1.25.0.20251118/recce/data/_next/static/chunks/9979c6109bbbee35.js +1 -0
  287. recce_nightly-1.25.0.20251118/recce/data/_next/static/chunks/99d638224186c118.js +1 -0
  288. recce_nightly-1.25.0.20251118/recce/data/_next/static/chunks/d003eb36240e92f3.js +1 -0
  289. recce_nightly-1.25.0.20251118/recce/data/_next/static/chunks/d3167cdfec4fc351.js +1 -0
  290. recce_nightly-1.25.0.20251118/recce/data/_next/static/chunks/e124bccf574a3361.css +1 -0
  291. recce_nightly-1.25.0.20251118/recce/data/_next/static/chunks/f40141db1bdb46f0.css +6 -0
  292. recce_nightly-1.25.0.20251118/recce/data/_next/static/chunks/fcc53a88741a52f9.js +1 -0
  293. recce_nightly-1.25.0.20251118/recce/data/_next/static/chunks/turbopack-b1920d28cfb1f28d.js +3 -0
  294. recce_nightly-1.25.0.20251118/recce/data/_next/static/gIS4zIcPD_5Df8RLpMGPx/_buildManifest.js +11 -0
  295. recce_nightly-1.25.0.20251118/recce/data/_next/static/gIS4zIcPD_5Df8RLpMGPx/_clientMiddlewareManifest.json +1 -0
  296. recce_nightly-1.25.0.20251118/recce/data/_next/static/media/favicon.a8d38d84.ico +0 -0
  297. recce_nightly-1.25.0.20251118/recce/data/_not-found/__next._full.txt +17 -0
  298. recce_nightly-1.25.0.20251118/recce/data/_not-found/__next._head.txt +8 -0
  299. recce_nightly-1.25.0.20251118/recce/data/_not-found/__next._index.txt +8 -0
  300. recce_nightly-1.25.0.20251118/recce/data/_not-found/__next._not-found.__PAGE__.txt +5 -0
  301. recce_nightly-1.25.0.20251118/recce/data/_not-found/__next._not-found.txt +4 -0
  302. recce_nightly-1.25.0.20251118/recce/data/_not-found/__next._tree.txt +3 -0
  303. recce_nightly-1.25.0.20251118/recce/data/_not-found.html +1 -0
  304. recce_nightly-1.25.0.20251118/recce/data/_not-found.txt +17 -0
  305. recce_nightly-1.25.0.20251118/recce/data/auth_callback.html +68 -0
  306. recce_nightly-1.25.0.20251118/recce/data/favicon.ico +0 -0
  307. recce_nightly-1.25.0.20251118/recce/data/imgs/feedback/thumbs-down.png +0 -0
  308. recce_nightly-1.25.0.20251118/recce/data/imgs/feedback/thumbs-up.png +0 -0
  309. recce_nightly-1.25.0.20251118/recce/data/imgs/reload-image.svg +4 -0
  310. recce_nightly-1.25.0.20251118/recce/data/index.html +1 -0
  311. recce_nightly-1.25.0.20251118/recce/data/index.txt +23 -0
  312. recce_nightly-1.25.0.20251118/recce/data/logo/recce-logo-white.png +0 -0
  313. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/event/__init__.py +1 -1
  314. recce_nightly-1.25.0.20251118/recce/mcp_server.py +716 -0
  315. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/models/types.py +35 -2
  316. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/server.py +98 -2
  317. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/state/cloud.py +1 -1
  318. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/state/const.py +1 -1
  319. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/state/state.py +1 -11
  320. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/state/state_loader.py +2 -4
  321. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/tasks/dataframe.py +65 -2
  322. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/util/api_token.py +9 -2
  323. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/util/breaking.py +1 -1
  324. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/util/recce_cloud.py +23 -5
  325. recce_nightly-1.25.0.20251118/recce_cloud/README.md +479 -0
  326. recce_nightly-1.25.0.20251118/recce_cloud/__init__.py +24 -0
  327. recce_nightly-1.25.0.20251118/recce_cloud/api/__init__.py +17 -0
  328. recce_nightly-1.25.0.20251118/recce_cloud/api/base.py +111 -0
  329. recce_nightly-1.25.0.20251118/recce_cloud/api/client.py +150 -0
  330. recce_nightly-1.25.0.20251118/recce_cloud/api/exceptions.py +26 -0
  331. recce_nightly-1.25.0.20251118/recce_cloud/api/factory.py +63 -0
  332. recce_nightly-1.25.0.20251118/recce_cloud/api/github.py +76 -0
  333. recce_nightly-1.25.0.20251118/recce_cloud/api/gitlab.py +82 -0
  334. recce_nightly-1.25.0.20251118/recce_cloud/artifact.py +57 -0
  335. recce_nightly-1.25.0.20251118/recce_cloud/ci_providers/__init__.py +9 -0
  336. recce_nightly-1.25.0.20251118/recce_cloud/ci_providers/base.py +82 -0
  337. recce_nightly-1.25.0.20251118/recce_cloud/ci_providers/detector.py +147 -0
  338. recce_nightly-1.25.0.20251118/recce_cloud/ci_providers/github_actions.py +136 -0
  339. recce_nightly-1.25.0.20251118/recce_cloud/ci_providers/gitlab_ci.py +130 -0
  340. recce_nightly-1.25.0.20251118/recce_cloud/cli.py +245 -0
  341. recce_nightly-1.25.0.20251118/recce_cloud/upload.py +214 -0
  342. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118/recce_nightly.egg-info}/PKG-INFO +31 -4
  343. recce_nightly-1.25.0.20251118/recce_nightly.egg-info/SOURCES.txt +484 -0
  344. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce_nightly.egg-info/requires.txt +7 -1
  345. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce_nightly.egg-info/top_level.txt +1 -0
  346. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/setup.py +7 -1
  347. recce_nightly-1.25.0.20251118/setup_cloud.py +63 -0
  348. recce_nightly-1.25.0.20251118/test.py +0 -0
  349. recce_nightly-1.25.0.20251118/tests/__init__.py +0 -0
  350. recce_nightly-1.25.0.20251118/tests/adapter/__init__.py +0 -0
  351. recce_nightly-1.25.0.20251118/tests/adapter/dbt_adapter/__init__.py +0 -0
  352. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/adapter/dbt_adapter/test_dbt_cll.py +4 -2
  353. recce_nightly-1.25.0.20251118/tests/adapter/dbt_adapter/test_proj/.gitignore +5 -0
  354. recce_nightly-1.25.0.20251118/tests/adapter/dbt_adapter/test_proj/dbt_project.yml +4 -0
  355. recce_nightly-1.25.0.20251118/tests/adapter/dbt_adapter/test_proj/manifest.json +1 -0
  356. recce_nightly-1.25.0.20251118/tests/adapter/dbt_adapter/test_proj/package-lock.yml +8 -0
  357. recce_nightly-1.25.0.20251118/tests/adapter/dbt_adapter/test_proj/packages.yml +7 -0
  358. recce_nightly-1.25.0.20251118/tests/adapter/dbt_adapter/test_proj/profiles.yml +6 -0
  359. recce_nightly-1.25.0.20251118/tests/apis/row_count_diff.json +59 -0
  360. recce_nightly-1.25.0.20251118/tests/apis/test_run_func.py +21 -0
  361. recce_nightly-1.25.0.20251118/tests/catalog.json +527 -0
  362. recce_nightly-1.25.0.20251118/tests/data/config/recce.yml +11 -0
  363. recce_nightly-1.25.0.20251118/tests/data/manifest/base/catalog.json +1 -0
  364. recce_nightly-1.25.0.20251118/tests/data/manifest/base/manifest.json +1 -0
  365. recce_nightly-1.25.0.20251118/tests/data/manifest/pr2/catalog.json +1 -0
  366. recce_nightly-1.25.0.20251118/tests/data/manifest/pr2/manifest.json +1 -0
  367. recce_nightly-1.25.0.20251118/tests/manifest.json +10655 -0
  368. recce_nightly-1.25.0.20251118/tests/models/test_run_models.py +295 -0
  369. recce_nightly-1.25.0.20251118/tests/recce_cloud/__init__.py +0 -0
  370. recce_nightly-1.25.0.20251118/tests/recce_cloud/test_ci_providers.py +351 -0
  371. recce_nightly-1.25.0.20251118/tests/recce_cloud/test_cli.py +372 -0
  372. recce_nightly-1.25.0.20251118/tests/recce_cloud/test_client.py +273 -0
  373. recce_nightly-1.25.0.20251118/tests/recce_cloud/test_platform_clients.py +333 -0
  374. recce_nightly-1.25.0.20251118/tests/recce_state.json +1 -0
  375. recce_nightly-1.25.0.20251118/tests/state/test_cloud.py +719 -0
  376. recce_nightly-1.25.0.20251118/tests/state/test_local.py +164 -0
  377. recce_nightly-1.25.0.20251118/tests/state/test_state_loader.py +211 -0
  378. recce_nightly-1.25.0.20251118/tests/tasks/__init__.py +0 -0
  379. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/test_cli.py +76 -0
  380. recce_nightly-1.25.0.20251118/tests/test_cli_mcp_optional.py +45 -0
  381. recce_nightly-1.25.0.20251118/tests/test_mcp_server.py +332 -0
  382. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/test_summary.py +14 -6
  383. recce_nightly-1.25.0.20251118/tests/util/test_api_token.py +119 -0
  384. recce_nightly-1.25.0.20251118/tests/util/test_breaking.py +1427 -0
  385. recce_nightly-1.25.0.20251118/tests/util/test_cll.py +706 -0
  386. recce_nightly-1.25.0.20251118/tests/util/test_lineage.py +122 -0
  387. recce_nightly-1.25.0.20251118/tests/util/test_onboarding_state.py +84 -0
  388. recce_nightly-1.25.0.20251118/tests/util/test_recce_cloud.py +231 -0
  389. recce_nightly-1.25.0.20251118/tox.ini +39 -0
  390. recce_nightly-1.22.0.20251028/pyproject.toml +0 -5
  391. recce_nightly-1.22.0.20251028/recce/VERSION +0 -1
  392. recce_nightly-1.22.0.20251028/recce/data/404.html +0 -1
  393. recce_nightly-1.22.0.20251028/recce/data/_next/static/_UQ-xjTAp8fsO_W6fwsWz/_buildManifest.js +0 -1
  394. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/12f8fac4-a2fd98f42126999f.js +0 -1
  395. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/272-058426d7d18ce061.js +0 -1
  396. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/3a92ee20-9c4519f55ecaa314.js +0 -1
  397. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/547-0ec2c77b7f7e3742.js +0 -30
  398. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/55221f3c-eaedf9d5b94c318b.js +0 -1
  399. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/619-fd0da05da122117c.js +0 -1
  400. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/677-5a68b1f623380d78.js +0 -1
  401. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/6cb9c173-6146bae2149a20b1.js +0 -1
  402. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/6dc81886-2c18bc834d238e55.js +0 -1
  403. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/6df359e9-ccd3f03e27cb41e4.js +0 -1
  404. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/712d2a0e-d59bb436efdf3871.js +0 -1
  405. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/77857853-3a4914d4c1924f9e.js +0 -1
  406. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/8d700b6a.af7d9bc954a29fb6.js +0 -1
  407. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/970-48933b692b4e4bc0.js +0 -10
  408. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/9bbc4e60-165ef790329d3a3d.js +0 -1
  409. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/aae12a84-32639a375ab447e3.js +0 -1
  410. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/ae307f12-a123e529f9bd8d8d.js +0 -1
  411. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/app/_not-found/page-7dfdcaecd78d5a88.js +0 -1
  412. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/app/layout-594789adafd14ff0.js +0 -1
  413. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/app/page-003e36b6a1f7dbe9.js +0 -1
  414. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/b2298382-ab7f7e8a190aa0e1.js +0 -1
  415. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/ccdbea1e-7c54ced4b2094514.js +0 -1
  416. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/ccf8a7b1-4355a32508e4e4fe.js +0 -1
  417. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/dc596880-f2eb5767d7b2e80f.js +0 -54
  418. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/e1584f90-0dd0c9a249a22ae0.js +0 -1
  419. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/e16c186f-c48ddaa3b8db5c68.js +0 -1
  420. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/f3d5503b-20e63c48a8800ac9.js +0 -1
  421. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/f795c1dc-18eab1979a47ee7e.js +0 -1
  422. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/ffde7897-84586323376fd157.js +0 -1
  423. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/framework-e266f44d8130edb8.js +0 -1
  424. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/main-47abf61cd543b830.js +0 -1
  425. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/main-app-4af540da32cc16fb.js +0 -1
  426. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/pages/_app-18fd34a0bf45ecef.js +0 -1
  427. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/pages/_error-8bfabea04a6d876c.js +0 -1
  428. recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/webpack-f09e551a68238929.js +0 -1
  429. recce_nightly-1.22.0.20251028/recce/data/_next/static/css/5da8812af0008c76.css +0 -1
  430. recce_nightly-1.22.0.20251028/recce/data/_next/static/css/8edca58d4abcf908.css +0 -14
  431. recce_nightly-1.22.0.20251028/recce/data/_next/static/css/abdb9814a3dd18bb.css +0 -1
  432. recce_nightly-1.22.0.20251028/recce/data/_next/static/css/af2813f12c8a4fd8.css +0 -1
  433. recce_nightly-1.22.0.20251028/recce/data/index.html +0 -1
  434. recce_nightly-1.22.0.20251028/recce/data/index.txt +0 -25
  435. recce_nightly-1.22.0.20251028/recce_nightly.egg-info/SOURCES.txt +0 -165
  436. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/LICENSE +0 -0
  437. {recce_nightly-1.22.0.20251028/recce/adapter → recce_nightly-1.25.0.20251118/integration_tests/sqlmesh}/__init__.py +0 -0
  438. /recce_nightly-1.22.0.20251028/recce/apis/__init__.py → /recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/data/.keep +0 -0
  439. {recce_nightly-1.22.0.20251028/tests → recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/hooks}/__init__.py +0 -0
  440. {recce_nightly-1.22.0.20251028/tests/adapter → recce_nightly-1.25.0.20251118/integration_tests/sqlmesh/macros}/__init__.py +0 -0
  441. {recce_nightly-1.22.0.20251028/recce/data → recce_nightly-1.25.0.20251118/js/app}/favicon.ico +0 -0
  442. {recce_nightly-1.22.0.20251028/recce/data → recce_nightly-1.25.0.20251118/js/public}/auth_callback.html +0 -0
  443. {recce_nightly-1.22.0.20251028/recce/data → recce_nightly-1.25.0.20251118/js/public}/imgs/feedback/thumbs-down.png +0 -0
  444. {recce_nightly-1.22.0.20251028/recce/data → recce_nightly-1.25.0.20251118/js/public}/imgs/feedback/thumbs-up.png +0 -0
  445. {recce_nightly-1.22.0.20251028/recce/data → recce_nightly-1.25.0.20251118/js/public}/imgs/reload-image.svg +0 -0
  446. {recce_nightly-1.22.0.20251028/recce/data → recce_nightly-1.25.0.20251118/js/public}/logo/recce-logo-white.png +0 -0
  447. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/__init__.py +0 -0
  448. {recce_nightly-1.22.0.20251028/tests/adapter/dbt_adapter → recce_nightly-1.25.0.20251118/recce/adapter}/__init__.py +0 -0
  449. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/adapter/base.py +0 -0
  450. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/adapter/dbt_adapter/dbt_version.py +0 -0
  451. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/adapter/sqlmesh_adapter.py +0 -0
  452. {recce_nightly-1.22.0.20251028/tests/tasks → recce_nightly-1.25.0.20251118/recce/apis}/__init__.py +0 -0
  453. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/apis/check_api.py +0 -0
  454. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/apis/check_func.py +0 -0
  455. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/apis/run_api.py +0 -0
  456. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/apis/run_func.py +0 -0
  457. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/config.py +0 -0
  458. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/connect_to_cloud.py +0 -0
  459. /recce_nightly-1.22.0.20251028/recce/data/_next/static/chunks/polyfills-42372ed130431b0a.js → /recce_nightly-1.25.0.20251118/recce/data/_next/static/chunks/a6dad97d9634a72d.js +0 -0
  460. {recce_nightly-1.22.0.20251028/recce/data/_next/static/_UQ-xjTAp8fsO_W6fwsWz → recce_nightly-1.25.0.20251118/recce/data/_next/static/gIS4zIcPD_5Df8RLpMGPx}/_ssgManifest.js +0 -0
  461. /recce_nightly-1.22.0.20251028/recce/data/_next/static/media/montserrat-cyrillic-800-normal.ffc85bb1.woff2 → /recce_nightly-1.25.0.20251118/recce/data/_next/static/media/montserrat-cyrillic-800-normal.d80d830d.woff2 +0 -0
  462. /recce_nightly-1.22.0.20251028/recce/data/_next/static/media/montserrat-cyrillic-800-normal.728ecd06.woff → /recce_nightly-1.25.0.20251118/recce/data/_next/static/media/montserrat-cyrillic-800-normal.f9d58125.woff +0 -0
  463. /recce_nightly-1.22.0.20251028/recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.622429c0.woff2 → /recce_nightly-1.25.0.20251118/recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.076c2a93.woff2 +0 -0
  464. /recce_nightly-1.22.0.20251028/recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.e6e0d8d0.woff → /recce_nightly-1.25.0.20251118/recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.a4fa76b5.woff +0 -0
  465. /recce_nightly-1.22.0.20251028/recce/data/_next/static/media/montserrat-latin-800-normal.cb2a73f0.woff2 → /recce_nightly-1.25.0.20251118/recce/data/_next/static/media/montserrat-latin-800-normal.cde454cc.woff2 +0 -0
  466. /recce_nightly-1.22.0.20251028/recce/data/_next/static/media/montserrat-latin-800-normal.03b5c539.woff → /recce_nightly-1.25.0.20251118/recce/data/_next/static/media/montserrat-latin-800-normal.d5761935.woff +0 -0
  467. /recce_nightly-1.22.0.20251028/recce/data/_next/static/media/montserrat-latin-ext-800-normal.b743ada6.woff2 → /recce_nightly-1.25.0.20251118/recce/data/_next/static/media/montserrat-latin-ext-800-normal.40ec0659.woff2 +0 -0
  468. /recce_nightly-1.22.0.20251028/recce/data/_next/static/media/montserrat-latin-ext-800-normal.9a203bee.woff → /recce_nightly-1.25.0.20251118/recce/data/_next/static/media/montserrat-latin-ext-800-normal.b671449b.woff +0 -0
  469. /recce_nightly-1.22.0.20251028/recce/data/_next/static/media/montserrat-vietnamese-800-normal.26be96a4.woff → /recce_nightly-1.25.0.20251118/recce/data/_next/static/media/montserrat-vietnamese-800-normal.9f7b8541.woff +0 -0
  470. /recce_nightly-1.22.0.20251028/recce/data/_next/static/media/montserrat-vietnamese-800-normal.5d0e1261.woff2 → /recce_nightly-1.25.0.20251118/recce/data/_next/static/media/montserrat-vietnamese-800-normal.f9eb854e.woff2 +0 -0
  471. /recce_nightly-1.22.0.20251028/recce/data/_next/static/media/reload-image.79aabb7d.svg → /recce_nightly-1.25.0.20251118/recce/data/_next/static/media/reload-image.7aa931c7.svg +0 -0
  472. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/diff.py +0 -0
  473. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/event/CONFIG +0 -0
  474. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/event/SENTRY_DNS +0 -0
  475. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/event/collector.py +0 -0
  476. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/event/track.py +0 -0
  477. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/exceptions.py +0 -0
  478. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/git.py +0 -0
  479. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/github.py +0 -0
  480. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/models/__init__.py +0 -0
  481. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/models/check.py +0 -0
  482. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/models/run.py +0 -0
  483. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/pull_request.py +0 -0
  484. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/run.py +0 -0
  485. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/state/__init__.py +0 -0
  486. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/state/local.py +0 -0
  487. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/summary.py +0 -0
  488. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/tasks/__init__.py +0 -0
  489. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/tasks/core.py +0 -0
  490. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/tasks/histogram.py +0 -0
  491. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/tasks/lineage.py +0 -0
  492. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/tasks/profile.py +0 -0
  493. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/tasks/query.py +0 -0
  494. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/tasks/rowcount.py +0 -0
  495. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/tasks/schema.py +0 -0
  496. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/tasks/top_k.py +0 -0
  497. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/tasks/valuediff.py +0 -0
  498. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/util/__init__.py +0 -0
  499. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/util/cache.py +0 -0
  500. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/util/cll.py +0 -0
  501. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/util/io.py +0 -0
  502. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/util/lineage.py +0 -0
  503. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/util/logger.py +0 -0
  504. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/util/onboarding_state.py +0 -0
  505. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/util/perf_tracking.py +0 -0
  506. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/util/pydantic_model.py +0 -0
  507. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/util/singleton.py +0 -0
  508. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce/yaml/__init__.py +0 -0
  509. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce_nightly.egg-info/dependency_links.txt +0 -0
  510. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/recce_nightly.egg-info/entry_points.txt +0 -0
  511. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/setup.cfg +0 -0
  512. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/adapter/dbt_adapter/conftest.py +0 -0
  513. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/adapter/dbt_adapter/dbt_test_helper.py +0 -0
  514. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/adapter/dbt_adapter/test_dbt_adapter.py +0 -0
  515. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/adapter/dbt_adapter/test_selector.py +0 -0
  516. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/tasks/conftest.py +0 -0
  517. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/tasks/test_histogram.py +0 -0
  518. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/tasks/test_lineage.py +0 -0
  519. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/tasks/test_preset_checks.py +0 -0
  520. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/tasks/test_profile.py +0 -0
  521. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/tasks/test_query.py +0 -0
  522. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/tasks/test_row_count.py +0 -0
  523. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/tasks/test_schema.py +0 -0
  524. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/tasks/test_top_k.py +0 -0
  525. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/tasks/test_valuediff.py +0 -0
  526. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/test_cloud_listing_cli.py +0 -0
  527. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/test_config.py +0 -0
  528. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/test_connect_to_cloud.py +0 -0
  529. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/test_core.py +0 -0
  530. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/test_dbt.py +0 -0
  531. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/test_pull_request.py +0 -0
  532. {recce_nightly-1.22.0.20251028 → recce_nightly-1.25.0.20251118}/tests/test_server.py +0 -0
@@ -0,0 +1,26 @@
1
+ # EditorConfig is awesome: http://EditorConfig.org
2
+
3
+ # top-most EditorConfig file
4
+ root = true
5
+
6
+ # Unix-style newlines with a newline ending every file
7
+ [*]
8
+ end_of_line = lf
9
+ insert_final_newline = true
10
+ trim_trailing_whitespace = true
11
+ charset = utf-8
12
+
13
+ # 4 space indentation
14
+ [*.{py,java,r,R}]
15
+ indent_style = space
16
+ indent_size = 4
17
+
18
+ # 2 space indentation
19
+ [*.{js,json,yml,yaml,html,cwl,tsx}]
20
+ indent_style = space
21
+ indent_size = 2
22
+
23
+ [*.{md,Rmd,rst}]
24
+ trim_trailing_whitespace = false
25
+ indent_style = space
26
+ indent_size = 2
@@ -0,0 +1,37 @@
1
+ [flake8]
2
+ # Ignore rules with descriptions:
3
+ ignore =
4
+ # W605: Invalid escape sequence - Ignores invalid escape sequences like '\d' in regex
5
+ W605,
6
+ # E501: Line too long - Allows lines longer than specified max length
7
+ E501,
8
+ # E125: Continuation line with same indent as next logical line
9
+ E125,
10
+ # E126: Continuation line over-indented for hanging indent
11
+ E126,
12
+ # W504: Line break after binary operator
13
+ W504,
14
+ # E203: Whitespace before ':' - Conflicts with Black formatter
15
+ E203,
16
+ # W503: Line break before binary operator - Conflicts with Black formatter
17
+ W503,
18
+ # F811: Redefinition of unused name - Allows redefining imports
19
+ F811
20
+
21
+ max-line-length = 120
22
+ include = recce,
23
+ tests
24
+ exclude = docs,
25
+ .git,
26
+ .venv,
27
+ venv,
28
+ debug,
29
+ build,
30
+ dist,
31
+ images,
32
+ js,
33
+ *.egg-info
34
+ .tox
35
+ per-file-ignores =
36
+ # E402: Module level import not at top of file
37
+ recce/adapter/dbt_adapter.py: E402
@@ -0,0 +1,67 @@
1
+ name: 🐞 Bug Report
2
+ description: Report a bug or an issue you've found with recce
3
+ title: "[Bug] <title>"
4
+ labels: ["bug", "triage"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thanks for taking the time to fill out this bug report!
10
+ - type: textarea
11
+ attributes:
12
+ label: Current Behavior
13
+ description: A concise description of what you're experiencing.
14
+ validations:
15
+ required: true
16
+ - type: textarea
17
+ attributes:
18
+ label: Expected Behavior
19
+ description: A concise description of what you expected to happen.
20
+ validations:
21
+ required: true
22
+ - type: textarea
23
+ attributes:
24
+ label: Steps To Reproduce
25
+ description: Steps to reproduce the behavior.
26
+ placeholder: |
27
+ 1. In this environment...
28
+ 2. With this config...
29
+ 3. Run '...'
30
+ 4. See error...
31
+ validations:
32
+ required: true
33
+ - type: textarea
34
+ id: logs
35
+ attributes:
36
+ label: Relevant log output
37
+ description: >
38
+ Please copy and paste any relevant log output. This will be
39
+ automatically formatted into code, so no need for backticks.
40
+ Tip: you can find the executed sql in `logs/dbt.log`
41
+ render: shell
42
+ - type: textarea
43
+ attributes:
44
+ label: Environment
45
+ description: |
46
+ examples:
47
+ - recce: 0.1.0 (`recce version`)
48
+ - OS: MacOS 13.2.1
49
+ - Python: 3.9.12 (`python3 --version`)
50
+ - Data Warehouse: snowflake or postgresql 14.10
51
+ - dbt: (`dbt --version`)
52
+
53
+ value: |
54
+ - recce:
55
+ - OS:
56
+ - Python:
57
+ - Data Warehouse:
58
+ - dbt:
59
+ - type: textarea
60
+ attributes:
61
+ label: Additional Context
62
+ description: |
63
+ Links? References? Anything that will give us more context about the issue you are encountering!
64
+
65
+ Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
66
+ validations:
67
+ required: false
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: Custom issue template
3
+ about: Describe this issue template's purpose here.
4
+ title: ''
5
+ labels:
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+
@@ -0,0 +1,42 @@
1
+ name: ✨ Feature
2
+ description: Propose a feature for recce
3
+ title: "[Feature] <title>"
4
+ labels: ["enhancement", "triage"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thanks for taking the time to fill out this feature request!
10
+ - type: textarea
11
+ attributes:
12
+ label: Describe the feature
13
+ description: A clear and concise description of what you want to happen.
14
+ validations:
15
+ required: true
16
+ - type: textarea
17
+ attributes:
18
+ label: Describe alternatives you've considered
19
+ description: |
20
+ A clear and concise description of any alternative solutions or features you've considered.
21
+ validations:
22
+ required: false
23
+ - type: textarea
24
+ attributes:
25
+ label: Who will this benefit?
26
+ description: |
27
+ What kind of use case will this feature be useful for? Please be specific and provide examples, this will help us prioritize properly.
28
+ validations:
29
+ required: false
30
+ - type: input
31
+ attributes:
32
+ label: Are you interested in contributing this feature?
33
+ description: Let us know if you want to write some code, and how we can help.
34
+ validations:
35
+ required: false
36
+ - type: textarea
37
+ attributes:
38
+ label: Anything else?
39
+ description: |
40
+ Links? References? Anything that will give us more context about the feature you are suggesting!
41
+ validations:
42
+ required: false
@@ -0,0 +1,21 @@
1
+ <!-- Thanks for sending a pull request! Here are some check items for you: -->
2
+
3
+ **PR checklist**
4
+
5
+ - [ ] Ensure you have added or ran the appropriate tests for your PR.
6
+ - [ ] DCO signed
7
+
8
+ **What type of PR is this?**
9
+
10
+ **What this PR does / why we need it**:
11
+
12
+ **Which issue(s) this PR fixes**:
13
+
14
+ **Special notes for your reviewer**:
15
+
16
+ **Does this PR introduce a user-facing change?**:
17
+ <!--
18
+ If no, just write "NONE" in the release-note block below.
19
+ If yes, a release note is required:
20
+ Enter your extended release note in the block below. If the PR requires additional action from users switching to the new release, include the string "action required".
21
+ -->
@@ -0,0 +1,331 @@
1
+ # Recce Copilot Instructions
2
+
3
+ ## Project Overview
4
+
5
+ Recce is a data validation and review tool for dbt and SQLMesh projects. It's a Python/TypeScript monorepo providing CLI
6
+ tools and a web UI for comparing data environments, performing diffs, and collaborative review.
7
+
8
+ **Key Info:**
9
+
10
+ - **Type:** Python package (main) + TypeScript/React frontend + lightweight recce-cloud CLI
11
+ - **Languages:** Python 3.9-3.13, TypeScript/React 19, Next.js 16
12
+ - **Size:** ~50K lines (Python: 30K, TypeScript: 20K)
13
+ - **Main Commands:** `recce server`, `recce run`, `recce-cloud upload`
14
+ - **Frameworks:** FastAPI, Next.js, React 19, Chakra UI, pnpm
15
+
16
+ ## Build & Validation
17
+
18
+ ### Python Backend - ALWAYS use these commands in order
19
+
20
+ **Installation (Development):**
21
+
22
+ ```bash
23
+ # Always run these together - pre-commit hooks are required
24
+ make install-dev
25
+ # OR
26
+ pip install -e .[dev]
27
+ pre-commit install
28
+ ```
29
+
30
+ **Code Quality - Run before committing:**
31
+
32
+ ```bash
33
+ # Format code (Black + isort) - always run first
34
+ make format
35
+
36
+ # Check without modifying
37
+ make check # Runs black --check, isort --check, flake8
38
+
39
+ # Lint only
40
+ make flake8
41
+ ```
42
+
43
+ **Testing:**
44
+
45
+ ```bash
46
+ # Basic tests - fast, run for every change
47
+ make test
48
+ # OR
49
+ pytest tests
50
+
51
+ # With coverage report (htmlcov/index.html)
52
+ make test-coverage
53
+
54
+ # Multi-version testing (dbt 1.6-1.9, Python 3.9-3.13)
55
+ make test-tox # ~5-10 minutes
56
+ make test-tox-python-versions # ~10-15 minutes
57
+ ```
58
+
59
+ **Common Errors & Fixes:**
60
+
61
+ - `ImportError` after adding dependencies: Run `pip install -e .[dev]` again
62
+ - `flake8` failures: Run `make format` first, then check `.flake8` config
63
+ - Test failures: Check if dbt artifacts exist in `integration_tests/dbt/target` and `integration_tests/dbt/target-base`
64
+
65
+ # Updated Section for .github/copilot-instructions.md
66
+
67
+ Replace the **TypeScript Frontend** section and the **CI/CD Validation Pipelines** sections with the updated content
68
+ below:
69
+
70
+ ---
71
+
72
+ ### TypeScript Frontend - CRITICAL build workflow
73
+
74
+ **Installation:**
75
+
76
+ ```bash
77
+ cd js
78
+ pnpm install # Uses pnpm 10, NOT npm or yarn
79
+ ```
80
+
81
+ **Development Server:**
82
+
83
+ ```bash
84
+ cd js
85
+ pnpm dev # Runs Next.js with Turbopack on port 3000
86
+ # OR from root
87
+ make dev
88
+ ```
89
+
90
+ **Build Process - MUST follow this sequence:**
91
+
92
+ ```bash
93
+ cd js
94
+ pnpm run build
95
+ # This does:
96
+ # 1. Cleans ../recce/data/
97
+ # 2. Builds Next.js to js/out/
98
+ # 3. Moves js/out/ to ../recce/data/
99
+ # You MUST run this after ANY frontend changes before testing with 'recce server'
100
+ ```
101
+
102
+ **Linting & Type Checking:**
103
+
104
+ ```bash
105
+ cd js
106
+ pnpm lint # Biome lint & format check
107
+ pnpm lint:fix # Auto-fix with Biome
108
+ pnpm type:check # TypeScript compiler
109
+ ```
110
+
111
+ **Common Errors & Fixes:**
112
+
113
+ - Changes not appearing in `recce server`: Run `cd js && pnpm run build` then restart server
114
+ - `pnpm: command not found`: Install with `npm install -g corepack@latest && corepack enable`
115
+ - Build fails: Check Node version is >=20 (`node --version`)
116
+ - Type errors: Run `pnpm type:check` to see full error messages
117
+ - Biome lint failures: Run `pnpm lint:fix` for auto-fixable issues
118
+
119
+ ---
120
+
121
+ ## CI/CD Validation Pipelines
122
+
123
+ **GitHub Actions workflows that MUST pass:**
124
+
125
+ 1. **tests-python.yaml** - Runs on `recce/**` or `tests/**` changes
126
+
127
+ - Flake8 linting (Python 3.10)
128
+ - Tests across dbt 1.6-1.9 (Python 3.10)
129
+ - Tests across Python 3.11-3.13 (latest dbt)
130
+ - Codecov upload
131
+
132
+ 2. **tests-js.yaml** - Runs on `js/**` changes
133
+
134
+ - Biome linting with frozen lockfile
135
+ - Frontend build verification
136
+
137
+ 3. **integration-tests.yaml** - Full dbt smoke tests
138
+
139
+ - Matrix: Python 3.9-3.13 × dbt 1.6-latest
140
+ - Runs `integration_tests/dbt/smoke_test.sh`
141
+ - Tests: `recce run`, `recce summary`, `recce server`
142
+
143
+ 4. **integration-tests-sqlmesh.yaml** - SQLMesh compatibility
144
+
145
+ - Python 3.11 + SQLMesh latest
146
+ - Runs `integration_tests/sqlmesh/test_server.sh`
147
+
148
+ **To replicate CI locally:**
149
+
150
+ ```bash
151
+ # Python style check
152
+ pip install flake8 && make flake8
153
+
154
+ # Python tests (single version)
155
+ make test
156
+
157
+ # Python tests (multi-version) - matches CI
158
+ make test-tox
159
+
160
+ # Frontend lint + build - matches CI
161
+ cd js && pnpm install --frozen-lockfile && pnpm lint && pnpm run build
162
+
163
+ # Integration test (dbt)
164
+ cd integration_tests/dbt && ./smoke_test.sh
165
+
166
+ # Integration test (SQLMesh)
167
+ cd integration_tests/sqlmesh && ./prep_env.sh && ./test_server.sh
168
+ ```
169
+
170
+ ## Project Layout
171
+
172
+ ### Root Files
173
+
174
+ - `setup.py` - Main package (recce), installs `recce` command
175
+ - `setup_cloud.py` - Cloud CLI (recce-cloud), installs `recce-cloud` command
176
+ - `Makefile` - All build/test commands
177
+ - `tox.ini` - Multi-version testing (dbt 1.6-1.9)
178
+ - `pyproject.toml` - Black/isort config (line-length: 120)
179
+ - `.flake8` - Linting rules (ignores W605, E501, E203, W503, F811)
180
+ - `.pre-commit-config.yaml` - Git hooks (Black, isort, flake8, trailing whitespace)
181
+
182
+ ### Python Backend (`recce/`)
183
+
184
+ ```
185
+ recce/
186
+ ├── cli.py # Main CLI entry point (click commands)
187
+ ├── __init__.py # Version loading
188
+ ├── VERSION # Single source of truth for version
189
+ ├── adapter/ # dbt/SQLMesh adapters (BaseAdapter interface)
190
+ │ ├── dbt_adapter.py
191
+ │ └── sqlmesh_adapter.py
192
+ ├── apis/ # FastAPI routes
193
+ │ ├── server.py # Main FastAPI app
194
+ │ ├── check_func.py # Check CRUD
195
+ │ └── run_func.py # Run execution
196
+ ├── core.py # RecceContext singleton
197
+ ├── models/ # Pydantic models (Check, Run, etc.)
198
+ ├── tasks/ # Async task execution (QueryTask, DiffTask, etc.)
199
+ ├── state/ # State persistence (FileStateLoader, CloudStateLoader)
200
+ ├── config.py # recce.yml config loading
201
+ └── data/ # GENERATED - DO NOT EDIT (from js/out/)
202
+ ```
203
+
204
+ ### TypeScript Frontend (`js/`)
205
+
206
+ ```
207
+ js/
208
+ ├── package.json # pnpm 10, Node >=20, React 19, Next.js 16
209
+ ├── tsconfig.json # TypeScript config
210
+ ├── next.config.mjs # Next.js config (output: 'export')
211
+ ├── src/
212
+ │ ├── app/ # Next.js app router
213
+ │ ├── lib/
214
+ │ │ ├── api/ # API client (axios)
215
+ │ │ └── hooks/ # React hooks
216
+ │ ├── components/ # React components (Chakra UI)
217
+ │ ├── constants/
218
+ │ └── utils/
219
+ ├── .husky/ # Git hooks for JS files
220
+ └── out/ # Build output (moved to ../recce/data/)
221
+ ```
222
+
223
+ ### Cloud CLI (`recce_cloud/`)
224
+
225
+ ```
226
+ recce_cloud/
227
+ ├── cli.py # recce-cloud CLI (click)
228
+ ├── upload.py # Artifact upload logic
229
+ ├── ci_providers.py # GitHub/GitLab detection
230
+ └── artifact.py # Artifact validation
231
+ ```
232
+
233
+ ### Tests (`tests/`)
234
+
235
+ - Unit tests with pytest
236
+ - Integration tests in `integration_tests/dbt/` and `integration_tests/sqlmesh/`
237
+ - Test coverage report: `htmlcov/index.html`
238
+
239
+ ### Configuration Files
240
+
241
+ - **Python linting:** `.flake8` (line-length 120, ignores E203/W503/E501)
242
+ - **Python formatting:** `pyproject.toml` (Black line-length 120, isort profile black)
243
+ - **Frontend:** `js/eslint.config.mjs`, `js/tsconfig.json`
244
+ - **Pre-commit:** `.pre-commit-config.yaml` (excludes `recce/data/`)
245
+
246
+ ## Architecture Notes
247
+
248
+ **Dual Package Structure:**
249
+
250
+ - Main package (`recce`) has 20+ dependencies (FastAPI, dbt parsing, etc.)
251
+ - Cloud CLI (`recce-cloud`) has only 3 dependencies (click, requests, rich) for fast CI installs
252
+ - Both share `recce/VERSION` file
253
+
254
+ **State Management:**
255
+
256
+ - `RecceContext` singleton holds all runtime state
257
+ - Supports local (`FileStateLoader`) and cloud (`CloudStateLoader`) persistence
258
+ - State auto-saves to `recce_state.json` on server shutdown
259
+ - NEVER commit state files (user-specific runtime data)
260
+
261
+ **Frontend Build:**
262
+
263
+ - Next.js builds static export to `js/out/`
264
+ - Build script moves to `recce/data/` which Python serves
265
+ - Changes require rebuild: `cd js && pnpm run build`
266
+
267
+ **Adapter Pattern:**
268
+
269
+ - All adapters extend `BaseAdapter` abstract class
270
+ - Must implement: `get_lineage()`, `get_model()`, `execute_sql()`, etc.
271
+ - Loaded dynamically via CLI flags (`--sqlmesh`)
272
+
273
+ **Critical Paths:**
274
+
275
+ 1. User creates check → POST `/api/checks` → `check_func.py`
276
+ 2. User runs check → POST `/api/runs` → `run_func.py` → async task
277
+ 3. Frontend polls `/api/runs/{id}/wait` → returns results
278
+ 4. State auto-saves via `RecceContext.save()`
279
+
280
+ ## Key Commands Reference
281
+
282
+ ```bash
283
+ # Development setup
284
+ make install-dev # Install with dev dependencies + hooks
285
+
286
+ # Code quality
287
+ make format # Format Python (Black + isort)
288
+ make check # Check Python without changes
289
+ make flake8 # Lint Python
290
+ make format-cloud # Format recce-cloud
291
+ make check-cloud # Check recce-cloud
292
+
293
+ # Testing
294
+ make test # Fast unit tests
295
+ make test-coverage # Tests with HTML coverage
296
+ make test-tox # Multi-version dbt tests (~10 min)
297
+
298
+ # Frontend
299
+ cd js && pnpm install # Install dependencies
300
+ cd js && pnpm dev # Dev server (port 3000)
301
+ cd js && pnpm run build # REQUIRED after frontend changes
302
+ cd js && pnpm lint # ESLint
303
+ cd js && pnpm type:check # TypeScript check
304
+
305
+ # Running Recce
306
+ recce server # Start server (localhost:8000)
307
+ recce debug # Diagnose setup issues
308
+ recce run # Execute checks from recce.yml
309
+
310
+ # Cloud CLI
311
+ recce-cloud upload # Upload artifacts to Recce Cloud
312
+ ```
313
+
314
+ ## CRITICAL: Trust These Instructions
315
+
316
+ **Always prefer these documented commands over exploration.** The build process has specific ordering requirements:
317
+
318
+ 1. Python changes: `make format` → `make check` → `make test`
319
+ 2. Frontend changes: `cd js && pnpm run build` → restart `recce server`
320
+ 3. Before committing: `make check` and `cd js && pnpm lint && pnpm type:check`
321
+
322
+ **When instructions are incomplete or incorrect:** Only then use search/exploration tools. Report findings so
323
+ instructions can be updated.
324
+
325
+ **Common pitfalls to avoid:**
326
+
327
+ - Don't edit `recce/data/` directly (regenerate with `cd js && pnpm run build`)
328
+ - Don't skip `make format` (Black/isort are enforced by CI)
329
+ - Don't use `npm` or `yarn` (must use `pnpm`)
330
+ - Don't commit `recce_state.json` or integration test outputs
331
+ - Don't forget to restart `recce server` after frontend builds