mage-ai 0.9.68__py3-none-any.whl → 0.9.69__py3-none-any.whl

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 mage-ai might be problematic. Click here for more details.

Files changed (231) hide show
  1. mage_ai/api/resources/SeedResource.py +2 -1
  2. mage_ai/api/resources/SessionResource.py +13 -1
  3. mage_ai/authentication/permissions/constants.py +2 -0
  4. mage_ai/authentication/permissions/seed.py +32 -21
  5. mage_ai/authentication/providers/active_directory.py +4 -3
  6. mage_ai/authentication/providers/okta.py +22 -83
  7. mage_ai/data_preparation/executors/streaming_pipeline_executor.py +77 -7
  8. mage_ai/data_preparation/models/block/__init__.py +7 -3
  9. mage_ai/data_preparation/models/block/data_integration/mixins.py +16 -5
  10. mage_ai/data_preparation/models/block/dynamic/child.py +3 -0
  11. mage_ai/data_preparation/models/block/dynamic/variables.py +2 -2
  12. mage_ai/data_preparation/models/block/extension/utils.py +1 -0
  13. mage_ai/data_preparation/models/block/integration/__init__.py +1 -1
  14. mage_ai/data_preparation/models/block/sql/__init__.py +1 -1
  15. mage_ai/data_preparation/models/pipeline.py +22 -6
  16. mage_ai/data_preparation/models/utils.py +6 -0
  17. mage_ai/data_preparation/models/variable.py +18 -4
  18. mage_ai/data_preparation/repo_manager.py +3 -2
  19. mage_ai/data_preparation/shared/utils.py +1 -1
  20. mage_ai/data_preparation/templates/data_exporters/mysql.py +2 -2
  21. mage_ai/data_preparation/templates/data_exporters/oracledb.py +27 -0
  22. mage_ai/data_preparation/templates/repo/metadata.yaml +1 -0
  23. mage_ai/io/bigquery.py +131 -58
  24. mage_ai/io/mysql.py +38 -6
  25. mage_ai/io/snowflake.py +152 -29
  26. mage_ai/orchestration/db/models/oauth.py +4 -4
  27. mage_ai/orchestration/db/models/schedules.py +9 -2
  28. mage_ai/orchestration/job_manager.py +6 -0
  29. mage_ai/orchestration/pipeline_scheduler_original.py +16 -6
  30. mage_ai/orchestration/queue/celery_queue.py +8 -1
  31. mage_ai/orchestration/queue/process_queue.py +67 -4
  32. mage_ai/orchestration/queue/queue.py +8 -0
  33. mage_ai/server/constants.py +1 -1
  34. mage_ai/server/frontend_dist/404.html +2 -2
  35. mage_ai/server/frontend_dist/_next/static/{i8pymuJDTVHdWjUP1QSh1 → _krrrgup_C-dPOpX36S8I}/_buildManifest.js +1 -1
  36. mage_ai/server/frontend_dist/_next/static/chunks/1557-df144fbd8b2208c3.js +1 -0
  37. mage_ai/server/frontend_dist/_next/static/chunks/2717-d9200be634dd6766.js +1 -0
  38. mage_ai/server/frontend_dist/_next/static/chunks/3548-fa0792ddb88f4646.js +1 -0
  39. mage_ai/server/frontend_dist/_next/static/chunks/5699-6d708c6b2153ea08.js +1 -0
  40. mage_ai/server/frontend_dist/_next/static/chunks/7361-8a23dd8360593e7a.js +1 -0
  41. mage_ai/server/frontend_dist/_next/static/chunks/pages/_app-d9c89527266296f7.js +1 -0
  42. mage_ai/server/frontend_dist/_next/static/chunks/pages/index-4e12783b064c1cfe.js +1 -0
  43. mage_ai/server/frontend_dist/_next/static/chunks/pages/{pipeline-runs-a66b4c7641ae03eb.js → pipeline-runs-3edc6270c5b0e962.js} +1 -1
  44. mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/edit-e1dd1ed71d26c10d.js +1 -0
  45. mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/settings-59aca25a5b1d3998.js +1 -0
  46. mage_ai/server/{frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/triggers-cb88fd075a357fcf.js → frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/triggers-1bdfda8edc9cf4a8.js} +1 -1
  47. mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines-3591d035bb3bb2b8.js +1 -0
  48. mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/platform/preferences-503049734a8b082f.js +1 -0
  49. mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/platform/settings-c2e9ef989c8bfa73.js +1 -0
  50. mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/preferences-5b26eeda8aed8a7b.js +1 -0
  51. mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/{sync-data-79a4cf66a623e667.js → sync-data-8b793b3b696a2cd3.js} +1 -1
  52. mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/{users-86814e581acaf5db.js → users-a4db8710f703c729.js} +1 -1
  53. mage_ai/server/frontend_dist/_next/static/chunks/pages/sign-in-09414a8b66fb6f06.js +1 -0
  54. mage_ai/server/frontend_dist/block-layout.html +2 -2
  55. mage_ai/server/frontend_dist/compute.html +2 -2
  56. mage_ai/server/frontend_dist/files.html +2 -2
  57. mage_ai/server/frontend_dist/global-data-products/[...slug].html +2 -2
  58. mage_ai/server/frontend_dist/global-data-products.html +2 -2
  59. mage_ai/server/frontend_dist/global-hooks/[...slug].html +2 -2
  60. mage_ai/server/frontend_dist/global-hooks.html +2 -2
  61. mage_ai/server/frontend_dist/index.html +2 -2
  62. mage_ai/server/frontend_dist/manage/files.html +2 -2
  63. mage_ai/server/frontend_dist/manage/settings.html +2 -2
  64. mage_ai/server/frontend_dist/manage/users/[user].html +2 -2
  65. mage_ai/server/frontend_dist/manage/users/new.html +2 -2
  66. mage_ai/server/frontend_dist/manage/users.html +2 -2
  67. mage_ai/server/frontend_dist/manage.html +2 -2
  68. mage_ai/server/frontend_dist/oauth.html +2 -2
  69. mage_ai/server/frontend_dist/overview.html +2 -2
  70. mage_ai/server/frontend_dist/pipeline-runs.html +2 -2
  71. mage_ai/server/frontend_dist/pipelines/[pipeline]/backfills/[...slug].html +2 -2
  72. mage_ai/server/frontend_dist/pipelines/[pipeline]/backfills.html +2 -2
  73. mage_ai/server/frontend_dist/pipelines/[pipeline]/dashboard.html +2 -2
  74. mage_ai/server/frontend_dist/pipelines/[pipeline]/edit.html +2 -2
  75. mage_ai/server/frontend_dist/pipelines/[pipeline]/logs.html +2 -2
  76. mage_ai/server/frontend_dist/pipelines/[pipeline]/monitors/block-runs.html +2 -2
  77. mage_ai/server/frontend_dist/pipelines/[pipeline]/monitors/block-runtime.html +2 -2
  78. mage_ai/server/frontend_dist/pipelines/[pipeline]/monitors.html +2 -2
  79. mage_ai/server/frontend_dist/pipelines/[pipeline]/runs/[run].html +2 -2
  80. mage_ai/server/frontend_dist/pipelines/[pipeline]/runs.html +2 -2
  81. mage_ai/server/frontend_dist/pipelines/[pipeline]/settings.html +2 -2
  82. mage_ai/server/frontend_dist/pipelines/[pipeline]/syncs.html +2 -2
  83. mage_ai/server/frontend_dist/pipelines/[pipeline]/triggers/[...slug].html +2 -2
  84. mage_ai/server/frontend_dist/pipelines/[pipeline]/triggers.html +2 -2
  85. mage_ai/server/frontend_dist/pipelines/[pipeline].html +2 -2
  86. mage_ai/server/frontend_dist/pipelines.html +2 -2
  87. mage_ai/server/frontend_dist/platform/global-hooks/[...slug].html +2 -2
  88. mage_ai/server/frontend_dist/platform/global-hooks.html +2 -2
  89. mage_ai/server/frontend_dist/settings/account/profile.html +2 -2
  90. mage_ai/server/frontend_dist/settings/platform/preferences.html +2 -2
  91. mage_ai/server/frontend_dist/settings/platform/settings.html +2 -2
  92. mage_ai/server/frontend_dist/settings/workspace/permissions/[...slug].html +2 -2
  93. mage_ai/server/frontend_dist/settings/workspace/permissions.html +2 -2
  94. mage_ai/server/frontend_dist/settings/workspace/preferences.html +2 -2
  95. mage_ai/server/frontend_dist/settings/workspace/roles/[...slug].html +2 -2
  96. mage_ai/server/frontend_dist/settings/workspace/roles.html +2 -2
  97. mage_ai/server/frontend_dist/settings/workspace/sync-data.html +2 -2
  98. mage_ai/server/frontend_dist/settings/workspace/users/[...slug].html +2 -2
  99. mage_ai/server/frontend_dist/settings/workspace/users.html +2 -2
  100. mage_ai/server/frontend_dist/settings.html +2 -2
  101. mage_ai/server/frontend_dist/sign-in.html +2 -2
  102. mage_ai/server/frontend_dist/templates/[...slug].html +2 -2
  103. mage_ai/server/frontend_dist/templates.html +2 -2
  104. mage_ai/server/frontend_dist/terminal.html +2 -2
  105. mage_ai/server/frontend_dist/test.html +2 -2
  106. mage_ai/server/frontend_dist/triggers.html +2 -2
  107. mage_ai/server/frontend_dist/version-control.html +2 -2
  108. mage_ai/server/frontend_dist_base_path_template/404.html +2 -2
  109. mage_ai/server/frontend_dist_base_path_template/_next/static/{CKCvjsYCf2imD2X8zAOBf → KLL5mirre9d7_ZeEpaw3s}/_buildManifest.js +1 -1
  110. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/1557-df144fbd8b2208c3.js +1 -0
  111. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/2717-d9200be634dd6766.js +1 -0
  112. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/3548-fa0792ddb88f4646.js +1 -0
  113. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/5699-6d708c6b2153ea08.js +1 -0
  114. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/7361-8a23dd8360593e7a.js +1 -0
  115. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/_app-d9c89527266296f7.js +1 -0
  116. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/index-4e12783b064c1cfe.js +1 -0
  117. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/{pipeline-runs-a66b4c7641ae03eb.js → pipeline-runs-3edc6270c5b0e962.js} +1 -1
  118. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/edit-e1dd1ed71d26c10d.js +1 -0
  119. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/settings-59aca25a5b1d3998.js +1 -0
  120. mage_ai/server/{frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/triggers-cb88fd075a357fcf.js → frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/triggers-1bdfda8edc9cf4a8.js} +1 -1
  121. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/pipelines-3591d035bb3bb2b8.js +1 -0
  122. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/settings/platform/preferences-503049734a8b082f.js +1 -0
  123. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/settings/platform/settings-c2e9ef989c8bfa73.js +1 -0
  124. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/settings/workspace/preferences-5b26eeda8aed8a7b.js +1 -0
  125. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/settings/workspace/{sync-data-79a4cf66a623e667.js → sync-data-8b793b3b696a2cd3.js} +1 -1
  126. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/settings/workspace/{users-86814e581acaf5db.js → users-a4db8710f703c729.js} +1 -1
  127. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/sign-in-09414a8b66fb6f06.js +1 -0
  128. mage_ai/server/frontend_dist_base_path_template/block-layout.html +2 -2
  129. mage_ai/server/frontend_dist_base_path_template/compute.html +2 -2
  130. mage_ai/server/frontend_dist_base_path_template/files.html +2 -2
  131. mage_ai/server/frontend_dist_base_path_template/global-data-products/[...slug].html +2 -2
  132. mage_ai/server/frontend_dist_base_path_template/global-data-products.html +2 -2
  133. mage_ai/server/frontend_dist_base_path_template/global-hooks/[...slug].html +2 -2
  134. mage_ai/server/frontend_dist_base_path_template/global-hooks.html +2 -2
  135. mage_ai/server/frontend_dist_base_path_template/index.html +2 -2
  136. mage_ai/server/frontend_dist_base_path_template/manage/files.html +2 -2
  137. mage_ai/server/frontend_dist_base_path_template/manage/settings.html +2 -2
  138. mage_ai/server/frontend_dist_base_path_template/manage/users/[user].html +2 -2
  139. mage_ai/server/frontend_dist_base_path_template/manage/users/new.html +2 -2
  140. mage_ai/server/frontend_dist_base_path_template/manage/users.html +2 -2
  141. mage_ai/server/frontend_dist_base_path_template/manage.html +2 -2
  142. mage_ai/server/frontend_dist_base_path_template/oauth.html +2 -2
  143. mage_ai/server/frontend_dist_base_path_template/overview.html +2 -2
  144. mage_ai/server/frontend_dist_base_path_template/pipeline-runs.html +2 -2
  145. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/backfills/[...slug].html +2 -2
  146. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/backfills.html +2 -2
  147. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/dashboard.html +2 -2
  148. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/edit.html +2 -2
  149. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/logs.html +2 -2
  150. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/monitors/block-runs.html +2 -2
  151. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/monitors/block-runtime.html +2 -2
  152. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/monitors.html +2 -2
  153. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/runs/[run].html +2 -2
  154. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/runs.html +2 -2
  155. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/settings.html +2 -2
  156. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/syncs.html +2 -2
  157. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/triggers/[...slug].html +2 -2
  158. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/triggers.html +2 -2
  159. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline].html +2 -2
  160. mage_ai/server/frontend_dist_base_path_template/pipelines.html +2 -2
  161. mage_ai/server/frontend_dist_base_path_template/platform/global-hooks/[...slug].html +2 -2
  162. mage_ai/server/frontend_dist_base_path_template/platform/global-hooks.html +2 -2
  163. mage_ai/server/frontend_dist_base_path_template/settings/account/profile.html +2 -2
  164. mage_ai/server/frontend_dist_base_path_template/settings/platform/preferences.html +2 -2
  165. mage_ai/server/frontend_dist_base_path_template/settings/platform/settings.html +2 -2
  166. mage_ai/server/frontend_dist_base_path_template/settings/workspace/permissions/[...slug].html +2 -2
  167. mage_ai/server/frontend_dist_base_path_template/settings/workspace/permissions.html +2 -2
  168. mage_ai/server/frontend_dist_base_path_template/settings/workspace/preferences.html +2 -2
  169. mage_ai/server/frontend_dist_base_path_template/settings/workspace/roles/[...slug].html +2 -2
  170. mage_ai/server/frontend_dist_base_path_template/settings/workspace/roles.html +2 -2
  171. mage_ai/server/frontend_dist_base_path_template/settings/workspace/sync-data.html +2 -2
  172. mage_ai/server/frontend_dist_base_path_template/settings/workspace/users/[...slug].html +2 -2
  173. mage_ai/server/frontend_dist_base_path_template/settings/workspace/users.html +2 -2
  174. mage_ai/server/frontend_dist_base_path_template/settings.html +2 -2
  175. mage_ai/server/frontend_dist_base_path_template/sign-in.html +2 -2
  176. mage_ai/server/frontend_dist_base_path_template/templates/[...slug].html +2 -2
  177. mage_ai/server/frontend_dist_base_path_template/templates.html +2 -2
  178. mage_ai/server/frontend_dist_base_path_template/terminal.html +2 -2
  179. mage_ai/server/frontend_dist_base_path_template/test.html +2 -2
  180. mage_ai/server/frontend_dist_base_path_template/triggers.html +2 -2
  181. mage_ai/server/frontend_dist_base_path_template/version-control.html +2 -2
  182. mage_ai/server/scheduler_manager.py +7 -0
  183. mage_ai/server/server.py +12 -5
  184. mage_ai/server/websocket_server.py +1 -0
  185. mage_ai/settings/keys/auth.py +2 -0
  186. mage_ai/settings/server.py +1 -1
  187. mage_ai/streaming/sources/influxdb.py +2 -0
  188. mage_ai/streaming/sources/kafka.py +1 -1
  189. mage_ai/tests/api/endpoints/mixins.py +10 -9
  190. mage_ai/tests/api/endpoints/test_seeds.py +24 -0
  191. mage_ai/tests/api/operations/test_sessions.py +53 -2
  192. mage_ai/tests/authentication/providers/test_okta.py +43 -0
  193. mage_ai/tests/orchestration/db/models/test_oauth.py +3 -3
  194. mage_ai/tests/orchestration/queue/test_process_queue.py +1 -0
  195. mage_ai/tests/server/test_server.py +8 -4
  196. {mage_ai-0.9.68.dist-info → mage_ai-0.9.69.dist-info}/METADATA +4 -4
  197. {mage_ai-0.9.68.dist-info → mage_ai-0.9.69.dist-info}/RECORD +203 -200
  198. mage_ai/server/frontend_dist/_next/static/chunks/1557-01f0843dc6ac4971.js +0 -1
  199. mage_ai/server/frontend_dist/_next/static/chunks/2717-b5f9575799b594d5.js +0 -1
  200. mage_ai/server/frontend_dist/_next/static/chunks/3548-961ff79ca70038c7.js +0 -1
  201. mage_ai/server/frontend_dist/_next/static/chunks/5699-6efc749f2f8ddd20.js +0 -1
  202. mage_ai/server/frontend_dist/_next/static/chunks/7361-18d9d8be96e1ce97.js +0 -1
  203. mage_ai/server/frontend_dist/_next/static/chunks/pages/_app-08790743315de36a.js +0 -1
  204. mage_ai/server/frontend_dist/_next/static/chunks/pages/index-13760bb72d823b69.js +0 -1
  205. mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/edit-bd0aff5a5ed8888c.js +0 -1
  206. mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/settings-d1ee961387c58b7f.js +0 -1
  207. mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines-ceb06e1616ee9610.js +0 -1
  208. mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/platform/preferences-8ff16ef9566e911a.js +0 -1
  209. mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/platform/settings-74d76300942dcee8.js +0 -1
  210. mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/preferences-d7a8bc51bb7a1082.js +0 -1
  211. mage_ai/server/frontend_dist/_next/static/chunks/pages/sign-in-f59d34429fe022ee.js +0 -1
  212. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/1557-01f0843dc6ac4971.js +0 -1
  213. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/2717-b5f9575799b594d5.js +0 -1
  214. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/3548-961ff79ca70038c7.js +0 -1
  215. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/5699-6efc749f2f8ddd20.js +0 -1
  216. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/7361-18d9d8be96e1ce97.js +0 -1
  217. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/_app-08790743315de36a.js +0 -1
  218. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/index-13760bb72d823b69.js +0 -1
  219. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/edit-bd0aff5a5ed8888c.js +0 -1
  220. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/settings-d1ee961387c58b7f.js +0 -1
  221. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/pipelines-ceb06e1616ee9610.js +0 -1
  222. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/settings/platform/preferences-8ff16ef9566e911a.js +0 -1
  223. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/settings/platform/settings-74d76300942dcee8.js +0 -1
  224. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/settings/workspace/preferences-d7a8bc51bb7a1082.js +0 -1
  225. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/sign-in-f59d34429fe022ee.js +0 -1
  226. /mage_ai/server/frontend_dist/_next/static/{i8pymuJDTVHdWjUP1QSh1 → _krrrgup_C-dPOpX36S8I}/_ssgManifest.js +0 -0
  227. /mage_ai/server/frontend_dist_base_path_template/_next/static/{CKCvjsYCf2imD2X8zAOBf → KLL5mirre9d7_ZeEpaw3s}/_ssgManifest.js +0 -0
  228. {mage_ai-0.9.68.dist-info → mage_ai-0.9.69.dist-info}/LICENSE +0 -0
  229. {mage_ai-0.9.68.dist-info → mage_ai-0.9.69.dist-info}/WHEEL +0 -0
  230. {mage_ai-0.9.68.dist-info → mage_ai-0.9.69.dist-info}/entry_points.txt +0 -0
  231. {mage_ai-0.9.68.dist-info → mage_ai-0.9.69.dist-info}/top_level.txt +0 -0
mage_ai/io/snowflake.py CHANGED
@@ -11,6 +11,7 @@ from mage_ai.data_preparation.models.block.sql.utils.shared import (
11
11
  )
12
12
  from mage_ai.io.base import QUERY_ROW_LIMIT, BaseSQLConnection, ExportWritePolicy
13
13
  from mage_ai.io.config import BaseConfigLoader, ConfigKey
14
+ from mage_ai.io.constants import UNIQUE_CONFLICT_METHOD_UPDATE
14
15
  from mage_ai.shared.hash import merge_dict
15
16
 
16
17
  DEFAULT_LOGIN_TIMEOUT = 20
@@ -201,6 +202,8 @@ class Snowflake(BaseSQLConnection):
201
202
  schema: str = None,
202
203
  if_exists: str = 'append',
203
204
  query_string: Union[str, None] = None,
205
+ unique_conflict_method: str = None,
206
+ unique_constraints: List[str] = None,
204
207
  verbose: bool = True,
205
208
  **kwargs,
206
209
  ) -> None:
@@ -265,37 +268,28 @@ class Snowflake(BaseSQLConnection):
265
268
  cur.execute(f'DROP TABLE "{schema}"."{table_name}"', timeout=self.timeout)
266
269
  should_create_table = True
267
270
 
268
- if query_string:
269
- cur.execute(f'USE DATABASE {database}', timeout=self.timeout)
270
- cur.execute(f'USE SCHEMA {schema}', timeout=self.timeout)
271
-
272
- if should_create_table:
273
- cur.execute(f"""
274
- CREATE TABLE IF NOT EXISTS "{database}"."{schema}"."{table_name}" AS
275
- {query_string}
276
- """, timeout=self.timeout)
277
- else:
278
- cur.execute(f"""
279
- INSERT INTO "{database}"."{schema}"."{table_name}"
280
- {query_string}
281
- """, timeout=self.timeout)
282
-
283
- else:
284
- write_kwargs = merge_dict(
285
- dict(
286
- auto_create_table=should_create_table,
287
- database=database,
288
- schema=schema,
289
- # This param makes sure datetime column is written correctly
290
- use_logical_type=True,
291
- ),
292
- kwargs or dict(),
293
- )
294
- write_pandas(
295
- self.conn,
271
+ if unique_constraints and unique_conflict_method and df is not None:
272
+ self.__upsert_df_into_table(
273
+ table_name,
296
274
  df,
275
+ cur,
276
+ database,
277
+ schema,
278
+ should_create_table=should_create_table,
279
+ unique_conflict_method=unique_conflict_method,
280
+ unique_constraints=unique_constraints,
281
+ **kwargs,
282
+ )
283
+ else:
284
+ self.__write_table(
297
285
  table_name,
298
- **write_kwargs,
286
+ df,
287
+ cur,
288
+ database,
289
+ schema,
290
+ should_create_table=should_create_table,
291
+ query_string=query_string,
292
+ **kwargs,
299
293
  )
300
294
 
301
295
  if verbose:
@@ -306,6 +300,135 @@ INSERT INTO "{database}"."{schema}"."{table_name}"
306
300
  else:
307
301
  __process()
308
302
 
303
+ def __upsert_df_into_table(
304
+ self,
305
+ table_name: str,
306
+ df: DataFrame,
307
+ cursor,
308
+ database: str,
309
+ schema: str,
310
+ should_create_table: bool = False,
311
+ unique_conflict_method: str = None,
312
+ unique_constraints: List[str] = None,
313
+ allow_reserved_words: bool = True,
314
+ auto_clean_name: bool = True,
315
+ case_sensitive: bool = True,
316
+ **kwargs
317
+ ):
318
+ write_kwargs = merge_dict(
319
+ dict(
320
+ auto_create_table=True,
321
+ database=database,
322
+ schema=schema,
323
+ # This param makes sure datetime column is written correctly
324
+ use_logical_type=True,
325
+ ),
326
+ kwargs or dict(),
327
+ )
328
+ # should_create_table is True when the table does not exist, so just create the
329
+ # table as normal.
330
+ if should_create_table:
331
+ write_pandas(
332
+ self.conn,
333
+ df,
334
+ table_name,
335
+ **write_kwargs,
336
+ )
337
+ else:
338
+ temp_table_name = f'temp_{table_name}'
339
+ write_pandas(
340
+ self.conn,
341
+ df,
342
+ temp_table_name,
343
+ table_type='temp',
344
+ **write_kwargs,
345
+ )
346
+
347
+ cleaned_unique_constraints = []
348
+ for col in unique_constraints:
349
+ cleaned_col = self._clean_column_name(
350
+ col,
351
+ allow_reserved_words=allow_reserved_words,
352
+ auto_clean_name=auto_clean_name,
353
+ case_sensitive=case_sensitive,
354
+ )
355
+ cleaned_unique_constraints.append(f'"{cleaned_col}"')
356
+
357
+ cleaned_columns = []
358
+ for col in df.columns:
359
+ cleaned_col = self._clean_column_name(
360
+ col,
361
+ allow_reserved_words=allow_reserved_words,
362
+ auto_clean_name=auto_clean_name,
363
+ case_sensitive=case_sensitive,
364
+ )
365
+ cleaned_columns.append(f'"{cleaned_col}"')
366
+
367
+ merge_commands = [
368
+ f'MERGE INTO "{database}"."{schema}"."{table_name}" AS a',
369
+ f'USING (SELECT * FROM "{database}"."{schema}"."{temp_table_name}") AS b',
370
+ f"ON {' AND '.join([f'a.{col} = b.{col}' for col in cleaned_unique_constraints])}",
371
+ ]
372
+
373
+ if unique_conflict_method == UNIQUE_CONFLICT_METHOD_UPDATE:
374
+ set_command = ', '.join(
375
+ [f'a.{col} = b.{col}' for col in cleaned_columns],
376
+ )
377
+ merge_commands.append(f'WHEN MATCHED THEN UPDATE SET {set_command}')
378
+
379
+ insert_columns = ', '.join(cleaned_columns)
380
+ merge_values = f"({', '.join([f'b.{col}' for col in cleaned_columns])})"
381
+ merge_commands.append(
382
+ f"WHEN NOT MATCHED THEN INSERT ({insert_columns}) VALUES {merge_values}",
383
+ )
384
+ merge_command = '\n'.join(merge_commands)
385
+
386
+ cursor.execute(merge_command, timeout=self.timeout)
387
+
388
+ def __write_table(
389
+ self,
390
+ table_name: str,
391
+ df: DataFrame,
392
+ cursor,
393
+ database: str,
394
+ schema: str,
395
+ should_create_table: bool = False,
396
+ query_string: str = None,
397
+ **kwargs
398
+ ):
399
+ if query_string:
400
+ cursor.execute(f'USE DATABASE {database}', timeout=self.timeout)
401
+ cursor.execute(f'USE SCHEMA {schema}', timeout=self.timeout)
402
+
403
+ if should_create_table:
404
+ cursor.execute(f"""
405
+ CREATE TABLE IF NOT EXISTS "{database}"."{schema}"."{table_name}" AS
406
+ {query_string}
407
+ """, timeout=self.timeout)
408
+ else:
409
+ cursor.execute(f"""
410
+ INSERT INTO "{database}"."{schema}"."{table_name}"
411
+ {query_string}
412
+ """, timeout=self.timeout)
413
+
414
+ else:
415
+ write_kwargs = merge_dict(
416
+ dict(
417
+ auto_create_table=should_create_table,
418
+ database=database,
419
+ schema=schema,
420
+ # This param makes sure datetime column is written correctly
421
+ use_logical_type=True,
422
+ ),
423
+ kwargs or dict(),
424
+ )
425
+ write_pandas(
426
+ self.conn,
427
+ df,
428
+ table_name,
429
+ **write_kwargs,
430
+ )
431
+
309
432
  @classmethod
310
433
  def with_config(
311
434
  cls,
@@ -1,7 +1,7 @@
1
1
  import enum
2
2
  import re
3
3
  from datetime import datetime
4
- from typing import Dict, List, Union
4
+ from typing import Callable, Dict, List, Union
5
5
 
6
6
  from sqlalchemy import (
7
7
  JSON,
@@ -327,7 +327,7 @@ class Role(BaseModel):
327
327
  self,
328
328
  entity: Entity = None,
329
329
  entity_id: str = None,
330
- prefix: str = None,
330
+ name_func: Callable[[str], str] = None,
331
331
  ) -> None:
332
332
  """
333
333
  Create default roles with associated permissions for a given entity and entity_id.
@@ -349,8 +349,8 @@ class Role(BaseModel):
349
349
  }
350
350
  for name, access in mapping.items():
351
351
  role_name = name
352
- if prefix is not None:
353
- role_name = f'{prefix}_{name}'
352
+ if name_func is not None:
353
+ role_name = name_func(name)
354
354
  role = self.query.filter(self.name == role_name).first()
355
355
  if not role:
356
356
  self.create(
@@ -48,6 +48,7 @@ from mage_ai.data_preparation.models.constants import (
48
48
  PipelineType,
49
49
  )
50
50
  from mage_ai.data_preparation.models.pipeline import Pipeline
51
+ from mage_ai.data_preparation.models.project import Project
51
52
  from mage_ai.data_preparation.models.triggers import (
52
53
  ScheduleInterval,
53
54
  ScheduleStatus,
@@ -934,7 +935,10 @@ class PipelineRun(PipelineRunProjectPlatformMixin, BaseModel):
934
935
 
935
936
  @property
936
937
  def pipeline_tags(self):
937
- pipeline_config = Pipeline.get_config(self.pipeline_uuid)
938
+ try:
939
+ pipeline_config = Pipeline.get_config(self.pipeline_uuid)
940
+ except Exception:
941
+ pipeline_config = dict()
938
942
 
939
943
  return pipeline_config.get('tags') if pipeline_config is not None else []
940
944
 
@@ -989,6 +993,9 @@ class PipelineRun(PipelineRunProjectPlatformMixin, BaseModel):
989
993
  block_runs_all = []
990
994
 
991
995
  data_integration_block_uuids_mapping = {}
996
+
997
+ pipeline_project = Project(pipeline.repo_config)
998
+
992
999
  for block_run in self.block_runs:
993
1000
  block_runs_all.append(block_run)
994
1001
 
@@ -1021,7 +1028,7 @@ class PipelineRun(PipelineRunProjectPlatformMixin, BaseModel):
1021
1028
  "original": 1,
1022
1029
  }
1023
1030
  """
1024
- if metrics and block and block.is_data_integration():
1031
+ if metrics and block and block.is_data_integration(pipeline_project=pipeline_project):
1025
1032
  original_block_uuid = metrics.get('original_block_uuid')
1026
1033
 
1027
1034
  if original_block_uuid and metrics.get('child'):
@@ -86,6 +86,12 @@ class JobManager:
86
86
  job_id = self.__job_id(JobType.INTEGRATION_STREAM, id)
87
87
  return self.queue.kill_job(job_id)
88
88
 
89
+ def start(self):
90
+ self.queue.start()
91
+
92
+ def stop(self):
93
+ self.queue.stop()
94
+
89
95
  def __job_id(self, job_type: JobType, uid: Union[str, int]):
90
96
  return f'{job_type}_{uid}'
91
97
 
@@ -830,6 +830,8 @@ class PipelineScheduler:
830
830
  Returns:
831
831
  List[BlockRun]: A list of crashed block runs.
832
832
  """
833
+ for b in self.pipeline_run.block_runs:
834
+ b.refresh()
833
835
  running_or_queued_block_runs = [b for b in self.pipeline_run.block_runs if b.status in [
834
836
  BlockRun.BlockRunStatus.RUNNING,
835
837
  BlockRun.BlockRunStatus.QUEUED,
@@ -1679,7 +1681,11 @@ def gen_pipeline_with_schedules_single_project(
1679
1681
  # Iterate through pipeline schedules by pipeline to handle pipeline run limits for
1680
1682
  # each pipeline.
1681
1683
  for pipeline_uuid, active_schedules in pipeline_schedules_by_pipeline.items():
1682
- pipeline = Pipeline.get(pipeline_uuid)
1684
+ try:
1685
+ pipeline = Pipeline.get(pipeline_uuid)
1686
+ except Exception as e:
1687
+ print(f'Error fetching pipeline {pipeline_uuid}: {e}')
1688
+ continue
1683
1689
  yield pipeline_uuid, pipeline, active_schedules
1684
1690
 
1685
1691
 
@@ -1740,11 +1746,15 @@ def gen_pipeline_with_schedules_project_platform(
1740
1746
  for pair in pipeline_schedules_by_pipeline_by_repo_path.items():
1741
1747
  repo_path, pipeline_schedules_by_pipeline = pair
1742
1748
  for pipeline_uuid, active_schedules in pipeline_schedules_by_pipeline.items():
1743
- pipeline = get_pipeline_from_platform(
1744
- pipeline_uuid,
1745
- repo_path=repo_path,
1746
- mapping=pipeline_schedule_repo_paths_to_repo_path_mapping,
1747
- )
1749
+ try:
1750
+ pipeline = get_pipeline_from_platform(
1751
+ pipeline_uuid,
1752
+ repo_path=repo_path,
1753
+ mapping=pipeline_schedule_repo_paths_to_repo_path_mapping,
1754
+ )
1755
+ except Exception as e:
1756
+ print(f'Error fetching pipeline {pipeline_uuid}: {e}')
1757
+ continue
1748
1758
  yield pipeline_uuid, pipeline, active_schedules
1749
1759
 
1750
1760
 
@@ -1,6 +1,7 @@
1
+ from typing import Callable
2
+
1
3
  from mage_ai.orchestration.queue.config import QueueConfig
2
4
  from mage_ai.orchestration.queue.queue import Queue
3
- from typing import Callable
4
5
 
5
6
 
6
7
  class CeleryQueue(Queue):
@@ -27,3 +28,9 @@ class CeleryQueue(Queue):
27
28
 
28
29
  def kill_job(self, job_id: str):
29
30
  pass
31
+
32
+ def start(self):
33
+ pass
34
+
35
+ def stop(self):
36
+ pass
@@ -36,6 +36,11 @@ class JobStatus(str, Enum):
36
36
  CANCELLED = 'cancelled'
37
37
 
38
38
 
39
+ class QueueStatus(str, Enum):
40
+ ACTIVE = 'active'
41
+ INACTIVE = 'inactive'
42
+
43
+
39
44
  class ProcessQueue(Queue):
40
45
  def __init__(self, queue_config: QueueConfig):
41
46
  """
@@ -53,6 +58,7 @@ class ProcessQueue(Queue):
53
58
  jobs.
54
59
 
55
60
  """
61
+ self.status = QueueStatus.INACTIVE
56
62
  self.queue_config = queue_config
57
63
  self.process_queue_config = self.queue_config.process_queue_config
58
64
  self.queue = mp.Queue()
@@ -76,12 +82,16 @@ class ProcessQueue(Queue):
76
82
 
77
83
  def clean_up_jobs(self):
78
84
  """
79
- Cleans up completed jobs from the job dictionary.
85
+ 1. Cleans up completed jobs from the job dictionary.
86
+ 2. Check whether there're jobs need to be killed.
80
87
  """
81
88
  job_ids = self.job_dict.keys()
82
89
  for job_id in job_ids:
83
- if job_id in self.job_dict and not self.has_job(job_id):
84
- del self.job_dict[job_id]
90
+ if job_id in self.job_dict:
91
+ if not self.has_job(job_id):
92
+ del self.job_dict[job_id]
93
+ elif self.__should_kill_job(job_id):
94
+ self.kill_job(job_id)
85
95
 
86
96
  def enqueue(self, job_id: str, target: Callable, *args, **kwargs):
87
97
  """
@@ -94,6 +104,9 @@ class ProcessQueue(Queue):
94
104
  **kwargs: Keyword arguments for the target function.
95
105
 
96
106
  """
107
+ if self.status != QueueStatus.ACTIVE:
108
+ self._print('Cannot enqueue a job to an inactive queue.')
109
+ return
97
110
  if self.has_job(job_id):
98
111
  self._print(f'Job {job_id} exists. Skip enqueue.')
99
112
  return
@@ -155,6 +168,7 @@ class ProcessQueue(Queue):
155
168
  print(f'Kill job {job_id}, job_dict {self.job_dict}')
156
169
  job = self.job_dict.get(job_id)
157
170
  if not job:
171
+ self.__set_kill_job(job_id)
158
172
  return
159
173
  if isinstance(job, int):
160
174
  if job == os.getpid():
@@ -165,6 +179,7 @@ class ProcessQueue(Queue):
165
179
  except Exception as err:
166
180
  print(err)
167
181
  self.job_dict[job_id] = JobStatus.CANCELLED
182
+ self.__unset_kill_job(job_id)
168
183
 
169
184
  def start_worker_pool(self):
170
185
  """
@@ -182,6 +197,28 @@ class ProcessQueue(Queue):
182
197
  )
183
198
  self.worker_pool_proc.start()
184
199
 
200
+ def start(self):
201
+ self.status = QueueStatus.ACTIVE
202
+
203
+ def stop(self):
204
+ """
205
+ 1. Stop enqueueing new jobs
206
+ 2. Clear the queue
207
+ 3. Kill all the running jobs
208
+ """
209
+ self.status = QueueStatus.INACTIVE
210
+ while not self.queue.empty():
211
+ try:
212
+ self.queue.get_nowait()
213
+ except self.queue.Empty:
214
+ break
215
+ job_ids = self.job_dict.keys()
216
+ for job_id in job_ids:
217
+ if job_id in self.job_dict:
218
+ if isinstance(self.job_dict.get(job_id), int):
219
+ self.kill_job(job_id)
220
+ del self.job_dict[job_id]
221
+
185
222
  def is_worker_pool_alive(self) -> bool:
186
223
  """
187
224
  Checks if the worker pool process is alive.
@@ -197,6 +234,31 @@ class ProcessQueue(Queue):
197
234
  def __is_process_alive(self, pid: int) -> bool:
198
235
  return psutil.pid_exists(pid)
199
236
 
237
+ def __redis_key_kill_job(self, job_id):
238
+ return f'kill_job_{job_id}'
239
+
240
+ def __set_kill_job(self, job_id):
241
+ if not self.redis_client:
242
+ return
243
+ return self.redis_client.set(
244
+ self.__redis_key_kill_job(job_id),
245
+ '1',
246
+ ex=LIVENESS_TIMEOUT_SECONDS,
247
+ )
248
+
249
+ def __unset_kill_job(self, job_id):
250
+ if not self.redis_client:
251
+ return
252
+ key = self.__redis_key_kill_job(job_id)
253
+ if self.redis_client.get(key):
254
+ self.redis_client.delete(key)
255
+
256
+ def __should_kill_job(self, job_id):
257
+ if not self.redis_client:
258
+ return False
259
+ value = self.redis_client.get(self.__redis_key_kill_job(job_id))
260
+ return value is not None
261
+
200
262
 
201
263
  class Worker(mp.Process):
202
264
  def __init__(
@@ -275,10 +337,11 @@ def poll_job_and_execute(
275
337
  job_dict: The shared job dictionary.
276
338
 
277
339
  """
340
+ pid = os.getpid()
278
341
  workers = []
279
342
  while True:
280
343
  workers = [w for w in workers if w.is_alive()]
281
- print(f'Worker pool size: {len(workers)}')
344
+ print(f'[Process {pid}] Worker pool size: {len(workers)}')
282
345
  if not workers and queue.empty():
283
346
  break
284
347
  while not queue.empty():
@@ -19,5 +19,13 @@ class Queue(ABC):
19
19
  def kill_job(self, job_id: str):
20
20
  pass
21
21
 
22
+ @abstractmethod
23
+ def start(self):
24
+ pass
25
+
26
+ @abstractmethod
27
+ def stop(self):
28
+ pass
29
+
22
30
  def _print(self, msg):
23
31
  print(f'[{self.__class__.__name__}] {msg}')
@@ -12,4 +12,4 @@ DATAFRAME_OUTPUT_SAMPLE_COUNT = 10
12
12
  # Dockerfile depends on it because it runs ./scripts/install_mage.sh and uses
13
13
  # the last line to determine the version to install.
14
14
  VERSION = \
15
- '0.9.68'
15
+ '0.9.69'
@@ -1,4 +1,4 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><title>Mage</title><meta content="width=device-width, initial-scale=1.0, maximum-scale=5.0, user-scalable=0" name="viewport"/><meta name="next-head-count" content="3"/><link href="/favicon.ico" rel="icon"/><link rel="preload" href="/_next/static/css/b59541b123fd7191.css" as="style"/><link rel="stylesheet" href="/_next/static/css/b59541b123fd7191.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/_next/static/chunks/webpack-d079359c241db804.js" defer=""></script><script src="/_next/static/chunks/framework-22b71764bf44ede4.js" defer=""></script><script src="/_next/static/chunks/main-77fe248a6fbd12d8.js" defer=""></script><script src="/_next/static/chunks/pages/_app-08790743315de36a.js" defer=""></script><script src="/_next/static/chunks/pages/404-8ecd93274c427b76.js" defer=""></script><script src="/_next/static/i8pymuJDTVHdWjUP1QSh1/_buildManifest.js" defer=""></script><script src="/_next/static/i8pymuJDTVHdWjUP1QSh1/_ssgManifest.js" defer=""></script><style data-styled="" data-styled-version="5.3.6">html{-webkit-box-sizing:border-box;box-sizing:border-box;-ms-overflow-style:scrollbar;}/*!sc*/
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><title>Mage</title><meta content="width=device-width, initial-scale=1.0, maximum-scale=5.0, user-scalable=0" name="viewport"/><meta name="next-head-count" content="3"/><link href="/favicon.ico" rel="icon"/><link rel="preload" href="/_next/static/css/b59541b123fd7191.css" as="style"/><link rel="stylesheet" href="/_next/static/css/b59541b123fd7191.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/_next/static/chunks/webpack-d079359c241db804.js" defer=""></script><script src="/_next/static/chunks/framework-22b71764bf44ede4.js" defer=""></script><script src="/_next/static/chunks/main-77fe248a6fbd12d8.js" defer=""></script><script src="/_next/static/chunks/pages/_app-d9c89527266296f7.js" defer=""></script><script src="/_next/static/chunks/pages/404-8ecd93274c427b76.js" defer=""></script><script src="/_next/static/_krrrgup_C-dPOpX36S8I/_buildManifest.js" defer=""></script><script src="/_next/static/_krrrgup_C-dPOpX36S8I/_ssgManifest.js" defer=""></script><style data-styled="" data-styled-version="5.3.6">html{-webkit-box-sizing:border-box;box-sizing:border-box;-ms-overflow-style:scrollbar;}/*!sc*/
2
2
  *,*::before,*::after{-webkit-box-sizing:inherit;box-sizing:inherit;}/*!sc*/
3
3
  data-styled.g4[id="sc-global-czSCUT1"]{content:"sc-global-czSCUT1,"}/*!sc*/
4
4
  .cAAVhx{margin-top:16px;margin-bottom:16px;}/*!sc*/
@@ -17,4 +17,4 @@ data-styled.g79[id="Headline__H1Style-sc-12jzt2e-2"]{content:"hkcwCQ,"}/*!sc*/
17
17
  .kOVcuR .Toastify__toast--success{background:#00A81A !important;color:#FFFFFF !important;}/*!sc*/
18
18
  .kOVcuR .Toastify__toast--warning{background:#DD9900 !important;color:#FFFFFF !important;}/*!sc*/
19
19
  data-styled.g275[id="ToastWrapper-sc-1a33ph1-0"]{content:"kOVcuR,"}/*!sc*/
20
- </style></head><body><div id="__next"><div class="" style="position:fixed;top:0;left:0;height:2px;background:transparent;z-index:99999999999;width:100%"><div class="" style="height:100%;background:#FF144D;transition:all 500ms ease;width:0%"><div style="box-shadow:0 0 10px #FF144D, 0 0 10px #FF144D;width:5%;opacity:1;position:absolute;height:100%;transition:all 500ms ease;transform:rotate(3deg) translate(0px, -4px);left:-10rem"></div></div></div><main style="align-items:center;display:flex;flex-direction:column;height:100vh;margin-top:16rem"><svg width="84.70857142857143" height="64" viewBox="0 0 20 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path opacity="0.4" d="M15.3266 0L19.2641 1.82961e-06L11.9687 14L8.03125 14L15.3266 0Z" fill="url(#paint0_linear_1303_5)"></path><path d="M11.9692 1.82961e-06L8.03164 0L0.736328 14L4.67383 14L8.03164 7.55626V14H11.9691V8.38194e-05L11.9692 1.82961e-06Z" fill="url(#paint1_linear_1303_5)"></path><path d="M15.3269 2.57679e-06H19.2644V14H15.3269V2.57679e-06Z" fill="url(#paint2_linear_1303_5)"></path><defs><linearGradient id="paint0_linear_1303_5" x1="8.03125" y1="7" x2="19.2641" y2="7" gradientUnits="userSpaceOnUse"><stop offset="0.28125" stop-color="#7D55EC"></stop><stop offset="1" stop-color="#2AB2FE"></stop></linearGradient><linearGradient id="paint1_linear_1303_5" x1="0.736328" y1="7" x2="19.2644" y2="7" gradientUnits="userSpaceOnUse"><stop offset="0.28125" stop-color="#7D55EC"></stop><stop offset="1" stop-color="#2AB2FE"></stop></linearGradient><linearGradient id="paint2_linear_1303_5" x1="0.736328" y1="7" x2="19.2644" y2="7" gradientUnits="userSpaceOnUse"><stop offset="0.28125" stop-color="#7D55EC"></stop><stop offset="1" stop-color="#2AB2FE"></stop></linearGradient></defs></svg><div class="Spacing__SpacingStyle-sc-1mpmtgj-0 cAAVhx"><div class="Headline__HeadlineContainerStyle-sc-12jzt2e-0 dDWSWx"><h1 class="Headline__H1Style-sc-12jzt2e-2 hkcwCQ">404 - Page Not Found<!-- --></h1></div></div><p class="Text__TextStyle-sc-sl5nur-0 fmHTvj">You will be redirected to the Pipelines dashboard in <!-- -->5<!-- --> seconds.<!-- --></p></main><div id="command-center-root"></div><div></div><div></div><div></div><div class="ToastWrapper-sc-1a33ph1-0 kOVcuR"><div class="Toastify"></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{},"currentTheme":{"accent":{"alert":"#F6540B","blue":"#4877FF","blueLight":"rgba(72, 119, 255, 0.5)","contentDefaultTransparent":"rgba(174, 174, 174, 0.5)","cyan":"#65E3FF","cyanLight":"rgba(101, 227, 255, 0.3)","cyanTransparent":"rgba(101, 227, 255, 0.12)","dbt":"#fc6949","dbtDark":"rgba(252, 105, 73, 0.3)","dbtLight":"rgba(252, 105, 73, 0.5)","info":"#00ABFF","infoTransparent":"rgba(0, 171, 255, 0.5)","negative":"#FF1E59","negativeTransparent":"rgba(255, 30, 89, 0.3)","pink":"#FF4FF8","pinkLight":"rgb(255, 79, 248, 0.5)","positive":"#00A81A","primaryTransparent":"rgba(155, 108, 167, 0.5)","purple":"#7D55EC","purpleLight":"rgba(125, 85, 236, 0.5)","rose":"#D1A2AB","roseLight":"rgba(209, 162, 171, 0.5)","sky":"#6AA1E0","skyLight":"rgba(106, 161, 224, 0.5)","teal":"#00B4CC","tealLight":"rgba(0, 180, 204, 0.5)","warning":"#DD9900","warningTransparent":"rgba(221, 153, 0, 0.5)","yellow":"#FFCC19","yellowLight":"rgba(255, 204, 25, 0.5)"},"background":{"blackTransparent":"rgba(0, 0, 0, 0.6)","blackTransparentDark":"rgba(0, 0, 0, 0.8)","chartBlock":"#2E3036","codeArea":"#1E1F24","codeTextarea":"#000000","content":"#1B1C20","danger":"#FFD0DB","dark":"#B1B8C3","dashboard":"#18181C","dashboardTransparent":"rgba(24, 24, 28, 0.1)","header":"#1B1B1B","menu":"#0F4CFF","muted":"#F9FAFC","navigation":"#EDEDED","output":"#2E3036","page":"#1E1F24","panel":"#232429","panelTransparent":"rgba(35, 36, 41, 0.7)","popup":"#27292E","row":"#2C2C2C","row2":"#51535C","scrollbarThumb":"rgba(100, 100, 100, 0.5)","scrollbarThumbHover":"rgba(255, 255, 255, 0.3)","scrollbarTrack":"#2E3036","success":"#8ADE00","successLight":"rgb(138, 222, 0, 0.3)","table":"#292A2F","tag":"#3A4550"},"borders":{"button":"#454850","contrast":"#FFFFFF","danger":"#FF144D","dark":"#000000","darkLight":"#2E3036","info":"#FFCC19","light":"#2F3034","medium":"#1C1C1C","medium2":"#141414","success":"#2FCB52"},"brand":{"earth100":"#C6EEDB","earth200":"#9DDFBF","earth300":"#6BBF96","earth400":"#37A46F","earth400Transparent":"rgba(55, 164, 111, 0.4)","earth500":"#00954C","energy100":"#FFF4BA","energy200":"#FFED92","energy300":"#FFE662","energy400":"#FFDA19","energy400Transparent":"rgba(255, 218, 25, 0.04)","energy500":"#F6C000","fire100":"#FFD7E0","fire200":"#FFA3B9","fire300":"#FF547D","fire400":"#FF144D","fire400Transparent":"rgba(255, 20, 77, 0.4)","fire500":"#EB0032","stone100":"#F3E6D7","stone200":"#E3D4C2","stone400":"#BFA78B","stone500":"#AF8859","water100":"#BDCEFF","water200":"#81A1FF","water300":"#517DFF","water400":"#2A60FE","water400Transparent":"rgba(42, 96, 254, 0.4)","water500":"#0F4CFF","wind100":"#EEEAFF","wind200":"#CCC1F4","wind300":"#A698DD","wind400":"#6B50D7","wind400SuperTransparent":"rgba(107, 80, 215, 0.12)","wind400Transparent":"rgba(107, 80, 215, 0.4)","wind500":"#4E32BC"},"chart":{"backgroundPrimary":"#7D55EC","backgroundSecondary":"#FF144D","backgroundTertiary":"#86E2FF","button1":"#4877FF","button2":"#FFCC19","button3":"#8ADE00","button4":"#FF4FF8","button5":"#B98D95","lines":"#9B6CA7","primary":"#6B50D7","secondary":"#FF144D","tertiary":"#2A60FE"},"content":{"active":"#FFFFFF","default":"#AEAEAE","disabled":"rgba(255, 255, 255, 0.3)","inverted":"#2C2C2C","muted":"#787A85"},"elevation":{"visualizationAccent":"#996CFF","visualizationAccentAlt":"#C1ACF7"},"feature":{"active":"rgba(250, 248, 254, 0.14)","disabled":"rgba(201, 206, 218, 0.12)"},"icons":{"neutral":"#787878"},"interactive":{"activeBorder":"#060606","blackBackgroundTransparent":"rgba(0, 0, 0, 0.5)","checked":"#060606","dangerBorder":"#FF144D","defaultBackground":"#36383F","defaultBackgroundTransparent":"rgba(54, 56, 63, 0.5)","defaultBorder":"#ffffff1a","disabledBorder":"#B1B8C3","focusBackground":"#B1B8C3","focusBorder":"#86E2FF","hoverBackground":"#4E4E4E","hoverBackgroundTransparent":"rgba(78, 78, 78, 0.5)","hoverBlackBackgroundTransparent":"rgba(0, 0, 0, 0.7)","hoverBorder":"#B9BFCA","hoverOverlay":"rgba(255, 255, 255, 0.1)","linkPrimary":"#1752FF","linkPrimaryHover":"#4877FF","linkPrimaryLight":"#5982ff","linkSecondary":"#6B50D7","linkSecondaryDisabled":"#C4B9EF","linkText":"#6AA1E0","linkTextLight":"#9ECBFF","purple":"#885EFF","rowHoverBackground":"rgba(0, 0, 0, 0.1)","transparent":"rgba(255, 255, 255, 0)"},"loader":{"color":"#EB0032","colorInverted":"#8ADE00"},"logo":{"color":"#FFFFFF"},"monotone":{"black":"#060606","blackTransparent":"rgba(0, 0, 0, 0.6)","gray":"#B1B8C3","grey100":"#F2F2F2","grey200":"#D5D7DC","grey300":"#B4B8C0","grey400":"#70747C","grey500":"#51535C","purple":"#6B50D7","white":"#FFFFFF","whiteTransparent":"rgba(255, 255, 255, 0.6)"},"neutral":{"n100":"#E7E8EA","n200":"#D8DADE","n300":"#CBCCD0","n400":"#BCBEC4","n500":"#AEB0B6"},"progress":{"negative":"#FF144D","positive":"#6B50D7"},"shadow":{"base":"12px 40px 120px rgba(0, 0, 0, 0.3)","frame":"0px 10px 40px rgba(0, 0, 0, 0.26)","menu":"4px 10px 20px rgba(6, 6, 6, 0.12)","popup":"10px 20px 40px rgba(0, 0, 0, 0.2)","small":"0px, 4px, rgba(0, 0, 0, 0.25)","window":"0px 10px 60px rgba(0, 0, 0, 0.7)"},"status":{"negative":"#FF144D","positive":"#24B400"},"text":{"fileBrowser":"#787A85"}}},"page":"/404","query":{},"buildId":"i8pymuJDTVHdWjUP1QSh1","nextExport":true,"isFallback":false,"appGip":true,"scriptLoader":[]}</script></body></html>
20
+ </style></head><body><div id="__next"><div class="" style="position:fixed;top:0;left:0;height:2px;background:transparent;z-index:99999999999;width:100%"><div class="" style="height:100%;background:#FF144D;transition:all 500ms ease;width:0%"><div style="box-shadow:0 0 10px #FF144D, 0 0 10px #FF144D;width:5%;opacity:1;position:absolute;height:100%;transition:all 500ms ease;transform:rotate(3deg) translate(0px, -4px);left:-10rem"></div></div></div><main style="align-items:center;display:flex;flex-direction:column;height:100vh;margin-top:16rem"><svg width="84.70857142857143" height="64" viewBox="0 0 20 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path opacity="0.4" d="M15.3266 0L19.2641 1.82961e-06L11.9687 14L8.03125 14L15.3266 0Z" fill="url(#paint0_linear_1303_5)"></path><path d="M11.9692 1.82961e-06L8.03164 0L0.736328 14L4.67383 14L8.03164 7.55626V14H11.9691V8.38194e-05L11.9692 1.82961e-06Z" fill="url(#paint1_linear_1303_5)"></path><path d="M15.3269 2.57679e-06H19.2644V14H15.3269V2.57679e-06Z" fill="url(#paint2_linear_1303_5)"></path><defs><linearGradient id="paint0_linear_1303_5" x1="8.03125" y1="7" x2="19.2641" y2="7" gradientUnits="userSpaceOnUse"><stop offset="0.28125" stop-color="#7D55EC"></stop><stop offset="1" stop-color="#2AB2FE"></stop></linearGradient><linearGradient id="paint1_linear_1303_5" x1="0.736328" y1="7" x2="19.2644" y2="7" gradientUnits="userSpaceOnUse"><stop offset="0.28125" stop-color="#7D55EC"></stop><stop offset="1" stop-color="#2AB2FE"></stop></linearGradient><linearGradient id="paint2_linear_1303_5" x1="0.736328" y1="7" x2="19.2644" y2="7" gradientUnits="userSpaceOnUse"><stop offset="0.28125" stop-color="#7D55EC"></stop><stop offset="1" stop-color="#2AB2FE"></stop></linearGradient></defs></svg><div class="Spacing__SpacingStyle-sc-1mpmtgj-0 cAAVhx"><div class="Headline__HeadlineContainerStyle-sc-12jzt2e-0 dDWSWx"><h1 class="Headline__H1Style-sc-12jzt2e-2 hkcwCQ">404 - Page Not Found<!-- --></h1></div></div><p class="Text__TextStyle-sc-sl5nur-0 fmHTvj">You will be redirected to the Pipelines dashboard in <!-- -->5<!-- --> seconds.<!-- --></p></main><div id="command-center-root"></div><div></div><div></div><div></div><div class="ToastWrapper-sc-1a33ph1-0 kOVcuR"><div class="Toastify"></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{},"currentTheme":{"accent":{"alert":"#F6540B","blue":"#4877FF","blueLight":"rgba(72, 119, 255, 0.5)","contentDefaultTransparent":"rgba(174, 174, 174, 0.5)","cyan":"#65E3FF","cyanLight":"rgba(101, 227, 255, 0.3)","cyanTransparent":"rgba(101, 227, 255, 0.12)","dbt":"#fc6949","dbtDark":"rgba(252, 105, 73, 0.3)","dbtLight":"rgba(252, 105, 73, 0.5)","info":"#00ABFF","infoTransparent":"rgba(0, 171, 255, 0.5)","negative":"#FF1E59","negativeTransparent":"rgba(255, 30, 89, 0.3)","pink":"#FF4FF8","pinkLight":"rgb(255, 79, 248, 0.5)","positive":"#00A81A","primaryTransparent":"rgba(155, 108, 167, 0.5)","purple":"#7D55EC","purpleLight":"rgba(125, 85, 236, 0.5)","rose":"#D1A2AB","roseLight":"rgba(209, 162, 171, 0.5)","sky":"#6AA1E0","skyLight":"rgba(106, 161, 224, 0.5)","teal":"#00B4CC","tealLight":"rgba(0, 180, 204, 0.5)","warning":"#DD9900","warningTransparent":"rgba(221, 153, 0, 0.5)","yellow":"#FFCC19","yellowLight":"rgba(255, 204, 25, 0.5)"},"background":{"blackTransparent":"rgba(0, 0, 0, 0.6)","blackTransparentDark":"rgba(0, 0, 0, 0.8)","chartBlock":"#2E3036","codeArea":"#1E1F24","codeTextarea":"#000000","content":"#1B1C20","danger":"#FFD0DB","dark":"#B1B8C3","dashboard":"#18181C","dashboardTransparent":"rgba(24, 24, 28, 0.1)","header":"#1B1B1B","menu":"#0F4CFF","muted":"#F9FAFC","navigation":"#EDEDED","output":"#2E3036","page":"#1E1F24","panel":"#232429","panelTransparent":"rgba(35, 36, 41, 0.7)","popup":"#27292E","row":"#2C2C2C","row2":"#51535C","scrollbarThumb":"rgba(100, 100, 100, 0.5)","scrollbarThumbHover":"rgba(255, 255, 255, 0.3)","scrollbarTrack":"#2E3036","success":"#8ADE00","successLight":"rgb(138, 222, 0, 0.3)","table":"#292A2F","tag":"#3A4550"},"borders":{"button":"#454850","contrast":"#FFFFFF","danger":"#FF144D","dark":"#000000","darkLight":"#2E3036","info":"#FFCC19","light":"#2F3034","medium":"#1C1C1C","medium2":"#141414","success":"#2FCB52"},"brand":{"earth100":"#C6EEDB","earth200":"#9DDFBF","earth300":"#6BBF96","earth400":"#37A46F","earth400Transparent":"rgba(55, 164, 111, 0.4)","earth500":"#00954C","energy100":"#FFF4BA","energy200":"#FFED92","energy300":"#FFE662","energy400":"#FFDA19","energy400Transparent":"rgba(255, 218, 25, 0.04)","energy500":"#F6C000","fire100":"#FFD7E0","fire200":"#FFA3B9","fire300":"#FF547D","fire400":"#FF144D","fire400Transparent":"rgba(255, 20, 77, 0.4)","fire500":"#EB0032","stone100":"#F3E6D7","stone200":"#E3D4C2","stone400":"#BFA78B","stone500":"#AF8859","water100":"#BDCEFF","water200":"#81A1FF","water300":"#517DFF","water400":"#2A60FE","water400Transparent":"rgba(42, 96, 254, 0.4)","water500":"#0F4CFF","wind100":"#EEEAFF","wind200":"#CCC1F4","wind300":"#A698DD","wind400":"#6B50D7","wind400SuperTransparent":"rgba(107, 80, 215, 0.12)","wind400Transparent":"rgba(107, 80, 215, 0.4)","wind500":"#4E32BC"},"chart":{"backgroundPrimary":"#7D55EC","backgroundSecondary":"#FF144D","backgroundTertiary":"#86E2FF","button1":"#4877FF","button2":"#FFCC19","button3":"#8ADE00","button4":"#FF4FF8","button5":"#B98D95","lines":"#9B6CA7","primary":"#6B50D7","secondary":"#FF144D","tertiary":"#2A60FE"},"content":{"active":"#FFFFFF","default":"#AEAEAE","disabled":"rgba(255, 255, 255, 0.3)","inverted":"#2C2C2C","muted":"#787A85"},"elevation":{"visualizationAccent":"#996CFF","visualizationAccentAlt":"#C1ACF7"},"feature":{"active":"rgba(250, 248, 254, 0.14)","disabled":"rgba(201, 206, 218, 0.12)"},"icons":{"neutral":"#787878"},"interactive":{"activeBorder":"#060606","blackBackgroundTransparent":"rgba(0, 0, 0, 0.5)","checked":"#060606","dangerBorder":"#FF144D","defaultBackground":"#36383F","defaultBackgroundTransparent":"rgba(54, 56, 63, 0.5)","defaultBorder":"#ffffff1a","disabledBorder":"#B1B8C3","focusBackground":"#B1B8C3","focusBorder":"#86E2FF","hoverBackground":"#4E4E4E","hoverBackgroundTransparent":"rgba(78, 78, 78, 0.5)","hoverBlackBackgroundTransparent":"rgba(0, 0, 0, 0.7)","hoverBorder":"#B9BFCA","hoverOverlay":"rgba(255, 255, 255, 0.1)","linkPrimary":"#1752FF","linkPrimaryHover":"#4877FF","linkPrimaryLight":"#5982ff","linkSecondary":"#6B50D7","linkSecondaryDisabled":"#C4B9EF","linkText":"#6AA1E0","linkTextLight":"#9ECBFF","purple":"#885EFF","rowHoverBackground":"rgba(0, 0, 0, 0.1)","transparent":"rgba(255, 255, 255, 0)"},"loader":{"color":"#EB0032","colorInverted":"#8ADE00"},"logo":{"color":"#FFFFFF"},"monotone":{"black":"#060606","blackTransparent":"rgba(0, 0, 0, 0.6)","gray":"#B1B8C3","grey100":"#F2F2F2","grey200":"#D5D7DC","grey300":"#B4B8C0","grey400":"#70747C","grey500":"#51535C","purple":"#6B50D7","white":"#FFFFFF","whiteTransparent":"rgba(255, 255, 255, 0.6)"},"neutral":{"n100":"#E7E8EA","n200":"#D8DADE","n300":"#CBCCD0","n400":"#BCBEC4","n500":"#AEB0B6"},"progress":{"negative":"#FF144D","positive":"#6B50D7"},"shadow":{"base":"12px 40px 120px rgba(0, 0, 0, 0.3)","frame":"0px 10px 40px rgba(0, 0, 0, 0.26)","menu":"4px 10px 20px rgba(6, 6, 6, 0.12)","popup":"10px 20px 40px rgba(0, 0, 0, 0.2)","small":"0px, 4px, rgba(0, 0, 0, 0.25)","window":"0px 10px 60px rgba(0, 0, 0, 0.7)"},"status":{"negative":"#FF144D","positive":"#24B400"},"text":{"fileBrowser":"#787A85"}}},"page":"/404","query":{},"buildId":"_krrrgup_C-dPOpX36S8I","nextExport":true,"isFallback":false,"appGip":true,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- self.__BUILD_MANIFEST=function(s,e,i,a,t,c,n,p,l,g,u,r,o,k,f,b,d,h,j,m,w,_,v,y,I,B,F,A,D,E,L){return{__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":["static/chunks/pages/index-13760bb72d823b69.js"],"/404":["static/chunks/pages/404-8ecd93274c427b76.js"],"/_error":["static/chunks/pages/_error-e989623bffcbf724.js"],"/block-layout":[l,a,t,g,o,u,k,m,"static/chunks/pages/block-layout-14f952f66964022f.js"],"/compute":[s,v,"static/chunks/pages/compute-010d9ac728f8a517.js"],"/files":[s,"static/chunks/pages/files-98df0674eac4ec84.js"],"/global-data-products":[s,c,f,y,"static/chunks/pages/global-data-products-78e8e88f2a757a18.js"],"/global-data-products/[...slug]":[s,c,f,y,"static/chunks/pages/global-data-products/[...slug]-591abd392dc50ed4.js"],"/global-hooks":[s,b,"static/chunks/pages/global-hooks-34966cfd2d89c366.js"],"/global-hooks/[...slug]":[s,b,"static/chunks/pages/global-hooks/[...slug]-fbc51d79d3196fa2.js"],"/manage":[s,n,d,"static/chunks/pages/manage-852d403c7bda21b3.js"],"/manage/files":[s,n,"static/chunks/pages/manage/files-f15a685682b1037b.js"],"/manage/settings":[s,n,"static/chunks/pages/manage/settings-52a597d0c674907a.js"],"/manage/users":[s,n,"static/chunks/pages/manage/users-b2896118903236c5.js"],"/manage/users/new":[s,n,"static/chunks/pages/manage/users/new-d0a403e8920104d2.js"],"/manage/users/[user]":[s,n,"static/chunks/pages/manage/users/[user]-8bbfa0c19b5e4cb3.js"],"/oauth":[s,"static/chunks/pages/oauth-30e34ee15d410331.js"],"/overview":[l,a,t,g,o,s,r,u,k,h,m,w,I,B,"static/chunks/pages/overview-597b74828bf105db.js"],"/pipeline-runs":[s,c,d,"static/chunks/pages/pipeline-runs-a66b4c7641ae03eb.js"],"/pipelines":[s,r,d,h,w,I,"static/chunks/pages/pipelines-ceb06e1616ee9610.js"],"/pipelines/[pipeline]":["static/chunks/pages/pipelines/[pipeline]-91a5d6a11e7d4c56.js"],"/pipelines/[pipeline]/backfills":[s,e,"static/chunks/pages/pipelines/[pipeline]/backfills-a8b61d8d239fd16f.js"],"/pipelines/[pipeline]/backfills/[...slug]":[p,j,s,e,c,"static/chunks/pages/pipelines/[pipeline]/backfills/[...slug]-ff4bd7a8ec3bab40.js"],"/pipelines/[pipeline]/dashboard":[l,a,t,g,o,s,e,u,k,m,"static/chunks/pages/pipelines/[pipeline]/dashboard-95ffcd3e2b27e567.js"],"/pipelines/[pipeline]/edit":[l,a,t,p,g,o,s,r,u,k,h,w,F,v,"static/chunks/pages/pipelines/[pipeline]/edit-bd0aff5a5ed8888c.js"],"/pipelines/[pipeline]/logs":[j,s,e,"static/chunks/pages/pipelines/[pipeline]/logs-3f5c14076ddde20e.js"],"/pipelines/[pipeline]/monitors":[a,t,s,e,B,"static/chunks/pages/pipelines/[pipeline]/monitors-7acc7afc00df17c2.js"],"/pipelines/[pipeline]/monitors/block-runs":[a,t,s,e,"static/chunks/pages/pipelines/[pipeline]/monitors/block-runs-a5c0362763a21fa8.js"],"/pipelines/[pipeline]/monitors/block-runtime":[l,a,t,"static/chunks/9832-67896490f6e8a014.js",s,e,"static/chunks/pages/pipelines/[pipeline]/monitors/block-runtime-1ed9045b2f1dfd65.js"],"/pipelines/[pipeline]/runs":[p,s,e,c,"static/chunks/pages/pipelines/[pipeline]/runs-6dae38250e135c54.js"],"/pipelines/[pipeline]/runs/[run]":[a,p,g,s,e,u,F,"static/chunks/pages/pipelines/[pipeline]/runs/[run]-1417ad1c821d720a.js"],"/pipelines/[pipeline]/settings":[s,e,"static/chunks/pages/pipelines/[pipeline]/settings-d1ee961387c58b7f.js"],"/pipelines/[pipeline]/syncs":[s,e,"static/chunks/pages/pipelines/[pipeline]/syncs-90abafc7ed61c582.js"],"/pipelines/[pipeline]/triggers":[p,j,A,s,e,d,f,D,"static/chunks/pages/pipelines/[pipeline]/triggers-cb88fd075a357fcf.js"],"/pipelines/[pipeline]/triggers/[...slug]":[p,j,A,s,e,c,D,"static/chunks/pages/pipelines/[pipeline]/triggers/[...slug]-f028ef3880ed856c.js"],"/platform/global-hooks":[s,b,"static/chunks/pages/platform/global-hooks-c916c778b0764634.js"],"/platform/global-hooks/[...slug]":[s,b,"static/chunks/pages/platform/global-hooks/[...slug]-e187f4c2b4eccd00.js"],"/settings":["static/chunks/pages/settings-b39e5bca035dec41.js"],"/settings/account/profile":[s,i,_,"static/chunks/pages/settings/account/profile-3f0df3decc856ee9.js"],"/settings/platform/preferences":[s,i,"static/chunks/pages/settings/platform/preferences-8ff16ef9566e911a.js"],"/settings/platform/settings":[s,i,"static/chunks/pages/settings/platform/settings-74d76300942dcee8.js"],"/settings/workspace/permissions":[s,i,E,"static/chunks/pages/settings/workspace/permissions-e5a4d3d815cec25d.js"],"/settings/workspace/permissions/[...slug]":[s,i,E,"static/chunks/pages/settings/workspace/permissions/[...slug]-47b64ced27c24985.js"],"/settings/workspace/preferences":[s,i,"static/chunks/pages/settings/workspace/preferences-d7a8bc51bb7a1082.js"],"/settings/workspace/roles":[s,i,L,"static/chunks/pages/settings/workspace/roles-36fa165a48af586b.js"],"/settings/workspace/roles/[...slug]":[s,i,L,"static/chunks/pages/settings/workspace/roles/[...slug]-379e1ee292504842.js"],"/settings/workspace/sync-data":[s,i,"static/chunks/pages/settings/workspace/sync-data-79a4cf66a623e667.js"],"/settings/workspace/users":[s,i,_,"static/chunks/pages/settings/workspace/users-86814e581acaf5db.js"],"/settings/workspace/users/[...slug]":[s,i,_,"static/chunks/pages/settings/workspace/users/[...slug]-2af9afbe727d88aa.js"],"/sign-in":[s,"static/chunks/pages/sign-in-f59d34429fe022ee.js"],"/templates":[s,r,h,"static/chunks/pages/templates-05a5312f50db749c.js"],"/templates/[...slug]":[s,r,"static/chunks/pages/templates/[...slug]-98a34c313012fc10.js"],"/terminal":[s,"static/chunks/pages/terminal-89e1b3e6799378a5.js"],"/test":["static/chunks/pages/test-bd51b3918b39329e.js"],"/triggers":[s,f,"static/chunks/pages/triggers-9cba3211434a8966.js"],"/version-control":[s,"static/chunks/pages/version-control-5753fac7c1bfdc88.js"],sortedPages:["/","/404","/_app","/_error","/block-layout","/compute","/files","/global-data-products","/global-data-products/[...slug]","/global-hooks","/global-hooks/[...slug]","/manage","/manage/files","/manage/settings","/manage/users","/manage/users/new","/manage/users/[user]","/oauth","/overview","/pipeline-runs","/pipelines","/pipelines/[pipeline]","/pipelines/[pipeline]/backfills","/pipelines/[pipeline]/backfills/[...slug]","/pipelines/[pipeline]/dashboard","/pipelines/[pipeline]/edit","/pipelines/[pipeline]/logs","/pipelines/[pipeline]/monitors","/pipelines/[pipeline]/monitors/block-runs","/pipelines/[pipeline]/monitors/block-runtime","/pipelines/[pipeline]/runs","/pipelines/[pipeline]/runs/[run]","/pipelines/[pipeline]/settings","/pipelines/[pipeline]/syncs","/pipelines/[pipeline]/triggers","/pipelines/[pipeline]/triggers/[...slug]","/platform/global-hooks","/platform/global-hooks/[...slug]","/settings","/settings/account/profile","/settings/platform/preferences","/settings/platform/settings","/settings/workspace/permissions","/settings/workspace/permissions/[...slug]","/settings/workspace/preferences","/settings/workspace/roles","/settings/workspace/roles/[...slug]","/settings/workspace/sync-data","/settings/workspace/users","/settings/workspace/users/[...slug]","/sign-in","/templates","/templates/[...slug]","/terminal","/test","/triggers","/version-control"]}}("static/chunks/1557-01f0843dc6ac4971.js","static/chunks/3782-ef4cd4f0b52072d0.js","static/chunks/5699-6efc749f2f8ddd20.js","static/chunks/125-abc06c39b97fd8aa.js","static/chunks/2714-68fef54789d7eaeb.js","static/chunks/7966-f07b2913f7326b50.js","static/chunks/1598-3070ba5a71ce3e2d.js","static/chunks/9161-837b653aa849a76f.js","static/chunks/29107295-989a0767a635d9d5.js","static/chunks/2631-b9f9bea3f1cf906d.js","static/chunks/8095-bdce03896ef9639a.js","static/chunks/4241-4499461184ba0d23.js","static/chunks/4783-422429203610c318.js","static/chunks/635-0d6b7c8804bcd2dc.js","static/chunks/9624-59b2f803f9c88cd6.js","static/chunks/1187-c9537b3f51775d0c.js","static/chunks/5544-d10ee8ec70354aa1.js","static/chunks/523-be11ad59861d00ca.js","static/chunks/7674-5f8f0882b3411d98.js","static/chunks/9440-4069842b90d4b801.js","static/chunks/3548-961ff79ca70038c7.js","static/chunks/7361-18d9d8be96e1ce97.js","static/chunks/3366-526b00bb494c02a4.js","static/chunks/3763-61b542dafdbf5754.js","static/chunks/5627-237a3de578538022.js","static/chunks/5831-2abc4063e887a03e.js","static/chunks/9265-d2a1aaec75ec69b8.js","static/chunks/26-38bc9380422f3900.js","static/chunks/2717-b5f9575799b594d5.js","static/chunks/8146-6bed4e7401e067e6.js","static/chunks/7022-0d52dd8868621fb0.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
1
+ self.__BUILD_MANIFEST=function(s,e,i,a,t,c,n,p,l,g,u,r,o,f,k,b,d,h,j,m,w,_,v,y,I,B,F,A,D,E,L){return{__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":["static/chunks/pages/index-4e12783b064c1cfe.js"],"/404":["static/chunks/pages/404-8ecd93274c427b76.js"],"/_error":["static/chunks/pages/_error-e989623bffcbf724.js"],"/block-layout":[l,a,t,g,o,u,f,m,"static/chunks/pages/block-layout-14f952f66964022f.js"],"/compute":[s,v,"static/chunks/pages/compute-010d9ac728f8a517.js"],"/files":[s,"static/chunks/pages/files-98df0674eac4ec84.js"],"/global-data-products":[s,c,k,y,"static/chunks/pages/global-data-products-78e8e88f2a757a18.js"],"/global-data-products/[...slug]":[s,c,k,y,"static/chunks/pages/global-data-products/[...slug]-591abd392dc50ed4.js"],"/global-hooks":[s,b,"static/chunks/pages/global-hooks-34966cfd2d89c366.js"],"/global-hooks/[...slug]":[s,b,"static/chunks/pages/global-hooks/[...slug]-fbc51d79d3196fa2.js"],"/manage":[s,n,d,"static/chunks/pages/manage-852d403c7bda21b3.js"],"/manage/files":[s,n,"static/chunks/pages/manage/files-f15a685682b1037b.js"],"/manage/settings":[s,n,"static/chunks/pages/manage/settings-52a597d0c674907a.js"],"/manage/users":[s,n,"static/chunks/pages/manage/users-b2896118903236c5.js"],"/manage/users/new":[s,n,"static/chunks/pages/manage/users/new-d0a403e8920104d2.js"],"/manage/users/[user]":[s,n,"static/chunks/pages/manage/users/[user]-8bbfa0c19b5e4cb3.js"],"/oauth":[s,"static/chunks/pages/oauth-30e34ee15d410331.js"],"/overview":[l,a,t,g,o,s,r,u,f,h,m,w,I,B,"static/chunks/pages/overview-597b74828bf105db.js"],"/pipeline-runs":[s,c,d,"static/chunks/pages/pipeline-runs-3edc6270c5b0e962.js"],"/pipelines":[s,r,d,h,w,I,"static/chunks/pages/pipelines-3591d035bb3bb2b8.js"],"/pipelines/[pipeline]":["static/chunks/pages/pipelines/[pipeline]-91a5d6a11e7d4c56.js"],"/pipelines/[pipeline]/backfills":[s,e,"static/chunks/pages/pipelines/[pipeline]/backfills-a8b61d8d239fd16f.js"],"/pipelines/[pipeline]/backfills/[...slug]":[p,j,s,e,c,"static/chunks/pages/pipelines/[pipeline]/backfills/[...slug]-ff4bd7a8ec3bab40.js"],"/pipelines/[pipeline]/dashboard":[l,a,t,g,o,s,e,u,f,m,"static/chunks/pages/pipelines/[pipeline]/dashboard-95ffcd3e2b27e567.js"],"/pipelines/[pipeline]/edit":[l,a,t,p,g,o,s,r,u,f,h,w,F,v,"static/chunks/pages/pipelines/[pipeline]/edit-e1dd1ed71d26c10d.js"],"/pipelines/[pipeline]/logs":[j,s,e,"static/chunks/pages/pipelines/[pipeline]/logs-3f5c14076ddde20e.js"],"/pipelines/[pipeline]/monitors":[a,t,s,e,B,"static/chunks/pages/pipelines/[pipeline]/monitors-7acc7afc00df17c2.js"],"/pipelines/[pipeline]/monitors/block-runs":[a,t,s,e,"static/chunks/pages/pipelines/[pipeline]/monitors/block-runs-a5c0362763a21fa8.js"],"/pipelines/[pipeline]/monitors/block-runtime":[l,a,t,"static/chunks/9832-67896490f6e8a014.js",s,e,"static/chunks/pages/pipelines/[pipeline]/monitors/block-runtime-1ed9045b2f1dfd65.js"],"/pipelines/[pipeline]/runs":[p,s,e,c,"static/chunks/pages/pipelines/[pipeline]/runs-6dae38250e135c54.js"],"/pipelines/[pipeline]/runs/[run]":[a,p,g,s,e,u,F,"static/chunks/pages/pipelines/[pipeline]/runs/[run]-1417ad1c821d720a.js"],"/pipelines/[pipeline]/settings":[s,e,"static/chunks/pages/pipelines/[pipeline]/settings-59aca25a5b1d3998.js"],"/pipelines/[pipeline]/syncs":[s,e,"static/chunks/pages/pipelines/[pipeline]/syncs-90abafc7ed61c582.js"],"/pipelines/[pipeline]/triggers":[p,j,A,s,e,d,k,D,"static/chunks/pages/pipelines/[pipeline]/triggers-1bdfda8edc9cf4a8.js"],"/pipelines/[pipeline]/triggers/[...slug]":[p,j,A,s,e,c,D,"static/chunks/pages/pipelines/[pipeline]/triggers/[...slug]-f028ef3880ed856c.js"],"/platform/global-hooks":[s,b,"static/chunks/pages/platform/global-hooks-c916c778b0764634.js"],"/platform/global-hooks/[...slug]":[s,b,"static/chunks/pages/platform/global-hooks/[...slug]-e187f4c2b4eccd00.js"],"/settings":["static/chunks/pages/settings-b39e5bca035dec41.js"],"/settings/account/profile":[s,i,_,"static/chunks/pages/settings/account/profile-3f0df3decc856ee9.js"],"/settings/platform/preferences":[s,i,"static/chunks/pages/settings/platform/preferences-503049734a8b082f.js"],"/settings/platform/settings":[s,i,"static/chunks/pages/settings/platform/settings-c2e9ef989c8bfa73.js"],"/settings/workspace/permissions":[s,i,E,"static/chunks/pages/settings/workspace/permissions-e5a4d3d815cec25d.js"],"/settings/workspace/permissions/[...slug]":[s,i,E,"static/chunks/pages/settings/workspace/permissions/[...slug]-47b64ced27c24985.js"],"/settings/workspace/preferences":[s,i,"static/chunks/pages/settings/workspace/preferences-5b26eeda8aed8a7b.js"],"/settings/workspace/roles":[s,i,L,"static/chunks/pages/settings/workspace/roles-36fa165a48af586b.js"],"/settings/workspace/roles/[...slug]":[s,i,L,"static/chunks/pages/settings/workspace/roles/[...slug]-379e1ee292504842.js"],"/settings/workspace/sync-data":[s,i,"static/chunks/pages/settings/workspace/sync-data-8b793b3b696a2cd3.js"],"/settings/workspace/users":[s,i,_,"static/chunks/pages/settings/workspace/users-a4db8710f703c729.js"],"/settings/workspace/users/[...slug]":[s,i,_,"static/chunks/pages/settings/workspace/users/[...slug]-2af9afbe727d88aa.js"],"/sign-in":[s,"static/chunks/pages/sign-in-09414a8b66fb6f06.js"],"/templates":[s,r,h,"static/chunks/pages/templates-05a5312f50db749c.js"],"/templates/[...slug]":[s,r,"static/chunks/pages/templates/[...slug]-98a34c313012fc10.js"],"/terminal":[s,"static/chunks/pages/terminal-89e1b3e6799378a5.js"],"/test":["static/chunks/pages/test-bd51b3918b39329e.js"],"/triggers":[s,k,"static/chunks/pages/triggers-9cba3211434a8966.js"],"/version-control":[s,"static/chunks/pages/version-control-5753fac7c1bfdc88.js"],sortedPages:["/","/404","/_app","/_error","/block-layout","/compute","/files","/global-data-products","/global-data-products/[...slug]","/global-hooks","/global-hooks/[...slug]","/manage","/manage/files","/manage/settings","/manage/users","/manage/users/new","/manage/users/[user]","/oauth","/overview","/pipeline-runs","/pipelines","/pipelines/[pipeline]","/pipelines/[pipeline]/backfills","/pipelines/[pipeline]/backfills/[...slug]","/pipelines/[pipeline]/dashboard","/pipelines/[pipeline]/edit","/pipelines/[pipeline]/logs","/pipelines/[pipeline]/monitors","/pipelines/[pipeline]/monitors/block-runs","/pipelines/[pipeline]/monitors/block-runtime","/pipelines/[pipeline]/runs","/pipelines/[pipeline]/runs/[run]","/pipelines/[pipeline]/settings","/pipelines/[pipeline]/syncs","/pipelines/[pipeline]/triggers","/pipelines/[pipeline]/triggers/[...slug]","/platform/global-hooks","/platform/global-hooks/[...slug]","/settings","/settings/account/profile","/settings/platform/preferences","/settings/platform/settings","/settings/workspace/permissions","/settings/workspace/permissions/[...slug]","/settings/workspace/preferences","/settings/workspace/roles","/settings/workspace/roles/[...slug]","/settings/workspace/sync-data","/settings/workspace/users","/settings/workspace/users/[...slug]","/sign-in","/templates","/templates/[...slug]","/terminal","/test","/triggers","/version-control"]}}("static/chunks/1557-df144fbd8b2208c3.js","static/chunks/3782-ef4cd4f0b52072d0.js","static/chunks/5699-6d708c6b2153ea08.js","static/chunks/125-abc06c39b97fd8aa.js","static/chunks/2714-68fef54789d7eaeb.js","static/chunks/7966-f07b2913f7326b50.js","static/chunks/1598-3070ba5a71ce3e2d.js","static/chunks/9161-837b653aa849a76f.js","static/chunks/29107295-989a0767a635d9d5.js","static/chunks/2631-b9f9bea3f1cf906d.js","static/chunks/8095-bdce03896ef9639a.js","static/chunks/4241-4499461184ba0d23.js","static/chunks/4783-422429203610c318.js","static/chunks/635-0d6b7c8804bcd2dc.js","static/chunks/9624-59b2f803f9c88cd6.js","static/chunks/1187-c9537b3f51775d0c.js","static/chunks/5544-d10ee8ec70354aa1.js","static/chunks/523-be11ad59861d00ca.js","static/chunks/7674-5f8f0882b3411d98.js","static/chunks/9440-4069842b90d4b801.js","static/chunks/3548-fa0792ddb88f4646.js","static/chunks/7361-8a23dd8360593e7a.js","static/chunks/3366-526b00bb494c02a4.js","static/chunks/3763-61b542dafdbf5754.js","static/chunks/5627-237a3de578538022.js","static/chunks/5831-2abc4063e887a03e.js","static/chunks/9265-d2a1aaec75ec69b8.js","static/chunks/26-38bc9380422f3900.js","static/chunks/2717-d9200be634dd6766.js","static/chunks/8146-6bed4e7401e067e6.js","static/chunks/7022-0d52dd8868621fb0.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();