@keboola/api-client 49.0.0 → 51.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.
- package/AGENTS.md +109 -95
- package/API-SURFACE.md +13 -31
- package/CHANGELOG.md +54 -0
- package/README.md +33 -29
- package/dist/{ManagementSessionMintError-Cu9beG7j.cjs → ManagementSessionMintError-ByOulHQH.cjs} +4 -6
- package/dist/{ManagementSessionMintError-Cu9beG7j.cjs.map → ManagementSessionMintError-ByOulHQH.cjs.map} +1 -1
- package/dist/{ManagementSessionMintError-4Pkn5Oob.js → ManagementSessionMintError-DNMbYauw.js} +4 -6
- package/dist/{ManagementSessionMintError-4Pkn5Oob.js.map → ManagementSessionMintError-DNMbYauw.js.map} +1 -1
- package/dist/{QueryJobError-ZZZ043Nm.js → QueryJobError-Iq9O90Uh.js} +2 -3
- package/dist/{QueryJobError-ZZZ043Nm.js.map → QueryJobError-Iq9O90Uh.js.map} +1 -1
- package/dist/{QueryJobError-irGiP5zh.cjs → QueryJobError-Oy0fl4aw.cjs} +2 -3
- package/dist/{QueryJobError-irGiP5zh.cjs.map → QueryJobError-Oy0fl4aw.cjs.map} +1 -1
- package/dist/{QueueJobError-8bThS_Mc.js → QueueJobError-BJNUINXW.js} +2 -3
- package/dist/{QueueJobError-8bThS_Mc.js.map → QueueJobError-BJNUINXW.js.map} +1 -1
- package/dist/{QueueJobError-6qSEizWo.cjs → QueueJobError-DruZK3tc.cjs} +2 -3
- package/dist/{QueueJobError-6qSEizWo.cjs.map → QueueJobError-DruZK3tc.cjs.map} +1 -1
- package/dist/{SyncActionError-CoZFsdUk.js → SyncActionError-DuGcDbkd.js} +2 -3
- package/dist/{SyncActionError-CoZFsdUk.js.map → SyncActionError-DuGcDbkd.js.map} +1 -1
- package/dist/{SyncActionError-BG0zwchi.cjs → SyncActionError-mbpVg63X.cjs} +2 -3
- package/dist/{SyncActionError-BG0zwchi.cjs.map → SyncActionError-mbpVg63X.cjs.map} +1 -1
- package/dist/{UserError-By_Zckmc.js → UserError-BxoOJJ_u.js} +2 -3
- package/dist/{UserError-By_Zckmc.js.map → UserError-BxoOJJ_u.js.map} +1 -1
- package/dist/{UserError-CSGO1qII.cjs → UserError-D4P9Tbhf.cjs} +2 -3
- package/dist/{UserError-CSGO1qII.cjs.map → UserError-D4P9Tbhf.cjs.map} +1 -1
- package/dist/{ValidationError-D65QU0uq.cjs → ValidationError-BXcFX4nD.cjs} +2 -3
- package/dist/{ValidationError-D65QU0uq.cjs.map → ValidationError-BXcFX4nD.cjs.map} +1 -1
- package/dist/{ValidationError-DjhtNMfZ.js → ValidationError-BsdFDGY2.js} +2 -3
- package/dist/{ValidationError-DjhtNMfZ.js.map → ValidationError-BsdFDGY2.js.map} +1 -1
- package/dist/{configurations-CL0ouUMa.js → admin-CbMOsfgs.js} +5 -53
- package/dist/admin-CbMOsfgs.js.map +1 -0
- package/dist/{configurations-D9J3jh3g.cjs → admin-Di-MmGFP.cjs} +4 -124
- package/dist/admin-Di-MmGFP.cjs.map +1 -0
- package/dist/{adminRoles-BX1gk3At.d.ts → adminRoles-DAwl657q.d.ts} +2 -4
- package/dist/{adminRoles-CO7J5qAy.cjs → adminRoles-DnFpO_2W.cjs} +2 -3
- package/dist/{adminRoles-CO7J5qAy.cjs.map → adminRoles-DnFpO_2W.cjs.map} +1 -1
- package/dist/{adminRoles-BbxFgfX-.d.cts → adminRoles-FFyl7Dyx.d.cts} +2 -4
- package/dist/{adminRoles-B40yBcmq.js → adminRoles-asa-MhDD.js} +2 -3
- package/dist/{adminRoles-B40yBcmq.js.map → adminRoles-asa-MhDD.js.map} +1 -1
- package/dist/ai/index.cjs +3 -4
- package/dist/ai/index.d.cts +2 -4
- package/dist/ai/index.d.ts +2 -4
- package/dist/ai/index.js +3 -4
- package/dist/ai/types.d.cts +1 -1
- package/dist/ai/types.d.ts +1 -1
- package/dist/{appLogs-DI2Y4imY.d.ts → appLogs-CTvZAihm.d.ts} +2 -4
- package/dist/{appLogs-IhRA3xyv.d.cts → appLogs-CnLNMH7M.d.cts} +2 -4
- package/dist/{appLogs-Cix2KWra.cjs → appLogs-CoAWQGxs.cjs} +5 -6
- package/dist/{appLogs-Cix2KWra.cjs.map → appLogs-CoAWQGxs.cjs.map} +1 -1
- package/dist/{appLogs-KslK7qHr.js → appLogs-DFcPwVk8.js} +4 -5
- package/dist/{appLogs-KslK7qHr.js.map → appLogs-DFcPwVk8.js.map} +1 -1
- package/dist/apps/index.cjs +28 -5
- package/dist/apps/index.cjs.map +1 -1
- package/dist/apps/index.d.cts +22 -5
- package/dist/apps/index.d.ts +22 -5
- package/dist/apps/index.js +28 -5
- package/dist/apps/index.js.map +1 -1
- package/dist/apps/types.d.cts +3 -3
- package/dist/apps/types.d.ts +3 -3
- package/dist/assets/index.cjs +2 -3
- package/dist/assets/index.d.cts +1 -3
- package/dist/assets/index.d.ts +1 -3
- package/dist/assets/index.js +2 -3
- package/dist/assets/schema.cjs +2 -3
- package/dist/assets/schema.d.cts +0 -2
- package/dist/assets/schema.d.ts +0 -2
- package/dist/assets/schema.js +1 -2
- package/dist/auth/index.cjs +1 -1
- package/dist/auth/index.d.cts +1 -1
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.js +1 -2
- package/dist/auth/types.d.cts +1 -1
- package/dist/auth/types.d.ts +1 -1
- package/dist/{auth-C8Pjl0Mu.cjs → auth-CvB4MukT.cjs} +3 -4
- package/dist/{auth-C8Pjl0Mu.cjs.map → auth-CvB4MukT.cjs.map} +1 -1
- package/dist/{auth-4coY1uwo.js → auth-DYfQMQCs.js} +3 -4
- package/dist/{auth-4coY1uwo.js.map → auth-DYfQMQCs.js.map} +1 -1
- package/dist/{authClient-DfkKlc-2.cjs → authClient-DcKBpMcU.cjs} +66 -85
- package/dist/{authClient-DfkKlc-2.cjs.map → authClient-DcKBpMcU.cjs.map} +1 -1
- package/dist/{authClient-6Aau_4Zt.d.ts → authClient-Df3U4q_6.d.cts} +4 -16
- package/dist/{authClient-B3P6WtWW.d.cts → authClient-JtMVJWXY.d.ts} +4 -16
- package/dist/{authClient-2e8ZmzSP.js → authClient-oB5ydxWp.js} +66 -85
- package/dist/{authClient-2e8ZmzSP.js.map → authClient-oB5ydxWp.js.map} +1 -1
- package/dist/{backends-DKBz5OxE.d.ts → backends-BHotIdL0.d.cts} +1 -3
- package/dist/{backends-DKBz5OxE.d.cts → backends-BHotIdL0.d.ts} +1 -3
- package/dist/billing/index.cjs +3 -4
- package/dist/billing/index.d.cts +1 -3
- package/dist/billing/index.d.ts +1 -3
- package/dist/billing/index.js +3 -4
- package/dist/billing/types.d.cts +1 -5
- package/dist/billing/types.d.ts +1 -5
- package/dist/chat/index.cjs +4 -5
- package/dist/chat/index.d.cts +3 -5
- package/dist/chat/index.d.ts +3 -5
- package/dist/chat/index.js +4 -5
- package/dist/chat/suggestions.cjs +1 -2
- package/dist/chat/suggestions.d.cts +1 -1
- package/dist/chat/suggestions.d.ts +1 -1
- package/dist/chat/suggestions.js +1 -2
- package/dist/chat/types.cjs +1 -2
- package/dist/chat/types.d.cts +1 -1
- package/dist/chat/types.d.ts +1 -1
- package/dist/chat/types.js +1 -2
- package/dist/{collectByOffset-DQsqtmJg.cjs → collectByOffset-DgxJ3zT9.cjs} +3 -4
- package/dist/{collectByOffset-DQsqtmJg.cjs.map → collectByOffset-DgxJ3zT9.cjs.map} +1 -1
- package/dist/{collectByOffset-2XzJqmvr.js → collectByOffset-i8Tdoze7.js} +3 -4
- package/dist/{collectByOffset-2XzJqmvr.js.map → collectByOffset-i8Tdoze7.js.map} +1 -1
- package/dist/{componentId-D4jp6a13.cjs → componentId-C8ZTXXDo.cjs} +2 -3
- package/dist/{componentId-D4jp6a13.cjs.map → componentId-C8ZTXXDo.cjs.map} +1 -1
- package/dist/{componentId-DmHwHG5V.js → componentId-b_qBbJEM.js} +2 -3
- package/dist/{componentId-DmHwHG5V.js.map → componentId-b_qBbJEM.js.map} +1 -1
- package/dist/componentsMcp/index.cjs +1 -1
- package/dist/componentsMcp/index.d.cts +1 -1
- package/dist/componentsMcp/index.d.ts +1 -1
- package/dist/componentsMcp/index.js +1 -2
- package/dist/componentsMcp/types.d.cts +1 -1
- package/dist/componentsMcp/types.d.ts +1 -1
- package/dist/{componentsMcp-pG-PcQrg.cjs → componentsMcp-BaHy5iLr.cjs} +5 -7
- package/dist/{componentsMcp-pG-PcQrg.cjs.map → componentsMcp-BaHy5iLr.cjs.map} +1 -1
- package/dist/{componentsMcp-CHobIsuU.js → componentsMcp-BrB4js6b.js} +5 -7
- package/dist/{componentsMcp-CHobIsuU.js.map → componentsMcp-BrB4js6b.js.map} +1 -1
- package/dist/{concurrent-BacWxPwi.js → concurrent-BtsT10Xe.js} +2 -3
- package/dist/{concurrent-BacWxPwi.js.map → concurrent-BtsT10Xe.js.map} +1 -1
- package/dist/{concurrent-CdVfR1N5.cjs → concurrent-DnTV_ppY.cjs} +2 -3
- package/dist/{concurrent-CdVfR1N5.cjs.map → concurrent-DnTV_ppY.cjs.map} +1 -1
- package/dist/configurations-Cd6Nsox-.js +49 -0
- package/dist/configurations-Cd6Nsox-.js.map +1 -0
- package/dist/configurations-WI8H4zLk.cjs +120 -0
- package/dist/configurations-WI8H4zLk.cjs.map +1 -0
- package/dist/constants/index.cjs +3 -3
- package/dist/constants/index.d.cts +4 -4
- package/dist/constants/index.d.ts +4 -4
- package/dist/constants/index.js +3 -3
- package/dist/{constants-VpSwBtCb.js → constants-BMSHGwOR.js} +46 -52
- package/dist/constants-BMSHGwOR.js.map +1 -0
- package/dist/{constants-DErcRkWl.cjs → constants-DhFQWQgy.cjs} +45 -51
- package/dist/constants-DhFQWQgy.cjs.map +1 -0
- package/dist/{createAbortError-RendOpo7.cjs → createAbortError-Dzc9yObN.cjs} +2 -3
- package/dist/{createAbortError-RendOpo7.cjs.map → createAbortError-Dzc9yObN.cjs.map} +1 -1
- package/dist/{createAbortError-BxupOt-6.js → createAbortError-c6ekCpRy.js} +2 -3
- package/dist/{createAbortError-BxupOt-6.js.map → createAbortError-c6ekCpRy.js.map} +1 -1
- package/dist/{createFetchClient-lZ_93Yrb.cjs → createFetchClient-DEkUH662.cjs} +6 -10
- package/dist/{createFetchClient-lZ_93Yrb.cjs.map → createFetchClient-DEkUH662.cjs.map} +1 -1
- package/dist/{createFetchClient-CkHdS_IG.js → createFetchClient-DlGCbltR.js} +5 -9
- package/dist/{createFetchClient-CkHdS_IG.js.map → createFetchClient-DlGCbltR.js.map} +1 -1
- package/dist/{createGenericFetchClient-MOx97wi-.cjs → createGenericFetchClient-2oU-PXVo.cjs} +3 -4
- package/dist/{createGenericFetchClient-MOx97wi-.cjs.map → createGenericFetchClient-2oU-PXVo.cjs.map} +1 -1
- package/dist/createGenericFetchClient-wGxemBwR.js +6 -0
- package/dist/{createGenericFetchClient-CQdNcPC3.js.map → createGenericFetchClient-wGxemBwR.js.map} +1 -1
- package/dist/createOpenapiFetchClient-Bhz62MUE.js +6 -0
- package/dist/{createOpenapiFetchClient-DXiMv9WL.js.map → createOpenapiFetchClient-Bhz62MUE.js.map} +1 -1
- package/dist/{createOpenapiFetchClient-DHYo_k3t.cjs → createOpenapiFetchClient-DL9w7vU-.cjs} +3 -4
- package/dist/{createOpenapiFetchClient-DHYo_k3t.cjs.map → createOpenapiFetchClient-DL9w7vU-.cjs.map} +1 -1
- package/dist/dataScience/index.cjs +2 -2
- package/dist/dataScience/index.d.cts +2 -2
- package/dist/dataScience/index.d.ts +2 -2
- package/dist/dataScience/index.js +2 -2
- package/dist/dataScience/types.d.cts +2 -2
- package/dist/dataScience/types.d.ts +2 -2
- package/dist/{dataScience-AwPMeGfz.js → dataScience-CXmkEOAi.js} +7 -9
- package/dist/{dataScience-AwPMeGfz.js.map → dataScience-CXmkEOAi.js.map} +1 -1
- package/dist/{dataScience-BjS1p8WO.cjs → dataScience-CufjHPSd.cjs} +7 -9
- package/dist/{dataScience-BjS1p8WO.cjs.map → dataScience-CufjHPSd.cjs.map} +1 -1
- package/dist/{dedupe-OSnnst2u.cjs → dedupe-Bf0gl9TJ.cjs} +2 -3
- package/dist/{dedupe-OSnnst2u.cjs.map → dedupe-Bf0gl9TJ.cjs.map} +1 -1
- package/dist/{dedupe-Cky1gSUu.js → dedupe-Bu0d2i_w.js} +2 -3
- package/dist/{dedupe-Cky1gSUu.js.map → dedupe-Bu0d2i_w.js.map} +1 -1
- package/dist/developerPortal/index.cjs +1 -1
- package/dist/developerPortal/index.d.cts +2 -2
- package/dist/developerPortal/index.d.ts +2 -2
- package/dist/developerPortal/index.js +1 -2
- package/dist/developerPortal/types.d.cts +1 -1
- package/dist/developerPortal/types.d.ts +1 -1
- package/dist/{developerPortalClient-DUerKw-7.cjs → developerPortalClient-BfRxYrWj.cjs} +9 -15
- package/dist/{developerPortalClient-DUerKw-7.cjs.map → developerPortalClient-BfRxYrWj.cjs.map} +1 -1
- package/dist/{developerPortalClient-Bb2suezr.js → developerPortalClient-D9XOYwWF.js} +9 -15
- package/dist/{developerPortalClient-Bb2suezr.js.map → developerPortalClient-D9XOYwWF.js.map} +1 -1
- package/dist/domain/permissions/index.cjs +18 -17
- package/dist/domain/permissions/index.d.cts +1 -11
- package/dist/domain/permissions/index.d.ts +1 -11
- package/dist/domain/permissions/index.js +3 -2
- package/dist/domain/storageTable/index.cjs +403 -9
- package/dist/domain/storageTable/index.cjs.map +1 -0
- package/dist/domain/storageTable/index.d.cts +189 -2
- package/dist/domain/storageTable/index.d.ts +189 -2
- package/dist/domain/storageTable/index.js +395 -1
- package/dist/domain/storageTable/index.js.map +1 -0
- package/dist/editor/index.cjs +3 -4
- package/dist/editor/index.d.cts +2 -4
- package/dist/editor/index.d.ts +2 -4
- package/dist/editor/index.js +3 -4
- package/dist/editor/types.d.cts +1 -1
- package/dist/editor/types.d.ts +1 -1
- package/dist/{emitter-dLF1Fyfg.d.ts → emitter-raKkIqRp.d.cts} +1 -3
- package/dist/{emitter-dLF1Fyfg.d.cts → emitter-raKkIqRp.d.ts} +1 -3
- package/dist/encryption/index.cjs +2 -3
- package/dist/encryption/index.d.cts +1 -1
- package/dist/encryption/index.d.ts +1 -1
- package/dist/encryption/index.js +2 -3
- package/dist/encryption/types.d.cts +1 -1
- package/dist/encryption/types.d.ts +1 -1
- package/dist/generateUUID-DE9sNyJF.js +5 -0
- package/dist/{generateUUID-Dr8l-aoc.js.map → generateUUID-DE9sNyJF.js.map} +1 -1
- package/dist/{generateUUID-C6qKBPIv.cjs → generateUUID-DbSTmvVP.cjs} +2 -3
- package/dist/{generateUUID-C6qKBPIv.cjs.map → generateUUID-DbSTmvVP.cjs.map} +1 -1
- package/dist/import/index.cjs +1 -1
- package/dist/import/index.d.cts +3 -5
- package/dist/import/index.d.ts +3 -5
- package/dist/import/index.js +1 -2
- package/dist/{import-BahNYv91.cjs → import-CABlFMQX.cjs} +6 -9
- package/dist/{import-BahNYv91.cjs.map → import-CABlFMQX.cjs.map} +1 -1
- package/dist/{import-FWy_wQZ1.js → import-CT1Ce5Rp.js} +6 -9
- package/dist/{import-FWy_wQZ1.js.map → import-CT1Ce5Rp.js.map} +1 -1
- package/dist/index-24GpnYhn.d.cts +150 -0
- package/dist/{index-BT88-GpA.d.ts → index-AA3MRfRn.d.cts} +4 -16
- package/dist/{index-C6oPUTWZ.d.ts → index-BDPxm9qu.d.ts} +3 -7
- package/dist/index-BUZ-vTRt.d.ts +150 -0
- package/dist/{index-XcnkRVb0.d.ts → index-BZDxWvZW.d.ts} +5 -7
- package/dist/index-BfAcp7O2.d.ts +10 -0
- package/dist/index-BsT_cBJd.d.ts +15117 -0
- package/dist/index-C1ndNdrN.d.cts +10 -0
- package/dist/{index-BiZR9BjN.d.ts → index-CbSh3KFw.d.cts} +4 -12
- package/dist/{index-BM_fXKq5.d.cts → index-ClIV2Lch.d.cts} +5 -7
- package/dist/{index-DReKz9Zt.d.ts → index-CuI8OI9E.d.ts} +4 -13
- package/dist/{index-BPMr8PQJ.d.ts → index-D1mduJne.d.cts} +2 -52
- package/dist/{index-CL4iKFic.d.cts → index-D1mduJne.d.ts} +1 -51
- package/dist/{index-DorowSay.d.ts → index-DIPMzH--.d.ts} +5 -9
- package/dist/{index-CbZQCDkD.d.cts → index-DQagqTVa.d.cts} +3 -7
- package/dist/{index-dgu6udMy.d.ts → index-DVBQgFg0.d.ts} +4 -6
- package/dist/{index-CrrHvDiX.d.cts → index-Day1Yr5s.d.ts} +8 -7
- package/dist/{index-Dkb8CynB.d.cts → index-Db266tLz.d.cts} +5 -9
- package/dist/{index-BVjhAkXW.d.cts → index-DgGpQsAT.d.cts} +4 -6
- package/dist/{index-PqJGDHHl.d.cts → index-DjSthn8d.d.ts} +4 -16
- package/dist/{index-DhZTIejy.d.ts → index-lTrNMlj6.d.ts} +3 -5
- package/dist/{index-DYNVbgm8.d.cts → index-m9-mN8Gg.d.ts} +4 -12
- package/dist/index-qJ2IjXIM.d.cts +15117 -0
- package/dist/{index-CtQl-Iqw.d.cts → index-xX8-Stoq.d.cts} +4 -13
- package/dist/{index-D6JMbJ9b.d.ts → index-xhzuWloV.d.cts} +8 -7
- package/dist/{index-DGKCTQkb.d.cts → index-z-2okomN.d.cts} +3 -5
- package/dist/index.cjs +433 -1055
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -8
- package/dist/index.d.ts +9 -8
- package/dist/index.js +429 -1052
- package/dist/index.js.map +1 -1
- package/dist/{isLoginPageRedirect-r0Opgc1n.cjs → isLoginPageRedirect-CoUxJi2x.cjs} +3 -4
- package/dist/{isLoginPageRedirect-r0Opgc1n.cjs.map → isLoginPageRedirect-CoUxJi2x.cjs.map} +1 -1
- package/dist/{isLoginPageRedirect-B4QKSiSa.js → isLoginPageRedirect-D-lqF_kZ.js} +3 -4
- package/dist/{isLoginPageRedirect-B4QKSiSa.js.map → isLoginPageRedirect-D-lqF_kZ.js.map} +1 -1
- package/dist/{isPlainObject-LYW-03uB.js → isPlainObject-BxsT8_t2.js} +2 -3
- package/dist/{isPlainObject-LYW-03uB.js.map → isPlainObject-BxsT8_t2.js.map} +1 -1
- package/dist/{isPlainObject-BB3iy87C.cjs → isPlainObject-CcvQt0qB.cjs} +2 -3
- package/dist/{isPlainObject-BB3iy87C.cjs.map → isPlainObject-CcvQt0qB.cjs.map} +1 -1
- package/dist/kaiAgent/index.cjs +1 -1
- package/dist/kaiAgent/index.d.cts +2 -2
- package/dist/kaiAgent/index.d.ts +2 -2
- package/dist/kaiAgent/index.js +1 -2
- package/dist/kaiAgent/types.d.cts +1 -1
- package/dist/kaiAgent/types.d.ts +1 -1
- package/dist/{kaiAgent-N2qbUFZm.cjs → kaiAgent-CDhg0MAw.cjs} +16 -7
- package/dist/kaiAgent-CDhg0MAw.cjs.map +1 -0
- package/dist/{kaiAgent-CYvrS8oZ.js → kaiAgent-CYU1Uda8.js} +16 -7
- package/dist/kaiAgent-CYU1Uda8.js.map +1 -0
- package/dist/{kaiMemory-Qch09f-m.cjs → kaiMemory-CkLQfJXD.cjs} +6 -9
- package/dist/{kaiMemory-Qch09f-m.cjs.map → kaiMemory-CkLQfJXD.cjs.map} +1 -1
- package/dist/{kaiMemory-C9di17bd.js → kaiMemory-oir_qCo_.js} +6 -9
- package/dist/{kaiMemory-C9di17bd.js.map → kaiMemory-oir_qCo_.js.map} +1 -1
- package/dist/management/index.cjs +1 -1
- package/dist/management/index.d.cts +1 -1
- package/dist/management/index.d.ts +1 -1
- package/dist/management/index.js +1 -2
- package/dist/management/types.cjs +1 -2
- package/dist/management/types.d.cts +2 -2
- package/dist/management/types.d.ts +2 -2
- package/dist/management/types.js +1 -2
- package/dist/{management-B1o6RpKF.cjs → management-BEGOEQxM.cjs} +26 -45
- package/dist/management-BEGOEQxM.cjs.map +1 -0
- package/dist/{management-C9w3DNhs.js → management-BcGHyxAP.js} +26 -45
- package/dist/management-BcGHyxAP.js.map +1 -0
- package/dist/metastore/index.cjs +1 -1
- package/dist/metastore/index.d.cts +1 -1
- package/dist/metastore/index.d.ts +1 -1
- package/dist/metastore/index.js +1 -2
- package/dist/metastore/types.d.cts +1 -1
- package/dist/metastore/types.d.ts +1 -1
- package/dist/{metastore-Ywq08DBz.js → metastore-CGsgxjng.js} +7 -10
- package/dist/{metastore-Ywq08DBz.js.map → metastore-CGsgxjng.js.map} +1 -1
- package/dist/{metastore-BXHg33ku.cjs → metastore-DeRQ2VIv.cjs} +7 -10
- package/dist/{metastore-BXHg33ku.cjs.map → metastore-DeRQ2VIv.cjs.map} +1 -1
- package/dist/microsoftGraph/index.cjs +5 -8
- package/dist/microsoftGraph/index.cjs.map +1 -1
- package/dist/microsoftGraph/index.d.cts +3 -7
- package/dist/microsoftGraph/index.d.ts +3 -7
- package/dist/microsoftGraph/index.js +5 -8
- package/dist/microsoftGraph/index.js.map +1 -1
- package/dist/microsoftGraph/types.d.cts +2 -4
- package/dist/microsoftGraph/types.d.ts +2 -4
- package/dist/{middleware-GOfx8Apu.js → middleware-8zaJWcyU.js} +3 -5
- package/dist/middleware-8zaJWcyU.js.map +1 -0
- package/dist/{middleware-CEP6uu_D.cjs → middleware-B9RNuLfD.cjs} +3 -5
- package/dist/middleware-B9RNuLfD.cjs.map +1 -0
- package/dist/notifications/index.cjs +5 -6
- package/dist/notifications/index.d.cts +2 -4
- package/dist/notifications/index.d.ts +2 -4
- package/dist/notifications/index.js +5 -6
- package/dist/notifications/types.d.cts +1 -1
- package/dist/notifications/types.d.ts +1 -1
- package/dist/oauth/index.cjs +1 -1
- package/dist/oauth/index.d.cts +2 -4
- package/dist/oauth/index.d.ts +2 -4
- package/dist/oauth/index.js +1 -2
- package/dist/oauth/types.d.cts +1 -1
- package/dist/oauth/types.d.ts +1 -1
- package/dist/{oauth-DKZPuUlt.cjs → oauth-B5Biqz21.cjs} +7 -9
- package/dist/{oauth-DKZPuUlt.cjs.map → oauth-B5Biqz21.cjs.map} +1 -1
- package/dist/{oauth-GXmZ9agP.js → oauth-ByCdISsV.js} +7 -9
- package/dist/{oauth-GXmZ9agP.js.map → oauth-ByCdISsV.js.map} +1 -1
- package/dist/omnisearch/index.cjs +3 -4
- package/dist/omnisearch/index.d.cts +2 -4
- package/dist/omnisearch/index.d.ts +2 -4
- package/dist/omnisearch/index.js +3 -4
- package/dist/omnisearch/types.d.cts +1 -1
- package/dist/omnisearch/types.d.ts +1 -1
- package/dist/{project-ClH22nzH.js → project-DmuC0bMK.js} +6 -9
- package/dist/{project-ClH22nzH.js.map → project-DmuC0bMK.js.map} +1 -1
- package/dist/{project-Rh4nXiWh.cjs → project-Onf-IcPW.cjs} +9 -12
- package/dist/{project-Rh4nXiWh.cjs.map → project-Onf-IcPW.cjs.map} +1 -1
- package/dist/{project-DTfBtIJs.d.ts → project-UHZGFmmG.d.cts} +5 -9
- package/dist/{project-vOnvjo80.d.cts → project-iBm4cIIR.d.ts} +5 -9
- package/dist/queryService/index.cjs +1 -1
- package/dist/queryService/index.d.cts +1 -1
- package/dist/queryService/index.d.ts +1 -1
- package/dist/queryService/index.js +1 -2
- package/dist/queryService/types.d.cts +1 -1
- package/dist/queryService/types.d.ts +1 -1
- package/dist/{queryService-CzK53q94.cjs → queryService-Cg-eMysa.cjs} +9 -11
- package/dist/{queryService-CzK53q94.cjs.map → queryService-Cg-eMysa.cjs.map} +1 -1
- package/dist/{queryService-C-pZha5p.js → queryService-x8kq8Z2-.js} +9 -11
- package/dist/{queryService-C-pZha5p.js.map → queryService-x8kq8Z2-.js.map} +1 -1
- package/dist/queue/index.cjs +1 -1
- package/dist/queue/index.d.cts +4 -5
- package/dist/queue/index.d.ts +4 -5
- package/dist/queue/index.js +1 -2
- package/dist/queue/types.d.cts +1 -1
- package/dist/queue/types.d.ts +1 -1
- package/dist/{queue-D6-x4OGF.js → queue-BiIs9fX4.js} +9 -11
- package/dist/{queue-D6-x4OGF.js.map → queue-BiIs9fX4.js.map} +1 -1
- package/dist/{queue-BJvDWriM.cjs → queue-CBi9Q8vp.cjs} +9 -11
- package/dist/{queue-BJvDWriM.cjs.map → queue-CBi9Q8vp.cjs.map} +1 -1
- package/dist/{rolldown-runtime-VH7oDXx4.cjs → rolldown-runtime-CmQyd0Gu.cjs} +1 -2
- package/dist/scheduler/index.cjs +5 -6
- package/dist/scheduler/index.d.cts +2 -4
- package/dist/scheduler/index.d.ts +2 -4
- package/dist/scheduler/index.js +5 -6
- package/dist/scheduler/types.d.cts +1 -1
- package/dist/scheduler/types.d.ts +1 -1
- package/dist/{schema-BUyMwQnM.d.cts → schema-DLmBEgPM.d.cts} +1 -3
- package/dist/{schema-BUyMwQnM.d.ts → schema-DLmBEgPM.d.ts} +1 -3
- package/dist/schemaGuidedMerge-C8CqrNGe.cjs +55 -0
- package/dist/schemaGuidedMerge-C8CqrNGe.cjs.map +1 -0
- package/dist/schemaGuidedMerge-DFNqj9Nz.js +44 -0
- package/dist/schemaGuidedMerge-DFNqj9Nz.js.map +1 -0
- package/dist/sdk/configurations/index.cjs +634 -2
- package/dist/sdk/configurations/index.cjs.map +1 -0
- package/dist/sdk/configurations/index.d.cts +1030 -4
- package/dist/sdk/configurations/index.d.ts +1030 -4
- package/dist/sdk/configurations/index.js +633 -1
- package/dist/sdk/configurations/index.js.map +1 -0
- package/dist/sdk/developerPortal/index.cjs +9 -13
- package/dist/sdk/developerPortal/index.cjs.map +1 -1
- package/dist/sdk/developerPortal/index.d.cts +4 -6
- package/dist/sdk/developerPortal/index.d.ts +4 -6
- package/dist/sdk/developerPortal/index.js +9 -13
- package/dist/sdk/developerPortal/index.js.map +1 -1
- package/dist/sdk/kaiMemory/index.cjs +1 -1
- package/dist/sdk/kaiMemory/index.d.cts +1 -3
- package/dist/sdk/kaiMemory/index.d.ts +1 -3
- package/dist/sdk/kaiMemory/index.js +1 -2
- package/dist/sdk/kaiMemory/types.d.cts +1 -1
- package/dist/sdk/kaiMemory/types.d.ts +1 -1
- package/dist/sdk/queryService/index.cjs +3 -4
- package/dist/sdk/queryService/index.d.cts +1 -1
- package/dist/sdk/queryService/index.d.ts +1 -1
- package/dist/sdk/queryService/index.js +3 -4
- package/dist/sdk/semanticLayer/index.cjs +1 -1
- package/dist/sdk/semanticLayer/index.d.cts +1 -7
- package/dist/sdk/semanticLayer/index.d.ts +1 -7
- package/dist/sdk/semanticLayer/index.js +1 -2
- package/dist/sdk/semanticLayer/types.d.cts +1 -1
- package/dist/sdk/semanticLayer/types.d.ts +1 -1
- package/dist/sdk/storage/index.cjs +3 -6
- package/dist/sdk/storage/index.cjs.map +1 -1
- package/dist/sdk/storage/index.d.cts +0 -6
- package/dist/sdk/storage/index.d.ts +0 -6
- package/dist/sdk/storage/index.js +3 -6
- package/dist/sdk/storage/index.js.map +1 -1
- package/dist/sdk/tag/index.cjs +1 -1
- package/dist/sdk/tag/index.d.cts +3 -5
- package/dist/sdk/tag/index.d.ts +3 -5
- package/dist/sdk/tag/index.js +1 -2
- package/dist/sdk/tag/types.d.cts +1 -1
- package/dist/sdk/tag/types.d.ts +1 -1
- package/dist/sdk/vault/index.cjs +3 -5
- package/dist/sdk/vault/index.cjs.map +1 -1
- package/dist/sdk/vault/index.d.cts +1 -1
- package/dist/sdk/vault/index.d.ts +1 -1
- package/dist/sdk/vault/index.js +3 -5
- package/dist/sdk/vault/index.js.map +1 -1
- package/dist/{semanticLayer-DvjS_nzo.js → semanticLayer-BdPW_wLo.js} +9 -14
- package/dist/{semanticLayer-DvjS_nzo.js.map → semanticLayer-BdPW_wLo.js.map} +1 -1
- package/dist/{semanticLayer-7BejcMj_.cjs → semanticLayer-djom-J78.cjs} +9 -14
- package/dist/{semanticLayer-7BejcMj_.cjs.map → semanticLayer-djom-J78.cjs.map} +1 -1
- package/dist/status/index.cjs +2 -3
- package/dist/status/index.d.cts +1 -3
- package/dist/status/index.d.ts +1 -3
- package/dist/status/index.js +2 -3
- package/dist/status/types.d.cts +0 -2
- package/dist/status/types.d.ts +0 -2
- package/dist/storage/index.cjs +9 -9
- package/dist/storage/index.d.cts +3 -2
- package/dist/storage/index.d.ts +3 -2
- package/dist/storage/index.js +9 -9
- package/dist/storage/types.d.cts +6 -6
- package/dist/storage/types.d.ts +6 -6
- package/dist/{storage-CChfKlrb.js → storage-BpOLWT6h.js} +54 -89
- package/dist/{storage-CChfKlrb.js.map → storage-BpOLWT6h.js.map} +1 -1
- package/dist/{storage-Ci9gXgcw.cjs → storage-KJ5Ki_ma.cjs} +53 -88
- package/dist/{storage-Ci9gXgcw.cjs.map → storage-KJ5Ki_ma.cjs.map} +1 -1
- package/dist/{store-xS-Cu_VS.cjs → store-2OyH1XOP.cjs} +3 -5
- package/dist/{store-xS-Cu_VS.cjs.map → store-2OyH1XOP.cjs.map} +1 -1
- package/dist/{store-C9FQCHGe.js → store-HP0zRcLz.js} +3 -5
- package/dist/{store-C9FQCHGe.js.map → store-HP0zRcLz.js.map} +1 -1
- package/dist/stream/index.cjs +4 -5
- package/dist/stream/index.d.cts +2 -4
- package/dist/stream/index.d.ts +2 -4
- package/dist/stream/index.js +4 -5
- package/dist/stream/types.d.cts +1 -1
- package/dist/stream/types.d.ts +1 -1
- package/dist/{suggestions-BH3x7xU7.d.ts → suggestions-xhIjrlvi.d.cts} +1 -3
- package/dist/{suggestions-BH3x7xU7.d.cts → suggestions-xhIjrlvi.d.ts} +1 -3
- package/dist/syncActions/index.cjs +1 -1
- package/dist/syncActions/index.d.cts +2 -2
- package/dist/syncActions/index.d.ts +2 -2
- package/dist/syncActions/index.js +1 -2
- package/dist/syncActions/types.d.cts +2 -2
- package/dist/syncActions/types.d.ts +2 -2
- package/dist/{syncActions-C1rE4R3f.cjs → syncActions-BcX3jm2E.cjs} +74 -187
- package/dist/syncActions-BcX3jm2E.cjs.map +1 -0
- package/dist/{syncActions-DM8vP7p3.js → syncActions-giPLTfje.js} +73 -186
- package/dist/syncActions-giPLTfje.js.map +1 -0
- package/dist/{tag-DHS_soa7.cjs → tag-A5z4tJn1.cjs} +5 -7
- package/dist/{tag-DHS_soa7.cjs.map → tag-A5z4tJn1.cjs.map} +1 -1
- package/dist/{tag-hh-1nhNr.js → tag-BwjbG3tT.js} +5 -7
- package/dist/{tag-hh-1nhNr.js.map → tag-BwjbG3tT.js.map} +1 -1
- package/dist/telemetry/index.cjs +4 -5
- package/dist/telemetry/index.d.cts +2 -4
- package/dist/telemetry/index.d.ts +2 -4
- package/dist/telemetry/index.js +4 -5
- package/dist/telemetry/types.d.cts +1 -1
- package/dist/telemetry/types.d.ts +1 -1
- package/dist/{transientRetries-B4iusp69.js → transientRetries-BKqmb85B.js} +13 -22
- package/dist/{transientRetries-B4iusp69.js.map → transientRetries-BKqmb85B.js.map} +1 -1
- package/dist/{transientRetries-DdJfH9QK.cjs → transientRetries-CM7rAEXQ.cjs} +13 -22
- package/dist/{transientRetries-DdJfH9QK.cjs.map → transientRetries-CM7rAEXQ.cjs.map} +1 -1
- package/dist/{types-DODAZKEm.d.ts → types--Rp5wvaz.d.ts} +2 -6
- package/dist/{types-JZ0Bdlpk.d.cts → types-1IBnjBVJ.d.cts} +2 -6
- package/dist/{types-BZ--6pIt.d.ts → types-37vwxse4.d.cts} +2 -6
- package/dist/{types-RogkWzOu.d.ts → types-6T04_qUf.d.ts} +2 -6
- package/dist/{types-TmrPVMhy.d.cts → types-B0e-no6u.d.ts} +18 -38
- package/dist/{types-ptynVnkv.d.cts → types-B1qe1etN.d.cts} +3 -7
- package/dist/{types-BXybSjn-.d.ts → types-B3ri-iiC.d.ts} +2 -26
- package/dist/{types-Duurgaqk.d.cts → types-B8k1DqlU.d.ts} +129 -10
- package/dist/{types-BOT6TgOS.d.ts → types-BE8abIig.d.cts} +2 -6
- package/dist/{types-BrpIEj_N.d.ts → types-BWMOK6eL.d.cts} +2 -6
- package/dist/{types-D53zBV25.d.ts → types-Bat0SIZA.d.cts} +16 -97
- package/dist/{types-Dy6EdWPG.d.ts → types-Bdl7EFMc.d.ts} +2 -6
- package/dist/{types-_zKX6JmD.d.ts → types-BiDdBXSm.d.ts} +2 -8
- package/dist/{types-dn6MHur3.d.cts → types-BrEVh0WE.d.cts} +253 -10
- package/dist/{types-BnmsuDfH.d.cts → types-BuclMPeY.d.cts} +2 -26
- package/dist/{types-302-NBaU.d.ts → types-C9okze_R.d.ts} +3 -7
- package/dist/{types-BT5e9TSQ.d.ts → types-CPWjRdnj.d.cts} +18 -38
- package/dist/{types-C614wC5h.d.cts → types-CRubbBcU.d.cts} +2 -6
- package/dist/{types-DlhNay1n.d.ts → types-CWcdaq-K.d.ts} +2 -6
- package/dist/{types-D9ZKJYZk.d.ts → types-CcGp6O3B.d.cts} +3 -7
- package/dist/{types-45O2dU2w.d.ts → types-Cr5lyI99.d.ts} +2 -6
- package/dist/{types-CY8X39qv.d.cts → types-CxEJ77m3.d.cts} +3 -7
- package/dist/{types-DmzSFOhK.d.cts → types-D-tJt0hQ.d.cts} +2 -6
- package/dist/{types-BjwbzqJd.d.ts → types-D6lre27s.d.ts} +2 -8
- package/dist/{types-0R9-osUJ.d.ts → types-DHMxPJZq.d.cts} +2 -6
- package/dist/{types-jN2KmMet.d.cts → types-DJzTVMu1.d.ts} +2 -6
- package/dist/{types-CfXqFz2e.d.ts → types-DKSUG2dZ.d.ts} +253 -10
- package/dist/{types-CpJhWBmH.d.cts → types-DNgazFnF.d.cts} +2 -8
- package/dist/{types-DjadPty5.d.ts → types-DRCttnIN.d.ts} +2 -6
- package/dist/{types-CeqZuOEC.d.ts → types-DUpVIuk7.d.ts} +2 -6
- package/dist/{types-DqOxIujY.d.ts → types-DeyXJzWz.d.cts} +2 -6
- package/dist/{types-O6XM48J8.d.cts → types-Dryq2GGE.d.cts} +2 -6
- package/dist/{types-CjNl7O7f.d.cts → types-DschSZHf.d.cts} +3 -5
- package/dist/{types-BUirSne-.d.ts → types-DtOfhDzz.d.ts} +3 -5
- package/dist/{types-CkJxMoTk.d.cts → types-Du5o-tud.d.ts} +16 -97
- package/dist/{types-ChLWY8aU.d.cts → types-DwbTiyhZ.d.cts} +2 -6
- package/dist/{types-HmK8iKp5.d.cts → types-E8tzafsk.d.cts} +3 -7
- package/dist/{types-DpbrGDRf.d.cts → types-LconaX98.d.cts} +2 -6
- package/dist/{types-tdIo5FpR.d.ts → types-PZzNANiS.d.cts} +129 -10
- package/dist/{types-CTS2NSIb.d.cts → types-YpOm4yXE.d.cts} +2 -8
- package/dist/{types-DbXV0g8U.d.cts → types-ZZwdKCBl.d.ts} +2 -6
- package/dist/{types-jfPoUlO8.d.cts → types-eFi8xJIM.d.cts} +2 -6
- package/dist/{types-DV7K07oX.d.cts → types-inG9y3dP.d.ts} +2 -6
- package/dist/{types-BM6rri7-.d.ts → types-ir7T2a9a.d.ts} +3 -7
- package/dist/{types-BAsYMltG.d.cts → types-jjOulnni.d.ts} +2 -6
- package/dist/{types-vvw_H7wp.d.cts → types-wYrC2boT.d.ts} +3 -7
- package/dist/{types-BWzt1ju_.d.ts → types-xzt_2H63.d.ts} +3 -7
- package/dist/{types-D2Pb_4FA.d.cts → types-zPY-XGnM.d.ts} +2 -6
- package/dist/{validateConnectionStatus-BalWEyRk.cjs → validateConnectionStatus-BjemGI1e.cjs} +5 -7
- package/dist/{validateConnectionStatus-BalWEyRk.cjs.map → validateConnectionStatus-BjemGI1e.cjs.map} +1 -1
- package/dist/{validateConnectionStatus-DyrYpn0G.js → validateConnectionStatus-DYwWeWVo.js} +5 -7
- package/dist/{validateConnectionStatus-DyrYpn0G.js.map → validateConnectionStatus-DYwWeWVo.js.map} +1 -1
- package/dist/vault/index.cjs +7 -8
- package/dist/vault/index.d.cts +1 -1
- package/dist/vault/index.d.ts +1 -1
- package/dist/vault/index.js +7 -8
- package/dist/vault/types.d.cts +1 -1
- package/dist/vault/types.d.ts +1 -1
- package/package.json +7 -7
- package/surface/apps.md +12 -10
- package/surface/chat.md +1 -1
- package/surface/dataScience.md +1 -1
- package/surface/editor.md +5 -5
- package/surface/kaiAgent.md +5 -4
- package/surface/management.md +1 -1
- package/surface/queue.md +3 -3
- package/surface/sdk.md +0 -6
- package/surface/stack.md +11 -0
- package/surface/storage.md +2 -2
- package/surface/stream.md +6 -6
- package/surface/syncActions.md +1 -2
- package/dist/configurations-B44z6BSO.js +0 -718
- package/dist/configurations-B44z6BSO.js.map +0 -1
- package/dist/configurations-CL0ouUMa.js.map +0 -1
- package/dist/configurations-D9J3jh3g.cjs.map +0 -1
- package/dist/configurations-Dkxsa3Uf.cjs +0 -735
- package/dist/configurations-Dkxsa3Uf.cjs.map +0 -1
- package/dist/constants-DErcRkWl.cjs.map +0 -1
- package/dist/constants-VpSwBtCb.js.map +0 -1
- package/dist/createGenericFetchClient-CQdNcPC3.js +0 -7
- package/dist/createOpenapiFetchClient-DXiMv9WL.js +0 -7
- package/dist/generateUUID-Dr8l-aoc.js +0 -6
- package/dist/index-Be2dNJ_N.d.cts +0 -23582
- package/dist/index-BfqkgPGI.d.cts +0 -34
- package/dist/index-BfqkgPGI.d.ts +0 -34
- package/dist/index-fMoM8SeH.d.cts +0 -199
- package/dist/index-fMoM8SeH.d.ts +0 -199
- package/dist/index-uGRdAORl.d.ts +0 -23582
- package/dist/kaiAgent-CYvrS8oZ.js.map +0 -1
- package/dist/kaiAgent-N2qbUFZm.cjs.map +0 -1
- package/dist/management-B1o6RpKF.cjs.map +0 -1
- package/dist/management-C9w3DNhs.js.map +0 -1
- package/dist/middleware-CEP6uu_D.cjs.map +0 -1
- package/dist/middleware-GOfx8Apu.js.map +0 -1
- package/dist/storageTable-BNOR2FCh.cjs +0 -442
- package/dist/storageTable-BNOR2FCh.cjs.map +0 -1
- package/dist/storageTable-BldTNyEk.js +0 -395
- package/dist/storageTable-BldTNyEk.js.map +0 -1
- package/dist/syncActions-C1rE4R3f.cjs.map +0 -1
- package/dist/syncActions-DM8vP7p3.js.map +0 -1
- package/surface/context.md +0 -40
package/README.md
CHANGED
|
@@ -22,11 +22,11 @@ The SDK exposes two flow-specific factories — pick the one that matches how yo
|
|
|
22
22
|
|
|
23
23
|
`session` is the lifecycle — you drive it to _ready_. `api` is the product surface, gated by state:
|
|
24
24
|
|
|
25
|
-
| Tier
|
|
26
|
-
|
|
|
27
|
-
| `api.auth.*`
|
|
28
|
-
| `api.management.*`
|
|
29
|
-
| `api.storage` / `api.queue` / `api.
|
|
25
|
+
| Tier | Live once… | Example |
|
|
26
|
+
| --------------------------------------------- | --------------------------------------- | ---------------------------------- |
|
|
27
|
+
| `api.auth.*` | a `baseUrl` is configured | `api.auth.login.withPassword(...)` |
|
|
28
|
+
| `api.management.*` | the management realm authenticates | `api.management.projects.*` |
|
|
29
|
+
| `api.storage` / `api.queue` / `api.stack` / … | the async storage build reaches `ready` | `api.storage.getStackInfo()` |
|
|
30
30
|
|
|
31
31
|
Touching a product namespace before _ready_ throws a `KeboolaError`. `session.isStorageReady()` and
|
|
32
32
|
`session.subscribe(cb)` observe the transition; the `…Async` verbs below await it for you.
|
|
@@ -45,8 +45,8 @@ import { createLegacyKeboola } from '@keboola/api-client';
|
|
|
45
45
|
const { api, session } = createLegacyKeboola({ baseUrl: process.env.KEBOOLA_STACK_URL! });
|
|
46
46
|
await session.authenticateStorageAsync(process.env.KEBOOLA_STORAGE_TOKEN!);
|
|
47
47
|
|
|
48
|
-
const
|
|
49
|
-
const
|
|
48
|
+
const stack = api.stack; // synchronous once ready
|
|
49
|
+
const token = await api.storage.tokens.verify();
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
Optionally add the management realm with `session.authenticateManagement(manageToken)` → `api.management.*`.
|
|
@@ -68,32 +68,33 @@ session.subscribe((snapshot) => {
|
|
|
68
68
|
});
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
-
> **React:** don't wire this by hand — `LegacyAuthProvider` + `
|
|
71
|
+
> **React:** don't wire this by hand — `LegacyAuthProvider` + `useProjectApi()` from
|
|
72
72
|
> [`@keboola/api-client-react`](../api-client-react) drive the singleton session to ready and hand you `api`.
|
|
73
73
|
|
|
74
74
|
### Bearer (OAuth) — Browser
|
|
75
75
|
|
|
76
|
-
Interactive login, then
|
|
76
|
+
Interactive login, then a project:
|
|
77
77
|
|
|
78
78
|
```typescript
|
|
79
79
|
import { createKeboola } from '@keboola/api-client';
|
|
80
80
|
|
|
81
|
-
const {
|
|
81
|
+
const { session, getStackApi, getProjectApi } = createKeboola({ defaultBaseUrl: baseUrl });
|
|
82
82
|
|
|
83
|
-
//
|
|
84
|
-
const result = await
|
|
83
|
+
// `auth` is live from construction: a stack is always active
|
|
84
|
+
const result = await getStackApi().auth.login.withPassword({ email, password });
|
|
85
85
|
if (result.mfaRequired) {
|
|
86
|
-
// result is an MFA challenge — verify via
|
|
86
|
+
// result is an MFA challenge — verify via getStackApi().auth.mfa.* to obtain the LoginSuccess
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
session.authenticate(result); //
|
|
90
|
-
|
|
89
|
+
session.auth.authenticate({ type: 'token', ...result }); // → `management` is now live
|
|
90
|
+
const api = getProjectApi(projectId); // projectId from your project picker
|
|
91
91
|
|
|
92
|
-
const
|
|
93
|
-
|
|
92
|
+
const buckets = await api.storage.buckets.getBuckets({ branchId: 'default' });
|
|
93
|
+
const other = getProjectApi(otherProjectId); // another project, the same sign-in
|
|
94
94
|
```
|
|
95
95
|
|
|
96
|
-
> **React:** `
|
|
96
|
+
> **React:** `StackApiProvider` + `useStackApi()` serve the sign-in; `ProjectApiProvider` +
|
|
97
|
+
> `useProjectApi()` the project the app is in.
|
|
97
98
|
|
|
98
99
|
### Bearer (OAuth) — Node
|
|
99
100
|
|
|
@@ -155,10 +156,10 @@ import type { VariableWithHash } from '@keboola/api-client/vault/types';
|
|
|
155
156
|
src/
|
|
156
157
|
index.ts # package entry — re-exports keboola/ factories, errors, utils
|
|
157
158
|
keboola/
|
|
158
|
-
bearer/keboola.ts # createKeboola() — bearer/OAuth flow → {
|
|
159
|
+
bearer/keboola.ts # createKeboola() — bearer/OAuth flow → { session, getStackApi, getProjectApi }
|
|
160
|
+
bearer/context.ts # per-stack index, fetched once (pending→ready|errored)
|
|
159
161
|
legacy/keboola.ts # createLegacyKeboola() — SAPI-token flow → { api, session }
|
|
160
162
|
createApi.ts # flow-agnostic, state-gating `api` proxy
|
|
161
|
-
createResource.ts # async storage-build resource (unresolved→pending→ready|errored)
|
|
162
163
|
internal.ts # HTTP headers, prefixes
|
|
163
164
|
fetchClient/
|
|
164
165
|
createFetchClient/ # Core fetch wrapper, middleware composition
|
|
@@ -233,14 +234,12 @@ Clients backed by OpenAPI specs are marked with (OpenAPI); the rest use the gene
|
|
|
233
234
|
|
|
234
235
|
Additional accessors on the ready client:
|
|
235
236
|
|
|
236
|
-
| Accessor
|
|
237
|
-
|
|
|
238
|
-
| `api.
|
|
239
|
-
| `api.
|
|
240
|
-
| `api.
|
|
241
|
-
| `api.
|
|
242
|
-
| `api.context.serviceMeta` | Service availability metadata from the registry |
|
|
243
|
-
| `api.sdk.tag` | Tag SDK: `getTags()`, `getTagsByObjectId()`, `createTag()`, `updateTag()`, `deleteTag()`, `assignTags()`, `unassignTags()`, `createAndAssignTag()` |
|
|
237
|
+
| Accessor | Purpose |
|
|
238
|
+
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
239
|
+
| `api.stack` | Stack info: `hasFeature()`, `hasService()`, `getServiceUrl()`, `hasComponent()`, `getComponent()`, `services`, `features`, `components` |
|
|
240
|
+
| `api.baseUrl` | Canonical stack URL every request is built on |
|
|
241
|
+
| `api.serviceMeta` | Service availability metadata from the registry |
|
|
242
|
+
| `api.sdk.tag` | Tag SDK: `getTags()`, `getTagsByObjectId()`, `createTag()`, `updateTag()`, `deleteTag()`, `assignTags()`, `unassignTags()`, `createAndAssignTag()` |
|
|
244
243
|
|
|
245
244
|
## Entry Points
|
|
246
245
|
|
|
@@ -438,7 +437,12 @@ assert(value, 'value must be defined');
|
|
|
438
437
|
React bindings (provider, hooks, query integration) are in the separate `@keboola/api-client-react` package.
|
|
439
438
|
|
|
440
439
|
```typescript
|
|
441
|
-
import {
|
|
440
|
+
import {
|
|
441
|
+
ProjectApiProvider,
|
|
442
|
+
StackApiProvider,
|
|
443
|
+
useProjectApi,
|
|
444
|
+
useStackApi,
|
|
445
|
+
} from '@keboola/api-client-react';
|
|
442
446
|
```
|
|
443
447
|
|
|
444
448
|
## Ownership
|
package/dist/{ManagementSessionMintError-Cu9beG7j.cjs → ManagementSessionMintError-ByOulHQH.cjs}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const require_createFetchClient = require("./createFetchClient-
|
|
2
|
-
|
|
1
|
+
const require_createFetchClient = require("./createFetchClient-DEkUH662.cjs");
|
|
2
|
+
// src/errors/ManagementClientAuthError.ts
|
|
3
3
|
var ManagementClientAuthError = class extends require_createFetchClient.ApiError {
|
|
4
4
|
title;
|
|
5
5
|
message;
|
|
@@ -10,8 +10,7 @@ var ManagementClientAuthError = class extends require_createFetchClient.ApiError
|
|
|
10
10
|
this.message = message;
|
|
11
11
|
}
|
|
12
12
|
};
|
|
13
|
-
|
|
14
|
-
//#region src/errors/ManagementSessionMintError.ts
|
|
13
|
+
// src/errors/ManagementSessionMintError.ts
|
|
15
14
|
/**
|
|
16
15
|
* The Manage client has no credential of its own and could not mint a session token from the
|
|
17
16
|
* login cookie.
|
|
@@ -30,7 +29,6 @@ var ManagementSessionMintError = class extends ManagementClientAuthError {
|
|
|
30
29
|
this.name = "ManagementSessionMintError";
|
|
31
30
|
}
|
|
32
31
|
};
|
|
33
|
-
//#endregion
|
|
34
32
|
Object.defineProperty(exports, "ManagementClientAuthError", {
|
|
35
33
|
enumerable: true,
|
|
36
34
|
get: function() {
|
|
@@ -44,4 +42,4 @@ Object.defineProperty(exports, "ManagementSessionMintError", {
|
|
|
44
42
|
}
|
|
45
43
|
});
|
|
46
44
|
|
|
47
|
-
//# sourceMappingURL=ManagementSessionMintError-
|
|
45
|
+
//# sourceMappingURL=ManagementSessionMintError-ByOulHQH.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManagementSessionMintError-
|
|
1
|
+
{"version":3,"file":"ManagementSessionMintError-ByOulHQH.cjs","names":["ApiError"],"sources":["../src/errors/ManagementClientAuthError.ts","../src/errors/ManagementSessionMintError.ts"],"sourcesContent":["import type { ApiResponse } from '../fetchClient/createFetchClient/types';\n\nimport { ApiError } from './ApiError';\n\nexport class ManagementClientAuthError extends ApiError {\n title: string;\n message: string;\n constructor(title: string, message: string, res: ApiResponse) {\n super(res);\n this.name = 'ManagementClientAuthError';\n this.title = title;\n this.message = message;\n }\n}\n","import { ManagementClientAuthError } from './ManagementClientAuthError';\n\n/**\n * The Manage client has no credential of its own and could not mint a session token from the\n * login cookie.\n *\n * - Only the legacy (SAPI) entry point mints; a bearer client never raises it.\n * - The login page in place of the token: the session expired, or there is no cookie (off the\n * stack host).\n */\nexport class ManagementSessionMintError extends ManagementClientAuthError {\n constructor({ title, message, response, request, data }: ManagementClientAuthError) {\n super(title, message, { response, request, data });\n this.name = 'ManagementSessionMintError';\n }\n}\n"],"mappings":";;AAIA,IAAa,4BAAb,cAA+CA,0BAAAA,SAAS;CACtD;CACA;CACA,YAAY,OAAe,SAAiB,KAAkB;EAC5D,MAAM,GAAG;EACT,KAAK,OAAO;EACZ,KAAK,QAAQ;EACb,KAAK,UAAU;CACjB;AACF;;;;;;;;;;ACHA,IAAa,6BAAb,cAAgD,0BAA0B;CACxE,YAAY,EAAE,OAAO,SAAS,UAAU,SAAS,QAAmC;EAClF,MAAM,OAAO,SAAS;GAAE;GAAU;GAAS;EAAK,CAAC;EACjD,KAAK,OAAO;CACd;AACF"}
|
package/dist/{ManagementSessionMintError-4Pkn5Oob.js → ManagementSessionMintError-DNMbYauw.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { p as ApiError } from "./createFetchClient-
|
|
2
|
-
|
|
1
|
+
import { p as ApiError } from "./createFetchClient-DlGCbltR.js";
|
|
2
|
+
// src/errors/ManagementClientAuthError.ts
|
|
3
3
|
var ManagementClientAuthError = class extends ApiError {
|
|
4
4
|
title;
|
|
5
5
|
message;
|
|
@@ -10,8 +10,7 @@ var ManagementClientAuthError = class extends ApiError {
|
|
|
10
10
|
this.message = message;
|
|
11
11
|
}
|
|
12
12
|
};
|
|
13
|
-
|
|
14
|
-
//#region src/errors/ManagementSessionMintError.ts
|
|
13
|
+
// src/errors/ManagementSessionMintError.ts
|
|
15
14
|
/**
|
|
16
15
|
* The Manage client has no credential of its own and could not mint a session token from the
|
|
17
16
|
* login cookie.
|
|
@@ -30,7 +29,6 @@ var ManagementSessionMintError = class extends ManagementClientAuthError {
|
|
|
30
29
|
this.name = "ManagementSessionMintError";
|
|
31
30
|
}
|
|
32
31
|
};
|
|
33
|
-
//#endregion
|
|
34
32
|
export { ManagementClientAuthError as n, ManagementSessionMintError as t };
|
|
35
33
|
|
|
36
|
-
//# sourceMappingURL=ManagementSessionMintError-
|
|
34
|
+
//# sourceMappingURL=ManagementSessionMintError-DNMbYauw.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManagementSessionMintError-
|
|
1
|
+
{"version":3,"file":"ManagementSessionMintError-DNMbYauw.js","names":[],"sources":["../src/errors/ManagementClientAuthError.ts","../src/errors/ManagementSessionMintError.ts"],"sourcesContent":["import type { ApiResponse } from '../fetchClient/createFetchClient/types';\n\nimport { ApiError } from './ApiError';\n\nexport class ManagementClientAuthError extends ApiError {\n title: string;\n message: string;\n constructor(title: string, message: string, res: ApiResponse) {\n super(res);\n this.name = 'ManagementClientAuthError';\n this.title = title;\n this.message = message;\n }\n}\n","import { ManagementClientAuthError } from './ManagementClientAuthError';\n\n/**\n * The Manage client has no credential of its own and could not mint a session token from the\n * login cookie.\n *\n * - Only the legacy (SAPI) entry point mints; a bearer client never raises it.\n * - The login page in place of the token: the session expired, or there is no cookie (off the\n * stack host).\n */\nexport class ManagementSessionMintError extends ManagementClientAuthError {\n constructor({ title, message, response, request, data }: ManagementClientAuthError) {\n super(title, message, { response, request, data });\n this.name = 'ManagementSessionMintError';\n }\n}\n"],"mappings":";;AAIA,IAAa,4BAAb,cAA+C,SAAS;CACtD;CACA;CACA,YAAY,OAAe,SAAiB,KAAkB;EAC5D,MAAM,GAAG;EACT,KAAK,OAAO;EACZ,KAAK,QAAQ;EACb,KAAK,UAAU;CACjB;AACF;;;;;;;;;;ACHA,IAAa,6BAAb,cAAgD,0BAA0B;CACxE,YAAY,EAAE,OAAO,SAAS,UAAU,SAAS,QAAmC;EAClF,MAAM,OAAO,SAAS;GAAE;GAAU;GAAS;EAAK,CAAC;EACjD,KAAK,OAAO;CACd;AACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/errors/QueryJobError.ts
|
|
2
2
|
/**
|
|
3
3
|
* A query job that reached the API's terminal `failed` state — the submit/poll round-trip
|
|
4
4
|
* succeeded, the job itself did not. Distinct from {@link ApiError}, which is an HTTP-level failure
|
|
@@ -16,7 +16,6 @@ var QueryJobError = class QueryJobError extends Error {
|
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
18
|
const isQueryJobError = (error) => error instanceof QueryJobError;
|
|
19
|
-
//#endregion
|
|
20
19
|
export { isQueryJobError as n, QueryJobError as t };
|
|
21
20
|
|
|
22
|
-
//# sourceMappingURL=QueryJobError-
|
|
21
|
+
//# sourceMappingURL=QueryJobError-Iq9O90Uh.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryJobError-
|
|
1
|
+
{"version":3,"file":"QueryJobError-Iq9O90Uh.js","names":[],"sources":["../src/errors/QueryJobError.ts"],"sourcesContent":["type FailedStatement = {\n id: string;\n error?: string;\n};\n\ntype QueryJobErrorOptions = {\n failedStatements: FailedStatement[];\n};\n\n/**\n * A query job that reached the API's terminal `failed` state — the submit/poll round-trip\n * succeeded, the job itself did not. Distinct from {@link ApiError}, which is an HTTP-level failure\n * of the submit/poll/results requests themselves.\n */\nexport class QueryJobError extends Error {\n queryJobId: string;\n failedStatements: FailedStatement[];\n\n constructor(message: string, queryJobId: string, { failedStatements }: QueryJobErrorOptions) {\n super(message);\n this.name = 'QueryJobError';\n this.queryJobId = queryJobId;\n this.failedStatements = failedStatements;\n Object.setPrototypeOf(this, QueryJobError.prototype);\n }\n}\n\nexport const isQueryJobError = (error: unknown): error is QueryJobError =>\n error instanceof QueryJobError;\n"],"mappings":";;;;;;AAcA,IAAa,gBAAb,MAAa,sBAAsB,MAAM;CACvC;CACA;CAEA,YAAY,SAAiB,YAAoB,EAAE,oBAA0C;EAC3F,MAAM,OAAO;EACb,KAAK,OAAO;EACZ,KAAK,aAAa;EAClB,KAAK,mBAAmB;EACxB,OAAO,eAAe,MAAM,cAAc,SAAS;CACrD;AACF;AAEA,MAAa,mBAAmB,UAC9B,iBAAiB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/errors/QueryJobError.ts
|
|
2
2
|
/**
|
|
3
3
|
* A query job that reached the API's terminal `failed` state — the submit/poll round-trip
|
|
4
4
|
* succeeded, the job itself did not. Distinct from {@link ApiError}, which is an HTTP-level failure
|
|
@@ -16,7 +16,6 @@ var QueryJobError = class QueryJobError extends Error {
|
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
18
|
const isQueryJobError = (error) => error instanceof QueryJobError;
|
|
19
|
-
//#endregion
|
|
20
19
|
Object.defineProperty(exports, "QueryJobError", {
|
|
21
20
|
enumerable: true,
|
|
22
21
|
get: function() {
|
|
@@ -30,4 +29,4 @@ Object.defineProperty(exports, "isQueryJobError", {
|
|
|
30
29
|
}
|
|
31
30
|
});
|
|
32
31
|
|
|
33
|
-
//# sourceMappingURL=QueryJobError-
|
|
32
|
+
//# sourceMappingURL=QueryJobError-Oy0fl4aw.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryJobError-
|
|
1
|
+
{"version":3,"file":"QueryJobError-Oy0fl4aw.cjs","names":[],"sources":["../src/errors/QueryJobError.ts"],"sourcesContent":["type FailedStatement = {\n id: string;\n error?: string;\n};\n\ntype QueryJobErrorOptions = {\n failedStatements: FailedStatement[];\n};\n\n/**\n * A query job that reached the API's terminal `failed` state — the submit/poll round-trip\n * succeeded, the job itself did not. Distinct from {@link ApiError}, which is an HTTP-level failure\n * of the submit/poll/results requests themselves.\n */\nexport class QueryJobError extends Error {\n queryJobId: string;\n failedStatements: FailedStatement[];\n\n constructor(message: string, queryJobId: string, { failedStatements }: QueryJobErrorOptions) {\n super(message);\n this.name = 'QueryJobError';\n this.queryJobId = queryJobId;\n this.failedStatements = failedStatements;\n Object.setPrototypeOf(this, QueryJobError.prototype);\n }\n}\n\nexport const isQueryJobError = (error: unknown): error is QueryJobError =>\n error instanceof QueryJobError;\n"],"mappings":";;;;;;AAcA,IAAa,gBAAb,MAAa,sBAAsB,MAAM;CACvC;CACA;CAEA,YAAY,SAAiB,YAAoB,EAAE,oBAA0C;EAC3F,MAAM,OAAO;EACb,KAAK,OAAO;EACZ,KAAK,aAAa;EAClB,KAAK,mBAAmB;EACxB,OAAO,eAAe,MAAM,cAAc,SAAS;CACrD;AACF;AAEA,MAAa,mBAAmB,UAC9B,iBAAiB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/errors/QueueJobError.ts
|
|
2
2
|
/** A queue job that ended `error`: the wait finished, the job did not succeed. */
|
|
3
3
|
var QueueJobError = class QueueJobError extends Error {
|
|
4
4
|
exceptionId;
|
|
@@ -13,7 +13,6 @@ var QueueJobError = class QueueJobError extends Error {
|
|
|
13
13
|
}
|
|
14
14
|
};
|
|
15
15
|
const isQueueJobError = (error) => error instanceof QueueJobError;
|
|
16
|
-
//#endregion
|
|
17
16
|
export { isQueueJobError as n, QueueJobError as t };
|
|
18
17
|
|
|
19
|
-
//# sourceMappingURL=QueueJobError-
|
|
18
|
+
//# sourceMappingURL=QueueJobError-BJNUINXW.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueueJobError-
|
|
1
|
+
{"version":3,"file":"QueueJobError-BJNUINXW.js","names":[],"sources":["../src/errors/QueueJobError.ts"],"sourcesContent":["import type { QueueJob } from '../clients/queue/types';\n\n/** A queue job that ended `error`: the wait finished, the job did not succeed. */\nexport class QueueJobError extends Error {\n exceptionId: string | undefined;\n job: QueueJob;\n\n constructor(job: QueueJob) {\n super(job.result?.message ?? 'The job failed.');\n this.name = 'QueueJobError';\n // The spec types `result` without it; the queue reports one on a failed job.\n const exceptionId: unknown =\n job.result && 'exceptionId' in job.result ? job.result.exceptionId : undefined;\n this.exceptionId = typeof exceptionId === 'string' ? exceptionId : undefined;\n this.job = job;\n Object.setPrototypeOf(this, QueueJobError.prototype);\n }\n}\n\nexport const isQueueJobError = (error: unknown): error is QueueJobError =>\n error instanceof QueueJobError;\n"],"mappings":";;AAGA,IAAa,gBAAb,MAAa,sBAAsB,MAAM;CACvC;CACA;CAEA,YAAY,KAAe;EACzB,MAAM,IAAI,QAAQ,WAAW,iBAAiB;EAC9C,KAAK,OAAO;EAEZ,MAAM,cACJ,IAAI,UAAU,iBAAiB,IAAI,SAAS,IAAI,OAAO,cAAc,KAAA;EACvE,KAAK,cAAc,OAAO,gBAAgB,WAAW,cAAc,KAAA;EACnE,KAAK,MAAM;EACX,OAAO,eAAe,MAAM,cAAc,SAAS;CACrD;AACF;AAEA,MAAa,mBAAmB,UAC9B,iBAAiB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/errors/QueueJobError.ts
|
|
2
2
|
/** A queue job that ended `error`: the wait finished, the job did not succeed. */
|
|
3
3
|
var QueueJobError = class QueueJobError extends Error {
|
|
4
4
|
exceptionId;
|
|
@@ -13,7 +13,6 @@ var QueueJobError = class QueueJobError extends Error {
|
|
|
13
13
|
}
|
|
14
14
|
};
|
|
15
15
|
const isQueueJobError = (error) => error instanceof QueueJobError;
|
|
16
|
-
//#endregion
|
|
17
16
|
Object.defineProperty(exports, "QueueJobError", {
|
|
18
17
|
enumerable: true,
|
|
19
18
|
get: function() {
|
|
@@ -27,4 +26,4 @@ Object.defineProperty(exports, "isQueueJobError", {
|
|
|
27
26
|
}
|
|
28
27
|
});
|
|
29
28
|
|
|
30
|
-
//# sourceMappingURL=QueueJobError-
|
|
29
|
+
//# sourceMappingURL=QueueJobError-DruZK3tc.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueueJobError-
|
|
1
|
+
{"version":3,"file":"QueueJobError-DruZK3tc.cjs","names":[],"sources":["../src/errors/QueueJobError.ts"],"sourcesContent":["import type { QueueJob } from '../clients/queue/types';\n\n/** A queue job that ended `error`: the wait finished, the job did not succeed. */\nexport class QueueJobError extends Error {\n exceptionId: string | undefined;\n job: QueueJob;\n\n constructor(job: QueueJob) {\n super(job.result?.message ?? 'The job failed.');\n this.name = 'QueueJobError';\n // The spec types `result` without it; the queue reports one on a failed job.\n const exceptionId: unknown =\n job.result && 'exceptionId' in job.result ? job.result.exceptionId : undefined;\n this.exceptionId = typeof exceptionId === 'string' ? exceptionId : undefined;\n this.job = job;\n Object.setPrototypeOf(this, QueueJobError.prototype);\n }\n}\n\nexport const isQueueJobError = (error: unknown): error is QueueJobError =>\n error instanceof QueueJobError;\n"],"mappings":";;AAGA,IAAa,gBAAb,MAAa,sBAAsB,MAAM;CACvC;CACA;CAEA,YAAY,KAAe;EACzB,MAAM,IAAI,QAAQ,WAAW,iBAAiB;EAC9C,KAAK,OAAO;EAEZ,MAAM,cACJ,IAAI,UAAU,iBAAiB,IAAI,SAAS,IAAI,OAAO,cAAc,KAAA;EACvE,KAAK,cAAc,OAAO,gBAAgB,WAAW,cAAc,KAAA;EACnE,KAAK,MAAM;EACX,OAAO,eAAe,MAAM,cAAc,SAAS;CACrD;AACF;AAEA,MAAa,mBAAmB,UAC9B,iBAAiB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/errors/SyncActionError.ts
|
|
2
2
|
/**
|
|
3
3
|
* A sync action reports failure two ways: a non-2xx response, and a 2xx response whose body carries
|
|
4
4
|
* `status: 'error'` (the component ran, and said no). Both collapse into this class so consumers
|
|
@@ -18,7 +18,6 @@ var SyncActionError = class SyncActionError extends Error {
|
|
|
18
18
|
}
|
|
19
19
|
};
|
|
20
20
|
const isSyncActionError = (error) => error instanceof SyncActionError;
|
|
21
|
-
//#endregion
|
|
22
21
|
export { isSyncActionError as n, SyncActionError as t };
|
|
23
22
|
|
|
24
|
-
//# sourceMappingURL=SyncActionError-
|
|
23
|
+
//# sourceMappingURL=SyncActionError-DuGcDbkd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncActionError-
|
|
1
|
+
{"version":3,"file":"SyncActionError-DuGcDbkd.js","names":[],"sources":["../src/errors/SyncActionError.ts"],"sourcesContent":["type SyncActionErrorOptions = {\n exceptionId?: string;\n code?: number;\n data?: unknown;\n};\n\n/**\n * A sync action reports failure two ways: a non-2xx response, and a 2xx response whose body carries\n * `status: 'error'` (the component ran, and said no). Both collapse into this class so consumers\n * branch on one thing.\n */\nexport class SyncActionError extends Error {\n exceptionId?: string;\n code?: number;\n data?: unknown;\n\n constructor(message: string, { exceptionId, code, data }: SyncActionErrorOptions = {}) {\n super(message);\n this.name = 'SyncActionError';\n this.exceptionId = exceptionId;\n this.code = code;\n this.data = data;\n Object.setPrototypeOf(this, SyncActionError.prototype);\n }\n}\n\nexport const isSyncActionError = (error: unknown): error is SyncActionError =>\n error instanceof SyncActionError;\n"],"mappings":";;;;;;AAWA,IAAa,kBAAb,MAAa,wBAAwB,MAAM;CACzC;CACA;CACA;CAEA,YAAY,SAAiB,EAAE,aAAa,MAAM,SAAiC,CAAC,GAAG;EACrF,MAAM,OAAO;EACb,KAAK,OAAO;EACZ,KAAK,cAAc;EACnB,KAAK,OAAO;EACZ,KAAK,OAAO;EACZ,OAAO,eAAe,MAAM,gBAAgB,SAAS;CACvD;AACF;AAEA,MAAa,qBAAqB,UAChC,iBAAiB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/errors/SyncActionError.ts
|
|
2
2
|
/**
|
|
3
3
|
* A sync action reports failure two ways: a non-2xx response, and a 2xx response whose body carries
|
|
4
4
|
* `status: 'error'` (the component ran, and said no). Both collapse into this class so consumers
|
|
@@ -18,7 +18,6 @@ var SyncActionError = class SyncActionError extends Error {
|
|
|
18
18
|
}
|
|
19
19
|
};
|
|
20
20
|
const isSyncActionError = (error) => error instanceof SyncActionError;
|
|
21
|
-
//#endregion
|
|
22
21
|
Object.defineProperty(exports, "SyncActionError", {
|
|
23
22
|
enumerable: true,
|
|
24
23
|
get: function() {
|
|
@@ -32,4 +31,4 @@ Object.defineProperty(exports, "isSyncActionError", {
|
|
|
32
31
|
}
|
|
33
32
|
});
|
|
34
33
|
|
|
35
|
-
//# sourceMappingURL=SyncActionError-
|
|
34
|
+
//# sourceMappingURL=SyncActionError-mbpVg63X.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncActionError-
|
|
1
|
+
{"version":3,"file":"SyncActionError-mbpVg63X.cjs","names":[],"sources":["../src/errors/SyncActionError.ts"],"sourcesContent":["type SyncActionErrorOptions = {\n exceptionId?: string;\n code?: number;\n data?: unknown;\n};\n\n/**\n * A sync action reports failure two ways: a non-2xx response, and a 2xx response whose body carries\n * `status: 'error'` (the component ran, and said no). Both collapse into this class so consumers\n * branch on one thing.\n */\nexport class SyncActionError extends Error {\n exceptionId?: string;\n code?: number;\n data?: unknown;\n\n constructor(message: string, { exceptionId, code, data }: SyncActionErrorOptions = {}) {\n super(message);\n this.name = 'SyncActionError';\n this.exceptionId = exceptionId;\n this.code = code;\n this.data = data;\n Object.setPrototypeOf(this, SyncActionError.prototype);\n }\n}\n\nexport const isSyncActionError = (error: unknown): error is SyncActionError =>\n error instanceof SyncActionError;\n"],"mappings":";;;;;;AAWA,IAAa,kBAAb,MAAa,wBAAwB,MAAM;CACzC;CACA;CACA;CAEA,YAAY,SAAiB,EAAE,aAAa,MAAM,SAAiC,CAAC,GAAG;EACrF,MAAM,OAAO;EACb,KAAK,OAAO;EACZ,KAAK,cAAc;EACnB,KAAK,OAAO;EACZ,KAAK,OAAO;EACZ,OAAO,eAAe,MAAM,gBAAgB,SAAS;CACvD;AACF;AAEA,MAAa,qBAAqB,UAChC,iBAAiB"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
// src/errors/UserError.ts
|
|
2
2
|
var UserError = class extends Error {
|
|
3
3
|
constructor(message) {
|
|
4
4
|
super(message);
|
|
5
5
|
}
|
|
6
6
|
};
|
|
7
|
-
//#endregion
|
|
8
7
|
export { UserError as t };
|
|
9
8
|
|
|
10
|
-
//# sourceMappingURL=UserError-
|
|
9
|
+
//# sourceMappingURL=UserError-BxoOJJ_u.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserError-
|
|
1
|
+
{"version":3,"file":"UserError-BxoOJJ_u.js","names":[],"sources":["../src/errors/UserError.ts"],"sourcesContent":["export class UserError extends Error {\n constructor(message: string) {\n super(message);\n }\n}\n"],"mappings":";AAAA,IAAa,YAAb,cAA+B,MAAM;CACnC,YAAY,SAAiB;EAC3B,MAAM,OAAO;CACf;AACF"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
// src/errors/UserError.ts
|
|
2
2
|
var UserError = class extends Error {
|
|
3
3
|
constructor(message) {
|
|
4
4
|
super(message);
|
|
5
5
|
}
|
|
6
6
|
};
|
|
7
|
-
//#endregion
|
|
8
7
|
Object.defineProperty(exports, "UserError", {
|
|
9
8
|
enumerable: true,
|
|
10
9
|
get: function() {
|
|
@@ -12,4 +11,4 @@ Object.defineProperty(exports, "UserError", {
|
|
|
12
11
|
}
|
|
13
12
|
});
|
|
14
13
|
|
|
15
|
-
//# sourceMappingURL=UserError-
|
|
14
|
+
//# sourceMappingURL=UserError-D4P9Tbhf.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserError-
|
|
1
|
+
{"version":3,"file":"UserError-D4P9Tbhf.cjs","names":[],"sources":["../src/errors/UserError.ts"],"sourcesContent":["export class UserError extends Error {\n constructor(message: string) {\n super(message);\n }\n}\n"],"mappings":";AAAA,IAAa,YAAb,cAA+B,MAAM;CACnC,YAAY,SAAiB;EAC3B,MAAM,OAAO;CACf;AACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/errors/ValidationError.ts
|
|
2
2
|
/**
|
|
3
3
|
* A rejected SDK input or a response not matching its documented shape.
|
|
4
4
|
*
|
|
@@ -36,7 +36,6 @@ const parseOrThrow = (schema, value) => {
|
|
|
36
36
|
if (result.success) return result.data;
|
|
37
37
|
throw new ValidationError(formatValidationIssues(result.error.issues), result.error.issues);
|
|
38
38
|
};
|
|
39
|
-
//#endregion
|
|
40
39
|
Object.defineProperty(exports, "ValidationError", {
|
|
41
40
|
enumerable: true,
|
|
42
41
|
get: function() {
|
|
@@ -62,4 +61,4 @@ Object.defineProperty(exports, "parseOrThrow", {
|
|
|
62
61
|
}
|
|
63
62
|
});
|
|
64
63
|
|
|
65
|
-
//# sourceMappingURL=ValidationError-
|
|
64
|
+
//# sourceMappingURL=ValidationError-BXcFX4nD.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationError-
|
|
1
|
+
{"version":3,"file":"ValidationError-BXcFX4nD.cjs","names":[],"sources":["../src/errors/ValidationError.ts"],"sourcesContent":["import type * as z from 'zod';\n\n/**\n * A rejected SDK input or a response not matching its documented shape.\n *\n * - Replaces `ZodError`, whose `message` is a JSON blob; `message` here is one user-facing line.\n * - `issues` keeps the structured detail.\n */\nexport class ValidationError extends Error {\n issues: z.core.$ZodIssue[];\n\n constructor(message: string, issues: z.core.$ZodIssue[] = []) {\n super(message);\n this.name = 'ValidationError';\n this.issues = issues;\n Object.setPrototypeOf(this, ValidationError.prototype);\n }\n}\n\nexport const isValidationError = (error: unknown): error is ValidationError =>\n error instanceof ValidationError;\n\n/**\n * One line per issue, prefixed by the field it belongs to.\n *\n * - Not `z.prettifyError`: its terminal glyphs and newlines collapse in HTML.\n * - Exported for boundaries that drop malformed elements instead of throwing.\n * - Never includes the value, so it is safe to log.\n */\nexport const formatValidationIssues = (issues: readonly z.core.$ZodIssue[]) =>\n issues\n .map((issue) => {\n const path = issue.path.join('.');\n\n // A root-level issue's message already names the whole payload.\n return path ? `${path}: ${issue.message}` : issue.message;\n })\n .join('; ');\n\n/**\n * Parses with `schema`, throwing a {@link ValidationError} instead of a `ZodError`.\n *\n * - Use instead of `schema.parse()` for every client input and response body.\n */\nexport const parseOrThrow = <T extends z.ZodType>(schema: T, value: unknown): z.output<T> => {\n const result = schema.safeParse(value);\n\n if (result.success) return result.data;\n\n throw new ValidationError(formatValidationIssues(result.error.issues), result.error.issues);\n};\n"],"mappings":";;;;;;;AAQA,IAAa,kBAAb,MAAa,wBAAwB,MAAM;CACzC;CAEA,YAAY,SAAiB,SAA6B,CAAC,GAAG;EAC5D,MAAM,OAAO;EACb,KAAK,OAAO;EACZ,KAAK,SAAS;EACd,OAAO,eAAe,MAAM,gBAAgB,SAAS;CACvD;AACF;AAEA,MAAa,qBAAqB,UAChC,iBAAiB;;;;;;;;AASnB,MAAa,0BAA0B,WACrC,OACG,KAAK,UAAU;CACd,MAAM,OAAO,MAAM,KAAK,KAAK,GAAG;CAGhC,OAAO,OAAO,GAAG,KAAK,IAAI,MAAM,YAAY,MAAM;AACpD,CAAC,CAAC,CACD,KAAK,IAAI;;;;;;AAOd,MAAa,gBAAqC,QAAW,UAAgC;CAC3F,MAAM,SAAS,OAAO,UAAU,KAAK;CAErC,IAAI,OAAO,SAAS,OAAO,OAAO;CAElC,MAAM,IAAI,gBAAgB,uBAAuB,OAAO,MAAM,MAAM,GAAG,OAAO,MAAM,MAAM;AAC5F"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/errors/ValidationError.ts
|
|
2
2
|
/**
|
|
3
3
|
* A rejected SDK input or a response not matching its documented shape.
|
|
4
4
|
*
|
|
@@ -36,7 +36,6 @@ const parseOrThrow = (schema, value) => {
|
|
|
36
36
|
if (result.success) return result.data;
|
|
37
37
|
throw new ValidationError(formatValidationIssues(result.error.issues), result.error.issues);
|
|
38
38
|
};
|
|
39
|
-
//#endregion
|
|
40
39
|
export { parseOrThrow as i, formatValidationIssues as n, isValidationError as r, ValidationError as t };
|
|
41
40
|
|
|
42
|
-
//# sourceMappingURL=ValidationError-
|
|
41
|
+
//# sourceMappingURL=ValidationError-BsdFDGY2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationError-
|
|
1
|
+
{"version":3,"file":"ValidationError-BsdFDGY2.js","names":[],"sources":["../src/errors/ValidationError.ts"],"sourcesContent":["import type * as z from 'zod';\n\n/**\n * A rejected SDK input or a response not matching its documented shape.\n *\n * - Replaces `ZodError`, whose `message` is a JSON blob; `message` here is one user-facing line.\n * - `issues` keeps the structured detail.\n */\nexport class ValidationError extends Error {\n issues: z.core.$ZodIssue[];\n\n constructor(message: string, issues: z.core.$ZodIssue[] = []) {\n super(message);\n this.name = 'ValidationError';\n this.issues = issues;\n Object.setPrototypeOf(this, ValidationError.prototype);\n }\n}\n\nexport const isValidationError = (error: unknown): error is ValidationError =>\n error instanceof ValidationError;\n\n/**\n * One line per issue, prefixed by the field it belongs to.\n *\n * - Not `z.prettifyError`: its terminal glyphs and newlines collapse in HTML.\n * - Exported for boundaries that drop malformed elements instead of throwing.\n * - Never includes the value, so it is safe to log.\n */\nexport const formatValidationIssues = (issues: readonly z.core.$ZodIssue[]) =>\n issues\n .map((issue) => {\n const path = issue.path.join('.');\n\n // A root-level issue's message already names the whole payload.\n return path ? `${path}: ${issue.message}` : issue.message;\n })\n .join('; ');\n\n/**\n * Parses with `schema`, throwing a {@link ValidationError} instead of a `ZodError`.\n *\n * - Use instead of `schema.parse()` for every client input and response body.\n */\nexport const parseOrThrow = <T extends z.ZodType>(schema: T, value: unknown): z.output<T> => {\n const result = schema.safeParse(value);\n\n if (result.success) return result.data;\n\n throw new ValidationError(formatValidationIssues(result.error.issues), result.error.issues);\n};\n"],"mappings":";;;;;;;AAQA,IAAa,kBAAb,MAAa,wBAAwB,MAAM;CACzC;CAEA,YAAY,SAAiB,SAA6B,CAAC,GAAG;EAC5D,MAAM,OAAO;EACb,KAAK,OAAO;EACZ,KAAK,SAAS;EACd,OAAO,eAAe,MAAM,gBAAgB,SAAS;CACvD;AACF;AAEA,MAAa,qBAAqB,UAChC,iBAAiB;;;;;;;;AASnB,MAAa,0BAA0B,WACrC,OACG,KAAK,UAAU;CACd,MAAM,OAAO,MAAM,KAAK,KAAK,GAAG;CAGhC,OAAO,OAAO,GAAG,KAAK,IAAI,MAAM,YAAY,MAAM;AACpD,CAAC,CAAC,CACD,KAAK,IAAI;;;;;;AAOd,MAAa,gBAAqC,QAAW,UAAgC;CAC3F,MAAM,SAAS,OAAO,UAAU,KAAK;CAErC,IAAI,OAAO,SAAS,OAAO,OAAO;CAElC,MAAM,IAAI,gBAAgB,uBAAuB,OAAO,MAAM,MAAM,GAAG,OAAO,MAAM,MAAM;AAC5F"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as AdminRole } from "./adminRoles-
|
|
2
|
-
|
|
1
|
+
import { t as AdminRole } from "./adminRoles-asa-MhDD.js";
|
|
2
|
+
// src/domain/permissions/errors.ts
|
|
3
3
|
/**
|
|
4
4
|
* @module domain/permissions/errors
|
|
5
5
|
*
|
|
@@ -18,8 +18,7 @@ var PermissionDeniedError = class extends Error {
|
|
|
18
18
|
this.subject = subject;
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
|
-
|
|
22
|
-
//#region src/domain/permissions/admin.ts
|
|
21
|
+
// src/domain/permissions/admin.ts
|
|
23
22
|
const role = (token) => token.admin.role;
|
|
24
23
|
const isAdmin = (token) => role(token) === AdminRole.Admin;
|
|
25
24
|
const isAdminOrShare = (token) => role(token) === AdminRole.Admin || role(token) === AdminRole.Share;
|
|
@@ -92,53 +91,6 @@ const assertCanDevelopOrReview = (token) => {
|
|
|
92
91
|
reason: `role '${role(token)}' is not developer or reviewer`
|
|
93
92
|
});
|
|
94
93
|
};
|
|
95
|
-
|
|
96
|
-
//#region src/domain/permissions/configurations.ts
|
|
97
|
-
const meetsBaseRule = (token, ctx) => ctx.isDevModeActive ? isDeveloperOrReviewer(token) : isProductionManager(token);
|
|
98
|
-
const baseDenialReason = (ctx) => ctx.isDevModeActive ? "dev branch requires developer or reviewer role" : "production requires productionManager role";
|
|
99
|
-
const canCreateConfiguration = (token, ctx) => meetsBaseRule(token, ctx);
|
|
100
|
-
const canUpdateConfiguration = (token, ctx) => meetsBaseRule(token, ctx);
|
|
101
|
-
const canCopyConfiguration = (token, ctx) => meetsBaseRule(token, ctx);
|
|
102
|
-
const canMigrateFromTemplate = (token, ctx) => meetsBaseRule(token, ctx);
|
|
103
|
-
const canPurgeConfiguration = (token) => isAdmin(token);
|
|
104
|
-
const canAssignFolder = (token, ctx) => meetsBaseRule(token, ctx);
|
|
105
|
-
const assertCanCreateConfiguration = (token, ctx) => {
|
|
106
|
-
if (!canCreateConfiguration(token, ctx)) throw new PermissionDeniedError({
|
|
107
|
-
action: "create-configuration",
|
|
108
|
-
reason: baseDenialReason(ctx)
|
|
109
|
-
});
|
|
110
|
-
};
|
|
111
|
-
const assertCanUpdateConfiguration = (token, ctx) => {
|
|
112
|
-
if (!canUpdateConfiguration(token, ctx)) throw new PermissionDeniedError({
|
|
113
|
-
action: "update-configuration",
|
|
114
|
-
reason: baseDenialReason(ctx)
|
|
115
|
-
});
|
|
116
|
-
};
|
|
117
|
-
const assertCanCopyConfiguration = (token, ctx) => {
|
|
118
|
-
if (!canCopyConfiguration(token, ctx)) throw new PermissionDeniedError({
|
|
119
|
-
action: "copy-configuration",
|
|
120
|
-
reason: baseDenialReason(ctx)
|
|
121
|
-
});
|
|
122
|
-
};
|
|
123
|
-
const assertCanMigrateFromTemplate = (token, ctx) => {
|
|
124
|
-
if (!canMigrateFromTemplate(token, ctx)) throw new PermissionDeniedError({
|
|
125
|
-
action: "migrate-from-template",
|
|
126
|
-
reason: baseDenialReason(ctx)
|
|
127
|
-
});
|
|
128
|
-
};
|
|
129
|
-
const assertCanPurgeConfiguration = (token, ctx) => {
|
|
130
|
-
if (!canPurgeConfiguration(token, ctx)) throw new PermissionDeniedError({
|
|
131
|
-
action: "purge-configuration",
|
|
132
|
-
reason: "purge requires admin role"
|
|
133
|
-
});
|
|
134
|
-
};
|
|
135
|
-
const assertCanAssignFolder = (token, ctx) => {
|
|
136
|
-
if (!canAssignFolder(token, ctx)) throw new PermissionDeniedError({
|
|
137
|
-
action: "assign-folder",
|
|
138
|
-
reason: baseDenialReason(ctx)
|
|
139
|
-
});
|
|
140
|
-
};
|
|
141
|
-
//#endregion
|
|
142
|
-
export { isKaiSettingsWriterRole as C, PermissionDeniedError as D, isReadOnlyRole as E, isDeveloperOrReviewer as S, isProductionManager as T, assertCanWriteKaiSettings as _, assertCanPurgeConfiguration as a, isAdmin as b, canCopyConfiguration as c, canPurgeConfiguration as d, canUpdateConfiguration as f, assertCanProductionManage as g, assertCanDevelopOrReview as h, assertCanMigrateFromTemplate as i, canCreateConfiguration as l, assertCanAdminOrShare as m, assertCanCopyConfiguration as n, assertCanUpdateConfiguration as o, assertCanAdmin as p, assertCanCreateConfiguration as r, canAssignFolder as s, assertCanAssignFolder as t, canMigrateFromTemplate as u, canWriteKaiSettings as v, isKnownAdminRole as w, isAdminOrShare as x, canWriteSemanticLayer as y };
|
|
94
|
+
export { assertCanWriteKaiSettings as a, isAdmin as c, isKaiSettingsWriterRole as d, isKnownAdminRole as f, PermissionDeniedError as h, assertCanProductionManage as i, isAdminOrShare as l, isReadOnlyRole as m, assertCanAdminOrShare as n, canWriteKaiSettings as o, isProductionManager as p, assertCanDevelopOrReview as r, canWriteSemanticLayer as s, assertCanAdmin as t, isDeveloperOrReviewer as u };
|
|
143
95
|
|
|
144
|
-
//# sourceMappingURL=
|
|
96
|
+
//# sourceMappingURL=admin-CbMOsfgs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-CbMOsfgs.js","names":[],"sources":["../src/domain/permissions/errors.ts","../src/domain/permissions/admin.ts"],"sourcesContent":["/**\n * @module domain/permissions/errors\n *\n * - What every `assertCan*` throws; its public fields are SDK contract — renames break consumers.\n * - `subject` is a debugging hint only — never a `StorageToken`, raw token or secret.\n */\nexport class PermissionDeniedError extends Error {\n public readonly action: string;\n public readonly reason?: string;\n public readonly subject?: string;\n\n constructor({ action, reason, subject }: { action: string; reason?: string; subject?: string }) {\n super(reason ? `Permission denied: ${action} (${reason})` : `Permission denied: ${action}`);\n this.name = 'PermissionDeniedError';\n this.action = action;\n this.reason = reason;\n this.subject = subject;\n }\n}\n","/**\n * @module domain/permissions/admin\n *\n * Admin-role predicates read from `token.admin.role` alone.\n */\nimport type { StorageToken } from '../../clients/storage/tokens/types';\nimport { AdminRole } from '../../constants/adminRoles';\n\nimport { PermissionDeniedError } from './errors';\n\nconst role = (token: StorageToken): AdminRole | null => token.admin.role;\n\nexport const isAdmin = (token: StorageToken): boolean => role(token) === AdminRole.Admin;\n\nexport const isAdminOrShare = (token: StorageToken): boolean =>\n role(token) === AdminRole.Admin || role(token) === AdminRole.Share;\n\nexport const isProductionManager = (token: StorageToken): boolean =>\n role(token) === AdminRole.ProductionManager;\n\nexport const isDeveloperOrReviewer = (token: StorageToken): boolean =>\n role(token) === AdminRole.Developer || role(token) === AdminRole.Reviewer;\n\nexport const isReadOnlyRole = (token: StorageToken): boolean => role(token) === AdminRole.ReadOnly;\n\n/**\n * Whether a role string is a member of `AdminRole` at all.\n *\n * - Failing it means *unrecognized*, not denied — log it loudly.\n */\nexport const isKnownAdminRole = (adminRole: string | null | undefined): boolean =>\n (Object.values(AdminRole) as string[]).includes(adminRole ?? '');\n\n/**\n * Whether an admin role may write Kai's project-wide settings.\n *\n * - `admin` and `share` only: a shared prompt-injection surface is project administration.\n * - `developer`/`reviewer` are denied: `agent_settings` is keyed by `project_id` alone, so a dev-branch edit hits production.\n * - An allowlist, so new upstream `AdminRole` members are denied by default.\n * - Spend caps use `./organization#canWriteKaiSpendCaps`; don't widen this for them.\n */\nexport const isKaiSettingsWriterRole = (adminRole: string | null | undefined): boolean => {\n switch (adminRole) {\n case AdminRole.Admin:\n case AdminRole.Share:\n return true;\n default:\n return false;\n }\n};\n\n/**\n * Whether this token may write Kai's project-wide settings.\n *\n * - A limited (non-master) token never may; its `admin` block is absent despite the type.\n */\nexport const canWriteKaiSettings = (token: StorageToken): boolean =>\n token.isMasterToken && isKaiSettingsWriterRole(token.admin?.role);\n\nexport const assertCanWriteKaiSettings = (token: StorageToken): void => {\n if (!canWriteKaiSettings(token)) {\n throw new PermissionDeniedError({\n action: 'write-kai-settings',\n reason: token.isMasterToken\n ? `role '${token.admin?.role ?? 'none'}' may not write Kai settings`\n : 'a limited (non-master) token may not write Kai settings',\n });\n }\n};\n\n/**\n * Whether this token may write the project's semantic layer in the metastore.\n *\n * - Mirrors the metastore's role mapping (go-monorepo `services/metastore/internal/authz`):\n * only a master token with the `admin`, `productionManager` or `share` role gets `project-admin`.\n * - Every other role, and a limited token (no `admin` block), gets a 403.\n * - Organization-scope promotion is left to the metastore's 403.\n */\nexport const canWriteSemanticLayer = (token: StorageToken): boolean =>\n token.admin?.role === AdminRole.Admin ||\n token.admin?.role === AdminRole.ProductionManager ||\n token.admin?.role === AdminRole.Share;\n\nexport const assertCanAdmin = (token: StorageToken): void => {\n if (!isAdmin(token)) {\n throw new PermissionDeniedError({\n action: 'admin',\n reason: `role '${role(token)}' is not admin`,\n });\n }\n};\n\nexport const assertCanAdminOrShare = (token: StorageToken): void => {\n if (!isAdminOrShare(token)) {\n throw new PermissionDeniedError({\n action: 'admin-or-share',\n reason: `role '${role(token)}' is not admin or share`,\n });\n }\n};\n\nexport const assertCanProductionManage = (token: StorageToken): void => {\n if (!isProductionManager(token)) {\n throw new PermissionDeniedError({\n action: 'production-manage',\n reason: `role '${role(token)}' is not productionManager`,\n });\n }\n};\n\nexport const assertCanDevelopOrReview = (token: StorageToken): void => {\n if (!isDeveloperOrReviewer(token)) {\n throw new PermissionDeniedError({\n action: 'develop-or-review',\n reason: `role '${role(token)}' is not developer or reviewer`,\n });\n }\n};\n"],"mappings":";;;;;;;;AAMA,IAAa,wBAAb,cAA2C,MAAM;CAC/C;CACA;CACA;CAEA,YAAY,EAAE,QAAQ,QAAQ,WAAkE;EAC9F,MAAM,SAAS,sBAAsB,OAAO,IAAI,OAAO,KAAK,sBAAsB,QAAQ;EAC1F,KAAK,OAAO;EACZ,KAAK,SAAS;EACd,KAAK,SAAS;EACd,KAAK,UAAU;CACjB;AACF;;ACRA,MAAM,QAAQ,UAA0C,MAAM,MAAM;AAEpE,MAAa,WAAW,UAAiC,KAAK,KAAK,MAAM,UAAU;AAEnF,MAAa,kBAAkB,UAC7B,KAAK,KAAK,MAAM,UAAU,SAAS,KAAK,KAAK,MAAM,UAAU;AAE/D,MAAa,uBAAuB,UAClC,KAAK,KAAK,MAAM,UAAU;AAE5B,MAAa,yBAAyB,UACpC,KAAK,KAAK,MAAM,UAAU,aAAa,KAAK,KAAK,MAAM,UAAU;AAEnE,MAAa,kBAAkB,UAAiC,KAAK,KAAK,MAAM,UAAU;;;;;;AAO1F,MAAa,oBAAoB,cAC9B,OAAO,OAAO,SAAS,CAAC,CAAc,SAAS,aAAa,EAAE;;;;;;;;;AAUjE,MAAa,2BAA2B,cAAkD;CACxF,QAAQ,WAAR;EACE,KAAK,UAAU;EACf,KAAK,UAAU,OACb,OAAO;EACT,SACE,OAAO;CACX;AACF;;;;;;AAOA,MAAa,uBAAuB,UAClC,MAAM,iBAAiB,wBAAwB,MAAM,OAAO,IAAI;AAElE,MAAa,6BAA6B,UAA8B;CACtE,IAAI,CAAC,oBAAoB,KAAK,GAC5B,MAAM,IAAI,sBAAsB;EAC9B,QAAQ;EACR,QAAQ,MAAM,gBACV,SAAS,MAAM,OAAO,QAAQ,OAAO,gCACrC;CACN,CAAC;AAEL;;;;;;;;;AAUA,MAAa,yBAAyB,UACpC,MAAM,OAAO,SAAS,UAAU,SAChC,MAAM,OAAO,SAAS,UAAU,qBAChC,MAAM,OAAO,SAAS,UAAU;AAElC,MAAa,kBAAkB,UAA8B;CAC3D,IAAI,CAAC,QAAQ,KAAK,GAChB,MAAM,IAAI,sBAAsB;EAC9B,QAAQ;EACR,QAAQ,SAAS,KAAK,KAAK,EAAE;CAC/B,CAAC;AAEL;AAEA,MAAa,yBAAyB,UAA8B;CAClE,IAAI,CAAC,eAAe,KAAK,GACvB,MAAM,IAAI,sBAAsB;EAC9B,QAAQ;EACR,QAAQ,SAAS,KAAK,KAAK,EAAE;CAC/B,CAAC;AAEL;AAEA,MAAa,6BAA6B,UAA8B;CACtE,IAAI,CAAC,oBAAoB,KAAK,GAC5B,MAAM,IAAI,sBAAsB;EAC9B,QAAQ;EACR,QAAQ,SAAS,KAAK,KAAK,EAAE;CAC/B,CAAC;AAEL;AAEA,MAAa,4BAA4B,UAA8B;CACrE,IAAI,CAAC,sBAAsB,KAAK,GAC9B,MAAM,IAAI,sBAAsB;EAC9B,QAAQ;EACR,QAAQ,SAAS,KAAK,KAAK,EAAE;CAC/B,CAAC;AAEL"}
|