@keboola/api-client 43.0.0 → 44.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 +4 -2
- package/API-SURFACE.md +4 -10
- package/CHANGELOG.md +36 -0
- package/README.md +17 -19
- package/dist/{ManagementClientAuthError-DUbXlry2.js → ManagementClientAuthError-BcPYxAWZ.js} +2 -2
- package/dist/{ManagementClientAuthError-DUbXlry2.js.map → ManagementClientAuthError-BcPYxAWZ.js.map} +1 -1
- package/dist/{ManagementClientAuthError-BFZOtLgj.cjs → ManagementClientAuthError-DHuykEPF.cjs} +2 -2
- package/dist/{ManagementClientAuthError-BFZOtLgj.cjs.map → ManagementClientAuthError-DHuykEPF.cjs.map} +1 -1
- package/dist/ai/index.cjs +2 -2
- package/dist/ai/index.js +2 -2
- package/dist/{appLogs-oZvt59mk.cjs → appLogs-BG9ueGxA.cjs} +2 -2
- package/dist/{appLogs-oZvt59mk.cjs.map → appLogs-BG9ueGxA.cjs.map} +1 -1
- package/dist/{appLogs-DfkItQCO.js → appLogs-CEKz68bE.js} +2 -2
- package/dist/{appLogs-DfkItQCO.js.map → appLogs-CEKz68bE.js.map} +1 -1
- package/dist/apps/index.cjs +3 -3
- package/dist/apps/index.js +3 -3
- package/dist/assets/index.cjs +1 -1
- package/dist/assets/index.js +1 -1
- package/dist/auth/index.cjs +1 -1
- package/dist/auth/index.js +1 -1
- package/dist/{auth-DUHTJTwS.js → auth-C6cHWIWx.js} +2 -2
- package/dist/{auth-DUHTJTwS.js.map → auth-C6cHWIWx.js.map} +1 -1
- package/dist/{auth-zfI04oj7.cjs → auth-C9o_0bft.cjs} +2 -2
- package/dist/{auth-zfI04oj7.cjs.map → auth-C9o_0bft.cjs.map} +1 -1
- package/dist/{authClient-CX4buUMc.js → authClient-CACOwVt0.js} +5 -5
- package/dist/{authClient-CX4buUMc.js.map → authClient-CACOwVt0.js.map} +1 -1
- package/dist/{authClient-BxqRGR5c.cjs → authClient-DZcAR-eW.cjs} +5 -5
- package/dist/{authClient-BxqRGR5c.cjs.map → authClient-DZcAR-eW.cjs.map} +1 -1
- package/dist/billing/index.cjs +2 -2
- package/dist/billing/index.js +2 -2
- package/dist/chat/index.cjs +3 -3
- package/dist/chat/index.js +3 -3
- package/dist/constants/index.cjs +1 -1
- package/dist/constants/index.d.cts +1 -1
- package/dist/constants/index.d.ts +1 -1
- package/dist/constants/index.js +1 -1
- package/dist/{constants-C6xku_Vx.cjs → constants-BDGRQqij.cjs} +1 -2
- package/dist/constants-BDGRQqij.cjs.map +1 -0
- package/dist/{constants-C2tYAJSj.js → constants-Cifrqsls.js} +1 -2
- package/dist/constants-Cifrqsls.js.map +1 -0
- package/dist/{createFetchClient-BgihytBn.cjs → createFetchClient-ClWD4ua3.cjs} +71 -25
- package/dist/createFetchClient-ClWD4ua3.cjs.map +1 -0
- package/dist/{createFetchClient-cgWkwgAQ.js → createFetchClient-DITkTV2k.js} +54 -26
- package/dist/createFetchClient-DITkTV2k.js.map +1 -0
- package/dist/{createGenericFetchClient-C7Y0YVfc.cjs → createGenericFetchClient-B81Iezpb.cjs} +2 -2
- package/dist/{createGenericFetchClient-C7Y0YVfc.cjs.map → createGenericFetchClient-B81Iezpb.cjs.map} +1 -1
- package/dist/{createGenericFetchClient-CX9Hn3Aq.js → createGenericFetchClient-KqiJhw8G.js} +2 -2
- package/dist/{createGenericFetchClient-CX9Hn3Aq.js.map → createGenericFetchClient-KqiJhw8G.js.map} +1 -1
- package/dist/{createOpenapiFetchClient-DY5s-aH6.cjs → createOpenapiFetchClient-CioTX11-.cjs} +2 -2
- package/dist/{createOpenapiFetchClient-DY5s-aH6.cjs.map → createOpenapiFetchClient-CioTX11-.cjs.map} +1 -1
- package/dist/{createOpenapiFetchClient-BxcLLU_N.js → createOpenapiFetchClient-wq8iGLZM.js} +2 -2
- package/dist/{createOpenapiFetchClient-BxcLLU_N.js.map → createOpenapiFetchClient-wq8iGLZM.js.map} +1 -1
- package/dist/dataScience/index.cjs +2 -2
- package/dist/dataScience/index.d.cts +1 -1
- package/dist/dataScience/index.d.ts +1 -1
- 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-BxRoGfnG.js → dataScience-BwHmDoQb.js} +16 -5
- package/dist/dataScience-BwHmDoQb.js.map +1 -0
- package/dist/{dataScience-BoS8Xfvx.cjs → dataScience-Hhoqoql_.cjs} +16 -5
- package/dist/dataScience-Hhoqoql_.cjs.map +1 -0
- package/dist/developerPortal/index.cjs +1 -1
- package/dist/developerPortal/index.js +1 -1
- package/dist/{developerPortalClient-DFHEsrlt.cjs → developerPortalClient-COm7wJxS.cjs} +3 -3
- package/dist/{developerPortalClient-DFHEsrlt.cjs.map → developerPortalClient-COm7wJxS.cjs.map} +1 -1
- package/dist/{developerPortalClient-C7s0kpjK.js → developerPortalClient-loKq7X_U.js} +3 -3
- package/dist/{developerPortalClient-C7s0kpjK.js.map → developerPortalClient-loKq7X_U.js.map} +1 -1
- package/dist/editor/index.cjs +2 -2
- package/dist/editor/index.js +2 -2
- package/dist/encryption/index.cjs +1 -1
- package/dist/encryption/index.d.cts +1 -1
- package/dist/encryption/index.d.ts +1 -1
- package/dist/encryption/index.js +1 -1
- package/dist/encryption/types.d.cts +1 -1
- package/dist/encryption/types.d.ts +1 -1
- package/dist/import/index.cjs +1 -1
- package/dist/import/index.js +1 -1
- package/dist/{import-BSYvG3Uy.cjs → import-B5DcJGMI.cjs} +3 -3
- package/dist/{import-BSYvG3Uy.cjs.map → import-B5DcJGMI.cjs.map} +1 -1
- package/dist/{import-CXBcFVbk.js → import-JlH_QaDd.js} +3 -3
- package/dist/{import-CXBcFVbk.js.map → import-JlH_QaDd.js.map} +1 -1
- package/dist/{index-CAvT_ahE.d.ts → index-BCgmwncs.d.ts} +6 -2
- package/dist/{index-CBWfpd-0.d.ts → index-Bf8dr2KQ.d.ts} +2 -2
- package/dist/{index-B03vhWSX.d.ts → index-CA6QxbhZ.d.ts} +4 -2
- package/dist/{index-D7of2MMN.d.ts → index-CWPi7lBF.d.ts} +3 -3
- package/dist/{index-C7KThHI3.d.cts → index-D9UsQOuT.d.cts} +6 -2
- package/dist/{index-Cm04GKm9.d.cts → index-DZcQUZaO.d.cts} +28 -78
- package/dist/{index-CdS-c6sC.d.cts → index-Dd40ojPr.d.cts} +3 -3
- package/dist/{index-BUsLHNOA.d.cts → index-DkCXaYsn.d.cts} +2 -2
- package/dist/{index-D3HFMfJJ.d.cts → index-DkvrbR2i.d.cts} +4 -2
- package/dist/{index-BQZ9njUC.d.ts → index-DzGmgUvQ.d.ts} +28 -78
- package/dist/index.cjs +50 -58
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +47 -55
- package/dist/index.js.map +1 -1
- package/dist/{isLoginPageRedirect-CsjF95_P.js → isLoginPageRedirect-CsyRa3_v.js} +2 -2
- package/dist/{isLoginPageRedirect-CsjF95_P.js.map → isLoginPageRedirect-CsyRa3_v.js.map} +1 -1
- package/dist/{isLoginPageRedirect-c451CoWW.cjs → isLoginPageRedirect-iNbwl3iz.cjs} +2 -2
- package/dist/{isLoginPageRedirect-c451CoWW.cjs.map → isLoginPageRedirect-iNbwl3iz.cjs.map} +1 -1
- package/dist/kaiAgent/index.cjs +1 -1
- package/dist/kaiAgent/index.js +1 -1
- package/dist/{kaiAgent-ph4DRKlT.cjs → kaiAgent-BhcUsBDk.cjs} +5 -5
- package/dist/{kaiAgent-ph4DRKlT.cjs.map → kaiAgent-BhcUsBDk.cjs.map} +1 -1
- package/dist/{kaiAgent-xBpUwLeQ.js → kaiAgent-CUeT53-K.js} +5 -5
- package/dist/{kaiAgent-xBpUwLeQ.js.map → kaiAgent-CUeT53-K.js.map} +1 -1
- package/dist/{kaiMemory-U0DG-CpY.cjs → kaiMemory-Cf81ghNd.cjs} +2 -2
- package/dist/{kaiMemory-U0DG-CpY.cjs.map → kaiMemory-Cf81ghNd.cjs.map} +1 -1
- package/dist/{kaiMemory-BAniZZAN.js → kaiMemory-DaOh0zVn.js} +2 -2
- package/dist/{kaiMemory-BAniZZAN.js.map → kaiMemory-DaOh0zVn.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 -1
- package/dist/management/types.d.cts +2 -2
- package/dist/management/types.d.ts +2 -2
- package/dist/{management-5597SiC7.cjs → management-C5lf9nsU.cjs} +31 -6
- package/dist/management-C5lf9nsU.cjs.map +1 -0
- package/dist/{management-D46KlXts.js → management-WAtKH6Tu.js} +31 -6
- package/dist/management-WAtKH6Tu.js.map +1 -0
- package/dist/metastore/index.cjs +1 -1
- package/dist/metastore/index.js +1 -1
- package/dist/{metastore-_OskcLGz.js → metastore-D0C6uaPX.js} +4 -4
- package/dist/{metastore-_OskcLGz.js.map → metastore-D0C6uaPX.js.map} +1 -1
- package/dist/{metastore-DwMFlP2d.cjs → metastore-YPHUK3jJ.cjs} +4 -4
- package/dist/{metastore-DwMFlP2d.cjs.map → metastore-YPHUK3jJ.cjs.map} +1 -1
- package/dist/microsoftGraph/index.cjs +2 -2
- package/dist/microsoftGraph/index.js +2 -2
- package/dist/{middleware-xhg2r2fE.cjs → middleware-D_p5TctO.cjs} +2 -2
- package/dist/{middleware-xhg2r2fE.cjs.map → middleware-D_p5TctO.cjs.map} +1 -1
- package/dist/{middleware-Drbo_UIZ.js → middleware-DmR6OhTY.js} +2 -2
- package/dist/{middleware-Drbo_UIZ.js.map → middleware-DmR6OhTY.js.map} +1 -1
- package/dist/notifications/index.cjs +3 -3
- package/dist/notifications/index.js +3 -3
- package/dist/oauth/index.cjs +1 -1
- package/dist/oauth/index.js +1 -1
- package/dist/{oauth-TWwAv-va.js → oauth-Ck_Fe14o.js} +5 -5
- package/dist/{oauth-TWwAv-va.js.map → oauth-Ck_Fe14o.js.map} +1 -1
- package/dist/{oauth-L0Uic3YA.cjs → oauth-DyUwTqHJ.cjs} +5 -5
- package/dist/{oauth-L0Uic3YA.cjs.map → oauth-DyUwTqHJ.cjs.map} +1 -1
- package/dist/omnisearch/index.cjs +2 -2
- package/dist/omnisearch/index.js +2 -2
- 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 -1
- package/dist/{queryService-Drvy1ztW.js → queryService-OgdbrBjA.js} +5 -5
- package/dist/{queryService-Drvy1ztW.js.map → queryService-OgdbrBjA.js.map} +1 -1
- package/dist/{queryService-DSww_TJp.cjs → queryService-e2ql5eev.cjs} +5 -5
- package/dist/{queryService-DSww_TJp.cjs.map → queryService-e2ql5eev.cjs.map} +1 -1
- package/dist/queue/index.cjs +1 -1
- package/dist/queue/index.d.cts +1 -1
- package/dist/queue/index.d.ts +1 -1
- package/dist/queue/index.js +1 -1
- package/dist/{queue-Ci_f_5TI.js → queue-BZwZuZZx.js} +4 -4
- package/dist/{queue-Ci_f_5TI.js.map → queue-BZwZuZZx.js.map} +1 -1
- package/dist/{queue-DpMvv8C-.cjs → queue-DGoMbK1X.cjs} +4 -4
- package/dist/{queue-DpMvv8C-.cjs.map → queue-DGoMbK1X.cjs.map} +1 -1
- package/dist/scheduler/index.cjs +3 -3
- package/dist/scheduler/index.js +3 -3
- package/dist/sdk/configurations/index.d.cts +3 -3
- package/dist/sdk/configurations/index.d.ts +3 -3
- package/dist/sdk/developerPortal/index.cjs +3 -3
- package/dist/sdk/developerPortal/index.js +3 -3
- package/dist/sdk/kaiMemory/index.cjs +1 -1
- package/dist/sdk/kaiMemory/index.js +1 -1
- package/dist/sdk/queryService/index.d.cts +1 -1
- package/dist/sdk/queryService/index.d.ts +1 -1
- package/dist/sdk/semanticLayer/index.cjs +1 -1
- package/dist/sdk/semanticLayer/index.js +1 -1
- package/dist/sdk/storage/index.d.cts +1 -1
- package/dist/sdk/storage/index.d.ts +1 -1
- package/dist/sdk/vault/index.d.cts +1 -1
- package/dist/sdk/vault/index.d.ts +1 -1
- package/dist/{semanticLayer-D3NDh_QH.cjs → semanticLayer-Cz22bIjd.cjs} +2 -2
- package/dist/{semanticLayer-D3NDh_QH.cjs.map → semanticLayer-Cz22bIjd.cjs.map} +1 -1
- package/dist/{semanticLayer-Ddg0LSnt.js → semanticLayer-JSE51K68.js} +2 -2
- package/dist/{semanticLayer-Ddg0LSnt.js.map → semanticLayer-JSE51K68.js.map} +1 -1
- package/dist/{serviceIds-DC-H6ZD9.d.ts → serviceIds-DRcoTnSd.d.cts} +1 -2
- package/dist/{serviceIds-DC-H6ZD9.d.cts → serviceIds-DRcoTnSd.d.ts} +1 -2
- package/dist/status/index.cjs +1 -1
- package/dist/status/index.js +1 -1
- package/dist/storage/index.cjs +4 -4
- package/dist/storage/index.d.cts +1 -1
- package/dist/storage/index.d.ts +1 -1
- package/dist/storage/index.js +4 -4
- package/dist/storage/types.d.cts +3 -3
- package/dist/storage/types.d.ts +3 -3
- package/dist/{storage-DAJquqEw.cjs → storage-B4AnXas_.cjs} +34 -23
- package/dist/storage-B4AnXas_.cjs.map +1 -0
- package/dist/{storage-C-lyo_iX.js → storage-CsdA47AL.js} +34 -23
- package/dist/storage-CsdA47AL.js.map +1 -0
- package/dist/stream/index.cjs +3 -3
- package/dist/stream/index.js +3 -3
- package/dist/syncActions/index.cjs +1 -1
- package/dist/syncActions/index.js +1 -1
- package/dist/{syncActions-BQ8kMgL6.js → syncActions-BvFUa9xV.js} +5 -5
- package/dist/{syncActions-BQ8kMgL6.js.map → syncActions-BvFUa9xV.js.map} +1 -1
- package/dist/{syncActions-DyxNmbUR.cjs → syncActions-DlNPhZY4.cjs} +5 -5
- package/dist/{syncActions-DyxNmbUR.cjs.map → syncActions-DlNPhZY4.cjs.map} +1 -1
- package/dist/telemetry/index.cjs +3 -3
- package/dist/telemetry/index.js +3 -3
- package/dist/{types-B3i04d_A.d.cts → types-CGm2fQKK.d.cts} +183 -5
- package/dist/{types-BgVt8SUY.d.cts → types-CLHaZv9f.d.cts} +17 -13
- package/dist/{types-BzPuxmaR.d.cts → types-D1A4mAG0.d.cts} +2 -2
- package/dist/{types-C0rVtqz2.d.ts → types-D8pGSkRe.d.ts} +17 -13
- package/dist/{types-BWmLo73i.d.cts → types-DVt0qlzI.d.cts} +14 -3
- package/dist/{types-R3AFJD6r.d.ts → types-DazRtukc.d.ts} +14 -3
- package/dist/{types-2Do0DZ60.d.ts → types-DxN2siRW.d.ts} +2 -2
- package/dist/{types-B3P5yAuI.d.ts → types-Fs4a3mVs.d.ts} +183 -5
- package/dist/{validateConnectionStatus-gFsBi5FV.js → validateConnectionStatus-CdTV3gsP.js} +3 -3
- package/dist/{validateConnectionStatus-gFsBi5FV.js.map → validateConnectionStatus-CdTV3gsP.js.map} +1 -1
- package/dist/{validateConnectionStatus-Ca1uEizv.cjs → validateConnectionStatus-DR-0h35y.cjs} +3 -3
- package/dist/{validateConnectionStatus-Ca1uEizv.cjs.map → validateConnectionStatus-DR-0h35y.cjs.map} +1 -1
- package/dist/vault/index.cjs +4 -4
- package/dist/vault/index.js +4 -4
- package/package.json +1 -27
- package/surface/dataScience.md +1 -0
- package/surface/management.md +2 -0
- package/surface/storage.md +7 -7
- package/dist/businessWorkspaceApi/index.cjs +0 -3
- package/dist/businessWorkspaceApi/index.d.cts +0 -2
- package/dist/businessWorkspaceApi/index.d.ts +0 -2
- package/dist/businessWorkspaceApi/index.js +0 -2
- package/dist/businessWorkspaceApi/types.cjs +0 -0
- package/dist/businessWorkspaceApi/types.d.cts +0 -2
- package/dist/businessWorkspaceApi/types.d.ts +0 -2
- package/dist/businessWorkspaceApi/types.js +0 -1
- package/dist/businessWorkspaceApi-DFky1k61.js +0 -61
- package/dist/businessWorkspaceApi-DFky1k61.js.map +0 -1
- package/dist/businessWorkspaceApi-Uzqu0PJM.cjs +0 -66
- package/dist/businessWorkspaceApi-Uzqu0PJM.cjs.map +0 -1
- package/dist/businessWorkspaceApiClient-BHDJlHFo.d.cts +0 -529
- package/dist/businessWorkspaceApiClient-DI-z1VIH.d.ts +0 -529
- package/dist/constants-C2tYAJSj.js.map +0 -1
- package/dist/constants-C6xku_Vx.cjs.map +0 -1
- package/dist/createFetchClient-BgihytBn.cjs.map +0 -1
- package/dist/createFetchClient-cgWkwgAQ.js.map +0 -1
- package/dist/dataScience-BoS8Xfvx.cjs.map +0 -1
- package/dist/dataScience-BxRoGfnG.js.map +0 -1
- package/dist/management-5597SiC7.cjs.map +0 -1
- package/dist/management-D46KlXts.js.map +0 -1
- package/dist/storage-C-lyo_iX.js.map +0 -1
- package/dist/storage-DAJquqEw.cjs.map +0 -1
- package/surface/businessWorkspaceApi.md +0 -12
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { l as isContentEmpty, u as isHtmlResponse } from "./createFetchClient-
|
|
1
|
+
import { l as isContentEmpty, u as isHtmlResponse } from "./createFetchClient-DITkTV2k.js";
|
|
2
2
|
//#region src/clients/isLoginPageRedirect.ts
|
|
3
3
|
/**
|
|
4
4
|
* Whether a response is Connection's login screen arriving in place of the endpoint's payload.
|
|
@@ -11,4 +11,4 @@ const isLoginPageRedirect = (apiResponse) => isHtmlResponse(apiResponse) && !isC
|
|
|
11
11
|
//#endregion
|
|
12
12
|
export { isLoginPageRedirect as t };
|
|
13
13
|
|
|
14
|
-
//# sourceMappingURL=isLoginPageRedirect-
|
|
14
|
+
//# sourceMappingURL=isLoginPageRedirect-CsyRa3_v.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isLoginPageRedirect-
|
|
1
|
+
{"version":3,"file":"isLoginPageRedirect-CsyRa3_v.js","names":[],"sources":["../src/clients/isLoginPageRedirect.ts"],"sourcesContent":["import { type ApiResponse, isContentEmpty, isHtmlResponse } from '../fetchClient';\n\n/**\n * Whether a response is Connection's login screen arriving in place of the endpoint's payload.\n *\n * - An expired session `302`s to login; `fetch` follows it and resolves `200 text/html`.\n * - Caller checks the status: HTML on a failure is a real error page.\n * - Content type alone is not enough: Symfony stamps `text/html` on bodyless responses (e.g. `202`).\n */\nexport const isLoginPageRedirect = (apiResponse: ApiResponse) =>\n isHtmlResponse(apiResponse) && !isContentEmpty(apiResponse);\n"],"mappings":";;;;;;;;;AASA,MAAa,uBAAuB,gBAClC,eAAe,WAAW,KAAK,CAAC,eAAe,WAAW"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_createFetchClient = require("./createFetchClient-
|
|
1
|
+
const require_createFetchClient = require("./createFetchClient-ClWD4ua3.cjs");
|
|
2
2
|
//#region src/clients/isLoginPageRedirect.ts
|
|
3
3
|
/**
|
|
4
4
|
* Whether a response is Connection's login screen arriving in place of the endpoint's payload.
|
|
@@ -16,4 +16,4 @@ Object.defineProperty(exports, "isLoginPageRedirect", {
|
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
18
|
|
|
19
|
-
//# sourceMappingURL=isLoginPageRedirect-
|
|
19
|
+
//# sourceMappingURL=isLoginPageRedirect-iNbwl3iz.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isLoginPageRedirect-
|
|
1
|
+
{"version":3,"file":"isLoginPageRedirect-iNbwl3iz.cjs","names":["isHtmlResponse","isContentEmpty"],"sources":["../src/clients/isLoginPageRedirect.ts"],"sourcesContent":["import { type ApiResponse, isContentEmpty, isHtmlResponse } from '../fetchClient';\n\n/**\n * Whether a response is Connection's login screen arriving in place of the endpoint's payload.\n *\n * - An expired session `302`s to login; `fetch` follows it and resolves `200 text/html`.\n * - Caller checks the status: HTML on a failure is a real error page.\n * - Content type alone is not enough: Symfony stamps `text/html` on bodyless responses (e.g. `202`).\n */\nexport const isLoginPageRedirect = (apiResponse: ApiResponse) =>\n isHtmlResponse(apiResponse) && !isContentEmpty(apiResponse);\n"],"mappings":";;;;;;;;;AASA,MAAa,uBAAuB,gBAClCA,0BAAAA,eAAe,WAAW,KAAK,CAACC,0BAAAA,eAAe,WAAW"}
|
package/dist/kaiAgent/index.cjs
CHANGED
package/dist/kaiAgent/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as createKaiAgentClient } from "../kaiAgent-
|
|
1
|
+
import { t as createKaiAgentClient } from "../kaiAgent-CUeT53-K.js";
|
|
2
2
|
export { createKaiAgentClient };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
const require_createFetchClient = require("./createFetchClient-
|
|
2
|
-
const require_createGenericFetchClient = require("./createGenericFetchClient-
|
|
3
|
-
const require_createOpenapiFetchClient = require("./createOpenapiFetchClient-
|
|
4
|
-
const require_auth = require("./auth-
|
|
1
|
+
const require_createFetchClient = require("./createFetchClient-ClWD4ua3.cjs");
|
|
2
|
+
const require_createGenericFetchClient = require("./createGenericFetchClient-B81Iezpb.cjs");
|
|
3
|
+
const require_createOpenapiFetchClient = require("./createOpenapiFetchClient-CioTX11-.cjs");
|
|
4
|
+
const require_auth = require("./auth-C9o_0bft.cjs");
|
|
5
5
|
let zod = require("zod");
|
|
6
6
|
//#region src/clients/kaiAgent/kaiAgentClient.ts
|
|
7
7
|
const projectToolPolicyValueSchema = zod.z.enum(["blocked", "always_ask"]);
|
|
@@ -335,4 +335,4 @@ Object.defineProperty(exports, "createKaiAgentClient", {
|
|
|
335
335
|
}
|
|
336
336
|
});
|
|
337
337
|
|
|
338
|
-
//# sourceMappingURL=kaiAgent-
|
|
338
|
+
//# sourceMappingURL=kaiAgent-BhcUsBDk.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kaiAgent-ph4DRKlT.cjs","names":["z","createAuthHeaders","createOpenapiFetchClient","createGenericFetchClient","isApiError","HttpStatus"],"sources":["../src/clients/kaiAgent/kaiAgentClient.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { createGenericFetchClient, createOpenapiFetchClient, isApiError } from '../../fetchClient';\nimport { HttpStatus } from '../../internal';\nimport { createAuthHeaders } from '../auth';\nimport type { SuggestionsApiResponse, SuggestionsRequestBody } from '../chat/suggestions';\nimport type { ProjectToolPolicy, ProjectToolPolicyValue } from '../chat/types';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type {\n ApprovalBody,\n ArtifactListResponse,\n ArtifactResponse,\n ChatRequest,\n GetArtifactPath,\n GetArtifactsQuery,\n GetChatPath,\n GetHistoryQuery,\n GetVotesQuery,\n PrepareChatRequest,\n UsageResponse,\n VoteRequest,\n} from './types';\n\nconst projectToolPolicyValueSchema: z.ZodType<ProjectToolPolicyValue> = z.enum([\n 'blocked',\n 'always_ask',\n]);\n\nconst agentSettingsSchema = z.object({\n projectId: z.string(),\n customInstructions: z.string().nullable(),\n toolPermissions: z.record(z.string(), projectToolPolicyValueSchema).nullable().optional(),\n canWriteToolPolicy: z.boolean().optional(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nconst toolPermissionValueSchema = z.enum(['always_allow', 'always_ask', 'blocked']);\n\nconst userAgentSettingsSchema = z.object({\n projectId: z.string(),\n userId: z.string(),\n customInstructions: z.string().nullable(),\n toolPermissions: z.record(z.string(), toolPermissionValueSchema).nullable(),\n projectToolPermissions: z.record(z.string(), projectToolPolicyValueSchema).nullable().optional(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nconst userMemoriesSchema = z.object({\n memories: z.array(z.object({ id: z.string(), content: z.string(), createdAt: z.string() })),\n});\n\nconst toolInfoSchema = z.object({\n name: z.string(),\n description: z.string(),\n readOnly: z.boolean(),\n});\n\nconst toolsListResponseSchema = z.object({\n tools: z.array(toolInfoSchema),\n});\n\nconst skillInfoSchema = z.object({\n name: z.string(),\n description: z.string().nullable(),\n source: z.enum(['first-party', 'vendored', 'project']),\n});\n\nconst builtInCommandSchema = z.object({\n name: z.string(),\n description: z.string(),\n});\n\nconst skillsListResponseSchema = z.object({\n skills: z.array(skillInfoSchema),\n commands: z.array(builtInCommandSchema),\n});\n\nconst sandboxFileEntrySchema = z.object({\n name: z.string(),\n path: z.string(),\n type: z.enum(['file', 'dir']),\n size: z.number().int().nonnegative().optional(),\n});\n\nconst sandboxFileListingSchema = z.object({\n entries: z.array(sandboxFileEntrySchema),\n});\n\nconst sandboxFileContentSchema = z.object({\n content: z.string(),\n encoding: z.enum(['utf-8', 'binary']),\n truncated: z.boolean(),\n size: z.number().int().nonnegative(),\n});\n\nconst sandboxGitBranchSchema = z.object({\n branch: z.string().nullable(),\n});\n\n// `userId` only: kai-agent cannot resolve project members. Join it against\n// `api.management.projects.getProjectUsers`.\nconst spendCapMemberSchema = z.object({\n userId: z.string(),\n overrideLimitPpu: z.number().nullable(),\n effectiveLimitPpu: z.number().nullable(),\n usedPpu: z.number(),\n overrideUpdatedAt: z.string().nullable(),\n overrideUpdatedByUserId: z.string().nullable(),\n});\n\nconst spendCapsViewSchema = z.object({\n // `null` = no configured cap, not unlimited — see `effectiveProjectCapPpu`.\n projectCapPpu: z.number().nullable(),\n // The enforced cap (`projectCapPpu` or kai-agent's DEFAULT_PROJECT_CAP_PPU).\n // Render this; `projectCapPpu` only tells configured from default.\n effectiveProjectCapPpu: z.number(),\n // Platform default regardless of what's saved; validates a cleared-but-unsaved field.\n // Optional on the wire (rollout skew); `withDefaultProjectCap` fills it in.\n defaultProjectCapPpu: z.number().optional(),\n defaultUserLimitPpu: z.number().nullable(),\n projectUsedPpu: z.number(),\n canWrite: z.boolean(),\n members: z.array(spendCapMemberSchema),\n updatedAt: z.string().nullable(),\n updatedByUserId: z.string().nullable(),\n});\n\nconst votesResponseSchema = z.array(\n z.object({\n chatId: z.string(),\n messageId: z.string(),\n isUpvoted: z.boolean(),\n }),\n);\n\nexport type SpendCapMember = z.infer<typeof spendCapMemberSchema>;\n// `defaultProjectCapPpu` is always present here — `getSpendCaps`/`updateSpendCaps` fill it in.\nexport type SpendCapsView = Omit<z.infer<typeof spendCapsViewSchema>, 'defaultProjectCapPpu'> & {\n defaultProjectCapPpu: number;\n};\nexport type AgentSettings = z.infer<typeof agentSettingsSchema>;\nexport type UserAgentSettings = z.infer<typeof userAgentSettingsSchema>;\nexport type UserMemory = z.infer<typeof userMemoriesSchema>['memories'][number];\ntype ToolsListResponse = z.infer<typeof toolsListResponseSchema>;\ntype SkillsListResponse = z.infer<typeof skillsListResponseSchema>;\ntype SandboxFileListing = z.infer<typeof sandboxFileListingSchema>;\ntype SandboxFileContent = z.infer<typeof sandboxFileContentSchema>;\ntype SandboxGitBranch = z.infer<typeof sandboxGitBranchSchema>;\ntype VotesResponse = z.infer<typeof votesResponseSchema>;\n\ntype UpdateAgentSettingsRequest = {\n customInstructions?: string | null;\n};\n\ntype UpdateUserAgentSettingsRequest = {\n customInstructions?: string | null;\n toolPermissions?: Record<string, z.infer<typeof toolPermissionValueSchema>> | null;\n};\n\ntype UpdateSpendCapsRequest = {\n projectCapPpu?: number | null;\n defaultUserLimitPpu?: number | null;\n};\n\nexport const createKaiAgentClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const clientOptions = {\n baseUrl,\n middlewares,\n headers: createAuthHeaders(auth),\n };\n\n const client = createOpenapiFetchClient<paths>(clientOptions);\n const genericClient = createGenericFetchClient(clientOptions);\n\n const getHistory = async (params?: GetHistoryQuery, signal?: AbortSignal) => {\n const { data } = await client.get('/api/history', { query: params }, { signal });\n return data;\n };\n\n const getChat = async (chatId: GetChatPath['id'], signal?: AbortSignal) => {\n const { data } = await client.get('/api/chat/{id}', { path: { id: chatId } }, { signal });\n return data;\n };\n\n const deleteChat = async (chatId: string) => {\n const { data } = await client.delete('/api/chat', { query: { id: chatId } });\n return data;\n };\n\n const createChat = async (request: ChatRequest) => {\n const { response } = await client.post('/api/chat', { body: request });\n return response;\n };\n\n const getVotes = async (chatId: GetVotesQuery['chatId']): Promise<VotesResponse> => {\n const { data } = await client.get('/api/vote', { query: { chatId } });\n\n const result = votesResponseSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid votes response format');\n }\n\n return result.data;\n };\n\n const submitVote = async (params: VoteRequest) => {\n await client.patch('/api/vote', { body: params });\n };\n\n /**\n * Every artifact a chat produced, oldest first.\n *\n * - Read-only by design: artifacts are derived server-side at the end of a turn, so there is\n * no write route to pair with this.\n * - The chat is the authorization — a chat the caller cannot read has no artifacts.\n */\n const getArtifacts = async (\n chatId: GetArtifactsQuery['chatId'],\n signal?: AbortSignal,\n ): Promise<ArtifactListResponse> => {\n const { data } = await client.get('/api/artifacts', { query: { chatId } }, { signal });\n return data;\n };\n\n const getArtifact = async (\n artifactId: GetArtifactPath['id'],\n signal?: AbortSignal,\n ): Promise<ArtifactResponse> => {\n const { data } = await client.get(\n '/api/artifacts/{id}',\n { path: { id: artifactId } },\n {\n signal,\n },\n );\n return data;\n };\n\n const getUsage = async (signal?: AbortSignal): Promise<UsageResponse> => {\n const { data } = await client.get('/api/usage', {}, { signal });\n // `freeAllowance` is ahead of the generated schema — a guard turns a missing field into `null`.\n const parsed = z\n .object({\n freeAllowance: z\n .object({ grantedPpu: z.number(), remainingPpu: z.number() })\n .nullable()\n .optional(),\n })\n .safeParse(data);\n const freeAllowance = parsed.success ? (parsed.data.freeAllowance ?? null) : null;\n return { ...data, freeAllowance };\n };\n\n const approveToolCall = async (chatId: string, body: ApprovalBody): Promise<void> => {\n await client.post('/api/chat/{id}/approval', { path: { id: chatId }, body });\n };\n\n const submitToolOutput = async (\n chatId: string,\n body: { toolUseId: string; output?: string; errorText?: string },\n ): Promise<void> => {\n await client.post('/api/chat/{id}/ui-tool-result', { path: { id: chatId }, body });\n };\n\n const stopChat = async (chatId: string): Promise<{ stopped: boolean }> => {\n const { data } = await client.post('/api/chat/{id}/stop', { path: { id: chatId } });\n return data;\n };\n\n /**\n * Ask the engine to build this chat's sandbox before a turn needs one.\n *\n * - The work continues after the response.\n * - A host that does not pre-warm answers 404, returned as `{ started: false }`.\n */\n const prepareChat = async (\n chatId: string,\n signal?: AbortSignal,\n body: PrepareChatRequest = {},\n ): Promise<{ started: boolean }> => {\n try {\n const { data } = await client.post(\n '/api/chat/{id}/prepare',\n { path: { id: chatId }, body },\n { signal },\n );\n return data;\n } catch (error) {\n // 404 = pre-warm not supported here.\n if (isApiError(error) && error.response.status === HttpStatus.NOT_FOUND) {\n return { started: false };\n }\n throw error;\n }\n };\n\n const getSuggestions = async (\n request: SuggestionsRequestBody,\n signal?: AbortSignal,\n ): Promise<SuggestionsApiResponse> => {\n const { data } = await client.post('/api/suggestions', { body: request }, { signal });\n return data;\n };\n\n const getAgentSettings = async (signal?: AbortSignal): Promise<AgentSettings> => {\n const { data } = await genericClient.get<AgentSettings>('/api/settings', {}, { signal });\n const result = agentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid agent settings response format');\n }\n return result.data;\n };\n\n const updateAgentSettings = async (\n request: UpdateAgentSettingsRequest,\n signal?: AbortSignal,\n ): Promise<AgentSettings> => {\n const { data } = await genericClient.patch<AgentSettings>(\n '/api/settings',\n { body: request },\n { signal },\n );\n const result = agentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid agent settings response format');\n }\n return result.data;\n };\n\n const updateProjectToolPolicy = async (\n toolPermissions: ProjectToolPolicy,\n signal?: AbortSignal,\n ): Promise<AgentSettings> => {\n const { data } = await genericClient.put<AgentSettings>(\n '/api/settings/tool-permissions',\n { body: { toolPermissions } },\n { signal },\n );\n const result = agentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid agent settings response format');\n }\n return result.data;\n };\n\n const getUserAgentSettings = async (signal?: AbortSignal): Promise<UserAgentSettings> => {\n const { data } = await genericClient.get<UserAgentSettings>(\n '/api/settings/user',\n {},\n { signal },\n );\n const result = userAgentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid user agent settings response format');\n }\n return result.data;\n };\n\n const updateUserAgentSettings = async (\n request: UpdateUserAgentSettingsRequest,\n signal?: AbortSignal,\n ): Promise<UserAgentSettings> => {\n const { data } = await genericClient.patch<UserAgentSettings>(\n '/api/settings/user',\n { body: request },\n { signal },\n );\n const result = userAgentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid user agent settings response format');\n }\n return result.data;\n };\n\n // Not in `__generated__/schema` yet, hence `genericClient` + zod, like the spend caps below.\n const getUserMemories = async (signal?: AbortSignal): Promise<UserMemory[]> => {\n const { data } = await genericClient.get('/api/settings/user/memories', {}, { signal });\n const result = userMemoriesSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid user memories response format');\n }\n return result.data.memories;\n };\n\n const deleteUserMemory = async (memoryId: string, signal?: AbortSignal): Promise<void> => {\n await genericClient.delete(\n `/api/settings/user/memories/${encodeURIComponent(memoryId)}`,\n {},\n { signal },\n );\n };\n\n // An older kai-agent omits `defaultProjectCapPpu`; fall back rather than throw.\n const withDefaultProjectCap = (view: z.infer<typeof spendCapsViewSchema>): SpendCapsView => ({\n ...view,\n defaultProjectCapPpu: view.defaultProjectCapPpu ?? view.effectiveProjectCapPpu,\n });\n\n // Not in `__generated__/schema` yet (see docs/regenerate-api-types.md), hence `genericClient`\n // + zod. Switch to `client.get('/api/settings/spend-caps')` once it regenerates.\n const getSpendCaps = async (signal?: AbortSignal): Promise<SpendCapsView> => {\n const { data } = await genericClient.get<SpendCapsView>(\n '/api/settings/spend-caps',\n {},\n { signal },\n );\n const result = spendCapsViewSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid spend caps response format');\n }\n return withDefaultProjectCap(result.data);\n };\n\n const updateSpendCaps = async (\n request: UpdateSpendCapsRequest,\n signal?: AbortSignal,\n ): Promise<SpendCapsView> => {\n const { data } = await genericClient.patch<SpendCapsView>(\n '/api/settings/spend-caps',\n { body: request },\n { signal },\n );\n const result = spendCapsViewSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid spend caps response format');\n }\n return withDefaultProjectCap(result.data);\n };\n\n const setUserSpendLimit = async (\n userId: string,\n overrideLimitPpu: number | null,\n signal?: AbortSignal,\n ): Promise<SpendCapMember> => {\n const { data } = await genericClient.put<SpendCapMember>(\n `/api/settings/spend-caps/users/${encodeURIComponent(userId)}`,\n { body: { overrideLimitPpu } },\n { signal },\n );\n const result = spendCapMemberSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid spend cap member response format');\n }\n return result.data;\n };\n\n const getToolsList = async (signal?: AbortSignal): Promise<ToolsListResponse> => {\n const { data } = await genericClient.get<ToolsListResponse>(\n '/api/settings/tools',\n {},\n { signal },\n );\n const result = toolsListResponseSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid tools list response format');\n }\n return result.data;\n };\n\n const getSkillsList = async (signal?: AbortSignal): Promise<SkillsListResponse> => {\n const { data } = await genericClient.get<SkillsListResponse>('/api/skills', {}, { signal });\n const result = skillsListResponseSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid skills list response format');\n }\n return result.data;\n };\n\n const listSandboxFiles = async (\n chatId: string,\n path?: string,\n signal?: AbortSignal,\n ): Promise<SandboxFileListing> => {\n const { data } = await genericClient.get<SandboxFileListing>(\n `/api/chat/${encodeURIComponent(chatId)}/sandbox/files`,\n { query: path ? { path } : undefined },\n { signal },\n );\n const result = sandboxFileListingSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid sandbox files response format');\n }\n return result.data;\n };\n\n const readSandboxFile = async (\n chatId: string,\n path: string,\n signal?: AbortSignal,\n ): Promise<SandboxFileContent> => {\n const { data } = await genericClient.get<SandboxFileContent>(\n `/api/chat/${encodeURIComponent(chatId)}/sandbox/file`,\n { query: { path } },\n { signal },\n );\n const result = sandboxFileContentSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid sandbox file response format');\n }\n return result.data;\n };\n\n const downloadSandboxFile = async (\n chatId: string,\n path: string,\n signal?: AbortSignal,\n ): Promise<Blob> => {\n // `parseData` returns a declared octet-stream body as a Blob, bytes intact.\n const { data } = await genericClient.get<Blob>(\n `/api/chat/${encodeURIComponent(chatId)}/sandbox/file/download`,\n { query: { path } },\n { signal },\n );\n if (!(data instanceof Blob)) {\n throw new Error('Invalid sandbox file download response format');\n }\n return data;\n };\n\n const getSandboxGitBranch = async (\n chatId: string,\n signal?: AbortSignal,\n ): Promise<SandboxGitBranch> => {\n const { data } = await genericClient.get<SandboxGitBranch>(\n `/api/chat/${encodeURIComponent(chatId)}/sandbox/git-branch`,\n {},\n { signal },\n );\n const result = sandboxGitBranchSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid sandbox git-branch response format');\n }\n return result.data;\n };\n\n const chatStreamUrl = clientOptions.baseUrl + '/api/chat';\n\n // `/health`, not `/ping`: it returns `{\"status\":\"ok\"}` like other services, not a timestamp.\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await genericClient.get('/health', {}, { signal });\n\n return data;\n };\n\n return {\n healthCheck,\n getHistory,\n getChat,\n deleteChat,\n createChat,\n getVotes,\n submitVote,\n getUsage,\n getArtifacts,\n getArtifact,\n approveToolCall,\n submitToolOutput,\n stopChat,\n prepareChat,\n getSuggestions,\n getAgentSettings,\n updateAgentSettings,\n updateProjectToolPolicy,\n getUserAgentSettings,\n updateUserAgentSettings,\n getUserMemories,\n deleteUserMemory,\n getSpendCaps,\n updateSpendCaps,\n setUserSpendLimit,\n getToolsList,\n getSkillsList,\n listSandboxFiles,\n readSandboxFile,\n downloadSandboxFile,\n getSandboxGitBranch,\n chatStreamUrl,\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kaiAgent-BhcUsBDk.cjs","names":["z","createAuthHeaders","createOpenapiFetchClient","createGenericFetchClient","isApiError","HttpStatus"],"sources":["../src/clients/kaiAgent/kaiAgentClient.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { createGenericFetchClient, createOpenapiFetchClient, isApiError } from '../../fetchClient';\nimport { HttpStatus } from '../../internal';\nimport { createAuthHeaders } from '../auth';\nimport type { SuggestionsApiResponse, SuggestionsRequestBody } from '../chat/suggestions';\nimport type { ProjectToolPolicy, ProjectToolPolicyValue } from '../chat/types';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type {\n ApprovalBody,\n ArtifactListResponse,\n ArtifactResponse,\n ChatRequest,\n GetArtifactPath,\n GetArtifactsQuery,\n GetChatPath,\n GetHistoryQuery,\n GetVotesQuery,\n PrepareChatRequest,\n UsageResponse,\n VoteRequest,\n} from './types';\n\nconst projectToolPolicyValueSchema: z.ZodType<ProjectToolPolicyValue> = z.enum([\n 'blocked',\n 'always_ask',\n]);\n\nconst agentSettingsSchema = z.object({\n projectId: z.string(),\n customInstructions: z.string().nullable(),\n toolPermissions: z.record(z.string(), projectToolPolicyValueSchema).nullable().optional(),\n canWriteToolPolicy: z.boolean().optional(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nconst toolPermissionValueSchema = z.enum(['always_allow', 'always_ask', 'blocked']);\n\nconst userAgentSettingsSchema = z.object({\n projectId: z.string(),\n userId: z.string(),\n customInstructions: z.string().nullable(),\n toolPermissions: z.record(z.string(), toolPermissionValueSchema).nullable(),\n projectToolPermissions: z.record(z.string(), projectToolPolicyValueSchema).nullable().optional(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nconst userMemoriesSchema = z.object({\n memories: z.array(z.object({ id: z.string(), content: z.string(), createdAt: z.string() })),\n});\n\nconst toolInfoSchema = z.object({\n name: z.string(),\n description: z.string(),\n readOnly: z.boolean(),\n});\n\nconst toolsListResponseSchema = z.object({\n tools: z.array(toolInfoSchema),\n});\n\nconst skillInfoSchema = z.object({\n name: z.string(),\n description: z.string().nullable(),\n source: z.enum(['first-party', 'vendored', 'project']),\n});\n\nconst builtInCommandSchema = z.object({\n name: z.string(),\n description: z.string(),\n});\n\nconst skillsListResponseSchema = z.object({\n skills: z.array(skillInfoSchema),\n commands: z.array(builtInCommandSchema),\n});\n\nconst sandboxFileEntrySchema = z.object({\n name: z.string(),\n path: z.string(),\n type: z.enum(['file', 'dir']),\n size: z.number().int().nonnegative().optional(),\n});\n\nconst sandboxFileListingSchema = z.object({\n entries: z.array(sandboxFileEntrySchema),\n});\n\nconst sandboxFileContentSchema = z.object({\n content: z.string(),\n encoding: z.enum(['utf-8', 'binary']),\n truncated: z.boolean(),\n size: z.number().int().nonnegative(),\n});\n\nconst sandboxGitBranchSchema = z.object({\n branch: z.string().nullable(),\n});\n\n// `userId` only: kai-agent cannot resolve project members. Join it against\n// `api.management.projects.getProjectUsers`.\nconst spendCapMemberSchema = z.object({\n userId: z.string(),\n overrideLimitPpu: z.number().nullable(),\n effectiveLimitPpu: z.number().nullable(),\n usedPpu: z.number(),\n overrideUpdatedAt: z.string().nullable(),\n overrideUpdatedByUserId: z.string().nullable(),\n});\n\nconst spendCapsViewSchema = z.object({\n // `null` = no configured cap, not unlimited — see `effectiveProjectCapPpu`.\n projectCapPpu: z.number().nullable(),\n // The enforced cap (`projectCapPpu` or kai-agent's DEFAULT_PROJECT_CAP_PPU).\n // Render this; `projectCapPpu` only tells configured from default.\n effectiveProjectCapPpu: z.number(),\n // Platform default regardless of what's saved; validates a cleared-but-unsaved field.\n // Optional on the wire (rollout skew); `withDefaultProjectCap` fills it in.\n defaultProjectCapPpu: z.number().optional(),\n defaultUserLimitPpu: z.number().nullable(),\n projectUsedPpu: z.number(),\n canWrite: z.boolean(),\n members: z.array(spendCapMemberSchema),\n updatedAt: z.string().nullable(),\n updatedByUserId: z.string().nullable(),\n});\n\nconst votesResponseSchema = z.array(\n z.object({\n chatId: z.string(),\n messageId: z.string(),\n isUpvoted: z.boolean(),\n }),\n);\n\nexport type SpendCapMember = z.infer<typeof spendCapMemberSchema>;\n// `defaultProjectCapPpu` is always present here — `getSpendCaps`/`updateSpendCaps` fill it in.\nexport type SpendCapsView = Omit<z.infer<typeof spendCapsViewSchema>, 'defaultProjectCapPpu'> & {\n defaultProjectCapPpu: number;\n};\nexport type AgentSettings = z.infer<typeof agentSettingsSchema>;\nexport type UserAgentSettings = z.infer<typeof userAgentSettingsSchema>;\nexport type UserMemory = z.infer<typeof userMemoriesSchema>['memories'][number];\ntype ToolsListResponse = z.infer<typeof toolsListResponseSchema>;\ntype SkillsListResponse = z.infer<typeof skillsListResponseSchema>;\ntype SandboxFileListing = z.infer<typeof sandboxFileListingSchema>;\ntype SandboxFileContent = z.infer<typeof sandboxFileContentSchema>;\ntype SandboxGitBranch = z.infer<typeof sandboxGitBranchSchema>;\ntype VotesResponse = z.infer<typeof votesResponseSchema>;\n\ntype UpdateAgentSettingsRequest = {\n customInstructions?: string | null;\n};\n\ntype UpdateUserAgentSettingsRequest = {\n customInstructions?: string | null;\n toolPermissions?: Record<string, z.infer<typeof toolPermissionValueSchema>> | null;\n};\n\ntype UpdateSpendCapsRequest = {\n projectCapPpu?: number | null;\n defaultUserLimitPpu?: number | null;\n};\n\nexport const createKaiAgentClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const clientOptions = {\n baseUrl,\n middlewares,\n headers: createAuthHeaders(auth),\n };\n\n const client = createOpenapiFetchClient<paths>(clientOptions);\n const genericClient = createGenericFetchClient(clientOptions);\n\n const getHistory = async (params?: GetHistoryQuery, signal?: AbortSignal) => {\n const { data } = await client.get('/api/history', { query: params }, { signal });\n return data;\n };\n\n const getChat = async (chatId: GetChatPath['id'], signal?: AbortSignal) => {\n const { data } = await client.get('/api/chat/{id}', { path: { id: chatId } }, { signal });\n return data;\n };\n\n const deleteChat = async (chatId: string) => {\n const { data } = await client.delete('/api/chat', { query: { id: chatId } });\n return data;\n };\n\n const createChat = async (request: ChatRequest) => {\n const { response } = await client.post('/api/chat', { body: request });\n return response;\n };\n\n const getVotes = async (chatId: GetVotesQuery['chatId']): Promise<VotesResponse> => {\n const { data } = await client.get('/api/vote', { query: { chatId } });\n\n const result = votesResponseSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid votes response format');\n }\n\n return result.data;\n };\n\n const submitVote = async (params: VoteRequest) => {\n await client.patch('/api/vote', { body: params });\n };\n\n /**\n * Every artifact a chat produced, oldest first.\n *\n * - Read-only by design: artifacts are derived server-side at the end of a turn, so there is\n * no write route to pair with this.\n * - The chat is the authorization — a chat the caller cannot read has no artifacts.\n */\n const getArtifacts = async (\n chatId: GetArtifactsQuery['chatId'],\n signal?: AbortSignal,\n ): Promise<ArtifactListResponse> => {\n const { data } = await client.get('/api/artifacts', { query: { chatId } }, { signal });\n return data;\n };\n\n const getArtifact = async (\n artifactId: GetArtifactPath['id'],\n signal?: AbortSignal,\n ): Promise<ArtifactResponse> => {\n const { data } = await client.get(\n '/api/artifacts/{id}',\n { path: { id: artifactId } },\n {\n signal,\n },\n );\n return data;\n };\n\n const getUsage = async (signal?: AbortSignal): Promise<UsageResponse> => {\n const { data } = await client.get('/api/usage', {}, { signal });\n // `freeAllowance` is ahead of the generated schema — a guard turns a missing field into `null`.\n const parsed = z\n .object({\n freeAllowance: z\n .object({ grantedPpu: z.number(), remainingPpu: z.number() })\n .nullable()\n .optional(),\n })\n .safeParse(data);\n const freeAllowance = parsed.success ? (parsed.data.freeAllowance ?? null) : null;\n return { ...data, freeAllowance };\n };\n\n const approveToolCall = async (chatId: string, body: ApprovalBody): Promise<void> => {\n await client.post('/api/chat/{id}/approval', { path: { id: chatId }, body });\n };\n\n const submitToolOutput = async (\n chatId: string,\n body: { toolUseId: string; output?: string; errorText?: string },\n ): Promise<void> => {\n await client.post('/api/chat/{id}/ui-tool-result', { path: { id: chatId }, body });\n };\n\n const stopChat = async (chatId: string): Promise<{ stopped: boolean }> => {\n const { data } = await client.post('/api/chat/{id}/stop', { path: { id: chatId } });\n return data;\n };\n\n /**\n * Ask the engine to build this chat's sandbox before a turn needs one.\n *\n * - The work continues after the response.\n * - A host that does not pre-warm answers 404, returned as `{ started: false }`.\n */\n const prepareChat = async (\n chatId: string,\n signal?: AbortSignal,\n body: PrepareChatRequest = {},\n ): Promise<{ started: boolean }> => {\n try {\n const { data } = await client.post(\n '/api/chat/{id}/prepare',\n { path: { id: chatId }, body },\n { signal },\n );\n return data;\n } catch (error) {\n // 404 = pre-warm not supported here.\n if (isApiError(error) && error.response.status === HttpStatus.NOT_FOUND) {\n return { started: false };\n }\n throw error;\n }\n };\n\n const getSuggestions = async (\n request: SuggestionsRequestBody,\n signal?: AbortSignal,\n ): Promise<SuggestionsApiResponse> => {\n const { data } = await client.post('/api/suggestions', { body: request }, { signal });\n return data;\n };\n\n const getAgentSettings = async (signal?: AbortSignal): Promise<AgentSettings> => {\n const { data } = await genericClient.get<AgentSettings>('/api/settings', {}, { signal });\n const result = agentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid agent settings response format');\n }\n return result.data;\n };\n\n const updateAgentSettings = async (\n request: UpdateAgentSettingsRequest,\n signal?: AbortSignal,\n ): Promise<AgentSettings> => {\n const { data } = await genericClient.patch<AgentSettings>(\n '/api/settings',\n { body: request },\n { signal },\n );\n const result = agentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid agent settings response format');\n }\n return result.data;\n };\n\n const updateProjectToolPolicy = async (\n toolPermissions: ProjectToolPolicy,\n signal?: AbortSignal,\n ): Promise<AgentSettings> => {\n const { data } = await genericClient.put<AgentSettings>(\n '/api/settings/tool-permissions',\n { body: { toolPermissions } },\n { signal },\n );\n const result = agentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid agent settings response format');\n }\n return result.data;\n };\n\n const getUserAgentSettings = async (signal?: AbortSignal): Promise<UserAgentSettings> => {\n const { data } = await genericClient.get<UserAgentSettings>(\n '/api/settings/user',\n {},\n { signal },\n );\n const result = userAgentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid user agent settings response format');\n }\n return result.data;\n };\n\n const updateUserAgentSettings = async (\n request: UpdateUserAgentSettingsRequest,\n signal?: AbortSignal,\n ): Promise<UserAgentSettings> => {\n const { data } = await genericClient.patch<UserAgentSettings>(\n '/api/settings/user',\n { body: request },\n { signal },\n );\n const result = userAgentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid user agent settings response format');\n }\n return result.data;\n };\n\n // Not in `__generated__/schema` yet, hence `genericClient` + zod, like the spend caps below.\n const getUserMemories = async (signal?: AbortSignal): Promise<UserMemory[]> => {\n const { data } = await genericClient.get('/api/settings/user/memories', {}, { signal });\n const result = userMemoriesSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid user memories response format');\n }\n return result.data.memories;\n };\n\n const deleteUserMemory = async (memoryId: string, signal?: AbortSignal): Promise<void> => {\n await genericClient.delete(\n `/api/settings/user/memories/${encodeURIComponent(memoryId)}`,\n {},\n { signal },\n );\n };\n\n // An older kai-agent omits `defaultProjectCapPpu`; fall back rather than throw.\n const withDefaultProjectCap = (view: z.infer<typeof spendCapsViewSchema>): SpendCapsView => ({\n ...view,\n defaultProjectCapPpu: view.defaultProjectCapPpu ?? view.effectiveProjectCapPpu,\n });\n\n // Not in `__generated__/schema` yet (see docs/regenerate-api-types.md), hence `genericClient`\n // + zod. Switch to `client.get('/api/settings/spend-caps')` once it regenerates.\n const getSpendCaps = async (signal?: AbortSignal): Promise<SpendCapsView> => {\n const { data } = await genericClient.get<SpendCapsView>(\n '/api/settings/spend-caps',\n {},\n { signal },\n );\n const result = spendCapsViewSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid spend caps response format');\n }\n return withDefaultProjectCap(result.data);\n };\n\n const updateSpendCaps = async (\n request: UpdateSpendCapsRequest,\n signal?: AbortSignal,\n ): Promise<SpendCapsView> => {\n const { data } = await genericClient.patch<SpendCapsView>(\n '/api/settings/spend-caps',\n { body: request },\n { signal },\n );\n const result = spendCapsViewSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid spend caps response format');\n }\n return withDefaultProjectCap(result.data);\n };\n\n const setUserSpendLimit = async (\n userId: string,\n overrideLimitPpu: number | null,\n signal?: AbortSignal,\n ): Promise<SpendCapMember> => {\n const { data } = await genericClient.put<SpendCapMember>(\n `/api/settings/spend-caps/users/${encodeURIComponent(userId)}`,\n { body: { overrideLimitPpu } },\n { signal },\n );\n const result = spendCapMemberSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid spend cap member response format');\n }\n return result.data;\n };\n\n const getToolsList = async (signal?: AbortSignal): Promise<ToolsListResponse> => {\n const { data } = await genericClient.get<ToolsListResponse>(\n '/api/settings/tools',\n {},\n { signal },\n );\n const result = toolsListResponseSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid tools list response format');\n }\n return result.data;\n };\n\n const getSkillsList = async (signal?: AbortSignal): Promise<SkillsListResponse> => {\n const { data } = await genericClient.get<SkillsListResponse>('/api/skills', {}, { signal });\n const result = skillsListResponseSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid skills list response format');\n }\n return result.data;\n };\n\n const listSandboxFiles = async (\n chatId: string,\n path?: string,\n signal?: AbortSignal,\n ): Promise<SandboxFileListing> => {\n const { data } = await genericClient.get<SandboxFileListing>(\n `/api/chat/${encodeURIComponent(chatId)}/sandbox/files`,\n { query: path ? { path } : undefined },\n { signal },\n );\n const result = sandboxFileListingSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid sandbox files response format');\n }\n return result.data;\n };\n\n const readSandboxFile = async (\n chatId: string,\n path: string,\n signal?: AbortSignal,\n ): Promise<SandboxFileContent> => {\n const { data } = await genericClient.get<SandboxFileContent>(\n `/api/chat/${encodeURIComponent(chatId)}/sandbox/file`,\n { query: { path } },\n { signal },\n );\n const result = sandboxFileContentSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid sandbox file response format');\n }\n return result.data;\n };\n\n const downloadSandboxFile = async (\n chatId: string,\n path: string,\n signal?: AbortSignal,\n ): Promise<Blob> => {\n // `parseData` returns a declared octet-stream body as a Blob, bytes intact.\n const { data } = await genericClient.get<Blob>(\n `/api/chat/${encodeURIComponent(chatId)}/sandbox/file/download`,\n { query: { path } },\n { signal },\n );\n if (!(data instanceof Blob)) {\n throw new Error('Invalid sandbox file download response format');\n }\n return data;\n };\n\n const getSandboxGitBranch = async (\n chatId: string,\n signal?: AbortSignal,\n ): Promise<SandboxGitBranch> => {\n const { data } = await genericClient.get<SandboxGitBranch>(\n `/api/chat/${encodeURIComponent(chatId)}/sandbox/git-branch`,\n {},\n { signal },\n );\n const result = sandboxGitBranchSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid sandbox git-branch response format');\n }\n return result.data;\n };\n\n const chatStreamUrl = clientOptions.baseUrl + '/api/chat';\n\n // `/health`, not `/ping`: it returns `{\"status\":\"ok\"}` like other services, not a timestamp.\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await genericClient.get('/health', {}, { signal });\n\n return data;\n };\n\n return {\n healthCheck,\n getHistory,\n getChat,\n deleteChat,\n createChat,\n getVotes,\n submitVote,\n getUsage,\n getArtifacts,\n getArtifact,\n approveToolCall,\n submitToolOutput,\n stopChat,\n prepareChat,\n getSuggestions,\n getAgentSettings,\n updateAgentSettings,\n updateProjectToolPolicy,\n getUserAgentSettings,\n updateUserAgentSettings,\n getUserMemories,\n deleteUserMemory,\n getSpendCaps,\n updateSpendCaps,\n setUserSpendLimit,\n getToolsList,\n getSkillsList,\n listSandboxFiles,\n readSandboxFile,\n downloadSandboxFile,\n getSandboxGitBranch,\n chatStreamUrl,\n };\n};\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as createGenericFetchClient } from "./createGenericFetchClient-
|
|
3
|
-
import { t as createOpenapiFetchClient } from "./createOpenapiFetchClient-
|
|
4
|
-
import { t as createAuthHeaders } from "./auth-
|
|
1
|
+
import { g as HttpStatus, r as isApiError } from "./createFetchClient-DITkTV2k.js";
|
|
2
|
+
import { t as createGenericFetchClient } from "./createGenericFetchClient-KqiJhw8G.js";
|
|
3
|
+
import { t as createOpenapiFetchClient } from "./createOpenapiFetchClient-wq8iGLZM.js";
|
|
4
|
+
import { t as createAuthHeaders } from "./auth-C6cHWIWx.js";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
//#region src/clients/kaiAgent/kaiAgentClient.ts
|
|
7
7
|
const projectToolPolicyValueSchema = z.enum(["blocked", "always_ask"]);
|
|
@@ -330,4 +330,4 @@ const createKaiAgentClient = ({ baseUrl, middlewares, auth }) => {
|
|
|
330
330
|
//#endregion
|
|
331
331
|
export { createKaiAgentClient as t };
|
|
332
332
|
|
|
333
|
-
//# sourceMappingURL=kaiAgent-
|
|
333
|
+
//# sourceMappingURL=kaiAgent-CUeT53-K.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kaiAgent-xBpUwLeQ.js","names":[],"sources":["../src/clients/kaiAgent/kaiAgentClient.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { createGenericFetchClient, createOpenapiFetchClient, isApiError } from '../../fetchClient';\nimport { HttpStatus } from '../../internal';\nimport { createAuthHeaders } from '../auth';\nimport type { SuggestionsApiResponse, SuggestionsRequestBody } from '../chat/suggestions';\nimport type { ProjectToolPolicy, ProjectToolPolicyValue } from '../chat/types';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type {\n ApprovalBody,\n ArtifactListResponse,\n ArtifactResponse,\n ChatRequest,\n GetArtifactPath,\n GetArtifactsQuery,\n GetChatPath,\n GetHistoryQuery,\n GetVotesQuery,\n PrepareChatRequest,\n UsageResponse,\n VoteRequest,\n} from './types';\n\nconst projectToolPolicyValueSchema: z.ZodType<ProjectToolPolicyValue> = z.enum([\n 'blocked',\n 'always_ask',\n]);\n\nconst agentSettingsSchema = z.object({\n projectId: z.string(),\n customInstructions: z.string().nullable(),\n toolPermissions: z.record(z.string(), projectToolPolicyValueSchema).nullable().optional(),\n canWriteToolPolicy: z.boolean().optional(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nconst toolPermissionValueSchema = z.enum(['always_allow', 'always_ask', 'blocked']);\n\nconst userAgentSettingsSchema = z.object({\n projectId: z.string(),\n userId: z.string(),\n customInstructions: z.string().nullable(),\n toolPermissions: z.record(z.string(), toolPermissionValueSchema).nullable(),\n projectToolPermissions: z.record(z.string(), projectToolPolicyValueSchema).nullable().optional(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nconst userMemoriesSchema = z.object({\n memories: z.array(z.object({ id: z.string(), content: z.string(), createdAt: z.string() })),\n});\n\nconst toolInfoSchema = z.object({\n name: z.string(),\n description: z.string(),\n readOnly: z.boolean(),\n});\n\nconst toolsListResponseSchema = z.object({\n tools: z.array(toolInfoSchema),\n});\n\nconst skillInfoSchema = z.object({\n name: z.string(),\n description: z.string().nullable(),\n source: z.enum(['first-party', 'vendored', 'project']),\n});\n\nconst builtInCommandSchema = z.object({\n name: z.string(),\n description: z.string(),\n});\n\nconst skillsListResponseSchema = z.object({\n skills: z.array(skillInfoSchema),\n commands: z.array(builtInCommandSchema),\n});\n\nconst sandboxFileEntrySchema = z.object({\n name: z.string(),\n path: z.string(),\n type: z.enum(['file', 'dir']),\n size: z.number().int().nonnegative().optional(),\n});\n\nconst sandboxFileListingSchema = z.object({\n entries: z.array(sandboxFileEntrySchema),\n});\n\nconst sandboxFileContentSchema = z.object({\n content: z.string(),\n encoding: z.enum(['utf-8', 'binary']),\n truncated: z.boolean(),\n size: z.number().int().nonnegative(),\n});\n\nconst sandboxGitBranchSchema = z.object({\n branch: z.string().nullable(),\n});\n\n// `userId` only: kai-agent cannot resolve project members. Join it against\n// `api.management.projects.getProjectUsers`.\nconst spendCapMemberSchema = z.object({\n userId: z.string(),\n overrideLimitPpu: z.number().nullable(),\n effectiveLimitPpu: z.number().nullable(),\n usedPpu: z.number(),\n overrideUpdatedAt: z.string().nullable(),\n overrideUpdatedByUserId: z.string().nullable(),\n});\n\nconst spendCapsViewSchema = z.object({\n // `null` = no configured cap, not unlimited — see `effectiveProjectCapPpu`.\n projectCapPpu: z.number().nullable(),\n // The enforced cap (`projectCapPpu` or kai-agent's DEFAULT_PROJECT_CAP_PPU).\n // Render this; `projectCapPpu` only tells configured from default.\n effectiveProjectCapPpu: z.number(),\n // Platform default regardless of what's saved; validates a cleared-but-unsaved field.\n // Optional on the wire (rollout skew); `withDefaultProjectCap` fills it in.\n defaultProjectCapPpu: z.number().optional(),\n defaultUserLimitPpu: z.number().nullable(),\n projectUsedPpu: z.number(),\n canWrite: z.boolean(),\n members: z.array(spendCapMemberSchema),\n updatedAt: z.string().nullable(),\n updatedByUserId: z.string().nullable(),\n});\n\nconst votesResponseSchema = z.array(\n z.object({\n chatId: z.string(),\n messageId: z.string(),\n isUpvoted: z.boolean(),\n }),\n);\n\nexport type SpendCapMember = z.infer<typeof spendCapMemberSchema>;\n// `defaultProjectCapPpu` is always present here — `getSpendCaps`/`updateSpendCaps` fill it in.\nexport type SpendCapsView = Omit<z.infer<typeof spendCapsViewSchema>, 'defaultProjectCapPpu'> & {\n defaultProjectCapPpu: number;\n};\nexport type AgentSettings = z.infer<typeof agentSettingsSchema>;\nexport type UserAgentSettings = z.infer<typeof userAgentSettingsSchema>;\nexport type UserMemory = z.infer<typeof userMemoriesSchema>['memories'][number];\ntype ToolsListResponse = z.infer<typeof toolsListResponseSchema>;\ntype SkillsListResponse = z.infer<typeof skillsListResponseSchema>;\ntype SandboxFileListing = z.infer<typeof sandboxFileListingSchema>;\ntype SandboxFileContent = z.infer<typeof sandboxFileContentSchema>;\ntype SandboxGitBranch = z.infer<typeof sandboxGitBranchSchema>;\ntype VotesResponse = z.infer<typeof votesResponseSchema>;\n\ntype UpdateAgentSettingsRequest = {\n customInstructions?: string | null;\n};\n\ntype UpdateUserAgentSettingsRequest = {\n customInstructions?: string | null;\n toolPermissions?: Record<string, z.infer<typeof toolPermissionValueSchema>> | null;\n};\n\ntype UpdateSpendCapsRequest = {\n projectCapPpu?: number | null;\n defaultUserLimitPpu?: number | null;\n};\n\nexport const createKaiAgentClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const clientOptions = {\n baseUrl,\n middlewares,\n headers: createAuthHeaders(auth),\n };\n\n const client = createOpenapiFetchClient<paths>(clientOptions);\n const genericClient = createGenericFetchClient(clientOptions);\n\n const getHistory = async (params?: GetHistoryQuery, signal?: AbortSignal) => {\n const { data } = await client.get('/api/history', { query: params }, { signal });\n return data;\n };\n\n const getChat = async (chatId: GetChatPath['id'], signal?: AbortSignal) => {\n const { data } = await client.get('/api/chat/{id}', { path: { id: chatId } }, { signal });\n return data;\n };\n\n const deleteChat = async (chatId: string) => {\n const { data } = await client.delete('/api/chat', { query: { id: chatId } });\n return data;\n };\n\n const createChat = async (request: ChatRequest) => {\n const { response } = await client.post('/api/chat', { body: request });\n return response;\n };\n\n const getVotes = async (chatId: GetVotesQuery['chatId']): Promise<VotesResponse> => {\n const { data } = await client.get('/api/vote', { query: { chatId } });\n\n const result = votesResponseSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid votes response format');\n }\n\n return result.data;\n };\n\n const submitVote = async (params: VoteRequest) => {\n await client.patch('/api/vote', { body: params });\n };\n\n /**\n * Every artifact a chat produced, oldest first.\n *\n * - Read-only by design: artifacts are derived server-side at the end of a turn, so there is\n * no write route to pair with this.\n * - The chat is the authorization — a chat the caller cannot read has no artifacts.\n */\n const getArtifacts = async (\n chatId: GetArtifactsQuery['chatId'],\n signal?: AbortSignal,\n ): Promise<ArtifactListResponse> => {\n const { data } = await client.get('/api/artifacts', { query: { chatId } }, { signal });\n return data;\n };\n\n const getArtifact = async (\n artifactId: GetArtifactPath['id'],\n signal?: AbortSignal,\n ): Promise<ArtifactResponse> => {\n const { data } = await client.get(\n '/api/artifacts/{id}',\n { path: { id: artifactId } },\n {\n signal,\n },\n );\n return data;\n };\n\n const getUsage = async (signal?: AbortSignal): Promise<UsageResponse> => {\n const { data } = await client.get('/api/usage', {}, { signal });\n // `freeAllowance` is ahead of the generated schema — a guard turns a missing field into `null`.\n const parsed = z\n .object({\n freeAllowance: z\n .object({ grantedPpu: z.number(), remainingPpu: z.number() })\n .nullable()\n .optional(),\n })\n .safeParse(data);\n const freeAllowance = parsed.success ? (parsed.data.freeAllowance ?? null) : null;\n return { ...data, freeAllowance };\n };\n\n const approveToolCall = async (chatId: string, body: ApprovalBody): Promise<void> => {\n await client.post('/api/chat/{id}/approval', { path: { id: chatId }, body });\n };\n\n const submitToolOutput = async (\n chatId: string,\n body: { toolUseId: string; output?: string; errorText?: string },\n ): Promise<void> => {\n await client.post('/api/chat/{id}/ui-tool-result', { path: { id: chatId }, body });\n };\n\n const stopChat = async (chatId: string): Promise<{ stopped: boolean }> => {\n const { data } = await client.post('/api/chat/{id}/stop', { path: { id: chatId } });\n return data;\n };\n\n /**\n * Ask the engine to build this chat's sandbox before a turn needs one.\n *\n * - The work continues after the response.\n * - A host that does not pre-warm answers 404, returned as `{ started: false }`.\n */\n const prepareChat = async (\n chatId: string,\n signal?: AbortSignal,\n body: PrepareChatRequest = {},\n ): Promise<{ started: boolean }> => {\n try {\n const { data } = await client.post(\n '/api/chat/{id}/prepare',\n { path: { id: chatId }, body },\n { signal },\n );\n return data;\n } catch (error) {\n // 404 = pre-warm not supported here.\n if (isApiError(error) && error.response.status === HttpStatus.NOT_FOUND) {\n return { started: false };\n }\n throw error;\n }\n };\n\n const getSuggestions = async (\n request: SuggestionsRequestBody,\n signal?: AbortSignal,\n ): Promise<SuggestionsApiResponse> => {\n const { data } = await client.post('/api/suggestions', { body: request }, { signal });\n return data;\n };\n\n const getAgentSettings = async (signal?: AbortSignal): Promise<AgentSettings> => {\n const { data } = await genericClient.get<AgentSettings>('/api/settings', {}, { signal });\n const result = agentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid agent settings response format');\n }\n return result.data;\n };\n\n const updateAgentSettings = async (\n request: UpdateAgentSettingsRequest,\n signal?: AbortSignal,\n ): Promise<AgentSettings> => {\n const { data } = await genericClient.patch<AgentSettings>(\n '/api/settings',\n { body: request },\n { signal },\n );\n const result = agentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid agent settings response format');\n }\n return result.data;\n };\n\n const updateProjectToolPolicy = async (\n toolPermissions: ProjectToolPolicy,\n signal?: AbortSignal,\n ): Promise<AgentSettings> => {\n const { data } = await genericClient.put<AgentSettings>(\n '/api/settings/tool-permissions',\n { body: { toolPermissions } },\n { signal },\n );\n const result = agentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid agent settings response format');\n }\n return result.data;\n };\n\n const getUserAgentSettings = async (signal?: AbortSignal): Promise<UserAgentSettings> => {\n const { data } = await genericClient.get<UserAgentSettings>(\n '/api/settings/user',\n {},\n { signal },\n );\n const result = userAgentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid user agent settings response format');\n }\n return result.data;\n };\n\n const updateUserAgentSettings = async (\n request: UpdateUserAgentSettingsRequest,\n signal?: AbortSignal,\n ): Promise<UserAgentSettings> => {\n const { data } = await genericClient.patch<UserAgentSettings>(\n '/api/settings/user',\n { body: request },\n { signal },\n );\n const result = userAgentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid user agent settings response format');\n }\n return result.data;\n };\n\n // Not in `__generated__/schema` yet, hence `genericClient` + zod, like the spend caps below.\n const getUserMemories = async (signal?: AbortSignal): Promise<UserMemory[]> => {\n const { data } = await genericClient.get('/api/settings/user/memories', {}, { signal });\n const result = userMemoriesSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid user memories response format');\n }\n return result.data.memories;\n };\n\n const deleteUserMemory = async (memoryId: string, signal?: AbortSignal): Promise<void> => {\n await genericClient.delete(\n `/api/settings/user/memories/${encodeURIComponent(memoryId)}`,\n {},\n { signal },\n );\n };\n\n // An older kai-agent omits `defaultProjectCapPpu`; fall back rather than throw.\n const withDefaultProjectCap = (view: z.infer<typeof spendCapsViewSchema>): SpendCapsView => ({\n ...view,\n defaultProjectCapPpu: view.defaultProjectCapPpu ?? view.effectiveProjectCapPpu,\n });\n\n // Not in `__generated__/schema` yet (see docs/regenerate-api-types.md), hence `genericClient`\n // + zod. Switch to `client.get('/api/settings/spend-caps')` once it regenerates.\n const getSpendCaps = async (signal?: AbortSignal): Promise<SpendCapsView> => {\n const { data } = await genericClient.get<SpendCapsView>(\n '/api/settings/spend-caps',\n {},\n { signal },\n );\n const result = spendCapsViewSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid spend caps response format');\n }\n return withDefaultProjectCap(result.data);\n };\n\n const updateSpendCaps = async (\n request: UpdateSpendCapsRequest,\n signal?: AbortSignal,\n ): Promise<SpendCapsView> => {\n const { data } = await genericClient.patch<SpendCapsView>(\n '/api/settings/spend-caps',\n { body: request },\n { signal },\n );\n const result = spendCapsViewSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid spend caps response format');\n }\n return withDefaultProjectCap(result.data);\n };\n\n const setUserSpendLimit = async (\n userId: string,\n overrideLimitPpu: number | null,\n signal?: AbortSignal,\n ): Promise<SpendCapMember> => {\n const { data } = await genericClient.put<SpendCapMember>(\n `/api/settings/spend-caps/users/${encodeURIComponent(userId)}`,\n { body: { overrideLimitPpu } },\n { signal },\n );\n const result = spendCapMemberSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid spend cap member response format');\n }\n return result.data;\n };\n\n const getToolsList = async (signal?: AbortSignal): Promise<ToolsListResponse> => {\n const { data } = await genericClient.get<ToolsListResponse>(\n '/api/settings/tools',\n {},\n { signal },\n );\n const result = toolsListResponseSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid tools list response format');\n }\n return result.data;\n };\n\n const getSkillsList = async (signal?: AbortSignal): Promise<SkillsListResponse> => {\n const { data } = await genericClient.get<SkillsListResponse>('/api/skills', {}, { signal });\n const result = skillsListResponseSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid skills list response format');\n }\n return result.data;\n };\n\n const listSandboxFiles = async (\n chatId: string,\n path?: string,\n signal?: AbortSignal,\n ): Promise<SandboxFileListing> => {\n const { data } = await genericClient.get<SandboxFileListing>(\n `/api/chat/${encodeURIComponent(chatId)}/sandbox/files`,\n { query: path ? { path } : undefined },\n { signal },\n );\n const result = sandboxFileListingSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid sandbox files response format');\n }\n return result.data;\n };\n\n const readSandboxFile = async (\n chatId: string,\n path: string,\n signal?: AbortSignal,\n ): Promise<SandboxFileContent> => {\n const { data } = await genericClient.get<SandboxFileContent>(\n `/api/chat/${encodeURIComponent(chatId)}/sandbox/file`,\n { query: { path } },\n { signal },\n );\n const result = sandboxFileContentSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid sandbox file response format');\n }\n return result.data;\n };\n\n const downloadSandboxFile = async (\n chatId: string,\n path: string,\n signal?: AbortSignal,\n ): Promise<Blob> => {\n // `parseData` returns a declared octet-stream body as a Blob, bytes intact.\n const { data } = await genericClient.get<Blob>(\n `/api/chat/${encodeURIComponent(chatId)}/sandbox/file/download`,\n { query: { path } },\n { signal },\n );\n if (!(data instanceof Blob)) {\n throw new Error('Invalid sandbox file download response format');\n }\n return data;\n };\n\n const getSandboxGitBranch = async (\n chatId: string,\n signal?: AbortSignal,\n ): Promise<SandboxGitBranch> => {\n const { data } = await genericClient.get<SandboxGitBranch>(\n `/api/chat/${encodeURIComponent(chatId)}/sandbox/git-branch`,\n {},\n { signal },\n );\n const result = sandboxGitBranchSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid sandbox git-branch response format');\n }\n return result.data;\n };\n\n const chatStreamUrl = clientOptions.baseUrl + '/api/chat';\n\n // `/health`, not `/ping`: it returns `{\"status\":\"ok\"}` like other services, not a timestamp.\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await genericClient.get('/health', {}, { signal });\n\n return data;\n };\n\n return {\n healthCheck,\n getHistory,\n getChat,\n deleteChat,\n createChat,\n getVotes,\n submitVote,\n getUsage,\n getArtifacts,\n getArtifact,\n approveToolCall,\n submitToolOutput,\n stopChat,\n prepareChat,\n getSuggestions,\n getAgentSettings,\n updateAgentSettings,\n updateProjectToolPolicy,\n getUserAgentSettings,\n updateUserAgentSettings,\n getUserMemories,\n deleteUserMemory,\n getSpendCaps,\n updateSpendCaps,\n setUserSpendLimit,\n getToolsList,\n getSkillsList,\n listSandboxFiles,\n readSandboxFile,\n downloadSandboxFile,\n getSandboxGitBranch,\n chatStreamUrl,\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kaiAgent-CUeT53-K.js","names":[],"sources":["../src/clients/kaiAgent/kaiAgentClient.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { createGenericFetchClient, createOpenapiFetchClient, isApiError } from '../../fetchClient';\nimport { HttpStatus } from '../../internal';\nimport { createAuthHeaders } from '../auth';\nimport type { SuggestionsApiResponse, SuggestionsRequestBody } from '../chat/suggestions';\nimport type { ProjectToolPolicy, ProjectToolPolicyValue } from '../chat/types';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type {\n ApprovalBody,\n ArtifactListResponse,\n ArtifactResponse,\n ChatRequest,\n GetArtifactPath,\n GetArtifactsQuery,\n GetChatPath,\n GetHistoryQuery,\n GetVotesQuery,\n PrepareChatRequest,\n UsageResponse,\n VoteRequest,\n} from './types';\n\nconst projectToolPolicyValueSchema: z.ZodType<ProjectToolPolicyValue> = z.enum([\n 'blocked',\n 'always_ask',\n]);\n\nconst agentSettingsSchema = z.object({\n projectId: z.string(),\n customInstructions: z.string().nullable(),\n toolPermissions: z.record(z.string(), projectToolPolicyValueSchema).nullable().optional(),\n canWriteToolPolicy: z.boolean().optional(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nconst toolPermissionValueSchema = z.enum(['always_allow', 'always_ask', 'blocked']);\n\nconst userAgentSettingsSchema = z.object({\n projectId: z.string(),\n userId: z.string(),\n customInstructions: z.string().nullable(),\n toolPermissions: z.record(z.string(), toolPermissionValueSchema).nullable(),\n projectToolPermissions: z.record(z.string(), projectToolPolicyValueSchema).nullable().optional(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nconst userMemoriesSchema = z.object({\n memories: z.array(z.object({ id: z.string(), content: z.string(), createdAt: z.string() })),\n});\n\nconst toolInfoSchema = z.object({\n name: z.string(),\n description: z.string(),\n readOnly: z.boolean(),\n});\n\nconst toolsListResponseSchema = z.object({\n tools: z.array(toolInfoSchema),\n});\n\nconst skillInfoSchema = z.object({\n name: z.string(),\n description: z.string().nullable(),\n source: z.enum(['first-party', 'vendored', 'project']),\n});\n\nconst builtInCommandSchema = z.object({\n name: z.string(),\n description: z.string(),\n});\n\nconst skillsListResponseSchema = z.object({\n skills: z.array(skillInfoSchema),\n commands: z.array(builtInCommandSchema),\n});\n\nconst sandboxFileEntrySchema = z.object({\n name: z.string(),\n path: z.string(),\n type: z.enum(['file', 'dir']),\n size: z.number().int().nonnegative().optional(),\n});\n\nconst sandboxFileListingSchema = z.object({\n entries: z.array(sandboxFileEntrySchema),\n});\n\nconst sandboxFileContentSchema = z.object({\n content: z.string(),\n encoding: z.enum(['utf-8', 'binary']),\n truncated: z.boolean(),\n size: z.number().int().nonnegative(),\n});\n\nconst sandboxGitBranchSchema = z.object({\n branch: z.string().nullable(),\n});\n\n// `userId` only: kai-agent cannot resolve project members. Join it against\n// `api.management.projects.getProjectUsers`.\nconst spendCapMemberSchema = z.object({\n userId: z.string(),\n overrideLimitPpu: z.number().nullable(),\n effectiveLimitPpu: z.number().nullable(),\n usedPpu: z.number(),\n overrideUpdatedAt: z.string().nullable(),\n overrideUpdatedByUserId: z.string().nullable(),\n});\n\nconst spendCapsViewSchema = z.object({\n // `null` = no configured cap, not unlimited — see `effectiveProjectCapPpu`.\n projectCapPpu: z.number().nullable(),\n // The enforced cap (`projectCapPpu` or kai-agent's DEFAULT_PROJECT_CAP_PPU).\n // Render this; `projectCapPpu` only tells configured from default.\n effectiveProjectCapPpu: z.number(),\n // Platform default regardless of what's saved; validates a cleared-but-unsaved field.\n // Optional on the wire (rollout skew); `withDefaultProjectCap` fills it in.\n defaultProjectCapPpu: z.number().optional(),\n defaultUserLimitPpu: z.number().nullable(),\n projectUsedPpu: z.number(),\n canWrite: z.boolean(),\n members: z.array(spendCapMemberSchema),\n updatedAt: z.string().nullable(),\n updatedByUserId: z.string().nullable(),\n});\n\nconst votesResponseSchema = z.array(\n z.object({\n chatId: z.string(),\n messageId: z.string(),\n isUpvoted: z.boolean(),\n }),\n);\n\nexport type SpendCapMember = z.infer<typeof spendCapMemberSchema>;\n// `defaultProjectCapPpu` is always present here — `getSpendCaps`/`updateSpendCaps` fill it in.\nexport type SpendCapsView = Omit<z.infer<typeof spendCapsViewSchema>, 'defaultProjectCapPpu'> & {\n defaultProjectCapPpu: number;\n};\nexport type AgentSettings = z.infer<typeof agentSettingsSchema>;\nexport type UserAgentSettings = z.infer<typeof userAgentSettingsSchema>;\nexport type UserMemory = z.infer<typeof userMemoriesSchema>['memories'][number];\ntype ToolsListResponse = z.infer<typeof toolsListResponseSchema>;\ntype SkillsListResponse = z.infer<typeof skillsListResponseSchema>;\ntype SandboxFileListing = z.infer<typeof sandboxFileListingSchema>;\ntype SandboxFileContent = z.infer<typeof sandboxFileContentSchema>;\ntype SandboxGitBranch = z.infer<typeof sandboxGitBranchSchema>;\ntype VotesResponse = z.infer<typeof votesResponseSchema>;\n\ntype UpdateAgentSettingsRequest = {\n customInstructions?: string | null;\n};\n\ntype UpdateUserAgentSettingsRequest = {\n customInstructions?: string | null;\n toolPermissions?: Record<string, z.infer<typeof toolPermissionValueSchema>> | null;\n};\n\ntype UpdateSpendCapsRequest = {\n projectCapPpu?: number | null;\n defaultUserLimitPpu?: number | null;\n};\n\nexport const createKaiAgentClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const clientOptions = {\n baseUrl,\n middlewares,\n headers: createAuthHeaders(auth),\n };\n\n const client = createOpenapiFetchClient<paths>(clientOptions);\n const genericClient = createGenericFetchClient(clientOptions);\n\n const getHistory = async (params?: GetHistoryQuery, signal?: AbortSignal) => {\n const { data } = await client.get('/api/history', { query: params }, { signal });\n return data;\n };\n\n const getChat = async (chatId: GetChatPath['id'], signal?: AbortSignal) => {\n const { data } = await client.get('/api/chat/{id}', { path: { id: chatId } }, { signal });\n return data;\n };\n\n const deleteChat = async (chatId: string) => {\n const { data } = await client.delete('/api/chat', { query: { id: chatId } });\n return data;\n };\n\n const createChat = async (request: ChatRequest) => {\n const { response } = await client.post('/api/chat', { body: request });\n return response;\n };\n\n const getVotes = async (chatId: GetVotesQuery['chatId']): Promise<VotesResponse> => {\n const { data } = await client.get('/api/vote', { query: { chatId } });\n\n const result = votesResponseSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid votes response format');\n }\n\n return result.data;\n };\n\n const submitVote = async (params: VoteRequest) => {\n await client.patch('/api/vote', { body: params });\n };\n\n /**\n * Every artifact a chat produced, oldest first.\n *\n * - Read-only by design: artifacts are derived server-side at the end of a turn, so there is\n * no write route to pair with this.\n * - The chat is the authorization — a chat the caller cannot read has no artifacts.\n */\n const getArtifacts = async (\n chatId: GetArtifactsQuery['chatId'],\n signal?: AbortSignal,\n ): Promise<ArtifactListResponse> => {\n const { data } = await client.get('/api/artifacts', { query: { chatId } }, { signal });\n return data;\n };\n\n const getArtifact = async (\n artifactId: GetArtifactPath['id'],\n signal?: AbortSignal,\n ): Promise<ArtifactResponse> => {\n const { data } = await client.get(\n '/api/artifacts/{id}',\n { path: { id: artifactId } },\n {\n signal,\n },\n );\n return data;\n };\n\n const getUsage = async (signal?: AbortSignal): Promise<UsageResponse> => {\n const { data } = await client.get('/api/usage', {}, { signal });\n // `freeAllowance` is ahead of the generated schema — a guard turns a missing field into `null`.\n const parsed = z\n .object({\n freeAllowance: z\n .object({ grantedPpu: z.number(), remainingPpu: z.number() })\n .nullable()\n .optional(),\n })\n .safeParse(data);\n const freeAllowance = parsed.success ? (parsed.data.freeAllowance ?? null) : null;\n return { ...data, freeAllowance };\n };\n\n const approveToolCall = async (chatId: string, body: ApprovalBody): Promise<void> => {\n await client.post('/api/chat/{id}/approval', { path: { id: chatId }, body });\n };\n\n const submitToolOutput = async (\n chatId: string,\n body: { toolUseId: string; output?: string; errorText?: string },\n ): Promise<void> => {\n await client.post('/api/chat/{id}/ui-tool-result', { path: { id: chatId }, body });\n };\n\n const stopChat = async (chatId: string): Promise<{ stopped: boolean }> => {\n const { data } = await client.post('/api/chat/{id}/stop', { path: { id: chatId } });\n return data;\n };\n\n /**\n * Ask the engine to build this chat's sandbox before a turn needs one.\n *\n * - The work continues after the response.\n * - A host that does not pre-warm answers 404, returned as `{ started: false }`.\n */\n const prepareChat = async (\n chatId: string,\n signal?: AbortSignal,\n body: PrepareChatRequest = {},\n ): Promise<{ started: boolean }> => {\n try {\n const { data } = await client.post(\n '/api/chat/{id}/prepare',\n { path: { id: chatId }, body },\n { signal },\n );\n return data;\n } catch (error) {\n // 404 = pre-warm not supported here.\n if (isApiError(error) && error.response.status === HttpStatus.NOT_FOUND) {\n return { started: false };\n }\n throw error;\n }\n };\n\n const getSuggestions = async (\n request: SuggestionsRequestBody,\n signal?: AbortSignal,\n ): Promise<SuggestionsApiResponse> => {\n const { data } = await client.post('/api/suggestions', { body: request }, { signal });\n return data;\n };\n\n const getAgentSettings = async (signal?: AbortSignal): Promise<AgentSettings> => {\n const { data } = await genericClient.get<AgentSettings>('/api/settings', {}, { signal });\n const result = agentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid agent settings response format');\n }\n return result.data;\n };\n\n const updateAgentSettings = async (\n request: UpdateAgentSettingsRequest,\n signal?: AbortSignal,\n ): Promise<AgentSettings> => {\n const { data } = await genericClient.patch<AgentSettings>(\n '/api/settings',\n { body: request },\n { signal },\n );\n const result = agentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid agent settings response format');\n }\n return result.data;\n };\n\n const updateProjectToolPolicy = async (\n toolPermissions: ProjectToolPolicy,\n signal?: AbortSignal,\n ): Promise<AgentSettings> => {\n const { data } = await genericClient.put<AgentSettings>(\n '/api/settings/tool-permissions',\n { body: { toolPermissions } },\n { signal },\n );\n const result = agentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid agent settings response format');\n }\n return result.data;\n };\n\n const getUserAgentSettings = async (signal?: AbortSignal): Promise<UserAgentSettings> => {\n const { data } = await genericClient.get<UserAgentSettings>(\n '/api/settings/user',\n {},\n { signal },\n );\n const result = userAgentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid user agent settings response format');\n }\n return result.data;\n };\n\n const updateUserAgentSettings = async (\n request: UpdateUserAgentSettingsRequest,\n signal?: AbortSignal,\n ): Promise<UserAgentSettings> => {\n const { data } = await genericClient.patch<UserAgentSettings>(\n '/api/settings/user',\n { body: request },\n { signal },\n );\n const result = userAgentSettingsSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid user agent settings response format');\n }\n return result.data;\n };\n\n // Not in `__generated__/schema` yet, hence `genericClient` + zod, like the spend caps below.\n const getUserMemories = async (signal?: AbortSignal): Promise<UserMemory[]> => {\n const { data } = await genericClient.get('/api/settings/user/memories', {}, { signal });\n const result = userMemoriesSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid user memories response format');\n }\n return result.data.memories;\n };\n\n const deleteUserMemory = async (memoryId: string, signal?: AbortSignal): Promise<void> => {\n await genericClient.delete(\n `/api/settings/user/memories/${encodeURIComponent(memoryId)}`,\n {},\n { signal },\n );\n };\n\n // An older kai-agent omits `defaultProjectCapPpu`; fall back rather than throw.\n const withDefaultProjectCap = (view: z.infer<typeof spendCapsViewSchema>): SpendCapsView => ({\n ...view,\n defaultProjectCapPpu: view.defaultProjectCapPpu ?? view.effectiveProjectCapPpu,\n });\n\n // Not in `__generated__/schema` yet (see docs/regenerate-api-types.md), hence `genericClient`\n // + zod. Switch to `client.get('/api/settings/spend-caps')` once it regenerates.\n const getSpendCaps = async (signal?: AbortSignal): Promise<SpendCapsView> => {\n const { data } = await genericClient.get<SpendCapsView>(\n '/api/settings/spend-caps',\n {},\n { signal },\n );\n const result = spendCapsViewSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid spend caps response format');\n }\n return withDefaultProjectCap(result.data);\n };\n\n const updateSpendCaps = async (\n request: UpdateSpendCapsRequest,\n signal?: AbortSignal,\n ): Promise<SpendCapsView> => {\n const { data } = await genericClient.patch<SpendCapsView>(\n '/api/settings/spend-caps',\n { body: request },\n { signal },\n );\n const result = spendCapsViewSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid spend caps response format');\n }\n return withDefaultProjectCap(result.data);\n };\n\n const setUserSpendLimit = async (\n userId: string,\n overrideLimitPpu: number | null,\n signal?: AbortSignal,\n ): Promise<SpendCapMember> => {\n const { data } = await genericClient.put<SpendCapMember>(\n `/api/settings/spend-caps/users/${encodeURIComponent(userId)}`,\n { body: { overrideLimitPpu } },\n { signal },\n );\n const result = spendCapMemberSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid spend cap member response format');\n }\n return result.data;\n };\n\n const getToolsList = async (signal?: AbortSignal): Promise<ToolsListResponse> => {\n const { data } = await genericClient.get<ToolsListResponse>(\n '/api/settings/tools',\n {},\n { signal },\n );\n const result = toolsListResponseSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid tools list response format');\n }\n return result.data;\n };\n\n const getSkillsList = async (signal?: AbortSignal): Promise<SkillsListResponse> => {\n const { data } = await genericClient.get<SkillsListResponse>('/api/skills', {}, { signal });\n const result = skillsListResponseSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid skills list response format');\n }\n return result.data;\n };\n\n const listSandboxFiles = async (\n chatId: string,\n path?: string,\n signal?: AbortSignal,\n ): Promise<SandboxFileListing> => {\n const { data } = await genericClient.get<SandboxFileListing>(\n `/api/chat/${encodeURIComponent(chatId)}/sandbox/files`,\n { query: path ? { path } : undefined },\n { signal },\n );\n const result = sandboxFileListingSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid sandbox files response format');\n }\n return result.data;\n };\n\n const readSandboxFile = async (\n chatId: string,\n path: string,\n signal?: AbortSignal,\n ): Promise<SandboxFileContent> => {\n const { data } = await genericClient.get<SandboxFileContent>(\n `/api/chat/${encodeURIComponent(chatId)}/sandbox/file`,\n { query: { path } },\n { signal },\n );\n const result = sandboxFileContentSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid sandbox file response format');\n }\n return result.data;\n };\n\n const downloadSandboxFile = async (\n chatId: string,\n path: string,\n signal?: AbortSignal,\n ): Promise<Blob> => {\n // `parseData` returns a declared octet-stream body as a Blob, bytes intact.\n const { data } = await genericClient.get<Blob>(\n `/api/chat/${encodeURIComponent(chatId)}/sandbox/file/download`,\n { query: { path } },\n { signal },\n );\n if (!(data instanceof Blob)) {\n throw new Error('Invalid sandbox file download response format');\n }\n return data;\n };\n\n const getSandboxGitBranch = async (\n chatId: string,\n signal?: AbortSignal,\n ): Promise<SandboxGitBranch> => {\n const { data } = await genericClient.get<SandboxGitBranch>(\n `/api/chat/${encodeURIComponent(chatId)}/sandbox/git-branch`,\n {},\n { signal },\n );\n const result = sandboxGitBranchSchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid sandbox git-branch response format');\n }\n return result.data;\n };\n\n const chatStreamUrl = clientOptions.baseUrl + '/api/chat';\n\n // `/health`, not `/ping`: it returns `{\"status\":\"ok\"}` like other services, not a timestamp.\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await genericClient.get('/health', {}, { signal });\n\n return data;\n };\n\n return {\n healthCheck,\n getHistory,\n getChat,\n deleteChat,\n createChat,\n getVotes,\n submitVote,\n getUsage,\n getArtifacts,\n getArtifact,\n approveToolCall,\n submitToolOutput,\n stopChat,\n prepareChat,\n getSuggestions,\n getAgentSettings,\n updateAgentSettings,\n updateProjectToolPolicy,\n getUserAgentSettings,\n updateUserAgentSettings,\n getUserMemories,\n deleteUserMemory,\n getSpendCaps,\n updateSpendCaps,\n setUserSpendLimit,\n getToolsList,\n getSkillsList,\n listSandboxFiles,\n readSandboxFile,\n downloadSandboxFile,\n getSandboxGitBranch,\n chatStreamUrl,\n };\n};\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_createFetchClient = require("./createFetchClient-
|
|
1
|
+
const require_createFetchClient = require("./createFetchClient-ClWD4ua3.cjs");
|
|
2
2
|
const require_ValidationError = require("./ValidationError-D65QU0uq.cjs");
|
|
3
3
|
let zod = require("zod");
|
|
4
4
|
//#region src/sdks/kaiMemory/vocabulary.ts
|
|
@@ -286,4 +286,4 @@ Object.defineProperty(exports, "createKaiMemorySdk", {
|
|
|
286
286
|
}
|
|
287
287
|
});
|
|
288
288
|
|
|
289
|
-
//# sourceMappingURL=kaiMemory-
|
|
289
|
+
//# sourceMappingURL=kaiMemory-Cf81ghNd.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kaiMemory-U0DG-CpY.cjs","names":["z","formatValidationIssues","isApiError","HttpStatus","parseOrThrow","z"],"sources":["../src/sdks/kaiMemory/vocabulary.ts","../src/sdks/kaiMemory/readSchemas.ts","../src/sdks/kaiMemory/kaiMemorySdk.ts"],"sourcesContent":["/**\n * The closed value set a `kai-memory` object's `status` accepts.\n *\n * A single runtime source for the union in `./types`, mirroring\n * `sdks/semanticLayer/vocabulary.ts`'s pattern — a value cannot exist in the type and be\n * missing from the list a validator or a UI dropdown is built from.\n */\nexport const KAI_MEMORY_STATUSES = ['pending', 'approved', 'rejected'] as const;\n","import { z } from 'zod';\n\nimport type { KaiMemoryData, KaiMemoryMeta } from './types';\nimport { KAI_MEMORY_STATUSES } from './vocabulary';\n\n/**\n * What a read of the metastore is allowed to hand back for a `kai-memory` object — see\n * `sdks/semanticLayer/readSchemas.ts` for the `looseObject` reasoning this mirrors.\n *\n * `status` drops as unrecognized rather than passing through: an item this SDK cannot classify\n * as pending/approved/rejected must never be treated as any of them, in particular `approved`.\n */\nconst kaiMemoryReadSchema: z.ZodType<KaiMemoryData, unknown> = z.looseObject({\n content: z.string(),\n status: z.enum(KAI_MEMORY_STATUSES),\n chatId: z.string(),\n createdBy: z.string().optional(),\n});\n\nconst kaiMemoryMetaSchema: z.ZodType<KaiMemoryMeta, unknown> = z.looseObject({\n name: z.string().optional(),\n branch: z.string().optional(),\n projectId: z.number().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});\n\n/**\n * The envelope every read comes wrapped in, mapped to the `KaiMemoryItem` the SDK returns. `meta`\n * absent or `null` both normalize to `{}` — see `semanticObjectReadSchema` for why an envelope\n * omitting audit fields is a normalization, not a failure.\n */\nexport const kaiMemoryItemReadSchema = z\n .object({\n id: z.string(),\n attributes: kaiMemoryReadSchema,\n meta: kaiMemoryMetaSchema.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';\n\nimport { kaiMemoryItemReadSchema } from './readSchemas';\nimport type {\n CreateKaiMemoryMeta,\n KaiMemoryData,\n KaiMemoryItem,\n KaiMemoryStatus,\n MetastoreClient,\n UpdateKaiMemoryMeta,\n} from './types';\n\n/** The metastore object type this SDK addresses — see `SEMANTIC_OBJECT_TYPE` for the convention. */\nexport const KAI_MEMORY_OBJECT_TYPE = 'kai-memory';\n\nconst DEFAULT_BRANCH = 'main';\n\n/**\n * The live metastore envelope for a write response — see `RawSemanticObject` in\n * `sdks/semanticLayer/semanticLayerSdk.ts` for why a write asserts this shape rather than parsing\n * it: the metastore is echoing back the object it has just validated and stored.\n */\ntype RawKaiMemoryObject = {\n type: string;\n id: string;\n attributes: KaiMemoryData;\n meta: KaiMemoryItem['meta'];\n};\n\nconst mapObject = (item: RawKaiMemoryObject): KaiMemoryItem => ({\n uuid: item.id,\n data: item.attributes,\n meta: item.meta,\n});\n\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/**\n * Thrown by `getItemsByStatusStrict` when any `kai-memory` item — of any status, not only the\n * one asked for — could not be parsed. See that function's docstring for why an unreadable item\n * anywhere in the collection fails the whole read rather than being dropped.\n */\nexport class KaiMemoryUnreadableItemsError extends Error {\n readonly unreadableIds: string[];\n\n constructor(unreadableIds: string[]) {\n super(\n `${unreadableIds.length} kai-memory item(s) could not be read, so the knowledge base ` +\n `cannot be treated as complete.`,\n );\n this.name = 'KaiMemoryUnreadableItemsError';\n this.unreadableIds = unreadableIds;\n }\n}\n\n/**\n * Thrown by `updateStatus` when the item is no longer `pending` at write time — see that\n * function's docstring for the race it closes.\n */\nexport class KaiMemoryReviewConflictError extends Error {\n readonly uuid: string;\n readonly currentStatus: KaiMemoryStatus;\n\n constructor(uuid: string, currentStatus: KaiMemoryStatus) {\n super(\n `This note was already reviewed (now \"${currentStatus}\") — refusing to overwrite a ` +\n `decision someone else already made.`,\n );\n this.name = 'KaiMemoryReviewConflictError';\n this.uuid = uuid;\n this.currentStatus = currentStatus;\n }\n}\n\ntype ParsedObjects = {\n objects: KaiMemoryItem[];\n /** Envelope ids (or `<no id>`) of items that did not match `kaiMemoryItemReadSchema`. */\n unreadableIds: string[];\n};\n\n/** Shared parse loop behind `getItems` (drops and logs) and `getItemsByStatusStrict` (fails). */\nconst parseObjects = (items: unknown[]): ParsedObjects => {\n const objects: KaiMemoryItem[] = [];\n const unreadableIds: string[] = [];\n\n for (const item of items) {\n const result = kaiMemoryItemReadSchema.safeParse(item);\n if (result.success) {\n objects.push(result.data);\n continue;\n }\n\n const id = envelopeId(item) ?? '<no id>';\n unreadableIds.push(id);\n // The object type, the UUID and the failing field, never the content: a memory note's\n // text is the customer's and does not belong in a console.\n console.warn(\n `kaiMemorySdk: kai-memory item \"${id}\" from the metastore response does not match its ` +\n `declared shape`,\n formatValidationIssues(result.error.issues),\n );\n }\n\n return { objects, unreadableIds };\n};\n\ntype Options = {\n metastoreClient: MetastoreClient;\n};\n\nexport const createKaiMemorySdk = ({ metastoreClient }: Options) => {\n /**\n * The metastore's list endpoint looks up the `kai-memory` schema before querying, and 404s\n * (\"Schema not found\") when it was never registered — not an empty result. Since this SDK ships\n * independently of the backend PR that registers the schema, every read here would otherwise\n * throw on any stack that hasn't deployed it yet (or hasn't deployed it TO yet, mid-rollout),\n * indistinguishable from \"this project genuinely has zero kai-memory items\" from the caller's\n * point of view. Treat the two the same: no schema yet means no items yet.\n */\n const fetchObjects = async (signal?: AbortSignal): Promise<unknown[]> => {\n let response: Awaited<ReturnType<typeof metastoreClient.repository.getMetaObjects>>;\n try {\n response = await metastoreClient.repository.getMetaObjects(\n { objectType: KAI_MEMORY_OBJECT_TYPE },\n signal,\n );\n } catch (error) {\n if (isApiError(error) && error.response.status === HttpStatus.NOT_FOUND) return [];\n throw error;\n }\n return parseOrThrow(z.array(z.unknown()), response.data);\n };\n\n /**\n * Every `kai-memory` item in the project, parsed rather than asserted.\n *\n * - No server-side filter (AI-3975), so a caller after one status still pays for the collection.\n * - Degrade-on-drop: a malformed item is dropped and logged, for a display consumer (the admin\n * review list) that would rather show what it can. A steering-context consumer, where a\n * silently missing item is worse than a failed read, must use `getItemsByStatusStrict`.\n */\n const getItems = async (signal?: AbortSignal): Promise<KaiMemoryItem[]> => {\n const { objects } = parseObjects(await fetchObjects(signal));\n return objects;\n };\n\n /** `getItems` narrowed to one status, for the admin review list. */\n const getItemsByStatus = async (status: KaiMemoryStatus, signal?: AbortSignal) =>\n (await getItems(signal)).filter((item) => item.data.status === status);\n\n /**\n * `getItemsByStatus`, failing closed instead of dropping what it cannot parse.\n *\n * For the recall path (folded into every turn's prompt): an unclassifiable item must not be\n * silently omitted — it might be an `approved` note vanishing with no evidence anything was\n * missing (\"steering inputs fail the turn\"). Every unreadable item counts, not only ones\n * matching `status`, since an unparsed item's real status is unknown.\n */\n const getItemsByStatusStrict = async (\n status: KaiMemoryStatus,\n signal?: AbortSignal,\n ): Promise<KaiMemoryItem[]> => {\n const { objects, unreadableIds } = parseObjects(await fetchObjects(signal));\n if (unreadableIds.length > 0) throw new KaiMemoryUnreadableItemsError(unreadableIds);\n return objects.filter((item) => item.data.status === status);\n };\n\n /**\n * Envelope ids of every `kai-memory` item this SDK cannot parse, regardless of status — the\n * admin-facing counterpart to `getItemsByStatusStrict`'s failure. An unreadable item is invisible\n * to `getItems`/`getItemsByStatus` (dropped and logged) yet blocks every new chat's recall read,\n * so an admin needs a way to find and clear it; see `deleteUnreadableItem`.\n */\n const getUnreadableItemIds = async (signal?: AbortSignal): Promise<string[]> =>\n parseObjects(await fetchObjects(signal)).unreadableIds;\n\n /**\n * Deletes a `kai-memory` object by id without first reading and parsing it — `updateStatus`\n * can't be reused here because its pending-check read is exactly the parse that fails for an\n * unreadable item. Intended only for clearing an id surfaced by `getUnreadableItemIds`.\n */\n const deleteUnreadableItem = async (uuid: string): Promise<void> => {\n await metastoreClient.repository.deleteMetaObject({\n objectType: KAI_MEMORY_OBJECT_TYPE,\n UUID: uuid,\n });\n };\n\n /**\n * Write a new `pending` note. `chatId` is a required, separate argument rather than a `data`\n * field — the caller (the memory-handler backend, never the sandboxed agent directly) is what\n * must supply it, taken from the turn's own ticket context, so a model cannot forge which\n * session a note came from.\n */\n const createItem = async (\n { content, chatId, createdBy }: { content: string; chatId: string; createdBy?: string },\n meta: CreateKaiMemoryMeta = {},\n ) => {\n const data: KaiMemoryData = { content, status: 'pending', chatId, createdBy };\n const response = await metastoreClient.repository.createMetaObject<KaiMemoryData>({\n objectType: KAI_MEMORY_OBJECT_TYPE,\n data,\n branch: DEFAULT_BRANCH,\n ...meta,\n });\n\n return mapObject(response.data as unknown as RawKaiMemoryObject);\n };\n\n /**\n * Approve or reject a pending note (or otherwise move it between statuses).\n *\n * - Re-reads and refuses a no-longer-`pending` item (no PATCH precondition mechanism), closing\n * the realistic stale-tab race; `useUpdateKnowledgeBaseItemStatus` invalidates on every outcome.\n * - `rejected` deletes the object outright, so review no longer grows the metastore forever; the\n * return value is the pre-delete data with `status` overridden. A later 404 on the\n * conflict-check read (only reachable via a prior reject) becomes `KaiMemoryReviewConflictError`.\n */\n const updateStatus = async (\n uuid: string,\n status: KaiMemoryStatus,\n meta: UpdateKaiMemoryMeta = {},\n ) => {\n let current: Awaited<ReturnType<typeof metastoreClient.repository.getMetaObject>>;\n try {\n current = await metastoreClient.repository.getMetaObject<KaiMemoryData>({\n objectType: KAI_MEMORY_OBJECT_TYPE,\n UUID: uuid,\n });\n } catch (error) {\n if (isApiError(error) && error.response.status === HttpStatus.NOT_FOUND) {\n throw new KaiMemoryReviewConflictError(uuid, 'rejected');\n }\n throw error;\n }\n\n const parsedCurrent = kaiMemoryItemReadSchema.safeParse(current.data);\n if (parsedCurrent.success && parsedCurrent.data.data.status !== 'pending') {\n throw new KaiMemoryReviewConflictError(uuid, parsedCurrent.data.data.status);\n }\n\n if (status === 'rejected') {\n const currentObject = current.data as unknown as RawKaiMemoryObject;\n await metastoreClient.repository.deleteMetaObject({\n objectType: KAI_MEMORY_OBJECT_TYPE,\n UUID: uuid,\n });\n\n return mapObject({\n ...currentObject,\n attributes: { ...currentObject.attributes, status },\n });\n }\n\n const response = await metastoreClient.repository.updateMetaObject<KaiMemoryData>({\n objectType: KAI_MEMORY_OBJECT_TYPE,\n UUID: uuid,\n data: { status },\n ...meta,\n });\n\n return mapObject(response.data as unknown as RawKaiMemoryObject);\n };\n\n return {\n getItems,\n getItemsByStatus,\n getItemsByStatusStrict,\n getUnreadableItemIds,\n deleteUnreadableItem,\n createItem,\n updateStatus,\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kaiMemory-Cf81ghNd.cjs","names":["z","formatValidationIssues","isApiError","HttpStatus","parseOrThrow","z"],"sources":["../src/sdks/kaiMemory/vocabulary.ts","../src/sdks/kaiMemory/readSchemas.ts","../src/sdks/kaiMemory/kaiMemorySdk.ts"],"sourcesContent":["/**\n * The closed value set a `kai-memory` object's `status` accepts.\n *\n * A single runtime source for the union in `./types`, mirroring\n * `sdks/semanticLayer/vocabulary.ts`'s pattern — a value cannot exist in the type and be\n * missing from the list a validator or a UI dropdown is built from.\n */\nexport const KAI_MEMORY_STATUSES = ['pending', 'approved', 'rejected'] as const;\n","import { z } from 'zod';\n\nimport type { KaiMemoryData, KaiMemoryMeta } from './types';\nimport { KAI_MEMORY_STATUSES } from './vocabulary';\n\n/**\n * What a read of the metastore is allowed to hand back for a `kai-memory` object — see\n * `sdks/semanticLayer/readSchemas.ts` for the `looseObject` reasoning this mirrors.\n *\n * `status` drops as unrecognized rather than passing through: an item this SDK cannot classify\n * as pending/approved/rejected must never be treated as any of them, in particular `approved`.\n */\nconst kaiMemoryReadSchema: z.ZodType<KaiMemoryData, unknown> = z.looseObject({\n content: z.string(),\n status: z.enum(KAI_MEMORY_STATUSES),\n chatId: z.string(),\n createdBy: z.string().optional(),\n});\n\nconst kaiMemoryMetaSchema: z.ZodType<KaiMemoryMeta, unknown> = z.looseObject({\n name: z.string().optional(),\n branch: z.string().optional(),\n projectId: z.number().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});\n\n/**\n * The envelope every read comes wrapped in, mapped to the `KaiMemoryItem` the SDK returns. `meta`\n * absent or `null` both normalize to `{}` — see `semanticObjectReadSchema` for why an envelope\n * omitting audit fields is a normalization, not a failure.\n */\nexport const kaiMemoryItemReadSchema = z\n .object({\n id: z.string(),\n attributes: kaiMemoryReadSchema,\n meta: kaiMemoryMetaSchema.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';\n\nimport { kaiMemoryItemReadSchema } from './readSchemas';\nimport type {\n CreateKaiMemoryMeta,\n KaiMemoryData,\n KaiMemoryItem,\n KaiMemoryStatus,\n MetastoreClient,\n UpdateKaiMemoryMeta,\n} from './types';\n\n/** The metastore object type this SDK addresses — see `SEMANTIC_OBJECT_TYPE` for the convention. */\nexport const KAI_MEMORY_OBJECT_TYPE = 'kai-memory';\n\nconst DEFAULT_BRANCH = 'main';\n\n/**\n * The live metastore envelope for a write response — see `RawSemanticObject` in\n * `sdks/semanticLayer/semanticLayerSdk.ts` for why a write asserts this shape rather than parsing\n * it: the metastore is echoing back the object it has just validated and stored.\n */\ntype RawKaiMemoryObject = {\n type: string;\n id: string;\n attributes: KaiMemoryData;\n meta: KaiMemoryItem['meta'];\n};\n\nconst mapObject = (item: RawKaiMemoryObject): KaiMemoryItem => ({\n uuid: item.id,\n data: item.attributes,\n meta: item.meta,\n});\n\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/**\n * Thrown by `getItemsByStatusStrict` when any `kai-memory` item — of any status, not only the\n * one asked for — could not be parsed. See that function's docstring for why an unreadable item\n * anywhere in the collection fails the whole read rather than being dropped.\n */\nexport class KaiMemoryUnreadableItemsError extends Error {\n readonly unreadableIds: string[];\n\n constructor(unreadableIds: string[]) {\n super(\n `${unreadableIds.length} kai-memory item(s) could not be read, so the knowledge base ` +\n `cannot be treated as complete.`,\n );\n this.name = 'KaiMemoryUnreadableItemsError';\n this.unreadableIds = unreadableIds;\n }\n}\n\n/**\n * Thrown by `updateStatus` when the item is no longer `pending` at write time — see that\n * function's docstring for the race it closes.\n */\nexport class KaiMemoryReviewConflictError extends Error {\n readonly uuid: string;\n readonly currentStatus: KaiMemoryStatus;\n\n constructor(uuid: string, currentStatus: KaiMemoryStatus) {\n super(\n `This note was already reviewed (now \"${currentStatus}\") — refusing to overwrite a ` +\n `decision someone else already made.`,\n );\n this.name = 'KaiMemoryReviewConflictError';\n this.uuid = uuid;\n this.currentStatus = currentStatus;\n }\n}\n\ntype ParsedObjects = {\n objects: KaiMemoryItem[];\n /** Envelope ids (or `<no id>`) of items that did not match `kaiMemoryItemReadSchema`. */\n unreadableIds: string[];\n};\n\n/** Shared parse loop behind `getItems` (drops and logs) and `getItemsByStatusStrict` (fails). */\nconst parseObjects = (items: unknown[]): ParsedObjects => {\n const objects: KaiMemoryItem[] = [];\n const unreadableIds: string[] = [];\n\n for (const item of items) {\n const result = kaiMemoryItemReadSchema.safeParse(item);\n if (result.success) {\n objects.push(result.data);\n continue;\n }\n\n const id = envelopeId(item) ?? '<no id>';\n unreadableIds.push(id);\n // The object type, the UUID and the failing field, never the content: a memory note's\n // text is the customer's and does not belong in a console.\n console.warn(\n `kaiMemorySdk: kai-memory item \"${id}\" from the metastore response does not match its ` +\n `declared shape`,\n formatValidationIssues(result.error.issues),\n );\n }\n\n return { objects, unreadableIds };\n};\n\ntype Options = {\n metastoreClient: MetastoreClient;\n};\n\nexport const createKaiMemorySdk = ({ metastoreClient }: Options) => {\n /**\n * The metastore's list endpoint looks up the `kai-memory` schema before querying, and 404s\n * (\"Schema not found\") when it was never registered — not an empty result. Since this SDK ships\n * independently of the backend PR that registers the schema, every read here would otherwise\n * throw on any stack that hasn't deployed it yet (or hasn't deployed it TO yet, mid-rollout),\n * indistinguishable from \"this project genuinely has zero kai-memory items\" from the caller's\n * point of view. Treat the two the same: no schema yet means no items yet.\n */\n const fetchObjects = async (signal?: AbortSignal): Promise<unknown[]> => {\n let response: Awaited<ReturnType<typeof metastoreClient.repository.getMetaObjects>>;\n try {\n response = await metastoreClient.repository.getMetaObjects(\n { objectType: KAI_MEMORY_OBJECT_TYPE },\n signal,\n );\n } catch (error) {\n if (isApiError(error) && error.response.status === HttpStatus.NOT_FOUND) return [];\n throw error;\n }\n return parseOrThrow(z.array(z.unknown()), response.data);\n };\n\n /**\n * Every `kai-memory` item in the project, parsed rather than asserted.\n *\n * - No server-side filter (AI-3975), so a caller after one status still pays for the collection.\n * - Degrade-on-drop: a malformed item is dropped and logged, for a display consumer (the admin\n * review list) that would rather show what it can. A steering-context consumer, where a\n * silently missing item is worse than a failed read, must use `getItemsByStatusStrict`.\n */\n const getItems = async (signal?: AbortSignal): Promise<KaiMemoryItem[]> => {\n const { objects } = parseObjects(await fetchObjects(signal));\n return objects;\n };\n\n /** `getItems` narrowed to one status, for the admin review list. */\n const getItemsByStatus = async (status: KaiMemoryStatus, signal?: AbortSignal) =>\n (await getItems(signal)).filter((item) => item.data.status === status);\n\n /**\n * `getItemsByStatus`, failing closed instead of dropping what it cannot parse.\n *\n * For the recall path (folded into every turn's prompt): an unclassifiable item must not be\n * silently omitted — it might be an `approved` note vanishing with no evidence anything was\n * missing (\"steering inputs fail the turn\"). Every unreadable item counts, not only ones\n * matching `status`, since an unparsed item's real status is unknown.\n */\n const getItemsByStatusStrict = async (\n status: KaiMemoryStatus,\n signal?: AbortSignal,\n ): Promise<KaiMemoryItem[]> => {\n const { objects, unreadableIds } = parseObjects(await fetchObjects(signal));\n if (unreadableIds.length > 0) throw new KaiMemoryUnreadableItemsError(unreadableIds);\n return objects.filter((item) => item.data.status === status);\n };\n\n /**\n * Envelope ids of every `kai-memory` item this SDK cannot parse, regardless of status — the\n * admin-facing counterpart to `getItemsByStatusStrict`'s failure. An unreadable item is invisible\n * to `getItems`/`getItemsByStatus` (dropped and logged) yet blocks every new chat's recall read,\n * so an admin needs a way to find and clear it; see `deleteUnreadableItem`.\n */\n const getUnreadableItemIds = async (signal?: AbortSignal): Promise<string[]> =>\n parseObjects(await fetchObjects(signal)).unreadableIds;\n\n /**\n * Deletes a `kai-memory` object by id without first reading and parsing it — `updateStatus`\n * can't be reused here because its pending-check read is exactly the parse that fails for an\n * unreadable item. Intended only for clearing an id surfaced by `getUnreadableItemIds`.\n */\n const deleteUnreadableItem = async (uuid: string): Promise<void> => {\n await metastoreClient.repository.deleteMetaObject({\n objectType: KAI_MEMORY_OBJECT_TYPE,\n UUID: uuid,\n });\n };\n\n /**\n * Write a new `pending` note. `chatId` is a required, separate argument rather than a `data`\n * field — the caller (the memory-handler backend, never the sandboxed agent directly) is what\n * must supply it, taken from the turn's own ticket context, so a model cannot forge which\n * session a note came from.\n */\n const createItem = async (\n { content, chatId, createdBy }: { content: string; chatId: string; createdBy?: string },\n meta: CreateKaiMemoryMeta = {},\n ) => {\n const data: KaiMemoryData = { content, status: 'pending', chatId, createdBy };\n const response = await metastoreClient.repository.createMetaObject<KaiMemoryData>({\n objectType: KAI_MEMORY_OBJECT_TYPE,\n data,\n branch: DEFAULT_BRANCH,\n ...meta,\n });\n\n return mapObject(response.data as unknown as RawKaiMemoryObject);\n };\n\n /**\n * Approve or reject a pending note (or otherwise move it between statuses).\n *\n * - Re-reads and refuses a no-longer-`pending` item (no PATCH precondition mechanism), closing\n * the realistic stale-tab race; `useUpdateKnowledgeBaseItemStatus` invalidates on every outcome.\n * - `rejected` deletes the object outright, so review no longer grows the metastore forever; the\n * return value is the pre-delete data with `status` overridden. A later 404 on the\n * conflict-check read (only reachable via a prior reject) becomes `KaiMemoryReviewConflictError`.\n */\n const updateStatus = async (\n uuid: string,\n status: KaiMemoryStatus,\n meta: UpdateKaiMemoryMeta = {},\n ) => {\n let current: Awaited<ReturnType<typeof metastoreClient.repository.getMetaObject>>;\n try {\n current = await metastoreClient.repository.getMetaObject<KaiMemoryData>({\n objectType: KAI_MEMORY_OBJECT_TYPE,\n UUID: uuid,\n });\n } catch (error) {\n if (isApiError(error) && error.response.status === HttpStatus.NOT_FOUND) {\n throw new KaiMemoryReviewConflictError(uuid, 'rejected');\n }\n throw error;\n }\n\n const parsedCurrent = kaiMemoryItemReadSchema.safeParse(current.data);\n if (parsedCurrent.success && parsedCurrent.data.data.status !== 'pending') {\n throw new KaiMemoryReviewConflictError(uuid, parsedCurrent.data.data.status);\n }\n\n if (status === 'rejected') {\n const currentObject = current.data as unknown as RawKaiMemoryObject;\n await metastoreClient.repository.deleteMetaObject({\n objectType: KAI_MEMORY_OBJECT_TYPE,\n UUID: uuid,\n });\n\n return mapObject({\n ...currentObject,\n attributes: { ...currentObject.attributes, status },\n });\n }\n\n const response = await metastoreClient.repository.updateMetaObject<KaiMemoryData>({\n objectType: KAI_MEMORY_OBJECT_TYPE,\n UUID: uuid,\n data: { status },\n ...meta,\n });\n\n return mapObject(response.data as unknown as RawKaiMemoryObject);\n };\n\n return {\n getItems,\n getItemsByStatus,\n getItemsByStatusStrict,\n getUnreadableItemIds,\n deleteUnreadableItem,\n createItem,\n updateStatus,\n };\n};\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { g as HttpStatus, r as isApiError } from "./createFetchClient-DITkTV2k.js";
|
|
2
2
|
import { i as parseOrThrow, n as formatValidationIssues } from "./ValidationError-DjhtNMfZ.js";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
//#region src/sdks/kaiMemory/vocabulary.ts
|
|
@@ -257,4 +257,4 @@ const createKaiMemorySdk = ({ metastoreClient }) => {
|
|
|
257
257
|
//#endregion
|
|
258
258
|
export { KAI_MEMORY_STATUSES as a, createKaiMemorySdk as i, KaiMemoryReviewConflictError as n, KaiMemoryUnreadableItemsError as r, KAI_MEMORY_OBJECT_TYPE as t };
|
|
259
259
|
|
|
260
|
-
//# sourceMappingURL=kaiMemory-
|
|
260
|
+
//# sourceMappingURL=kaiMemory-DaOh0zVn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kaiMemory-BAniZZAN.js","names":[],"sources":["../src/sdks/kaiMemory/vocabulary.ts","../src/sdks/kaiMemory/readSchemas.ts","../src/sdks/kaiMemory/kaiMemorySdk.ts"],"sourcesContent":["/**\n * The closed value set a `kai-memory` object's `status` accepts.\n *\n * A single runtime source for the union in `./types`, mirroring\n * `sdks/semanticLayer/vocabulary.ts`'s pattern — a value cannot exist in the type and be\n * missing from the list a validator or a UI dropdown is built from.\n */\nexport const KAI_MEMORY_STATUSES = ['pending', 'approved', 'rejected'] as const;\n","import { z } from 'zod';\n\nimport type { KaiMemoryData, KaiMemoryMeta } from './types';\nimport { KAI_MEMORY_STATUSES } from './vocabulary';\n\n/**\n * What a read of the metastore is allowed to hand back for a `kai-memory` object — see\n * `sdks/semanticLayer/readSchemas.ts` for the `looseObject` reasoning this mirrors.\n *\n * `status` drops as unrecognized rather than passing through: an item this SDK cannot classify\n * as pending/approved/rejected must never be treated as any of them, in particular `approved`.\n */\nconst kaiMemoryReadSchema: z.ZodType<KaiMemoryData, unknown> = z.looseObject({\n content: z.string(),\n status: z.enum(KAI_MEMORY_STATUSES),\n chatId: z.string(),\n createdBy: z.string().optional(),\n});\n\nconst kaiMemoryMetaSchema: z.ZodType<KaiMemoryMeta, unknown> = z.looseObject({\n name: z.string().optional(),\n branch: z.string().optional(),\n projectId: z.number().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});\n\n/**\n * The envelope every read comes wrapped in, mapped to the `KaiMemoryItem` the SDK returns. `meta`\n * absent or `null` both normalize to `{}` — see `semanticObjectReadSchema` for why an envelope\n * omitting audit fields is a normalization, not a failure.\n */\nexport const kaiMemoryItemReadSchema = z\n .object({\n id: z.string(),\n attributes: kaiMemoryReadSchema,\n meta: kaiMemoryMetaSchema.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';\n\nimport { kaiMemoryItemReadSchema } from './readSchemas';\nimport type {\n CreateKaiMemoryMeta,\n KaiMemoryData,\n KaiMemoryItem,\n KaiMemoryStatus,\n MetastoreClient,\n UpdateKaiMemoryMeta,\n} from './types';\n\n/** The metastore object type this SDK addresses — see `SEMANTIC_OBJECT_TYPE` for the convention. */\nexport const KAI_MEMORY_OBJECT_TYPE = 'kai-memory';\n\nconst DEFAULT_BRANCH = 'main';\n\n/**\n * The live metastore envelope for a write response — see `RawSemanticObject` in\n * `sdks/semanticLayer/semanticLayerSdk.ts` for why a write asserts this shape rather than parsing\n * it: the metastore is echoing back the object it has just validated and stored.\n */\ntype RawKaiMemoryObject = {\n type: string;\n id: string;\n attributes: KaiMemoryData;\n meta: KaiMemoryItem['meta'];\n};\n\nconst mapObject = (item: RawKaiMemoryObject): KaiMemoryItem => ({\n uuid: item.id,\n data: item.attributes,\n meta: item.meta,\n});\n\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/**\n * Thrown by `getItemsByStatusStrict` when any `kai-memory` item — of any status, not only the\n * one asked for — could not be parsed. See that function's docstring for why an unreadable item\n * anywhere in the collection fails the whole read rather than being dropped.\n */\nexport class KaiMemoryUnreadableItemsError extends Error {\n readonly unreadableIds: string[];\n\n constructor(unreadableIds: string[]) {\n super(\n `${unreadableIds.length} kai-memory item(s) could not be read, so the knowledge base ` +\n `cannot be treated as complete.`,\n );\n this.name = 'KaiMemoryUnreadableItemsError';\n this.unreadableIds = unreadableIds;\n }\n}\n\n/**\n * Thrown by `updateStatus` when the item is no longer `pending` at write time — see that\n * function's docstring for the race it closes.\n */\nexport class KaiMemoryReviewConflictError extends Error {\n readonly uuid: string;\n readonly currentStatus: KaiMemoryStatus;\n\n constructor(uuid: string, currentStatus: KaiMemoryStatus) {\n super(\n `This note was already reviewed (now \"${currentStatus}\") — refusing to overwrite a ` +\n `decision someone else already made.`,\n );\n this.name = 'KaiMemoryReviewConflictError';\n this.uuid = uuid;\n this.currentStatus = currentStatus;\n }\n}\n\ntype ParsedObjects = {\n objects: KaiMemoryItem[];\n /** Envelope ids (or `<no id>`) of items that did not match `kaiMemoryItemReadSchema`. */\n unreadableIds: string[];\n};\n\n/** Shared parse loop behind `getItems` (drops and logs) and `getItemsByStatusStrict` (fails). */\nconst parseObjects = (items: unknown[]): ParsedObjects => {\n const objects: KaiMemoryItem[] = [];\n const unreadableIds: string[] = [];\n\n for (const item of items) {\n const result = kaiMemoryItemReadSchema.safeParse(item);\n if (result.success) {\n objects.push(result.data);\n continue;\n }\n\n const id = envelopeId(item) ?? '<no id>';\n unreadableIds.push(id);\n // The object type, the UUID and the failing field, never the content: a memory note's\n // text is the customer's and does not belong in a console.\n console.warn(\n `kaiMemorySdk: kai-memory item \"${id}\" from the metastore response does not match its ` +\n `declared shape`,\n formatValidationIssues(result.error.issues),\n );\n }\n\n return { objects, unreadableIds };\n};\n\ntype Options = {\n metastoreClient: MetastoreClient;\n};\n\nexport const createKaiMemorySdk = ({ metastoreClient }: Options) => {\n /**\n * The metastore's list endpoint looks up the `kai-memory` schema before querying, and 404s\n * (\"Schema not found\") when it was never registered — not an empty result. Since this SDK ships\n * independently of the backend PR that registers the schema, every read here would otherwise\n * throw on any stack that hasn't deployed it yet (or hasn't deployed it TO yet, mid-rollout),\n * indistinguishable from \"this project genuinely has zero kai-memory items\" from the caller's\n * point of view. Treat the two the same: no schema yet means no items yet.\n */\n const fetchObjects = async (signal?: AbortSignal): Promise<unknown[]> => {\n let response: Awaited<ReturnType<typeof metastoreClient.repository.getMetaObjects>>;\n try {\n response = await metastoreClient.repository.getMetaObjects(\n { objectType: KAI_MEMORY_OBJECT_TYPE },\n signal,\n );\n } catch (error) {\n if (isApiError(error) && error.response.status === HttpStatus.NOT_FOUND) return [];\n throw error;\n }\n return parseOrThrow(z.array(z.unknown()), response.data);\n };\n\n /**\n * Every `kai-memory` item in the project, parsed rather than asserted.\n *\n * - No server-side filter (AI-3975), so a caller after one status still pays for the collection.\n * - Degrade-on-drop: a malformed item is dropped and logged, for a display consumer (the admin\n * review list) that would rather show what it can. A steering-context consumer, where a\n * silently missing item is worse than a failed read, must use `getItemsByStatusStrict`.\n */\n const getItems = async (signal?: AbortSignal): Promise<KaiMemoryItem[]> => {\n const { objects } = parseObjects(await fetchObjects(signal));\n return objects;\n };\n\n /** `getItems` narrowed to one status, for the admin review list. */\n const getItemsByStatus = async (status: KaiMemoryStatus, signal?: AbortSignal) =>\n (await getItems(signal)).filter((item) => item.data.status === status);\n\n /**\n * `getItemsByStatus`, failing closed instead of dropping what it cannot parse.\n *\n * For the recall path (folded into every turn's prompt): an unclassifiable item must not be\n * silently omitted — it might be an `approved` note vanishing with no evidence anything was\n * missing (\"steering inputs fail the turn\"). Every unreadable item counts, not only ones\n * matching `status`, since an unparsed item's real status is unknown.\n */\n const getItemsByStatusStrict = async (\n status: KaiMemoryStatus,\n signal?: AbortSignal,\n ): Promise<KaiMemoryItem[]> => {\n const { objects, unreadableIds } = parseObjects(await fetchObjects(signal));\n if (unreadableIds.length > 0) throw new KaiMemoryUnreadableItemsError(unreadableIds);\n return objects.filter((item) => item.data.status === status);\n };\n\n /**\n * Envelope ids of every `kai-memory` item this SDK cannot parse, regardless of status — the\n * admin-facing counterpart to `getItemsByStatusStrict`'s failure. An unreadable item is invisible\n * to `getItems`/`getItemsByStatus` (dropped and logged) yet blocks every new chat's recall read,\n * so an admin needs a way to find and clear it; see `deleteUnreadableItem`.\n */\n const getUnreadableItemIds = async (signal?: AbortSignal): Promise<string[]> =>\n parseObjects(await fetchObjects(signal)).unreadableIds;\n\n /**\n * Deletes a `kai-memory` object by id without first reading and parsing it — `updateStatus`\n * can't be reused here because its pending-check read is exactly the parse that fails for an\n * unreadable item. Intended only for clearing an id surfaced by `getUnreadableItemIds`.\n */\n const deleteUnreadableItem = async (uuid: string): Promise<void> => {\n await metastoreClient.repository.deleteMetaObject({\n objectType: KAI_MEMORY_OBJECT_TYPE,\n UUID: uuid,\n });\n };\n\n /**\n * Write a new `pending` note. `chatId` is a required, separate argument rather than a `data`\n * field — the caller (the memory-handler backend, never the sandboxed agent directly) is what\n * must supply it, taken from the turn's own ticket context, so a model cannot forge which\n * session a note came from.\n */\n const createItem = async (\n { content, chatId, createdBy }: { content: string; chatId: string; createdBy?: string },\n meta: CreateKaiMemoryMeta = {},\n ) => {\n const data: KaiMemoryData = { content, status: 'pending', chatId, createdBy };\n const response = await metastoreClient.repository.createMetaObject<KaiMemoryData>({\n objectType: KAI_MEMORY_OBJECT_TYPE,\n data,\n branch: DEFAULT_BRANCH,\n ...meta,\n });\n\n return mapObject(response.data as unknown as RawKaiMemoryObject);\n };\n\n /**\n * Approve or reject a pending note (or otherwise move it between statuses).\n *\n * - Re-reads and refuses a no-longer-`pending` item (no PATCH precondition mechanism), closing\n * the realistic stale-tab race; `useUpdateKnowledgeBaseItemStatus` invalidates on every outcome.\n * - `rejected` deletes the object outright, so review no longer grows the metastore forever; the\n * return value is the pre-delete data with `status` overridden. A later 404 on the\n * conflict-check read (only reachable via a prior reject) becomes `KaiMemoryReviewConflictError`.\n */\n const updateStatus = async (\n uuid: string,\n status: KaiMemoryStatus,\n meta: UpdateKaiMemoryMeta = {},\n ) => {\n let current: Awaited<ReturnType<typeof metastoreClient.repository.getMetaObject>>;\n try {\n current = await metastoreClient.repository.getMetaObject<KaiMemoryData>({\n objectType: KAI_MEMORY_OBJECT_TYPE,\n UUID: uuid,\n });\n } catch (error) {\n if (isApiError(error) && error.response.status === HttpStatus.NOT_FOUND) {\n throw new KaiMemoryReviewConflictError(uuid, 'rejected');\n }\n throw error;\n }\n\n const parsedCurrent = kaiMemoryItemReadSchema.safeParse(current.data);\n if (parsedCurrent.success && parsedCurrent.data.data.status !== 'pending') {\n throw new KaiMemoryReviewConflictError(uuid, parsedCurrent.data.data.status);\n }\n\n if (status === 'rejected') {\n const currentObject = current.data as unknown as RawKaiMemoryObject;\n await metastoreClient.repository.deleteMetaObject({\n objectType: KAI_MEMORY_OBJECT_TYPE,\n UUID: uuid,\n });\n\n return mapObject({\n ...currentObject,\n attributes: { ...currentObject.attributes, status },\n });\n }\n\n const response = await metastoreClient.repository.updateMetaObject<KaiMemoryData>({\n objectType: KAI_MEMORY_OBJECT_TYPE,\n UUID: uuid,\n data: { status },\n ...meta,\n });\n\n return mapObject(response.data as unknown as RawKaiMemoryObject);\n };\n\n return {\n getItems,\n getItemsByStatus,\n getItemsByStatusStrict,\n getUnreadableItemIds,\n deleteUnreadableItem,\n createItem,\n updateStatus,\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kaiMemory-DaOh0zVn.js","names":[],"sources":["../src/sdks/kaiMemory/vocabulary.ts","../src/sdks/kaiMemory/readSchemas.ts","../src/sdks/kaiMemory/kaiMemorySdk.ts"],"sourcesContent":["/**\n * The closed value set a `kai-memory` object's `status` accepts.\n *\n * A single runtime source for the union in `./types`, mirroring\n * `sdks/semanticLayer/vocabulary.ts`'s pattern — a value cannot exist in the type and be\n * missing from the list a validator or a UI dropdown is built from.\n */\nexport const KAI_MEMORY_STATUSES = ['pending', 'approved', 'rejected'] as const;\n","import { z } from 'zod';\n\nimport type { KaiMemoryData, KaiMemoryMeta } from './types';\nimport { KAI_MEMORY_STATUSES } from './vocabulary';\n\n/**\n * What a read of the metastore is allowed to hand back for a `kai-memory` object — see\n * `sdks/semanticLayer/readSchemas.ts` for the `looseObject` reasoning this mirrors.\n *\n * `status` drops as unrecognized rather than passing through: an item this SDK cannot classify\n * as pending/approved/rejected must never be treated as any of them, in particular `approved`.\n */\nconst kaiMemoryReadSchema: z.ZodType<KaiMemoryData, unknown> = z.looseObject({\n content: z.string(),\n status: z.enum(KAI_MEMORY_STATUSES),\n chatId: z.string(),\n createdBy: z.string().optional(),\n});\n\nconst kaiMemoryMetaSchema: z.ZodType<KaiMemoryMeta, unknown> = z.looseObject({\n name: z.string().optional(),\n branch: z.string().optional(),\n projectId: z.number().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});\n\n/**\n * The envelope every read comes wrapped in, mapped to the `KaiMemoryItem` the SDK returns. `meta`\n * absent or `null` both normalize to `{}` — see `semanticObjectReadSchema` for why an envelope\n * omitting audit fields is a normalization, not a failure.\n */\nexport const kaiMemoryItemReadSchema = z\n .object({\n id: z.string(),\n attributes: kaiMemoryReadSchema,\n meta: kaiMemoryMetaSchema.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';\n\nimport { kaiMemoryItemReadSchema } from './readSchemas';\nimport type {\n CreateKaiMemoryMeta,\n KaiMemoryData,\n KaiMemoryItem,\n KaiMemoryStatus,\n MetastoreClient,\n UpdateKaiMemoryMeta,\n} from './types';\n\n/** The metastore object type this SDK addresses — see `SEMANTIC_OBJECT_TYPE` for the convention. */\nexport const KAI_MEMORY_OBJECT_TYPE = 'kai-memory';\n\nconst DEFAULT_BRANCH = 'main';\n\n/**\n * The live metastore envelope for a write response — see `RawSemanticObject` in\n * `sdks/semanticLayer/semanticLayerSdk.ts` for why a write asserts this shape rather than parsing\n * it: the metastore is echoing back the object it has just validated and stored.\n */\ntype RawKaiMemoryObject = {\n type: string;\n id: string;\n attributes: KaiMemoryData;\n meta: KaiMemoryItem['meta'];\n};\n\nconst mapObject = (item: RawKaiMemoryObject): KaiMemoryItem => ({\n uuid: item.id,\n data: item.attributes,\n meta: item.meta,\n});\n\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/**\n * Thrown by `getItemsByStatusStrict` when any `kai-memory` item — of any status, not only the\n * one asked for — could not be parsed. See that function's docstring for why an unreadable item\n * anywhere in the collection fails the whole read rather than being dropped.\n */\nexport class KaiMemoryUnreadableItemsError extends Error {\n readonly unreadableIds: string[];\n\n constructor(unreadableIds: string[]) {\n super(\n `${unreadableIds.length} kai-memory item(s) could not be read, so the knowledge base ` +\n `cannot be treated as complete.`,\n );\n this.name = 'KaiMemoryUnreadableItemsError';\n this.unreadableIds = unreadableIds;\n }\n}\n\n/**\n * Thrown by `updateStatus` when the item is no longer `pending` at write time — see that\n * function's docstring for the race it closes.\n */\nexport class KaiMemoryReviewConflictError extends Error {\n readonly uuid: string;\n readonly currentStatus: KaiMemoryStatus;\n\n constructor(uuid: string, currentStatus: KaiMemoryStatus) {\n super(\n `This note was already reviewed (now \"${currentStatus}\") — refusing to overwrite a ` +\n `decision someone else already made.`,\n );\n this.name = 'KaiMemoryReviewConflictError';\n this.uuid = uuid;\n this.currentStatus = currentStatus;\n }\n}\n\ntype ParsedObjects = {\n objects: KaiMemoryItem[];\n /** Envelope ids (or `<no id>`) of items that did not match `kaiMemoryItemReadSchema`. */\n unreadableIds: string[];\n};\n\n/** Shared parse loop behind `getItems` (drops and logs) and `getItemsByStatusStrict` (fails). */\nconst parseObjects = (items: unknown[]): ParsedObjects => {\n const objects: KaiMemoryItem[] = [];\n const unreadableIds: string[] = [];\n\n for (const item of items) {\n const result = kaiMemoryItemReadSchema.safeParse(item);\n if (result.success) {\n objects.push(result.data);\n continue;\n }\n\n const id = envelopeId(item) ?? '<no id>';\n unreadableIds.push(id);\n // The object type, the UUID and the failing field, never the content: a memory note's\n // text is the customer's and does not belong in a console.\n console.warn(\n `kaiMemorySdk: kai-memory item \"${id}\" from the metastore response does not match its ` +\n `declared shape`,\n formatValidationIssues(result.error.issues),\n );\n }\n\n return { objects, unreadableIds };\n};\n\ntype Options = {\n metastoreClient: MetastoreClient;\n};\n\nexport const createKaiMemorySdk = ({ metastoreClient }: Options) => {\n /**\n * The metastore's list endpoint looks up the `kai-memory` schema before querying, and 404s\n * (\"Schema not found\") when it was never registered — not an empty result. Since this SDK ships\n * independently of the backend PR that registers the schema, every read here would otherwise\n * throw on any stack that hasn't deployed it yet (or hasn't deployed it TO yet, mid-rollout),\n * indistinguishable from \"this project genuinely has zero kai-memory items\" from the caller's\n * point of view. Treat the two the same: no schema yet means no items yet.\n */\n const fetchObjects = async (signal?: AbortSignal): Promise<unknown[]> => {\n let response: Awaited<ReturnType<typeof metastoreClient.repository.getMetaObjects>>;\n try {\n response = await metastoreClient.repository.getMetaObjects(\n { objectType: KAI_MEMORY_OBJECT_TYPE },\n signal,\n );\n } catch (error) {\n if (isApiError(error) && error.response.status === HttpStatus.NOT_FOUND) return [];\n throw error;\n }\n return parseOrThrow(z.array(z.unknown()), response.data);\n };\n\n /**\n * Every `kai-memory` item in the project, parsed rather than asserted.\n *\n * - No server-side filter (AI-3975), so a caller after one status still pays for the collection.\n * - Degrade-on-drop: a malformed item is dropped and logged, for a display consumer (the admin\n * review list) that would rather show what it can. A steering-context consumer, where a\n * silently missing item is worse than a failed read, must use `getItemsByStatusStrict`.\n */\n const getItems = async (signal?: AbortSignal): Promise<KaiMemoryItem[]> => {\n const { objects } = parseObjects(await fetchObjects(signal));\n return objects;\n };\n\n /** `getItems` narrowed to one status, for the admin review list. */\n const getItemsByStatus = async (status: KaiMemoryStatus, signal?: AbortSignal) =>\n (await getItems(signal)).filter((item) => item.data.status === status);\n\n /**\n * `getItemsByStatus`, failing closed instead of dropping what it cannot parse.\n *\n * For the recall path (folded into every turn's prompt): an unclassifiable item must not be\n * silently omitted — it might be an `approved` note vanishing with no evidence anything was\n * missing (\"steering inputs fail the turn\"). Every unreadable item counts, not only ones\n * matching `status`, since an unparsed item's real status is unknown.\n */\n const getItemsByStatusStrict = async (\n status: KaiMemoryStatus,\n signal?: AbortSignal,\n ): Promise<KaiMemoryItem[]> => {\n const { objects, unreadableIds } = parseObjects(await fetchObjects(signal));\n if (unreadableIds.length > 0) throw new KaiMemoryUnreadableItemsError(unreadableIds);\n return objects.filter((item) => item.data.status === status);\n };\n\n /**\n * Envelope ids of every `kai-memory` item this SDK cannot parse, regardless of status — the\n * admin-facing counterpart to `getItemsByStatusStrict`'s failure. An unreadable item is invisible\n * to `getItems`/`getItemsByStatus` (dropped and logged) yet blocks every new chat's recall read,\n * so an admin needs a way to find and clear it; see `deleteUnreadableItem`.\n */\n const getUnreadableItemIds = async (signal?: AbortSignal): Promise<string[]> =>\n parseObjects(await fetchObjects(signal)).unreadableIds;\n\n /**\n * Deletes a `kai-memory` object by id without first reading and parsing it — `updateStatus`\n * can't be reused here because its pending-check read is exactly the parse that fails for an\n * unreadable item. Intended only for clearing an id surfaced by `getUnreadableItemIds`.\n */\n const deleteUnreadableItem = async (uuid: string): Promise<void> => {\n await metastoreClient.repository.deleteMetaObject({\n objectType: KAI_MEMORY_OBJECT_TYPE,\n UUID: uuid,\n });\n };\n\n /**\n * Write a new `pending` note. `chatId` is a required, separate argument rather than a `data`\n * field — the caller (the memory-handler backend, never the sandboxed agent directly) is what\n * must supply it, taken from the turn's own ticket context, so a model cannot forge which\n * session a note came from.\n */\n const createItem = async (\n { content, chatId, createdBy }: { content: string; chatId: string; createdBy?: string },\n meta: CreateKaiMemoryMeta = {},\n ) => {\n const data: KaiMemoryData = { content, status: 'pending', chatId, createdBy };\n const response = await metastoreClient.repository.createMetaObject<KaiMemoryData>({\n objectType: KAI_MEMORY_OBJECT_TYPE,\n data,\n branch: DEFAULT_BRANCH,\n ...meta,\n });\n\n return mapObject(response.data as unknown as RawKaiMemoryObject);\n };\n\n /**\n * Approve or reject a pending note (or otherwise move it between statuses).\n *\n * - Re-reads and refuses a no-longer-`pending` item (no PATCH precondition mechanism), closing\n * the realistic stale-tab race; `useUpdateKnowledgeBaseItemStatus` invalidates on every outcome.\n * - `rejected` deletes the object outright, so review no longer grows the metastore forever; the\n * return value is the pre-delete data with `status` overridden. A later 404 on the\n * conflict-check read (only reachable via a prior reject) becomes `KaiMemoryReviewConflictError`.\n */\n const updateStatus = async (\n uuid: string,\n status: KaiMemoryStatus,\n meta: UpdateKaiMemoryMeta = {},\n ) => {\n let current: Awaited<ReturnType<typeof metastoreClient.repository.getMetaObject>>;\n try {\n current = await metastoreClient.repository.getMetaObject<KaiMemoryData>({\n objectType: KAI_MEMORY_OBJECT_TYPE,\n UUID: uuid,\n });\n } catch (error) {\n if (isApiError(error) && error.response.status === HttpStatus.NOT_FOUND) {\n throw new KaiMemoryReviewConflictError(uuid, 'rejected');\n }\n throw error;\n }\n\n const parsedCurrent = kaiMemoryItemReadSchema.safeParse(current.data);\n if (parsedCurrent.success && parsedCurrent.data.data.status !== 'pending') {\n throw new KaiMemoryReviewConflictError(uuid, parsedCurrent.data.data.status);\n }\n\n if (status === 'rejected') {\n const currentObject = current.data as unknown as RawKaiMemoryObject;\n await metastoreClient.repository.deleteMetaObject({\n objectType: KAI_MEMORY_OBJECT_TYPE,\n UUID: uuid,\n });\n\n return mapObject({\n ...currentObject,\n attributes: { ...currentObject.attributes, status },\n });\n }\n\n const response = await metastoreClient.repository.updateMetaObject<KaiMemoryData>({\n objectType: KAI_MEMORY_OBJECT_TYPE,\n UUID: uuid,\n data: { status },\n ...meta,\n });\n\n return mapObject(response.data as unknown as RawKaiMemoryObject);\n };\n\n return {\n getItems,\n getItemsByStatus,\n getItemsByStatusStrict,\n getUnreadableItemIds,\n deleteUnreadableItem,\n createItem,\n updateStatus,\n };\n};\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_management = require("../management-
|
|
2
|
+
const require_management = require("../management-C5lf9nsU.cjs");
|
|
3
3
|
exports.createManagementClient = require_management.createManagementClient;
|
|
4
4
|
exports.isManagementClientAuthError = require_management.isManagementClientAuthError;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as createManagementClient, i as ManagementOpenApiFetchClient, n as AuthStrategy, r as ManagementGenericFetchClient, t as isManagementClientAuthError } from "../index-
|
|
1
|
+
import { a as createManagementClient, i as ManagementOpenApiFetchClient, n as AuthStrategy, r as ManagementGenericFetchClient, t as isManagementClientAuthError } from "../index-DkvrbR2i.cjs";
|
|
2
2
|
export { AuthStrategy, ManagementGenericFetchClient, ManagementOpenApiFetchClient, createManagementClient, isManagementClientAuthError };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as createManagementClient, i as ManagementOpenApiFetchClient, n as AuthStrategy, r as ManagementGenericFetchClient, t as isManagementClientAuthError } from "../index-
|
|
1
|
+
import { a as createManagementClient, i as ManagementOpenApiFetchClient, n as AuthStrategy, r as ManagementGenericFetchClient, t as isManagementClientAuthError } from "../index-CA6QxbhZ.js";
|
|
2
2
|
export { AuthStrategy, ManagementGenericFetchClient, ManagementOpenApiFetchClient, createManagementClient, isManagementClientAuthError };
|