@keboola/api-client 40.0.0 → 42.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. package/API-SURFACE.md +47 -3
  2. package/CHANGELOG.md +167 -0
  3. package/README.md +1 -1
  4. package/dist/{ManagementClientAuthError-DE7lNGZQ.cjs → ManagementClientAuthError-BFZOtLgj.cjs} +2 -2
  5. package/dist/{ManagementClientAuthError-DE7lNGZQ.cjs.map → ManagementClientAuthError-BFZOtLgj.cjs.map} +1 -1
  6. package/dist/{ManagementClientAuthError-H30lti_Q.js → ManagementClientAuthError-DUbXlry2.js} +2 -2
  7. package/dist/{ManagementClientAuthError-H30lti_Q.js.map → ManagementClientAuthError-DUbXlry2.js.map} +1 -1
  8. package/dist/ai/index.cjs +2 -2
  9. package/dist/ai/index.js +2 -2
  10. package/dist/{appLogs-BBkkUOW1.js → appLogs-DfkItQCO.js} +2 -2
  11. package/dist/{appLogs-BBkkUOW1.js.map → appLogs-DfkItQCO.js.map} +1 -1
  12. package/dist/{appLogs-B9zFJIuy.cjs → appLogs-oZvt59mk.cjs} +2 -2
  13. package/dist/{appLogs-B9zFJIuy.cjs.map → appLogs-oZvt59mk.cjs.map} +1 -1
  14. package/dist/apps/index.cjs +3 -3
  15. package/dist/apps/index.js +3 -3
  16. package/dist/assets/index.cjs +1 -1
  17. package/dist/assets/index.js +1 -1
  18. package/dist/auth/index.cjs +1 -1
  19. package/dist/auth/index.d.cts +1 -1
  20. package/dist/auth/index.d.ts +1 -1
  21. package/dist/auth/index.js +1 -1
  22. package/dist/auth/types.d.cts +2 -2
  23. package/dist/auth/types.d.ts +2 -2
  24. package/dist/{auth-DworfoPy.js → auth-DUHTJTwS.js} +2 -2
  25. package/dist/{auth-DworfoPy.js.map → auth-DUHTJTwS.js.map} +1 -1
  26. package/dist/{auth-Dm0F2rOh.cjs → auth-zfI04oj7.cjs} +2 -2
  27. package/dist/{auth-Dm0F2rOh.cjs.map → auth-zfI04oj7.cjs.map} +1 -1
  28. package/dist/{authClient-BmuUo0J4.cjs → authClient-BxqRGR5c.cjs} +39 -5
  29. package/dist/authClient-BxqRGR5c.cjs.map +1 -0
  30. package/dist/{authClient-vEt_7_uk.d.cts → authClient-CBVAT3v9.d.cts} +49 -2
  31. package/dist/{authClient-CHXWJ9x3.d.ts → authClient-CRumc934.d.ts} +49 -2
  32. package/dist/{authClient-CgcDGd30.js → authClient-CX4buUMc.js} +39 -5
  33. package/dist/authClient-CX4buUMc.js.map +1 -0
  34. package/dist/billing/index.cjs +2 -2
  35. package/dist/billing/index.js +2 -2
  36. package/dist/businessWorkspaceApi/index.cjs +1 -1
  37. package/dist/businessWorkspaceApi/index.js +1 -1
  38. package/dist/{businessWorkspaceApi-BLUdefRF.js → businessWorkspaceApi-DFky1k61.js} +3 -3
  39. package/dist/{businessWorkspaceApi-BLUdefRF.js.map → businessWorkspaceApi-DFky1k61.js.map} +1 -1
  40. package/dist/{businessWorkspaceApi-6tCDdpnY.cjs → businessWorkspaceApi-Uzqu0PJM.cjs} +3 -3
  41. package/dist/{businessWorkspaceApi-6tCDdpnY.cjs.map → businessWorkspaceApi-Uzqu0PJM.cjs.map} +1 -1
  42. package/dist/chat/index.cjs +3 -3
  43. package/dist/chat/index.js +3 -3
  44. package/dist/{componentId-57vjsa2i.cjs → componentId-D4jp6a13.cjs} +19 -1
  45. package/dist/componentId-D4jp6a13.cjs.map +1 -0
  46. package/dist/{componentId-C6WZa_R1.js → componentId-DmHwHG5V.js} +19 -1
  47. package/dist/componentId-DmHwHG5V.js.map +1 -0
  48. package/dist/{configurations-IYyOvhI3.cjs → configurations-D_Rbs0Wl.cjs} +2 -2
  49. package/dist/{configurations-IYyOvhI3.cjs.map → configurations-D_Rbs0Wl.cjs.map} +1 -1
  50. package/dist/{configurations-BPKGGy-M.js → configurations-DcpUlC8I.js} +2 -2
  51. package/dist/{configurations-BPKGGy-M.js.map → configurations-DcpUlC8I.js.map} +1 -1
  52. package/dist/constants/index.cjs +1 -1
  53. package/dist/constants/index.d.cts +1 -1
  54. package/dist/constants/index.d.ts +1 -1
  55. package/dist/constants/index.js +1 -1
  56. package/dist/{createFetchClient-Cwp8max9.cjs → createFetchClient-BgihytBn.cjs} +2 -1
  57. package/dist/createFetchClient-BgihytBn.cjs.map +1 -0
  58. package/dist/{createFetchClient-DXHQK63w.js → createFetchClient-cgWkwgAQ.js} +2 -1
  59. package/dist/createFetchClient-cgWkwgAQ.js.map +1 -0
  60. package/dist/{createGenericFetchClient-Dl9cqTvR.cjs → createGenericFetchClient-C7Y0YVfc.cjs} +2 -2
  61. package/dist/{createGenericFetchClient-Dl9cqTvR.cjs.map → createGenericFetchClient-C7Y0YVfc.cjs.map} +1 -1
  62. package/dist/{createGenericFetchClient-Dg1rgzmG.js → createGenericFetchClient-CX9Hn3Aq.js} +2 -2
  63. package/dist/{createGenericFetchClient-Dg1rgzmG.js.map → createGenericFetchClient-CX9Hn3Aq.js.map} +1 -1
  64. package/dist/{createOpenapiFetchClient-DZUOVupy.js → createOpenapiFetchClient-BxcLLU_N.js} +2 -2
  65. package/dist/{createOpenapiFetchClient-DZUOVupy.js.map → createOpenapiFetchClient-BxcLLU_N.js.map} +1 -1
  66. package/dist/{createOpenapiFetchClient-BYqW-9tm.cjs → createOpenapiFetchClient-DY5s-aH6.cjs} +2 -2
  67. package/dist/{createOpenapiFetchClient-BYqW-9tm.cjs.map → createOpenapiFetchClient-DY5s-aH6.cjs.map} +1 -1
  68. package/dist/dataScience/index.cjs +2 -2
  69. package/dist/dataScience/index.js +2 -2
  70. package/dist/{dataScience-B5QxZnvW.cjs → dataScience-BoS8Xfvx.cjs} +5 -5
  71. package/dist/{dataScience-B5QxZnvW.cjs.map → dataScience-BoS8Xfvx.cjs.map} +1 -1
  72. package/dist/{dataScience-OXcwdk1p.js → dataScience-BxRoGfnG.js} +5 -5
  73. package/dist/{dataScience-OXcwdk1p.js.map → dataScience-BxRoGfnG.js.map} +1 -1
  74. package/dist/developerPortal/index.cjs +1 -1
  75. package/dist/developerPortal/index.js +1 -1
  76. package/dist/{developerPortalClient-B1QZ1rYi.js → developerPortalClient-C7s0kpjK.js} +3 -3
  77. package/dist/{developerPortalClient-B1QZ1rYi.js.map → developerPortalClient-C7s0kpjK.js.map} +1 -1
  78. package/dist/{developerPortalClient-CLPpBksD.cjs → developerPortalClient-DFHEsrlt.cjs} +3 -3
  79. package/dist/{developerPortalClient-CLPpBksD.cjs.map → developerPortalClient-DFHEsrlt.cjs.map} +1 -1
  80. package/dist/domain/permissions/index.d.cts +2 -2
  81. package/dist/domain/permissions/index.d.ts +2 -2
  82. package/dist/domain/storageTable/index.cjs +7 -1
  83. package/dist/domain/storageTable/index.d.cts +2 -2
  84. package/dist/domain/storageTable/index.d.ts +2 -2
  85. package/dist/domain/storageTable/index.js +2 -2
  86. package/dist/editor/index.cjs +2 -2
  87. package/dist/editor/index.js +2 -2
  88. package/dist/encryption/index.cjs +1 -1
  89. package/dist/encryption/index.d.cts +1 -1
  90. package/dist/encryption/index.d.ts +1 -1
  91. package/dist/encryption/index.js +1 -1
  92. package/dist/encryption/types.d.cts +1 -1
  93. package/dist/encryption/types.d.ts +1 -1
  94. package/dist/import/index.cjs +1 -1
  95. package/dist/import/index.js +1 -1
  96. package/dist/{import-CNk89mqy.cjs → import-BSYvG3Uy.cjs} +3 -3
  97. package/dist/{import-CNk89mqy.cjs.map → import-BSYvG3Uy.cjs.map} +1 -1
  98. package/dist/{import-DiMQCzLa.js → import-CXBcFVbk.js} +3 -3
  99. package/dist/{import-DiMQCzLa.js.map → import-CXBcFVbk.js.map} +1 -1
  100. package/dist/{index-DCRKjihs.d.ts → index-B03vhWSX.d.ts} +117 -90
  101. package/dist/{index-DXYASsPP.d.cts → index-B2-7WJ-E.d.cts} +599 -78
  102. package/dist/{index-BDZvaRud.d.ts → index-B72LTF-k.d.ts} +6 -3
  103. package/dist/{index-DOAZmWvh.d.cts → index-BMiZx-4_.d.cts} +6 -3
  104. package/dist/{index--ZpnE3YT.d.cts → index-BUsLHNOA.d.cts} +2 -2
  105. package/dist/{index-D7-o-oGa.d.ts → index-CBWfpd-0.d.ts} +2 -2
  106. package/dist/index-CGCXR_6Q.d.ts +273 -0
  107. package/dist/{index-Cvbjp3jx.d.cts → index-CKENwClW.d.cts} +4 -4
  108. package/dist/{index-BkqackZf.d.ts → index-CpE_NWuq.d.ts} +599 -78
  109. package/dist/{index-DnQTuc6t.d.ts → index-Cw-d6vV3.d.ts} +4 -4
  110. package/dist/{index-ByRpNVcs.d.cts → index-D3HFMfJJ.d.cts} +117 -90
  111. package/dist/index-DINB7vsV.d.cts +273 -0
  112. package/dist/{index-C8gRRWHL.d.cts → index-DeQDdut6.d.cts} +19 -1
  113. package/dist/{index-C8gRRWHL.d.ts → index-DeQDdut6.d.ts} +19 -1
  114. package/dist/{index-Qb7X6-ph.d.ts → index-DwM1EpnZ.d.ts} +12 -2
  115. package/dist/{index-CXcWpZQ2.d.ts → index-P1vR966i.d.cts} +74 -2
  116. package/dist/{index-CXcWpZQ2.d.cts → index-P1vR966i.d.ts} +74 -2
  117. package/dist/{index-DNThyEej.d.cts → index-VnJCp8IL.d.cts} +12 -2
  118. package/dist/index.cjs +65 -39
  119. package/dist/index.cjs.map +1 -1
  120. package/dist/index.d.cts +3 -3
  121. package/dist/index.d.ts +3 -3
  122. package/dist/index.js +65 -40
  123. package/dist/index.js.map +1 -1
  124. package/dist/{isLoginPageRedirect-XPwAOKK3.js → isLoginPageRedirect-CsjF95_P.js} +2 -2
  125. package/dist/{isLoginPageRedirect-XPwAOKK3.js.map → isLoginPageRedirect-CsjF95_P.js.map} +1 -1
  126. package/dist/{isLoginPageRedirect-jQHiLrG7.cjs → isLoginPageRedirect-c451CoWW.cjs} +2 -2
  127. package/dist/{isLoginPageRedirect-jQHiLrG7.cjs.map → isLoginPageRedirect-c451CoWW.cjs.map} +1 -1
  128. package/dist/kaiAgent/index.cjs +1 -1
  129. package/dist/kaiAgent/index.d.cts +2 -2
  130. package/dist/kaiAgent/index.d.ts +2 -2
  131. package/dist/kaiAgent/index.js +1 -1
  132. package/dist/{kaiAgent-QNoeVKPs.cjs → kaiAgent-ph4DRKlT.cjs} +21 -5
  133. package/dist/kaiAgent-ph4DRKlT.cjs.map +1 -0
  134. package/dist/{kaiAgent-Dp20HLTh.js → kaiAgent-xBpUwLeQ.js} +21 -5
  135. package/dist/kaiAgent-xBpUwLeQ.js.map +1 -0
  136. package/dist/{kaiMemory-D0Y_16U4.js → kaiMemory-BAniZZAN.js} +2 -2
  137. package/dist/{kaiMemory-D0Y_16U4.js.map → kaiMemory-BAniZZAN.js.map} +1 -1
  138. package/dist/{kaiMemory-CClSPInt.cjs → kaiMemory-U0DG-CpY.cjs} +2 -2
  139. package/dist/{kaiMemory-CClSPInt.cjs.map → kaiMemory-U0DG-CpY.cjs.map} +1 -1
  140. package/dist/management/index.cjs +1 -1
  141. package/dist/management/index.d.cts +1 -1
  142. package/dist/management/index.d.ts +1 -1
  143. package/dist/management/index.js +1 -1
  144. package/dist/management/types.d.cts +2 -2
  145. package/dist/management/types.d.ts +2 -2
  146. package/dist/{management-CCY0IYnq.cjs → management-5597SiC7.cjs} +79 -11
  147. package/dist/management-5597SiC7.cjs.map +1 -0
  148. package/dist/{management-DvmPiG64.js → management-D46KlXts.js} +79 -11
  149. package/dist/management-D46KlXts.js.map +1 -0
  150. package/dist/metastore/index.cjs +1 -1
  151. package/dist/metastore/index.d.cts +1 -1
  152. package/dist/metastore/index.d.ts +1 -1
  153. package/dist/metastore/index.js +1 -1
  154. package/dist/metastore/types.d.cts +2 -2
  155. package/dist/metastore/types.d.ts +2 -2
  156. package/dist/{metastore-XtWciCZT.cjs → metastore-DwMFlP2d.cjs} +52 -7
  157. package/dist/metastore-DwMFlP2d.cjs.map +1 -0
  158. package/dist/{metastore-BycJxe7A.js → metastore-_OskcLGz.js} +52 -7
  159. package/dist/metastore-_OskcLGz.js.map +1 -0
  160. package/dist/microsoftGraph/index.cjs +2 -2
  161. package/dist/microsoftGraph/index.js +2 -2
  162. package/dist/{middleware-CBwrtgQd.js → middleware-Drbo_UIZ.js} +2 -2
  163. package/dist/{middleware-CBwrtgQd.js.map → middleware-Drbo_UIZ.js.map} +1 -1
  164. package/dist/{middleware-IjYx3d5u.cjs → middleware-xhg2r2fE.cjs} +2 -2
  165. package/dist/{middleware-IjYx3d5u.cjs.map → middleware-xhg2r2fE.cjs.map} +1 -1
  166. package/dist/notifications/index.cjs +3 -3
  167. package/dist/notifications/index.js +3 -3
  168. package/dist/oauth/index.cjs +1 -1
  169. package/dist/oauth/index.js +1 -1
  170. package/dist/{oauth--2p8jkJf.cjs → oauth-L0Uic3YA.cjs} +5 -5
  171. package/dist/{oauth--2p8jkJf.cjs.map → oauth-L0Uic3YA.cjs.map} +1 -1
  172. package/dist/{oauth-l5zE39cD.js → oauth-TWwAv-va.js} +5 -5
  173. package/dist/{oauth-l5zE39cD.js.map → oauth-TWwAv-va.js.map} +1 -1
  174. package/dist/omnisearch/index.cjs +2 -2
  175. package/dist/omnisearch/index.js +2 -2
  176. package/dist/{project-cHKuGvqJ.d.cts → project-B8wtlstY.d.cts} +2 -2
  177. package/dist/{project-B15gStbM.d.ts → project-BCc3mpAy.d.ts} +2 -2
  178. package/dist/queryService/index.cjs +1 -1
  179. package/dist/queryService/index.d.cts +1 -1
  180. package/dist/queryService/index.d.ts +1 -1
  181. package/dist/queryService/index.js +1 -1
  182. package/dist/{queryService-CCOYbRbw.js → queryService-CdtogGr7.js} +5 -5
  183. package/dist/{queryService-CCOYbRbw.js.map → queryService-CdtogGr7.js.map} +1 -1
  184. package/dist/{queryService-CQzclHdL.cjs → queryService-Dx6AdxOl.cjs} +5 -5
  185. package/dist/{queryService-CQzclHdL.cjs.map → queryService-Dx6AdxOl.cjs.map} +1 -1
  186. package/dist/queue/index.cjs +1 -1
  187. package/dist/queue/index.d.cts +1 -1
  188. package/dist/queue/index.d.ts +1 -1
  189. package/dist/queue/index.js +1 -1
  190. package/dist/{queue-Cowbg6bR.js → queue-f2xsjy0o.js} +4 -4
  191. package/dist/{queue-Cowbg6bR.js.map → queue-f2xsjy0o.js.map} +1 -1
  192. package/dist/{queue-UG_BWKIC.cjs → queue-wIdnMtaZ.cjs} +4 -4
  193. package/dist/{queue-UG_BWKIC.cjs.map → queue-wIdnMtaZ.cjs.map} +1 -1
  194. package/dist/scheduler/index.cjs +3 -3
  195. package/dist/scheduler/index.js +3 -3
  196. package/dist/sdk/configurations/index.cjs +1 -1
  197. package/dist/sdk/configurations/index.d.cts +4 -4
  198. package/dist/sdk/configurations/index.d.ts +4 -4
  199. package/dist/sdk/configurations/index.js +1 -1
  200. package/dist/sdk/developerPortal/index.cjs +3 -3
  201. package/dist/sdk/developerPortal/index.js +3 -3
  202. package/dist/sdk/kaiMemory/index.cjs +1 -1
  203. package/dist/sdk/kaiMemory/index.d.cts +1 -1
  204. package/dist/sdk/kaiMemory/index.d.ts +1 -1
  205. package/dist/sdk/kaiMemory/index.js +1 -1
  206. package/dist/sdk/kaiMemory/types.d.cts +1 -1
  207. package/dist/sdk/kaiMemory/types.d.ts +1 -1
  208. package/dist/sdk/queryService/index.d.cts +1 -1
  209. package/dist/sdk/queryService/index.d.ts +1 -1
  210. package/dist/sdk/semanticLayer/index.cjs +2 -1
  211. package/dist/sdk/semanticLayer/index.d.cts +10 -3
  212. package/dist/sdk/semanticLayer/index.d.ts +10 -3
  213. package/dist/sdk/semanticLayer/index.js +2 -2
  214. package/dist/sdk/semanticLayer/types.d.cts +2 -2
  215. package/dist/sdk/semanticLayer/types.d.ts +2 -2
  216. package/dist/sdk/storage/index.cjs +12 -24
  217. package/dist/sdk/storage/index.cjs.map +1 -1
  218. package/dist/sdk/storage/index.d.cts +1 -1
  219. package/dist/sdk/storage/index.d.ts +1 -1
  220. package/dist/sdk/storage/index.js +12 -24
  221. package/dist/sdk/storage/index.js.map +1 -1
  222. package/dist/sdk/tag/index.d.cts +2 -2
  223. package/dist/sdk/tag/index.d.ts +2 -2
  224. package/dist/sdk/tag/types.d.cts +1 -1
  225. package/dist/sdk/tag/types.d.ts +1 -1
  226. package/dist/sdk/vault/index.d.cts +1 -1
  227. package/dist/sdk/vault/index.d.ts +1 -1
  228. package/dist/{semanticLayer-CKDVkU56.cjs → semanticLayer-D3NDh_QH.cjs} +115 -20
  229. package/dist/semanticLayer-D3NDh_QH.cjs.map +1 -0
  230. package/dist/{semanticLayer-pYy082Ju.js → semanticLayer-Ddg0LSnt.js} +110 -21
  231. package/dist/semanticLayer-Ddg0LSnt.js.map +1 -0
  232. package/dist/status/index.cjs +1 -1
  233. package/dist/status/index.js +1 -1
  234. package/dist/storage/index.cjs +4 -4
  235. package/dist/storage/index.d.cts +2 -2
  236. package/dist/storage/index.d.ts +2 -2
  237. package/dist/storage/index.js +4 -4
  238. package/dist/storage/types.d.cts +3 -3
  239. package/dist/storage/types.d.ts +3 -3
  240. package/dist/{storage-CZQHZcXG.js → storage-BkdjgtCU.js} +272 -134
  241. package/dist/storage-BkdjgtCU.js.map +1 -0
  242. package/dist/{storage-JinL1y1s.cjs → storage-CXQTTVXl.cjs} +272 -134
  243. package/dist/storage-CXQTTVXl.cjs.map +1 -0
  244. package/dist/{storageTable-C9crh4Ef.cjs → storageTable-BNOR2FCh.cjs} +137 -5
  245. package/dist/storageTable-BNOR2FCh.cjs.map +1 -0
  246. package/dist/{storageTable-DslXtqNL.js → storageTable-BldTNyEk.js} +102 -6
  247. package/dist/storageTable-BldTNyEk.js.map +1 -0
  248. package/dist/stream/index.cjs +3 -3
  249. package/dist/stream/index.js +3 -3
  250. package/dist/syncActions/index.cjs +4 -1
  251. package/dist/syncActions/index.d.cts +3 -2
  252. package/dist/syncActions/index.d.ts +3 -2
  253. package/dist/syncActions/index.js +2 -2
  254. package/dist/syncActions/types.d.cts +2 -2
  255. package/dist/syncActions/types.d.ts +2 -2
  256. package/dist/syncActions-BQ8kMgL6.js +1191 -0
  257. package/dist/syncActions-BQ8kMgL6.js.map +1 -0
  258. package/dist/syncActions-DyxNmbUR.cjs +1216 -0
  259. package/dist/syncActions-DyxNmbUR.cjs.map +1 -0
  260. package/dist/telemetry/index.cjs +3 -3
  261. package/dist/telemetry/index.js +3 -3
  262. package/dist/{types-DWiLcrxt.d.cts → types-04GTqleJ.d.cts} +3 -3
  263. package/dist/{types-DRCMBt89.d.ts → types-2Do0DZ60.d.ts} +3 -3
  264. package/dist/{types-Dtuvhm3K.d.cts → types-BWmLo73i.d.cts} +749 -186
  265. package/dist/types-BaSlU0uo.d.ts +1313 -0
  266. package/dist/{types-DEzW1CfI.d.cts → types-BgHtMe8s.d.cts} +3 -3
  267. package/dist/{types-BiMahEK8.d.cts → types-BgVt8SUY.d.cts} +126 -62
  268. package/dist/{types-BS4jwuMi.d.ts → types-BhEx9iRx.d.ts} +3068 -621
  269. package/dist/{types-CMzQSHAQ.d.cts → types-BzPuxmaR.d.cts} +3 -3
  270. package/dist/{types-CKmTZSPG.d.ts → types-C0rVtqz2.d.ts} +126 -62
  271. package/dist/{types-Bl03Cg2n.d.cts → types-CAAgCRmE.d.cts} +31 -5
  272. package/dist/{types-BIECJYun.d.ts → types-CN6huo55.d.ts} +406 -5
  273. package/dist/{types-Cg14ncdV.d.ts → types-CV7jmgtX.d.ts} +3 -3
  274. package/dist/types-CcYxlqtB.d.cts +1313 -0
  275. package/dist/{types-FwRmjsNN.d.ts → types-CigD_EF5.d.ts} +18 -6
  276. package/dist/{types-B_iLJlp4.d.ts → types-CwZgZqrA.d.ts} +31 -5
  277. package/dist/{types-BTK7Bv3n.d.cts → types-DgPt4LY_.d.cts} +406 -5
  278. package/dist/{types-bc-4z_gc.d.cts → types-DyArI_Jq.d.cts} +18 -6
  279. package/dist/{types-DekYAlA-.d.ts → types-QSchmyvO.d.ts} +3 -3
  280. package/dist/{types-DKc1gmd9.d.ts → types-R3AFJD6r.d.ts} +749 -186
  281. package/dist/{types-DDOa07rU.d.cts → types-sV9OaqTI.d.cts} +3068 -621
  282. package/dist/{validateConnectionStatus-BEYkQpu9.cjs → validateConnectionStatus-Ca1uEizv.cjs} +3 -3
  283. package/dist/{validateConnectionStatus-BEYkQpu9.cjs.map → validateConnectionStatus-Ca1uEizv.cjs.map} +1 -1
  284. package/dist/{validateConnectionStatus-BEGu8wXT.js → validateConnectionStatus-gFsBi5FV.js} +3 -3
  285. package/dist/{validateConnectionStatus-BEGu8wXT.js.map → validateConnectionStatus-gFsBi5FV.js.map} +1 -1
  286. package/dist/vault/index.cjs +4 -4
  287. package/dist/vault/index.js +4 -4
  288. package/package.json +7 -7
  289. package/surface/auth.md +7 -0
  290. package/surface/kaiAgent.md +4 -2
  291. package/surface/management.md +28 -13
  292. package/surface/metastore.md +4 -1
  293. package/surface/queue.md +1 -1
  294. package/surface/sdk.md +13 -8
  295. package/surface/storage.md +27 -24
  296. package/surface/syncActions.md +55 -1
  297. package/dist/authClient-BmuUo0J4.cjs.map +0 -1
  298. package/dist/authClient-CgcDGd30.js.map +0 -1
  299. package/dist/componentId-57vjsa2i.cjs.map +0 -1
  300. package/dist/componentId-C6WZa_R1.js.map +0 -1
  301. package/dist/createFetchClient-Cwp8max9.cjs.map +0 -1
  302. package/dist/createFetchClient-DXHQK63w.js.map +0 -1
  303. package/dist/index-CPu4Nezo.d.cts +0 -90
  304. package/dist/index-Dazy-meb.d.ts +0 -90
  305. package/dist/kaiAgent-Dp20HLTh.js.map +0 -1
  306. package/dist/kaiAgent-QNoeVKPs.cjs.map +0 -1
  307. package/dist/management-CCY0IYnq.cjs.map +0 -1
  308. package/dist/management-DvmPiG64.js.map +0 -1
  309. package/dist/metastore-BycJxe7A.js.map +0 -1
  310. package/dist/metastore-XtWciCZT.cjs.map +0 -1
  311. package/dist/semanticLayer-CKDVkU56.cjs.map +0 -1
  312. package/dist/semanticLayer-pYy082Ju.js.map +0 -1
  313. package/dist/storage-CZQHZcXG.js.map +0 -1
  314. package/dist/storage-JinL1y1s.cjs.map +0 -1
  315. package/dist/storageTable-C9crh4Ef.cjs.map +0 -1
  316. package/dist/storageTable-DslXtqNL.js.map +0 -1
  317. package/dist/syncActions-BmmoqZO_.js +0 -516
  318. package/dist/syncActions-BmmoqZO_.js.map +0 -1
  319. package/dist/syncActions-CtcLGQiy.cjs +0 -523
  320. package/dist/syncActions-CtcLGQiy.cjs.map +0 -1
  321. package/dist/types-BYM9Ptz5.d.ts +0 -671
  322. package/dist/types-CFeZCQ9p.d.cts +0 -671
@@ -1,6 +1,6 @@
1
1
  const require_concurrent = require("./concurrent-CdVfR1N5.cjs");
2
2
  const require_generateUUID = require("./generateUUID-C6qKBPIv.cjs");
3
- const require_createFetchClient = require("./createFetchClient-Cwp8max9.cjs");
3
+ const require_createFetchClient = require("./createFetchClient-BgihytBn.cjs");
4
4
  const require_ValidationError = require("./ValidationError-D65QU0uq.cjs");
5
5
  let zod = require("zod");
6
6
  //#region src/sdks/semanticLayer/errorMessage.ts
@@ -23,7 +23,7 @@ const metastoreErrorMessage = (data) => {
23
23
  //#endregion
24
24
  //#region src/sdks/semanticLayer/vocabulary.ts
25
25
  /**
26
- * The closed value sets the metastore accepts inside a semantic object's `data`.
26
+ * The closed value sets the metastore accepts on a semantic object.
27
27
  *
28
28
  * - The single runtime source for the unions `./types` derives from these arrays.
29
29
  * - Imports nothing: `./types` reads it, never the reverse.
@@ -76,6 +76,12 @@ const RULE_OPERATORS = [
76
76
  "ratio_between"
77
77
  ];
78
78
  const RELATIONSHIP_JOIN_TYPES = ["left", "inner"];
79
+ /** Who can read an object, narrowest first; an envelope `meta` field, not part of `data`. */
80
+ const SEMANTIC_OBJECT_SCOPES = [
81
+ "project",
82
+ "targeted",
83
+ "organization"
84
+ ];
79
85
  //#endregion
80
86
  //#region src/sdks/semanticLayer/schemas.ts
81
87
  /**
@@ -231,13 +237,16 @@ const SEMANTIC_CHILD_OBJECT_READ_SCHEMAS = {
231
237
  const semanticObjectMetaSchema = zod.z.looseObject({
232
238
  name: zod.z.string().optional(),
233
239
  branch: zod.z.string().optional(),
234
- projectId: zod.z.number().optional(),
240
+ projectId: zod.z.number().nullable().optional(),
235
241
  organizationId: zod.z.string().optional(),
236
242
  revision: zod.z.number().optional(),
237
243
  schemaVersion: zod.z.string().optional(),
238
244
  createdAt: zod.z.string().optional(),
239
245
  lastUpdated: zod.z.string().optional(),
240
- revisionCreatedAt: zod.z.string().optional()
246
+ revisionCreatedAt: zod.z.string().optional(),
247
+ scope: zod.z.enum(SEMANTIC_OBJECT_SCOPES).optional().catch(void 0),
248
+ sourceProjectId: zod.z.number().optional().catch(void 0),
249
+ targetProjectIds: zod.z.array(zod.z.number()).optional().catch(void 0)
241
250
  });
242
251
  /**
243
252
  * The envelope every read comes wrapped in, mapped to the `SemanticObject` the SDK returns.
@@ -341,6 +350,16 @@ const deriveObjectLabel = (data) => {
341
350
  if (typeof data.displayName === "string" && data.displayName !== "") return data.displayName;
342
351
  return deriveOptionalObjectName(data);
343
352
  };
353
+ /**
354
+ * The value sibling objects reference a child by.
355
+ *
356
+ * - A metric's `dataset` and a relationship's `from`/`to` hold a dataset's `tableId`.
357
+ * - A constraint's `metrics[]` holds metric `name`s, never their `displayName`.
358
+ */
359
+ const deriveReferenceKey = (objectType, data) => {
360
+ const key = objectType === SEMANTIC_OBJECT_TYPE.DATASET ? data.tableId : objectType === SEMANTIC_OBJECT_TYPE.METRIC ? data.name : void 0;
361
+ return typeof key === "string" && key !== "" ? key : void 0;
362
+ };
344
363
  const createSemanticLayerSdk = ({ metastoreClient }) => {
345
364
  /**
346
365
  * Every object of one type, parsed rather than asserted.
@@ -348,8 +367,11 @@ const createSemanticLayerSdk = ({ metastoreClient }) => {
348
367
  * - A malformed element is dropped, logged and reported in `unreadable`; the rest still list.
349
368
  * - A response that is not a collection throws rather than reading as empty.
350
369
  */
351
- const _listObjects = async (objectType, dataSchema, signal) => {
352
- const response = await metastoreClient.repository.getMetaObjects({ objectType }, signal);
370
+ const _listObjects = async (objectType, dataSchema, signal, options = {}) => {
371
+ const response = await metastoreClient.repository.getMetaObjects({
372
+ objectType,
373
+ ...options
374
+ }, signal);
353
375
  const items = require_ValidationError.parseOrThrow(zod.z.array(zod.z.unknown()), response.data);
354
376
  const schema = semanticObjectReadSchema(dataSchema);
355
377
  const objects = [];
@@ -373,6 +395,18 @@ const createSemanticLayerSdk = ({ metastoreClient }) => {
373
395
  };
374
396
  };
375
397
  const listModels = async (signal) => (await _listObjects(SEMANTIC_OBJECT_TYPE.MODEL, semanticModelReadSchema, signal)).objects;
398
+ /**
399
+ * One model by UUID, with the envelope `meta` that carries its `scope`.
400
+ *
401
+ * - A model that does not parse throws a `ValidationError` rather than reading as missing.
402
+ */
403
+ const getModel = async (modelUUID, signal) => {
404
+ const response = await metastoreClient.repository.getMetaObject({
405
+ objectType: SEMANTIC_OBJECT_TYPE.MODEL,
406
+ UUID: modelUUID
407
+ }, signal);
408
+ return require_ValidationError.parseOrThrow(semanticObjectReadSchema(semanticModelReadSchema), response.data);
409
+ };
376
410
  const createModel = async (data, meta = {}) => {
377
411
  const response = await metastoreClient.repository.createMetaObject({
378
412
  objectType: SEMANTIC_OBJECT_TYPE.MODEL,
@@ -399,9 +433,9 @@ const createSemanticLayerSdk = ({ metastoreClient }) => {
399
433
  * - `unreadable` includes objects whose envelope names this model or no model.
400
434
  */
401
435
  const _listChildObjects = async (objectType, modelUUID, signal) => {
402
- const { objects, unreadable } = await _listObjects(objectType, SEMANTIC_CHILD_OBJECT_READ_SCHEMAS[objectType], signal);
436
+ const { objects, unreadable } = await _listObjects(objectType, SEMANTIC_CHILD_OBJECT_READ_SCHEMAS[objectType], signal, { modelUUID });
403
437
  return {
404
- objects: objects.filter((object) => object.data.modelUUID === modelUUID),
438
+ objects,
405
439
  unreadable: unreadable.filter((ref) => ref.modelUUID === null || ref.modelUUID === modelUUID)
406
440
  };
407
441
  };
@@ -479,19 +513,24 @@ const createSemanticLayerSdk = ({ metastoreClient }) => {
479
513
  /**
480
514
  * Every child object of a model, flattened; `name` is the display label.
481
515
  *
482
- * - Five whole-collection requests: the metastore has no per-model filter.
483
- * - Throws `SemanticLayerUnreadableChildrenError` rather than degrading: a short list would
516
+ * - `deleteModel` and delete confirmations use this to say what a delete would destroy.
517
+ * - Costs five list requests, one per child type, each server-side filtered to this model.
518
+ * - Throws `SemanticLayerUnreadableChildrenError` rather than degrading — a short list would
484
519
  * make a cascade delete miss objects.
485
520
  */
486
521
  const listModelChildren = async (modelUUID, signal) => {
487
522
  const perType = await Promise.all(MODEL_CHILD_OBJECT_TYPES.map(async (objectType) => {
488
523
  const { objects, unreadable } = await _listChildObjects(objectType, modelUUID, signal);
489
524
  return {
490
- children: objects.map((object) => ({
491
- objectType,
492
- objectUUID: object.uuid,
493
- name: deriveObjectLabel(object.data)
494
- })),
525
+ children: objects.map((object) => {
526
+ const referenceKey = deriveReferenceKey(objectType, object.data);
527
+ return {
528
+ objectType,
529
+ objectUUID: object.uuid,
530
+ name: deriveObjectLabel(object.data),
531
+ ...referenceKey === void 0 ? {} : { referenceKey }
532
+ };
533
+ }),
495
534
  unreadable
496
535
  };
497
536
  }));
@@ -571,18 +610,64 @@ const createSemanticLayerSdk = ({ metastoreClient }) => {
571
610
  /**
572
611
  * Step a project-scoped object up to the organization scope, keeping its UUID and history.
573
612
  *
574
- * - Needs organization-admin; surface the metastore's 403 rather than pre-empt it.
613
+ * - Requires the organization-admin role for the target org; callers should surface the
614
+ * metastore's 403 rather than pre-empt it.
615
+ * - `dropSourceProject` opts out of recording the pre-promotion `projectId` as
616
+ * `sourceProjectId`; omitted (the default), the source project is preserved.
575
617
  */
576
- const promoteToOrganizationScope = async (objectType, objectUUID) => {
618
+ const promoteToOrganizationScope = async (objectType, objectUUID, options = {}) => {
577
619
  const response = await metastoreClient.repository.updateMetaObject({
578
620
  objectType,
579
621
  UUID: objectUUID,
580
- scope: "organization"
622
+ scope: "organization",
623
+ ...options.dropSourceProject !== void 0 ? { dropSourceProject: options.dropSourceProject } : {}
581
624
  });
582
625
  return mapObject(response.data);
583
626
  };
627
+ /**
628
+ * Flag a `project`-scope object as awaiting an organization admin's decision to promote it.
629
+ * Only the owning project may call this; idempotent — requesting again just refreshes the
630
+ * timestamp rather than erroring.
631
+ */
632
+ const requestScopeElevation = async (objectType, objectUUID) => {
633
+ await metastoreClient.repository.requestScopeElevation({
634
+ objectType,
635
+ UUID: objectUUID
636
+ });
637
+ };
638
+ /**
639
+ * Clear a pending scope-elevation request, whether withdrawn by the owner or declined by an
640
+ * organization admin. Idempotent — clearing an object with no pending request is a no-op.
641
+ */
642
+ const withdrawScopeElevationRequest = async (objectType, objectUUID) => {
643
+ await metastoreClient.repository.withdrawScopeElevationRequest({
644
+ objectType,
645
+ UUID: objectUUID
646
+ });
647
+ };
648
+ /**
649
+ * Every object of `objectType`, across every project in the organization, currently awaiting an
650
+ * org-admin's elevation decision. Backs the org-admin pending-elevation banner.
651
+ */
652
+ const listPendingScopeElevationRequests = async (objectType, signal) => {
653
+ return (await metastoreClient.repository.getPendingScopeElevationRequests({ objectType }, signal)).data.map(mapObject);
654
+ };
655
+ /**
656
+ * The current project's own objects with a pending scope-elevation request — for the
657
+ * requester, as opposed to `listPendingScopeElevationRequests`, which is the org-admin's
658
+ * org-wide approval queue. Uses the regular (per-project) list endpoint, not `/organization`:
659
+ * only project-scope objects can have a pending request, and only their owner can set one, so
660
+ * filtering the objects this project can already see is sufficient — no org-wide access needed.
661
+ */
662
+ const listMyPendingScopeElevationRequests = async (objectType, signal) => {
663
+ return (await metastoreClient.repository.getMetaObjects({
664
+ objectType,
665
+ pendingElevationOnly: true
666
+ }, signal)).data.map(mapObject);
667
+ };
584
668
  return {
585
669
  listModels,
670
+ getModel,
586
671
  createModel,
587
672
  updateModel,
588
673
  deleteModel,
@@ -595,7 +680,11 @@ const createSemanticLayerSdk = ({ metastoreClient }) => {
595
680
  updateObject,
596
681
  deleteObject,
597
682
  replaceTargetProjects,
598
- promoteToOrganizationScope
683
+ promoteToOrganizationScope,
684
+ requestScopeElevation,
685
+ withdrawScopeElevationRequest,
686
+ listPendingScopeElevationRequests,
687
+ listMyPendingScopeElevationRequests
599
688
  };
600
689
  };
601
690
  //#endregion
@@ -647,6 +736,12 @@ Object.defineProperty(exports, "SEMANTIC_CHILD_OBJECT_SCHEMAS", {
647
736
  return SEMANTIC_CHILD_OBJECT_SCHEMAS;
648
737
  }
649
738
  });
739
+ Object.defineProperty(exports, "SEMANTIC_OBJECT_SCOPES", {
740
+ enumerable: true,
741
+ get: function() {
742
+ return SEMANTIC_OBJECT_SCOPES;
743
+ }
744
+ });
650
745
  Object.defineProperty(exports, "SEMANTIC_OBJECT_TYPE", {
651
746
  enumerable: true,
652
747
  get: function() {
@@ -720,4 +815,4 @@ Object.defineProperty(exports, "semanticRelationshipSchema", {
720
815
  }
721
816
  });
722
817
 
723
- //# sourceMappingURL=semanticLayer-CKDVkU56.cjs.map
818
+ //# sourceMappingURL=semanticLayer-D3NDh_QH.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semanticLayer-D3NDh_QH.cjs","names":["z","z","formatValidationIssues","generateUUID","parseOrThrow","z","formatValidationIssues","concurrent","isApiError","HttpStatus"],"sources":["../src/sdks/semanticLayer/errorMessage.ts","../src/sdks/semanticLayer/vocabulary.ts","../src/sdks/semanticLayer/schemas.ts","../src/sdks/semanticLayer/readSchemas.ts","../src/sdks/semanticLayer/semanticLayerSdk.ts"],"sourcesContent":["/**\n * The message out of a metastore error body.\n *\n * - Only `errors[].message` says what is wrong; the top-level message is just \"Validation failed\".\n * - Any other shape returns `undefined`, so the caller keeps its own fallback.\n * - Only the first error: the metastore reports fields one at a time.\n */\nexport const metastoreErrorMessage = (data: unknown): string | undefined => {\n if (typeof data !== 'object' || data === null) return undefined;\n const errors = (data as { errors?: unknown }).errors;\n if (!Array.isArray(errors)) return undefined;\n const first = errors[0];\n if (typeof first !== 'object' || first === null) return undefined;\n const message = (first as { message?: unknown }).message;\n return typeof message === 'string' && message ? message : undefined;\n};\n","/**\n * The closed value sets the metastore accepts on a semantic object.\n *\n * - The single runtime source for the unions `./types` derives from these arrays.\n * - Imports nothing: `./types` reads it, never the reverse.\n */\n\n/**\n * The dialects the metastore accepts, case-sensitive.\n *\n * - `SemanticModelData.sql_dialect` stays `string` (narrowing is a major bump); validate against this.\n */\nexport const SQL_DIALECTS = ['Snowflake', 'BigQuery'] as const;\n\nexport const CONSTRAINT_TYPES = [\n 'inequality',\n 'equality',\n 'range',\n 'composition',\n 'exclusion',\n 'temporal',\n 'conditional',\n] as const;\n\n/** Dataset field roles; enumerated, unlike a field's free-form `type`. */\nexport const FIELD_ROLES = ['key', 'dimension', 'measure', 'timestamp'] as const;\n\n/** Constraint severities; unset is stored as `warning`. */\nexport const CONSTRAINT_SEVERITIES = ['error', 'warning', 'info'] as const;\n\n/** Constraint scopes; unset is stored as `global`. */\nexport const CONSTRAINT_SCOPES = ['global', 'per_location', 'per_date', 'per_category'] as const;\n\nexport const RULE_OPERATORS = [\n '<',\n '<=',\n '=',\n '>=',\n '>',\n '!=',\n 'between',\n 'in',\n 'sum_equals',\n 'ratio_between',\n] as const;\n\nexport const RELATIONSHIP_JOIN_TYPES = ['left', 'inner'] as const;\n\n/** Who can read an object, narrowest first; an envelope `meta` field, not part of `data`. */\nexport const SEMANTIC_OBJECT_SCOPES = ['project', 'targeted', 'organization'] as const;\n","import { z } from 'zod';\n\nimport { CONSTRAINT_TYPES, SQL_DIALECTS } from './vocabulary';\n\n/**\n * Write validators for untrusted input; the metastore's own validation errors are opaque.\n *\n * - Only required fields are declared; `looseObject` passes the rest through (the metastore owns the full schema).\n * - The SDK does not parse its own writes.\n * - `modelUUID` is omitted: the SDK injects it.\n */\n\nexport const semanticModelSchema = z.looseObject({\n name: z.string().min(1),\n sql_dialect: z.enum(SQL_DIALECTS),\n});\n\nexport const semanticDatasetSchema = z.looseObject({\n name: z.string().min(1),\n tableId: z.string().min(1),\n fqn: z.string().min(1),\n});\n\nexport const semanticMetricSchema = z.looseObject({\n name: z.string().min(1),\n sql: z.string().min(1),\n});\n\nexport const semanticRelationshipSchema = z.looseObject({\n from: z.string().min(1),\n to: z.string().min(1),\n on: z.string().min(1),\n});\n\nexport const semanticGlossarySchema = z.looseObject({\n term: z.string().min(1),\n definition: z.string().min(1),\n});\n\nexport const semanticConstraintSchema = z.looseObject({\n name: z.string().min(1),\n constraintType: z.enum(CONSTRAINT_TYPES),\n metrics: z.array(z.string()),\n rule: z.string().min(1),\n});\n\nexport const SEMANTIC_CHILD_OBJECT_SCHEMAS = {\n 'semantic-dataset': semanticDatasetSchema,\n 'semantic-metric': semanticMetricSchema,\n 'semantic-relationship': semanticRelationshipSchema,\n 'semantic-glossary': semanticGlossarySchema,\n 'semantic-constraint': semanticConstraintSchema,\n} as const;\n","import { z } from 'zod';\n\nimport { formatValidationIssues } from '../../errors';\n\nimport type {\n SemanticAiMetadata,\n SemanticChildObjectDataMap,\n SemanticChildObjectType,\n SemanticConstraintData,\n SemanticDatasetData,\n SemanticFieldData,\n SemanticGlossaryData,\n SemanticMetricData,\n SemanticModelData,\n SemanticObjectMeta,\n SemanticRelationshipData,\n SemanticRuleExpression,\n SemanticValidationQuery,\n} from './types';\nimport {\n CONSTRAINT_SCOPES,\n CONSTRAINT_SEVERITIES,\n CONSTRAINT_TYPES,\n FIELD_ROLES,\n RELATIONSHIP_JOIN_TYPES,\n RULE_OPERATORS,\n SEMANTIC_OBJECT_SCOPES,\n} from './vocabulary';\n\n/**\n * What a read of the metastore is allowed to hand back, per object type.\n *\n * - Each schema is annotated with its `./types` type, so the two cannot drift apart.\n * - `looseObject`: fields the metastore adds still reach callers.\n * - An unknown value in an optional enum reads as absent; in a required enum it drops the object.\n */\n\nconst aiMetadataSchema: z.ZodType<SemanticAiMetadata, unknown> = z.looseObject({\n synonyms: z.array(z.string()).optional(),\n keywords: z.array(z.string()).optional(),\n antiKeywords: z.array(z.string()).optional(),\n hints: z.array(z.string()).optional(),\n warnings: z.array(z.string()).optional(),\n});\n\nconst fieldSchema: z.ZodType<SemanticFieldData, unknown> = z.looseObject({\n name: z.string(),\n description: z.string().optional(),\n type: z.string().optional(),\n role: z.enum(FIELD_ROLES).optional().catch(undefined),\n values: z.array(z.string()).optional(),\n ai: aiMetadataSchema.optional(),\n});\n\n/**\n * A dataset's `fields`, where a malformed column is dropped rather than the whole dataset.\n *\n * - `schemas.ts` does not validate `fields` on write, so a nameless column can be stored.\n */\nconst datasetFieldsSchema = z.array(z.unknown()).transform((items) =>\n items.flatMap((element, index) => {\n const result = fieldSchema.safeParse(element);\n if (result.success) return [result.data];\n\n console.warn(\n `semanticLayerSdk: dropped field #${index} from a semantic-dataset, it does not match ` +\n `its declared shape`,\n formatValidationIssues(result.error.issues),\n );\n return [];\n }),\n);\n\nconst ruleExpressionSchema: z.ZodType<SemanticRuleExpression, unknown> = z.looseObject({\n operator: z.enum(RULE_OPERATORS).optional().catch(undefined),\n left: z.string().optional(),\n right: z.string().optional(),\n bounds: z\n .looseObject({\n min: z.number().optional(),\n max: z.number().optional(),\n })\n .optional(),\n});\n\nconst validationQuerySchema: z.ZodType<SemanticValidationQuery, unknown> = z.looseObject({\n default: z.string().optional(),\n snowflake: z.string().optional(),\n bigquery: z.string().optional(),\n});\n\nexport const semanticModelReadSchema: z.ZodType<SemanticModelData, unknown> = z.looseObject({\n name: z.string(),\n description: z.string().optional(),\n sql_dialect: z.string(),\n});\n\nconst semanticDatasetReadSchema: z.ZodType<SemanticDatasetData, unknown> = z.looseObject({\n modelUUID: z.string(),\n name: z.string(),\n tableId: z.string(),\n fqn: z.string(),\n description: z.string().optional(),\n grain: z.string().optional(),\n primaryKey: z.array(z.string()).optional(),\n fields: datasetFieldsSchema.optional(),\n ai: aiMetadataSchema.optional(),\n});\n\nconst semanticMetricReadSchema: z.ZodType<SemanticMetricData, unknown> = z.looseObject({\n modelUUID: z.string(),\n name: z.string(),\n sql: z.string(),\n dataset: z.string().optional(),\n description: z.string().optional(),\n});\n\nconst semanticRelationshipReadSchema: z.ZodType<SemanticRelationshipData, unknown> = z.looseObject({\n modelUUID: z.string(),\n name: z.string().optional(),\n from: z.string(),\n to: z.string(),\n on: z.string(),\n type: z.enum(RELATIONSHIP_JOIN_TYPES).optional().catch(undefined),\n});\n\nconst semanticGlossaryReadSchema: z.ZodType<SemanticGlossaryData, unknown> = z.looseObject({\n modelUUID: z.string(),\n term: z.string(),\n definition: z.string(),\n seeAlso: z.array(z.string()).optional(),\n});\n\nconst semanticConstraintReadSchema: z.ZodType<SemanticConstraintData, unknown> = z.looseObject({\n modelUUID: z.string(),\n name: z.string(),\n displayName: z.string().optional(),\n description: z.string().optional(),\n constraintType: z.enum(CONSTRAINT_TYPES),\n metrics: z.array(z.string()),\n datasets: z.array(z.string()).optional(),\n rule: z.string(),\n ruleExpression: ruleExpressionSchema.optional(),\n validationQuery: validationQuerySchema.optional(),\n severity: z.enum(CONSTRAINT_SEVERITIES).optional().catch(undefined),\n errorMessage: z.string().optional(),\n remediation: z.string().optional(),\n isActive: z.boolean().optional(),\n scope: z.enum(CONSTRAINT_SCOPES).optional().catch(undefined),\n owner: z.string().optional(),\n tags: z.array(z.string()).optional(),\n});\n\n/** Keyed by object type so a read can pick the schema from a `SemanticChildObjectType`. */\nexport const SEMANTIC_CHILD_OBJECT_READ_SCHEMAS: {\n [T in SemanticChildObjectType]: z.ZodType<SemanticChildObjectDataMap[T], unknown>;\n} = {\n 'semantic-dataset': semanticDatasetReadSchema,\n 'semantic-metric': semanticMetricReadSchema,\n 'semantic-relationship': semanticRelationshipReadSchema,\n 'semantic-glossary': semanticGlossaryReadSchema,\n 'semantic-constraint': semanticConstraintReadSchema,\n};\n\nconst semanticObjectMetaSchema: z.ZodType<SemanticObjectMeta, unknown> = z.looseObject({\n name: z.string().optional(),\n branch: z.string().optional(),\n projectId: z.number().nullable().optional(),\n organizationId: z.string().optional(),\n revision: z.number().optional(),\n schemaVersion: z.string().optional(),\n createdAt: z.string().optional(),\n lastUpdated: z.string().optional(),\n revisionCreatedAt: z.string().optional(),\n scope: z.enum(SEMANTIC_OBJECT_SCOPES).optional().catch(undefined),\n // `.catch`: a malformed value, `null` included, reads as unset rather than dropping the object.\n sourceProjectId: z.number().optional().catch(undefined),\n targetProjectIds: z.array(z.number()).optional().catch(undefined),\n});\n\n/**\n * The envelope every read comes wrapped in, mapped to the `SemanticObject` the SDK returns.\n *\n * - A missing or `null` `meta` normalizes rather than drops the object; no caller needs its fields.\n */\nexport const semanticObjectReadSchema = <TData>(dataSchema: z.ZodType<TData, unknown>) =>\n z\n .object({\n id: z.string(),\n attributes: dataSchema,\n meta: semanticObjectMetaSchema.nullish(),\n })\n .transform(({ id, attributes, meta }) => ({ uuid: id, data: attributes, meta: meta ?? {} }));\n","import { z } from 'zod';\n\nimport { formatValidationIssues, parseOrThrow } from '../../errors';\nimport { isApiError } from '../../fetchClient';\nimport { HttpStatus } from '../../internal';\nimport { concurrent, generateUUID } from '../../utils';\n\nimport {\n SEMANTIC_CHILD_OBJECT_READ_SCHEMAS,\n semanticModelReadSchema,\n semanticObjectReadSchema,\n} from './readSchemas';\nimport type {\n CreateSemanticObjectMeta,\n MetastoreClient,\n SemanticChildObjectDataMap,\n SemanticChildObjectType,\n SemanticModelChildDeleteFailure,\n SemanticModelChildRef,\n SemanticModelData,\n SemanticObject,\n SemanticObjectMeta,\n SemanticObjectType,\n SemanticUnreadableObjectRef,\n UpdateSemanticObjectMeta,\n} from './types';\n\n/**\n * Thrown by `deleteModel` when the child cascade partially fails.\n *\n * - Every child delete has settled; the model was kept.\n * - `deletedChildren` are gone, `failedChildren` still exist; `errors` holds per-child reasons.\n */\nexport class SemanticLayerCascadeDeleteError extends AggregateError {\n readonly modelUUID: string;\n readonly deletedChildren: SemanticModelChildRef[];\n readonly failedChildren: SemanticModelChildDeleteFailure[];\n\n constructor({\n modelUUID,\n deletedChildren,\n failedChildren,\n }: {\n modelUUID: string;\n deletedChildren: SemanticModelChildRef[];\n failedChildren: SemanticModelChildDeleteFailure[];\n }) {\n const total = deletedChildren.length + failedChildren.length;\n super(\n failedChildren.map((failure) => failure.error),\n `The model was kept because ${failedChildren.length} of its ${total} child objects ` +\n `could not be deleted (${deletedChildren.length} deleted).`,\n );\n this.name = 'SemanticLayerCascadeDeleteError';\n this.modelUUID = modelUUID;\n this.deletedChildren = deletedChildren;\n this.failedChildren = failedChildren;\n }\n}\n\n/**\n * Thrown by `listModelChildren` when some child could not be parsed; fails closed.\n *\n * - `deleteModel` reads before the cascade, so nothing is deleted when this throws.\n * - An `unreadable` entry with `modelUUID: null` counts against every model.\n */\nexport class SemanticLayerUnreadableChildrenError extends Error {\n readonly modelUUID: string;\n readonly unreadable: SemanticUnreadableObjectRef[];\n\n constructor({\n modelUUID,\n unreadable,\n }: {\n modelUUID: string;\n unreadable: SemanticUnreadableObjectRef[];\n }) {\n super(\n `${unreadable.length} child object(s) of the model could not be read, so what it holds ` +\n `is unknown and nothing was deleted.`,\n );\n this.name = 'SemanticLayerUnreadableChildrenError';\n this.modelUUID = modelUUID;\n this.unreadable = unreadable;\n }\n}\n\nexport const SEMANTIC_OBJECT_TYPE = {\n MODEL: 'semantic-model',\n DATASET: 'semantic-dataset',\n METRIC: 'semantic-metric',\n RELATIONSHIP: 'semantic-relationship',\n GLOSSARY: 'semantic-glossary',\n CONSTRAINT: 'semantic-constraint',\n} as const satisfies Record<string, SemanticObjectType>;\n\n/** `readonly`: it drives what a cascade delete touches. */\nexport const MODEL_CHILD_OBJECT_TYPES: readonly SemanticChildObjectType[] = [\n SEMANTIC_OBJECT_TYPE.DATASET,\n SEMANTIC_OBJECT_TYPE.METRIC,\n SEMANTIC_OBJECT_TYPE.RELATIONSHIP,\n SEMANTIC_OBJECT_TYPE.GLOSSARY,\n SEMANTIC_OBJECT_TYPE.CONSTRAINT,\n] as const;\n\nconst DEFAULT_BRANCH = 'main';\n\n// The metastore has no bulk endpoint; writes are concurrent single POSTs.\nconst WRITE_CONCURRENCY = 5;\n\n/**\n * The live metastore envelope; the types in clients/metastore/repository/types.ts do not match it.\n *\n * - Reads parse it (`./readSchemas`); writes assert it, as the metastore echoes a validated object.\n */\ntype RawSemanticObject<TData> = {\n type: string;\n id: string;\n attributes: TData;\n meta: SemanticObjectMeta;\n};\n\nconst mapObject = <TData>(item: RawSemanticObject<TData>): SemanticObject<TData> => ({\n uuid: item.id,\n data: item.attributes,\n meta: item.meta,\n});\n\n/** The raw `id` of an envelope that failed to parse; `null` means unaddressable. */\nconst envelopeId = (value: unknown): string | null => {\n if (typeof value !== 'object' || value === null) return null;\n const { id } = value as { id?: unknown };\n return typeof id === 'string' && id !== '' ? id : null;\n};\n\n/** The raw `modelUUID` of a dropped envelope; `null` is treated as \"could be any model's\". */\nconst envelopeModelUUID = (value: unknown): string | null => {\n if (typeof value !== 'object' || value === null) return null;\n const { attributes } = value as { attributes?: unknown };\n if (typeof attributes !== 'object' || attributes === null) return null;\n const { modelUUID } = attributes as { modelUUID?: unknown };\n return typeof modelUUID === 'string' && modelUUID !== '' ? modelUUID : null;\n};\n\nconst deriveOptionalObjectName = (data: Record<string, unknown>): string | undefined => {\n if (typeof data.name === 'string') return data.name;\n if (typeof data.term === 'string') return data.term;\n return undefined;\n};\n\nconst deriveObjectName = (data: Record<string, unknown>) =>\n deriveOptionalObjectName(data) ?? generateUUID();\n\n/**\n * The UI label: `displayName ?? name`, matching kbc-ui's constraint tables.\n *\n * - Not used for lookup: `displayName` is not unique.\n */\nconst deriveObjectLabel = (data: Record<string, unknown>): string | undefined => {\n if (typeof data.displayName === 'string' && data.displayName !== '') return data.displayName;\n return deriveOptionalObjectName(data);\n};\n\n/**\n * The value sibling objects reference a child by.\n *\n * - A metric's `dataset` and a relationship's `from`/`to` hold a dataset's `tableId`.\n * - A constraint's `metrics[]` holds metric `name`s, never their `displayName`.\n */\nconst deriveReferenceKey = (\n objectType: SemanticChildObjectType,\n data: Record<string, unknown>,\n): string | undefined => {\n const key =\n objectType === SEMANTIC_OBJECT_TYPE.DATASET\n ? data.tableId\n : objectType === SEMANTIC_OBJECT_TYPE.METRIC\n ? data.name\n : undefined;\n return typeof key === 'string' && key !== '' ? key : undefined;\n};\n\ntype Options = {\n metastoreClient: MetastoreClient;\n};\n\nexport const createSemanticLayerSdk = ({ metastoreClient }: Options) => {\n /**\n * Every object of one type, parsed rather than asserted.\n *\n * - A malformed element is dropped, logged and reported in `unreadable`; the rest still list.\n * - A response that is not a collection throws rather than reading as empty.\n */\n const _listObjects = async <TData>(\n objectType: SemanticObjectType,\n dataSchema: z.ZodType<TData, unknown>,\n signal?: AbortSignal,\n options: { modelUUID?: string; pendingElevationOnly?: boolean } = {},\n ): Promise<{ objects: SemanticObject<TData>[]; unreadable: SemanticUnreadableObjectRef[] }> => {\n const response = await metastoreClient.repository.getMetaObjects(\n { objectType, ...options },\n signal,\n );\n const items = parseOrThrow(z.array(z.unknown()), response.data);\n const schema = semanticObjectReadSchema(dataSchema);\n\n const objects: SemanticObject<TData>[] = [];\n const unreadable: SemanticUnreadableObjectRef[] = [];\n\n for (const item of items) {\n const result = schema.safeParse(item);\n if (result.success) {\n objects.push(result.data);\n continue;\n }\n\n unreadable.push({\n objectType,\n objectUUID: envelopeId(item),\n modelUUID: envelopeModelUUID(item),\n });\n\n // Never log the payload: it is customer data.\n console.warn(\n `semanticLayerSdk: dropped ${objectType} \"${envelopeId(item) ?? '<no id>'}\" from the ` +\n `metastore response, it does not match its declared shape`,\n formatValidationIssues(result.error.issues),\n );\n }\n\n return { objects, unreadable };\n };\n\n const listModels = async (signal?: AbortSignal) =>\n (await _listObjects(SEMANTIC_OBJECT_TYPE.MODEL, semanticModelReadSchema, signal)).objects;\n\n /**\n * One model by UUID, with the envelope `meta` that carries its `scope`.\n *\n * - A model that does not parse throws a `ValidationError` rather than reading as missing.\n */\n const getModel = async (\n modelUUID: string,\n signal?: AbortSignal,\n ): Promise<SemanticObject<SemanticModelData>> => {\n const response = await metastoreClient.repository.getMetaObject(\n { objectType: SEMANTIC_OBJECT_TYPE.MODEL, UUID: modelUUID },\n signal,\n );\n return parseOrThrow(semanticObjectReadSchema(semanticModelReadSchema), response.data);\n };\n\n const createModel = async (data: SemanticModelData, meta: CreateSemanticObjectMeta = {}) => {\n const response = await metastoreClient.repository.createMetaObject<SemanticModelData>({\n objectType: SEMANTIC_OBJECT_TYPE.MODEL,\n data,\n branch: DEFAULT_BRANCH,\n ...meta,\n // Derived name wins over meta.\n name: data.name,\n });\n\n return mapObject(response.data as unknown as RawSemanticObject<SemanticModelData>);\n };\n\n const updateModel = async (\n modelUUID: string,\n data: Partial<SemanticModelData>,\n meta: UpdateSemanticObjectMeta = {},\n ) => {\n const response = await metastoreClient.repository.updateMetaObject<SemanticModelData>({\n objectType: SEMANTIC_OBJECT_TYPE.MODEL,\n UUID: modelUUID,\n data,\n ...meta,\n // Derived name wins over meta.\n ...(data.name ? { name: data.name } : {}),\n });\n\n return mapObject(response.data as unknown as RawSemanticObject<SemanticModelData>);\n };\n\n /**\n * One child collection scoped to a model.\n *\n * - `unreadable` includes objects whose envelope names this model or no model.\n */\n const _listChildObjects = async <T extends SemanticChildObjectType>(\n objectType: T,\n modelUUID: string,\n signal?: AbortSignal,\n ) => {\n // Server-side filter (every child object schema declares modelUUID x-filterable: true)\n // instead of fetching the type's whole list and filtering client-side.\n const { objects, unreadable } = await _listObjects(\n objectType,\n SEMANTIC_CHILD_OBJECT_READ_SCHEMAS[objectType],\n signal,\n { modelUUID },\n );\n\n // An unreadable item still needs this client-side check: the server filters by modelUUID on\n // the parsed field it trusts, but a malformed item that failed to parse is exactly the case\n // that field can't be trusted for — so an item naming another model still gets excluded here.\n return {\n objects,\n unreadable: unreadable.filter((ref) => ref.modelUUID === null || ref.modelUUID === modelUUID),\n };\n };\n\n const listObjects = async <T extends SemanticChildObjectType>(\n objectType: T,\n modelUUID: string,\n signal?: AbortSignal,\n ) => (await _listChildObjects(objectType, modelUUID, signal)).objects;\n\n /**\n * A model's child objects by name (`term` for glossary).\n *\n * - Returns every match: names are not unique, the caller decides.\n */\n const findObjectsByName = async <T extends SemanticChildObjectType>(\n objectType: T,\n name: string,\n modelUUID: string,\n signal?: AbortSignal,\n ) => {\n const objects = await listObjects(objectType, modelUUID, signal);\n return objects.filter((object) => deriveOptionalObjectName(object.data) === name);\n };\n\n const createObject = async <T extends SemanticChildObjectType>(\n objectType: T,\n data: SemanticChildObjectDataMap[T],\n meta: CreateSemanticObjectMeta = {},\n ) => {\n const response = await metastoreClient.repository.createMetaObject<\n SemanticChildObjectDataMap[T]\n >({\n objectType,\n data,\n branch: DEFAULT_BRANCH,\n ...meta,\n // Derived name wins over meta.\n name: deriveObjectName(data),\n });\n\n return mapObject(response.data as unknown as RawSemanticObject<SemanticChildObjectDataMap[T]>);\n };\n\n const createObjects = async <T extends SemanticChildObjectType>(\n objectType: T,\n items: SemanticChildObjectDataMap[T][],\n meta: CreateSemanticObjectMeta = {},\n ) =>\n concurrent({\n items,\n process: async (data) => createObject(objectType, data, meta),\n concurrency: WRITE_CONCURRENCY,\n });\n\n /**\n * Creates a model, then every child concurrently, one request each.\n *\n * - Rejects on the first failed child and leaves the objects already written in place.\n * @deprecated Use `createModel`, then `createObject` or `createObjects`. Removed in the next major.\n */\n const createModelTree = async (\n model: SemanticModelData,\n children: Partial<{\n [T in SemanticChildObjectType]: Omit<SemanticChildObjectDataMap[T], 'modelUUID'>[];\n }>,\n meta: CreateSemanticObjectMeta = {},\n ) => {\n const createdModel = await createModel(model, meta);\n\n const items = MODEL_CHILD_OBJECT_TYPES.flatMap((objectType) =>\n (children[objectType] ?? []).map((data) => ({\n objectType,\n data: {\n ...data,\n modelUUID: createdModel.uuid,\n } satisfies SemanticChildObjectDataMap[typeof objectType],\n })),\n );\n\n const createdChildren = await concurrent({\n items,\n process: async ({ objectType, data }) => createObject(objectType, data, meta),\n concurrency: WRITE_CONCURRENCY,\n });\n\n return { model: createdModel, children: createdChildren };\n };\n\n const updateObject = async <T extends SemanticChildObjectType>(\n objectType: T,\n objectUUID: string,\n data: Partial<SemanticChildObjectDataMap[T]>,\n meta: UpdateSemanticObjectMeta = {},\n ) => {\n const name = deriveOptionalObjectName(data);\n const response = await metastoreClient.repository.updateMetaObject<\n SemanticChildObjectDataMap[T]\n >({\n objectType,\n UUID: objectUUID,\n data,\n ...meta,\n // Derived name wins over meta.\n ...(name ? { name } : {}),\n });\n\n return mapObject(response.data as unknown as RawSemanticObject<SemanticChildObjectDataMap[T]>);\n };\n\n /**\n * Whether a failed delete left the object gone anyway (lost a race).\n *\n * - Only `404`: the metastore's \"already deleted\" `500` is indistinguishable from a real one.\n */\n const isAlreadyDeleted = (error: unknown) =>\n isApiError(error) && error.response.status === HttpStatus.NOT_FOUND;\n\n const deleteObject = async (objectType: SemanticChildObjectType, objectUUID: string) => {\n await metastoreClient.repository.deleteMetaObject({\n objectType,\n UUID: objectUUID,\n });\n };\n\n /**\n * Every child object of a model, flattened; `name` is the display label.\n *\n * - `deleteModel` and delete confirmations use this to say what a delete would destroy.\n * - Costs five list requests, one per child type, each server-side filtered to this model.\n * - Throws `SemanticLayerUnreadableChildrenError` rather than degrading — a short list would\n * make a cascade delete miss objects.\n */\n const listModelChildren = async (\n modelUUID: string,\n signal?: AbortSignal,\n ): Promise<SemanticModelChildRef[]> => {\n const perType = await Promise.all(\n MODEL_CHILD_OBJECT_TYPES.map(async (objectType) => {\n const { objects, unreadable } = await _listChildObjects(objectType, modelUUID, signal);\n return {\n children: objects.map((object) => {\n const referenceKey = deriveReferenceKey(objectType, object.data);\n return {\n objectType,\n objectUUID: object.uuid,\n name: deriveObjectLabel(object.data),\n ...(referenceKey === undefined ? {} : { referenceKey }),\n };\n }),\n unreadable,\n };\n }),\n );\n\n const unreadable = perType.flatMap((result) => result.unreadable);\n if (unreadable.length > 0) {\n throw new SemanticLayerUnreadableChildrenError({ modelUUID, unreadable });\n }\n\n return perType.flatMap((result) => result.children);\n };\n\n /**\n * Cascade delete: all children settle first; the model goes only if none failed or was unreadable.\n *\n * - Partial failure throws `SemanticLayerCascadeDeleteError`.\n * - Idempotent under races: a child already gone (404) counts as deleted.\n * - The model's own 404 is tolerated only after a child was deleted here.\n */\n const deleteModel = async (modelUUID: string) => {\n const children = await listModelChildren(modelUUID);\n\n const outcomes = await concurrent({\n items: children,\n process: async (child) => {\n try {\n await deleteObject(child.objectType, child.objectUUID);\n return { ok: true as const, child };\n } catch (error) {\n if (isAlreadyDeleted(error)) return { ok: true as const, child };\n return { ok: false as const, child, error };\n }\n },\n concurrency: WRITE_CONCURRENCY,\n });\n\n const deletedChildren: SemanticModelChildRef[] = [];\n const failedChildren: SemanticModelChildDeleteFailure[] = [];\n for (const outcome of outcomes) {\n if (outcome.ok) deletedChildren.push(outcome.child);\n else failedChildren.push({ ...outcome.child, error: outcome.error });\n }\n\n if (failedChildren.length > 0) {\n throw new SemanticLayerCascadeDeleteError({ modelUUID, deletedChildren, failedChildren });\n }\n\n try {\n await metastoreClient.repository.deleteMetaObject({\n objectType: SEMANTIC_OBJECT_TYPE.MODEL,\n UUID: modelUUID,\n });\n } catch (error) {\n // A childless model is indistinguishable from a UUID that was never a model.\n if (deletedChildren.length === 0 || !isAlreadyDeleted(error)) throw error;\n }\n };\n\n /**\n * Replace the projects granted read access to a `targeted`-scope object.\n *\n * - An empty array clears every grant.\n * - Read-only is enforced metastore-side.\n */\n const replaceTargetProjects = async (\n objectType: SemanticObjectType,\n objectUUID: string,\n targetProjectIds: number[],\n ) => {\n await metastoreClient.repository.replaceTargetProjects({\n objectType,\n UUID: objectUUID,\n targetProjectIds,\n });\n };\n\n /**\n * Step a project-scoped object up to the organization scope, keeping its UUID and history.\n *\n * - Requires the organization-admin role for the target org; callers should surface the\n * metastore's 403 rather than pre-empt it.\n * - `dropSourceProject` opts out of recording the pre-promotion `projectId` as\n * `sourceProjectId`; omitted (the default), the source project is preserved.\n */\n const promoteToOrganizationScope = async (\n objectType: SemanticObjectType,\n objectUUID: string,\n options: { dropSourceProject?: boolean } = {},\n ) => {\n // Scope ONLY (plus the optional drop flag). No `data`, not even `{}`: the metastore's\n // step-up guard rejects a PATCH that also carries name or data, and `Data *JSONData` treats\n // `{}` as present — which 400s with \"A scope change cannot be combined with name or data\n // changes\".\n const response = await metastoreClient.repository.updateMetaObject({\n objectType,\n UUID: objectUUID,\n scope: 'organization',\n ...(options.dropSourceProject !== undefined\n ? { dropSourceProject: options.dropSourceProject }\n : {}),\n });\n\n return mapObject(response.data as unknown as RawSemanticObject<Record<string, unknown>>);\n };\n\n /**\n * Flag a `project`-scope object as awaiting an organization admin's decision to promote it.\n * Only the owning project may call this; idempotent — requesting again just refreshes the\n * timestamp rather than erroring.\n */\n const requestScopeElevation = async (objectType: SemanticObjectType, objectUUID: string) => {\n await metastoreClient.repository.requestScopeElevation({ objectType, UUID: objectUUID });\n };\n\n /**\n * Clear a pending scope-elevation request, whether withdrawn by the owner or declined by an\n * organization admin. Idempotent — clearing an object with no pending request is a no-op.\n */\n const withdrawScopeElevationRequest = async (\n objectType: SemanticObjectType,\n objectUUID: string,\n ) => {\n await metastoreClient.repository.withdrawScopeElevationRequest({\n objectType,\n UUID: objectUUID,\n });\n };\n\n /**\n * Every object of `objectType`, across every project in the organization, currently awaiting an\n * org-admin's elevation decision. Backs the org-admin pending-elevation banner.\n */\n const listPendingScopeElevationRequests = async (\n objectType: SemanticObjectType,\n signal?: AbortSignal,\n ) => {\n const response = await metastoreClient.repository.getPendingScopeElevationRequests<\n Record<string, unknown>\n >({ objectType }, signal);\n return (response.data as unknown as RawSemanticObject<Record<string, unknown>>[]).map(\n mapObject,\n );\n };\n\n /**\n * The current project's own objects with a pending scope-elevation request — for the\n * requester, as opposed to `listPendingScopeElevationRequests`, which is the org-admin's\n * org-wide approval queue. Uses the regular (per-project) list endpoint, not `/organization`:\n * only project-scope objects can have a pending request, and only their owner can set one, so\n * filtering the objects this project can already see is sufficient — no org-wide access needed.\n */\n const listMyPendingScopeElevationRequests = async (\n objectType: SemanticObjectType,\n signal?: AbortSignal,\n ) => {\n const response = await metastoreClient.repository.getMetaObjects<Record<string, unknown>>(\n { objectType, pendingElevationOnly: true },\n signal,\n );\n return (response.data as unknown as RawSemanticObject<Record<string, unknown>>[]).map(\n mapObject,\n );\n };\n\n return {\n // models\n listModels,\n getModel,\n createModel,\n updateModel,\n deleteModel,\n listModelChildren,\n\n // child objects (datasets, metrics, relationships, glossary, constraints)\n listObjects,\n findObjectsByName,\n createObject,\n createObjects,\n createModelTree,\n updateObject,\n deleteObject,\n\n // scoping / sharing\n replaceTargetProjects,\n promoteToOrganizationScope,\n requestScopeElevation,\n withdrawScopeElevationRequest,\n listPendingScopeElevationRequests,\n listMyPendingScopeElevationRequests,\n };\n};\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { t as concurrent } from "./concurrent-BacWxPwi.js";
2
2
  import { t as generateUUID } from "./generateUUID-Dr8l-aoc.js";
3
- import { m as HttpStatus, r as isApiError } from "./createFetchClient-DXHQK63w.js";
3
+ import { m as HttpStatus, r as isApiError } from "./createFetchClient-cgWkwgAQ.js";
4
4
  import { i as parseOrThrow, n as formatValidationIssues } from "./ValidationError-DjhtNMfZ.js";
5
5
  import { z } from "zod";
6
6
  //#region src/sdks/semanticLayer/errorMessage.ts
@@ -23,7 +23,7 @@ const metastoreErrorMessage = (data) => {
23
23
  //#endregion
24
24
  //#region src/sdks/semanticLayer/vocabulary.ts
25
25
  /**
26
- * The closed value sets the metastore accepts inside a semantic object's `data`.
26
+ * The closed value sets the metastore accepts on a semantic object.
27
27
  *
28
28
  * - The single runtime source for the unions `./types` derives from these arrays.
29
29
  * - Imports nothing: `./types` reads it, never the reverse.
@@ -76,6 +76,12 @@ const RULE_OPERATORS = [
76
76
  "ratio_between"
77
77
  ];
78
78
  const RELATIONSHIP_JOIN_TYPES = ["left", "inner"];
79
+ /** Who can read an object, narrowest first; an envelope `meta` field, not part of `data`. */
80
+ const SEMANTIC_OBJECT_SCOPES = [
81
+ "project",
82
+ "targeted",
83
+ "organization"
84
+ ];
79
85
  //#endregion
80
86
  //#region src/sdks/semanticLayer/schemas.ts
81
87
  /**
@@ -231,13 +237,16 @@ const SEMANTIC_CHILD_OBJECT_READ_SCHEMAS = {
231
237
  const semanticObjectMetaSchema = z.looseObject({
232
238
  name: z.string().optional(),
233
239
  branch: z.string().optional(),
234
- projectId: z.number().optional(),
240
+ projectId: z.number().nullable().optional(),
235
241
  organizationId: z.string().optional(),
236
242
  revision: z.number().optional(),
237
243
  schemaVersion: z.string().optional(),
238
244
  createdAt: z.string().optional(),
239
245
  lastUpdated: z.string().optional(),
240
- revisionCreatedAt: z.string().optional()
246
+ revisionCreatedAt: z.string().optional(),
247
+ scope: z.enum(SEMANTIC_OBJECT_SCOPES).optional().catch(void 0),
248
+ sourceProjectId: z.number().optional().catch(void 0),
249
+ targetProjectIds: z.array(z.number()).optional().catch(void 0)
241
250
  });
242
251
  /**
243
252
  * The envelope every read comes wrapped in, mapped to the `SemanticObject` the SDK returns.
@@ -341,6 +350,16 @@ const deriveObjectLabel = (data) => {
341
350
  if (typeof data.displayName === "string" && data.displayName !== "") return data.displayName;
342
351
  return deriveOptionalObjectName(data);
343
352
  };
353
+ /**
354
+ * The value sibling objects reference a child by.
355
+ *
356
+ * - A metric's `dataset` and a relationship's `from`/`to` hold a dataset's `tableId`.
357
+ * - A constraint's `metrics[]` holds metric `name`s, never their `displayName`.
358
+ */
359
+ const deriveReferenceKey = (objectType, data) => {
360
+ const key = objectType === SEMANTIC_OBJECT_TYPE.DATASET ? data.tableId : objectType === SEMANTIC_OBJECT_TYPE.METRIC ? data.name : void 0;
361
+ return typeof key === "string" && key !== "" ? key : void 0;
362
+ };
344
363
  const createSemanticLayerSdk = ({ metastoreClient }) => {
345
364
  /**
346
365
  * Every object of one type, parsed rather than asserted.
@@ -348,8 +367,11 @@ const createSemanticLayerSdk = ({ metastoreClient }) => {
348
367
  * - A malformed element is dropped, logged and reported in `unreadable`; the rest still list.
349
368
  * - A response that is not a collection throws rather than reading as empty.
350
369
  */
351
- const _listObjects = async (objectType, dataSchema, signal) => {
352
- const response = await metastoreClient.repository.getMetaObjects({ objectType }, signal);
370
+ const _listObjects = async (objectType, dataSchema, signal, options = {}) => {
371
+ const response = await metastoreClient.repository.getMetaObjects({
372
+ objectType,
373
+ ...options
374
+ }, signal);
353
375
  const items = parseOrThrow(z.array(z.unknown()), response.data);
354
376
  const schema = semanticObjectReadSchema(dataSchema);
355
377
  const objects = [];
@@ -373,6 +395,18 @@ const createSemanticLayerSdk = ({ metastoreClient }) => {
373
395
  };
374
396
  };
375
397
  const listModels = async (signal) => (await _listObjects(SEMANTIC_OBJECT_TYPE.MODEL, semanticModelReadSchema, signal)).objects;
398
+ /**
399
+ * One model by UUID, with the envelope `meta` that carries its `scope`.
400
+ *
401
+ * - A model that does not parse throws a `ValidationError` rather than reading as missing.
402
+ */
403
+ const getModel = async (modelUUID, signal) => {
404
+ const response = await metastoreClient.repository.getMetaObject({
405
+ objectType: SEMANTIC_OBJECT_TYPE.MODEL,
406
+ UUID: modelUUID
407
+ }, signal);
408
+ return parseOrThrow(semanticObjectReadSchema(semanticModelReadSchema), response.data);
409
+ };
376
410
  const createModel = async (data, meta = {}) => {
377
411
  const response = await metastoreClient.repository.createMetaObject({
378
412
  objectType: SEMANTIC_OBJECT_TYPE.MODEL,
@@ -399,9 +433,9 @@ const createSemanticLayerSdk = ({ metastoreClient }) => {
399
433
  * - `unreadable` includes objects whose envelope names this model or no model.
400
434
  */
401
435
  const _listChildObjects = async (objectType, modelUUID, signal) => {
402
- const { objects, unreadable } = await _listObjects(objectType, SEMANTIC_CHILD_OBJECT_READ_SCHEMAS[objectType], signal);
436
+ const { objects, unreadable } = await _listObjects(objectType, SEMANTIC_CHILD_OBJECT_READ_SCHEMAS[objectType], signal, { modelUUID });
403
437
  return {
404
- objects: objects.filter((object) => object.data.modelUUID === modelUUID),
438
+ objects,
405
439
  unreadable: unreadable.filter((ref) => ref.modelUUID === null || ref.modelUUID === modelUUID)
406
440
  };
407
441
  };
@@ -479,19 +513,24 @@ const createSemanticLayerSdk = ({ metastoreClient }) => {
479
513
  /**
480
514
  * Every child object of a model, flattened; `name` is the display label.
481
515
  *
482
- * - Five whole-collection requests: the metastore has no per-model filter.
483
- * - Throws `SemanticLayerUnreadableChildrenError` rather than degrading: a short list would
516
+ * - `deleteModel` and delete confirmations use this to say what a delete would destroy.
517
+ * - Costs five list requests, one per child type, each server-side filtered to this model.
518
+ * - Throws `SemanticLayerUnreadableChildrenError` rather than degrading — a short list would
484
519
  * make a cascade delete miss objects.
485
520
  */
486
521
  const listModelChildren = async (modelUUID, signal) => {
487
522
  const perType = await Promise.all(MODEL_CHILD_OBJECT_TYPES.map(async (objectType) => {
488
523
  const { objects, unreadable } = await _listChildObjects(objectType, modelUUID, signal);
489
524
  return {
490
- children: objects.map((object) => ({
491
- objectType,
492
- objectUUID: object.uuid,
493
- name: deriveObjectLabel(object.data)
494
- })),
525
+ children: objects.map((object) => {
526
+ const referenceKey = deriveReferenceKey(objectType, object.data);
527
+ return {
528
+ objectType,
529
+ objectUUID: object.uuid,
530
+ name: deriveObjectLabel(object.data),
531
+ ...referenceKey === void 0 ? {} : { referenceKey }
532
+ };
533
+ }),
495
534
  unreadable
496
535
  };
497
536
  }));
@@ -571,18 +610,64 @@ const createSemanticLayerSdk = ({ metastoreClient }) => {
571
610
  /**
572
611
  * Step a project-scoped object up to the organization scope, keeping its UUID and history.
573
612
  *
574
- * - Needs organization-admin; surface the metastore's 403 rather than pre-empt it.
613
+ * - Requires the organization-admin role for the target org; callers should surface the
614
+ * metastore's 403 rather than pre-empt it.
615
+ * - `dropSourceProject` opts out of recording the pre-promotion `projectId` as
616
+ * `sourceProjectId`; omitted (the default), the source project is preserved.
575
617
  */
576
- const promoteToOrganizationScope = async (objectType, objectUUID) => {
618
+ const promoteToOrganizationScope = async (objectType, objectUUID, options = {}) => {
577
619
  const response = await metastoreClient.repository.updateMetaObject({
578
620
  objectType,
579
621
  UUID: objectUUID,
580
- scope: "organization"
622
+ scope: "organization",
623
+ ...options.dropSourceProject !== void 0 ? { dropSourceProject: options.dropSourceProject } : {}
581
624
  });
582
625
  return mapObject(response.data);
583
626
  };
627
+ /**
628
+ * Flag a `project`-scope object as awaiting an organization admin's decision to promote it.
629
+ * Only the owning project may call this; idempotent — requesting again just refreshes the
630
+ * timestamp rather than erroring.
631
+ */
632
+ const requestScopeElevation = async (objectType, objectUUID) => {
633
+ await metastoreClient.repository.requestScopeElevation({
634
+ objectType,
635
+ UUID: objectUUID
636
+ });
637
+ };
638
+ /**
639
+ * Clear a pending scope-elevation request, whether withdrawn by the owner or declined by an
640
+ * organization admin. Idempotent — clearing an object with no pending request is a no-op.
641
+ */
642
+ const withdrawScopeElevationRequest = async (objectType, objectUUID) => {
643
+ await metastoreClient.repository.withdrawScopeElevationRequest({
644
+ objectType,
645
+ UUID: objectUUID
646
+ });
647
+ };
648
+ /**
649
+ * Every object of `objectType`, across every project in the organization, currently awaiting an
650
+ * org-admin's elevation decision. Backs the org-admin pending-elevation banner.
651
+ */
652
+ const listPendingScopeElevationRequests = async (objectType, signal) => {
653
+ return (await metastoreClient.repository.getPendingScopeElevationRequests({ objectType }, signal)).data.map(mapObject);
654
+ };
655
+ /**
656
+ * The current project's own objects with a pending scope-elevation request — for the
657
+ * requester, as opposed to `listPendingScopeElevationRequests`, which is the org-admin's
658
+ * org-wide approval queue. Uses the regular (per-project) list endpoint, not `/organization`:
659
+ * only project-scope objects can have a pending request, and only their owner can set one, so
660
+ * filtering the objects this project can already see is sufficient — no org-wide access needed.
661
+ */
662
+ const listMyPendingScopeElevationRequests = async (objectType, signal) => {
663
+ return (await metastoreClient.repository.getMetaObjects({
664
+ objectType,
665
+ pendingElevationOnly: true
666
+ }, signal)).data.map(mapObject);
667
+ };
584
668
  return {
585
669
  listModels,
670
+ getModel,
586
671
  createModel,
587
672
  updateModel,
588
673
  deleteModel,
@@ -595,10 +680,14 @@ const createSemanticLayerSdk = ({ metastoreClient }) => {
595
680
  updateObject,
596
681
  deleteObject,
597
682
  replaceTargetProjects,
598
- promoteToOrganizationScope
683
+ promoteToOrganizationScope,
684
+ requestScopeElevation,
685
+ withdrawScopeElevationRequest,
686
+ listPendingScopeElevationRequests,
687
+ listMyPendingScopeElevationRequests
599
688
  };
600
689
  };
601
690
  //#endregion
602
- export { RELATIONSHIP_JOIN_TYPES as _, createSemanticLayerSdk as a, metastoreErrorMessage as b, semanticDatasetSchema as c, semanticModelSchema as d, semanticRelationshipSchema as f, FIELD_ROLES as g, CONSTRAINT_TYPES as h, SemanticLayerUnreadableChildrenError as i, semanticGlossarySchema as l, CONSTRAINT_SEVERITIES as m, SEMANTIC_OBJECT_TYPE as n, SEMANTIC_CHILD_OBJECT_SCHEMAS as o, CONSTRAINT_SCOPES as p, SemanticLayerCascadeDeleteError as r, semanticConstraintSchema as s, MODEL_CHILD_OBJECT_TYPES as t, semanticMetricSchema as u, RULE_OPERATORS as v, SQL_DIALECTS as y };
691
+ export { RELATIONSHIP_JOIN_TYPES as _, createSemanticLayerSdk as a, SQL_DIALECTS as b, semanticDatasetSchema as c, semanticModelSchema as d, semanticRelationshipSchema as f, FIELD_ROLES as g, CONSTRAINT_TYPES as h, SemanticLayerUnreadableChildrenError as i, semanticGlossarySchema as l, CONSTRAINT_SEVERITIES as m, SEMANTIC_OBJECT_TYPE as n, SEMANTIC_CHILD_OBJECT_SCHEMAS as o, CONSTRAINT_SCOPES as p, SemanticLayerCascadeDeleteError as r, semanticConstraintSchema as s, MODEL_CHILD_OBJECT_TYPES as t, semanticMetricSchema as u, RULE_OPERATORS as v, metastoreErrorMessage as x, SEMANTIC_OBJECT_SCOPES as y };
603
692
 
604
- //# sourceMappingURL=semanticLayer-pYy082Ju.js.map
693
+ //# sourceMappingURL=semanticLayer-Ddg0LSnt.js.map