@keboola/api-client 50.0.0 → 51.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/API-SURFACE.md +2 -1
  2. package/CHANGELOG.md +10 -0
  3. package/dist/apps/index.d.cts +10 -1
  4. package/dist/apps/index.d.ts +10 -1
  5. package/dist/apps/types.d.cts +1 -1
  6. package/dist/apps/types.d.ts +1 -1
  7. package/dist/encryption/index.d.cts +1 -1
  8. package/dist/encryption/index.d.ts +1 -1
  9. package/dist/encryption/types.d.cts +1 -1
  10. package/dist/encryption/types.d.ts +1 -1
  11. package/dist/{index-Xpu7qIZk.d.ts → index-BfAcp7O2.d.ts} +2 -2
  12. package/dist/{index-C9iNazAc.d.ts → index-BsT_cBJd.d.ts} +19 -5
  13. package/dist/{index-DXoN8VwV.d.cts → index-C1ndNdrN.d.cts} +2 -2
  14. package/dist/{index-CN0--VsY.d.ts → index-Day1Yr5s.d.ts} +5 -2
  15. package/dist/{index-CTMnmISl.d.cts → index-qJ2IjXIM.d.cts} +19 -5
  16. package/dist/{index-CCcdySOC.d.cts → index-xhzuWloV.d.cts} +5 -2
  17. package/dist/index.cjs +6 -5
  18. package/dist/index.cjs.map +1 -1
  19. package/dist/index.d.cts +1 -1
  20. package/dist/index.d.ts +1 -1
  21. package/dist/index.js +6 -5
  22. package/dist/index.js.map +1 -1
  23. package/dist/kaiAgent/index.cjs +1 -1
  24. package/dist/kaiAgent/index.d.cts +1 -1
  25. package/dist/kaiAgent/index.d.ts +1 -1
  26. package/dist/kaiAgent/index.js +1 -1
  27. package/dist/kaiAgent/types.d.cts +1 -1
  28. package/dist/kaiAgent/types.d.ts +1 -1
  29. package/dist/{kaiAgent-gaA7dqki.cjs → kaiAgent-CDhg0MAw.cjs} +11 -1
  30. package/dist/kaiAgent-CDhg0MAw.cjs.map +1 -0
  31. package/dist/{kaiAgent-D2TiMDjW.js → kaiAgent-CYU1Uda8.js} +11 -1
  32. package/dist/kaiAgent-CYU1Uda8.js.map +1 -0
  33. package/dist/queryService/index.d.cts +1 -1
  34. package/dist/queryService/index.d.ts +1 -1
  35. package/dist/queryService/types.d.cts +1 -1
  36. package/dist/queryService/types.d.ts +1 -1
  37. package/dist/queue/index.d.cts +1 -1
  38. package/dist/queue/index.d.ts +1 -1
  39. package/dist/sdk/configurations/index.d.cts +2 -2
  40. package/dist/sdk/configurations/index.d.ts +2 -2
  41. package/dist/sdk/queryService/index.d.cts +1 -1
  42. package/dist/sdk/queryService/index.d.ts +1 -1
  43. package/dist/sdk/vault/index.d.cts +1 -1
  44. package/dist/sdk/vault/index.d.ts +1 -1
  45. package/dist/storage/index.d.cts +2 -2
  46. package/dist/storage/index.d.ts +2 -2
  47. package/dist/storage/types.d.cts +1 -1
  48. package/dist/storage/types.d.ts +1 -1
  49. package/dist/{types-Dz9vyloX.d.ts → types-B8k1DqlU.d.ts} +124 -1
  50. package/dist/{types-BB49alHP.d.cts → types-BrEVh0WE.d.cts} +11 -2
  51. package/dist/{types-BfB-XXLF.d.ts → types-DKSUG2dZ.d.ts} +11 -2
  52. package/dist/{types-BCGrKW1K.d.cts → types-PZzNANiS.d.cts} +124 -1
  53. package/package.json +1 -1
  54. package/surface/apps.md +7 -7
  55. package/surface/kaiAgent.md +1 -0
  56. package/dist/kaiAgent-D2TiMDjW.js.map +0 -1
  57. package/dist/kaiAgent-gaA7dqki.cjs.map +0 -1
@@ -614,12 +614,21 @@ type components = {
614
614
  url: string | null;
615
615
  /** @description Whether the app has a Keboola-managed git repository (see `GET /apps/{appId}/git-repo`). */
616
616
  hasManagedGitRepo: boolean;
617
- /** @description Always present. `null` on both fields means the app has never been deployed (URL reserved, publicly 404s). The two fields differ while a promotion is in progress — see `App.state` for how to read that alongside it. */
617
+ /** @description Always present. `null` on every field means the app has never been deployed (URL reserved, publicly 404s). The desired and actual fields differ while a promotion is in progress — see `App.state` for how to read that alongside it. */
618
618
  production: {
619
619
  /** @description Id of the deployment most recently asked to be production — pass this to `promote`, or delete it instead. */
620
620
  desiredDeploymentId?: string | null;
621
621
  /** @description Id of the deployment actually serving production traffic right now. */
622
622
  actualDeploymentId?: string | null;
623
+ /** @description `configVersion` of the deployment `desiredDeploymentId` names — the config version production is being moved to. */
624
+ desiredConfigVersion?: string | null;
625
+ /** @description `configVersion` of the deployment `actualDeploymentId` names — the config version production serves right now. */
626
+ actualConfigVersion?: string | null;
627
+ /**
628
+ * Format: date-time
629
+ * @description `createdAt` of the deployment `desiredDeploymentId` names, i.e. when the latest rollout started.
630
+ */
631
+ desiredCreatedAt?: string | null;
623
632
  };
624
633
  /**
625
634
  * @description Whether this app's production is currently serving traffic, and if not, why.
@@ -2185,4 +2194,4 @@ type CreateAppBody = OpenapiBodyType<paths['/apps']['post']>;
2185
2194
  type CreateDeploymentBody = OpenapiBodyType<paths['/apps/{appId}/deployments']['post']>;
2186
2195
  type CreateCredentialBody = OpenapiBodyType<paths['/apps/{appId}/git-repo/credentials']['post']>;
2187
2196
  export { RunId as C, GetLogsTailQuery as S, DeploymentRunState as _, AppRun as a, GetAppsQuery as b, CreateCredentialBody as c, Credential as d, CredentialId as f, DeploymentId as g, DeploymentBuildState as h, AppPassword as i, CreateDeploymentBody as l, Deployment as m, AppGitRepo as n, AppState as o, CredentialList as p, AppId as r, CreateAppBody as s, App as t, CreatedCredential as u, GetAppGitEntrypointsQuery as v, components as w, GetDeploymentsQuery as x, GetAppRunsQuery as y };
2188
- //# sourceMappingURL=types-BB49alHP.d.cts.map
2197
+ //# sourceMappingURL=types-BrEVh0WE.d.cts.map
@@ -614,12 +614,21 @@ type components = {
614
614
  url: string | null;
615
615
  /** @description Whether the app has a Keboola-managed git repository (see `GET /apps/{appId}/git-repo`). */
616
616
  hasManagedGitRepo: boolean;
617
- /** @description Always present. `null` on both fields means the app has never been deployed (URL reserved, publicly 404s). The two fields differ while a promotion is in progress — see `App.state` for how to read that alongside it. */
617
+ /** @description Always present. `null` on every field means the app has never been deployed (URL reserved, publicly 404s). The desired and actual fields differ while a promotion is in progress — see `App.state` for how to read that alongside it. */
618
618
  production: {
619
619
  /** @description Id of the deployment most recently asked to be production — pass this to `promote`, or delete it instead. */
620
620
  desiredDeploymentId?: string | null;
621
621
  /** @description Id of the deployment actually serving production traffic right now. */
622
622
  actualDeploymentId?: string | null;
623
+ /** @description `configVersion` of the deployment `desiredDeploymentId` names — the config version production is being moved to. */
624
+ desiredConfigVersion?: string | null;
625
+ /** @description `configVersion` of the deployment `actualDeploymentId` names — the config version production serves right now. */
626
+ actualConfigVersion?: string | null;
627
+ /**
628
+ * Format: date-time
629
+ * @description `createdAt` of the deployment `desiredDeploymentId` names, i.e. when the latest rollout started.
630
+ */
631
+ desiredCreatedAt?: string | null;
623
632
  };
624
633
  /**
625
634
  * @description Whether this app's production is currently serving traffic, and if not, why.
@@ -2185,4 +2194,4 @@ type CreateAppBody = OpenapiBodyType<paths['/apps']['post']>;
2185
2194
  type CreateDeploymentBody = OpenapiBodyType<paths['/apps/{appId}/deployments']['post']>;
2186
2195
  type CreateCredentialBody = OpenapiBodyType<paths['/apps/{appId}/git-repo/credentials']['post']>;
2187
2196
  export { RunId as C, GetLogsTailQuery as S, DeploymentRunState as _, AppRun as a, GetAppsQuery as b, CreateCredentialBody as c, Credential as d, CredentialId as f, DeploymentId as g, DeploymentBuildState as h, AppPassword as i, CreateDeploymentBody as l, Deployment as m, AppGitRepo as n, AppState as o, CredentialList as p, AppId as r, CreateAppBody as s, App as t, CreatedCredential as u, GetAppGitEntrypointsQuery as v, components as w, GetDeploymentsQuery as x, GetAppRunsQuery as y };
2188
- //# sourceMappingURL=types-BfB-XXLF.d.ts.map
2197
+ //# sourceMappingURL=types-DKSUG2dZ.d.ts.map
@@ -2115,6 +2115,129 @@ type paths = {
2115
2115
  patch?: never;
2116
2116
  trace?: never;
2117
2117
  };
2118
+ '/api/chat/{id}/credential': {
2119
+ parameters: {
2120
+ query?: never;
2121
+ header?: never;
2122
+ path?: never;
2123
+ cookie?: never;
2124
+ };
2125
+ get?: never;
2126
+ put?: never;
2127
+ /**
2128
+ * Give the chat's running turn the caller's current credential
2129
+ * @description The request's own authentication is the credential: a client whose token rotated mid-turn posts here, and the turn's later upstream calls use the new token. It must belong to the turn's user and project.
2130
+ */
2131
+ post: {
2132
+ parameters: {
2133
+ query?: never;
2134
+ header?: never;
2135
+ path: {
2136
+ id: string;
2137
+ };
2138
+ cookie?: never;
2139
+ };
2140
+ requestBody?: never;
2141
+ responses: {
2142
+ /** @description Credential handled */
2143
+ 200: {
2144
+ headers: {
2145
+ [name: string]: unknown;
2146
+ };
2147
+ content: {
2148
+ 'application/json': {
2149
+ updated: boolean;
2150
+ };
2151
+ };
2152
+ };
2153
+ /** @description Unauthorized */
2154
+ 401: {
2155
+ headers: {
2156
+ [name: string]: unknown;
2157
+ };
2158
+ content: {
2159
+ 'application/json': {
2160
+ error: {
2161
+ /** @enum {string} */
2162
+ type: 'bad_request' | 'unauthorized' | 'forbidden' | 'not_found' | 'conflict' | 'payload_too_large' | 'rate_limit' | 'offline' | 'bad_response' | 'internal';
2163
+ /** @enum {string} */
2164
+ surface: 'chat' | 'auth' | 'api' | 'stream' | 'database' | 'history' | 'vote' | 'artifact';
2165
+ message: string;
2166
+ /** @enum {string} */
2167
+ subtype?: 'burst' | 'monthly_messages' | 'monthly_credits_user' | 'monthly_credits_project' | 'resolved' | 'timed_out' | 'chat_cancelled' | 'swept' | 'shutdown';
2168
+ exceptionId?: string;
2169
+ };
2170
+ };
2171
+ };
2172
+ };
2173
+ /** @description Forbidden — the credential is not the turn's user and project */
2174
+ 403: {
2175
+ headers: {
2176
+ [name: string]: unknown;
2177
+ };
2178
+ content: {
2179
+ 'application/json': {
2180
+ error: {
2181
+ /** @enum {string} */
2182
+ type: 'bad_request' | 'unauthorized' | 'forbidden' | 'not_found' | 'conflict' | 'payload_too_large' | 'rate_limit' | 'offline' | 'bad_response' | 'internal';
2183
+ /** @enum {string} */
2184
+ surface: 'chat' | 'auth' | 'api' | 'stream' | 'database' | 'history' | 'vote' | 'artifact';
2185
+ message: string;
2186
+ /** @enum {string} */
2187
+ subtype?: 'burst' | 'monthly_messages' | 'monthly_credits_user' | 'monthly_credits_project' | 'resolved' | 'timed_out' | 'chat_cancelled' | 'swept' | 'shutdown';
2188
+ exceptionId?: string;
2189
+ };
2190
+ };
2191
+ };
2192
+ };
2193
+ /** @description Chat not found */
2194
+ 404: {
2195
+ headers: {
2196
+ [name: string]: unknown;
2197
+ };
2198
+ content: {
2199
+ 'application/json': {
2200
+ error: {
2201
+ /** @enum {string} */
2202
+ type: 'bad_request' | 'unauthorized' | 'forbidden' | 'not_found' | 'conflict' | 'payload_too_large' | 'rate_limit' | 'offline' | 'bad_response' | 'internal';
2203
+ /** @enum {string} */
2204
+ surface: 'chat' | 'auth' | 'api' | 'stream' | 'database' | 'history' | 'vote' | 'artifact';
2205
+ message: string;
2206
+ /** @enum {string} */
2207
+ subtype?: 'burst' | 'monthly_messages' | 'monthly_credits_user' | 'monthly_credits_project' | 'resolved' | 'timed_out' | 'chat_cancelled' | 'swept' | 'shutdown';
2208
+ exceptionId?: string;
2209
+ };
2210
+ };
2211
+ };
2212
+ };
2213
+ /** @description Service unavailable — an upstream dependency (e.g. Storage API) is unreachable */
2214
+ 503: {
2215
+ headers: {
2216
+ [name: string]: unknown;
2217
+ };
2218
+ content: {
2219
+ 'application/json': {
2220
+ error: {
2221
+ /** @enum {string} */
2222
+ type: 'bad_request' | 'unauthorized' | 'forbidden' | 'not_found' | 'conflict' | 'payload_too_large' | 'rate_limit' | 'offline' | 'bad_response' | 'internal';
2223
+ /** @enum {string} */
2224
+ surface: 'chat' | 'auth' | 'api' | 'stream' | 'database' | 'history' | 'vote' | 'artifact';
2225
+ message: string;
2226
+ /** @enum {string} */
2227
+ subtype?: 'burst' | 'monthly_messages' | 'monthly_credits_user' | 'monthly_credits_project' | 'resolved' | 'timed_out' | 'chat_cancelled' | 'swept' | 'shutdown';
2228
+ exceptionId?: string;
2229
+ };
2230
+ };
2231
+ };
2232
+ };
2233
+ };
2234
+ };
2235
+ delete?: never;
2236
+ options?: never;
2237
+ head?: never;
2238
+ patch?: never;
2239
+ trace?: never;
2240
+ };
2118
2241
  '/api/chat/{id}/sandbox/files': {
2119
2242
  parameters: {
2120
2243
  query?: never;
@@ -4332,4 +4455,4 @@ type GetArtifactPath = OpenapiPathType<paths['/api/artifacts/{id}']['get']>;
4332
4455
  type ArtifactResponse = OpenapiReturnType<paths['/api/artifacts/{id}']['get']>;
4333
4456
  type ArtifactListResponse = OpenapiReturnType<paths['/api/artifacts']['get']>;
4334
4457
  export { ChatWithMessages as a, GetChatPath as c, PrepareChatRequest as d, UsageResponse as f, ChatRequest as i, GetHistoryQuery as l, ArtifactListResponse as n, GetArtifactPath as o, VoteRequest as p, ArtifactResponse as r, GetArtifactsQuery as s, ApprovalBody as t, GetVotesQuery as u };
4335
- //# sourceMappingURL=types-BCGrKW1K.d.cts.map
4458
+ //# sourceMappingURL=types-PZzNANiS.d.cts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keboola/api-client",
3
- "version": "50.0.0",
3
+ "version": "51.0.0",
4
4
  "description": "TypeScript SDK for Keboola APIs",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/surface/apps.md CHANGED
@@ -4,13 +4,13 @@
4
4
 
5
5
  Part of the [`@keboola/api-client` surface index](../API-SURFACE.md).
6
6
 
7
- - `api.apps.createApp(body: { branchId: string | null; name: string; type: "streamlit" | "python-js"; description?: string | null | undefined; config?: { [key: string]: unknown; } | undefined; useManagedGitRepo: boolean; }, options?: WriteOptions): Promise<{ id: string; projectId: string; componentId: string; branchId: string | null; configId: string; type?: "streamlit" | "python-js" | null | undefined; url: string | null; hasManagedGitRepo: boolean; production: { desiredDeploymentId?: string | null | undefined; actualDeploymentId?: string | null | undefined; }; state: "starting" | "running" | "notDeployed" | "suspended" | "disabled"; }>`
7
+ - `api.apps.createApp(body: { branchId: string | null; name: string; type: "streamlit" | "python-js"; description?: string | null | undefined; config?: { [key: string]: unknown; } | undefined; useManagedGitRepo: boolean; }, options?: WriteOptions): Promise<{ id: string; projectId: string; componentId: string; branchId: string | null; configId: string; type?: "streamlit" | "python-js" | null | undefined; url: string | null; hasManagedGitRepo: boolean; production: { desiredDeploymentId?: string | null | undefined; actualDeploymentId?: string | null | undefined; desiredConfigVersion?: string | null | undefined; actualConfigVersion?: string | null | undefined; desiredCreatedAt?: string | null | undefined; }; state: "starting" | "running" | "notDeployed" | "suspended" | "disabled"; }>`
8
8
  - `api.apps.createAppGitRepoCredential(appId: string, body: { type: "ssh_key" | "http_token"; publicKey?: string | undefined; name: string; permissions: "readOnly" | "readWrite"; }, options?: WriteOptions): Promise<{ id: string; type: "ssh_key" | "http_token"; name: string; permissions: "readOnly" | "readWrite"; ownerAdminId: string; createdAt: string; } & { secret?: string | undefined; }>`
9
9
  - `api.apps.createDeployment(appId: string, body?: { promote: boolean; configVersion?: string | null | undefined; } | undefined, options?: WriteOptions): Promise<{ id: string; configVersion: string; gitCommitSha: string | null; runtimeSize?: "small" | "micro" | "tiny" | "medium" | "large" | "external" | null | undefined; buildState: "pending" | "failed" | "building" | "ready"; runState: "pending" | "starting" | "running" | "failed" | "stopping" | "stopped" | "neverRun"; archived: boolean; archivedAt: string | null; createdAt: string; }>`
10
10
  - `api.apps.deleteApp(appId: string, signal?: AbortSignal | undefined): Promise<void>`
11
11
  - `api.apps.deleteAppGitRepoCredential(appId: string, credentialId: string, signal?: AbortSignal | undefined): Promise<void>`
12
12
  - `api.apps.deleteDeployment(appId: string, deploymentId: string, signal?: AbortSignal | undefined): Promise<void>`
13
- - `api.apps.getApp(appId: string, signal?: AbortSignal | undefined): Promise<{ id: string; projectId: string; componentId: string; branchId: string | null; configId: string; type?: "streamlit" | "python-js" | null | undefined; url: string | null; hasManagedGitRepo: boolean; production: { desiredDeploymentId?: string | null | undefined; actualDeploymentId?: string | null | undefined; }; state: "starting" | "running" | "notDeployed" | "suspended" | "disabled"; }>`
13
+ - `api.apps.getApp(appId: string, signal?: AbortSignal | undefined): Promise<{ id: string; projectId: string; componentId: string; branchId: string | null; configId: string; type?: "streamlit" | "python-js" | null | undefined; url: string | null; hasManagedGitRepo: boolean; production: { desiredDeploymentId?: string | null | undefined; actualDeploymentId?: string | null | undefined; desiredConfigVersion?: string | null | undefined; actualConfigVersion?: string | null | undefined; desiredCreatedAt?: string | null | undefined; }; state: "starting" | "running" | "notDeployed" | "suspended" | "disabled"; }>`
14
14
  - `api.apps.getAppGitRepo(appId: string, signal?: AbortSignal | undefined): Promise<{ sshUrl: string | null; httpsUrl: string | null; isManagedGitRepo: boolean; }>`
15
15
  - `api.apps.getAppGitRepoBranches(appId: string, signal?: AbortSignal | undefined): Promise<{ defaultBranch: string; branches: { name: string; sha: string; }[]; }>`
16
16
  - `api.apps.getAppGitRepoCredential(appId: string, credentialId: string, signal?: AbortSignal | undefined): Promise<{ id: string; type: "ssh_key" | "http_token"; name: string; permissions: "readOnly" | "readWrite"; ownerAdminId: string; createdAt: string; }>`
@@ -21,14 +21,14 @@ Part of the [`@keboola/api-client` surface index](../API-SURFACE.md).
21
21
  - `api.apps.getAppPassword(appId: string, signal?: AbortSignal | undefined): Promise<{ password?: string | null | undefined; }>`
22
22
  - `api.apps.getAppRun(appId: string, runId: string, signal?: AbortSignal | undefined): Promise<{ id: string; appId: string; deploymentId: string | null; state?: "starting" | "running" | "failed" | "finished" | null | undefined; createdAt?: string | null | undefined; startedAt?: string | null | undefined; stoppedAt?: string | null | undefined; startupLogs?: string | null | undefined; runtimeSize?: string | null | undefined; runtimeBackendType?: string | null | undefined; configVersion?: string | null | undefined; imageVersion?: string | null | undefined; failureReason?: { reason?: string | null | undefined; message?: string | null | undefined; } | null | undefined; mode?: string | undefined; }>`
23
23
  - `api.apps.getAppRuns(appId: string, query?: { deploymentId?: string | undefined; since?: string | undefined; until?: string | undefined; offset?: number | undefined; limit?: number | undefined; }, signal?: AbortSignal | undefined): Promise<{ id: string; appId: string; deploymentId: string | null; state?: "starting" | "running" | "failed" | "finished" | null | undefined; createdAt?: string | null | undefined; startedAt?: string | null | undefined; stoppedAt?: string | null | undefined; startupLogs?: string | null | undefined; runtimeSize?: string | null | undefined; runtimeBackendType?: string | null | undefined; configVersion?: string | null | undefined; imageVersion?: string | null | undefined; failureReason?: { reason?: string | null | undefined; message?: string | null | undefined; } | null | undefined; mode?: string | undefined; }[]>`
24
- - `api.apps.getApps(query?: { offset?: number | undefined; limit?: number | undefined; }, signal?: AbortSignal | undefined): Promise<{ id: string; projectId: string; componentId: string; branchId: string | null; configId: string; type?: "streamlit" | "python-js" | null | undefined; url: string | null; hasManagedGitRepo: boolean; production: { desiredDeploymentId?: string | null | undefined; actualDeploymentId?: string | null | undefined; }; state: "starting" | "running" | "notDeployed" | "suspended" | "disabled"; }[]>`
24
+ - `api.apps.getApps(query?: { offset?: number | undefined; limit?: number | undefined; }, signal?: AbortSignal | undefined): Promise<{ id: string; projectId: string; componentId: string; branchId: string | null; configId: string; type?: "streamlit" | "python-js" | null | undefined; url: string | null; hasManagedGitRepo: boolean; production: { desiredDeploymentId?: string | null | undefined; actualDeploymentId?: string | null | undefined; desiredConfigVersion?: string | null | undefined; actualConfigVersion?: string | null | undefined; desiredCreatedAt?: string | null | undefined; }; state: "starting" | "running" | "notDeployed" | "suspended" | "disabled"; }[]>`
25
25
  - `api.apps.getDeployment(appId: string, deploymentId: string, signal?: AbortSignal | undefined): Promise<{ id: string; configVersion: string; gitCommitSha: string | null; runtimeSize?: "small" | "micro" | "tiny" | "medium" | "large" | "external" | null | undefined; buildState: "pending" | "failed" | "building" | "ready"; runState: "pending" | "starting" | "running" | "failed" | "stopping" | "stopped" | "neverRun"; archived: boolean; archivedAt: string | null; createdAt: string; }>`
26
26
  - `api.apps.getDeploymentLogsDownload(appId: string, deploymentId: string, signal?: AbortSignal | undefined): Promise<{ logs: string; fileName: string; }>`
27
27
  - `api.apps.getDeploymentLogsTail(appId: string, deploymentId: string, { query, signal }?: LogsTailOptions): Promise<{ entries: LogEntry[]; nextLogTimestamp: string | null; }>`
28
28
  - `api.apps.getDeployments(appId: string, query?: { archived?: boolean | undefined; offset?: number | undefined; limit?: number | undefined; }, signal?: AbortSignal | undefined): Promise<{ id: string; configVersion: string; gitCommitSha: string | null; runtimeSize?: "small" | "micro" | "tiny" | "medium" | "large" | "external" | null | undefined; buildState: "pending" | "failed" | "building" | "ready"; runState: "pending" | "starting" | "running" | "failed" | "stopping" | "stopped" | "neverRun"; archived: boolean; archivedAt: string | null; createdAt: string; }[]>`
29
29
  - `api.apps.healthCheck(signal?: AbortSignal | undefined): Promise<{ appName?: string | undefined; appVersion?: string | undefined; apiDocs?: string | undefined; }>`
30
- - `api.apps.promoteDeployment(appId: string, deploymentId: string, signal?: AbortSignal | undefined): Promise<{ id: string; projectId: string; componentId: string; branchId: string | null; configId: string; type?: "streamlit" | "python-js" | null | undefined; url: string | null; hasManagedGitRepo: boolean; production: { desiredDeploymentId?: string | null | undefined; actualDeploymentId?: string | null | undefined; }; state: "starting" | "running" | "notDeployed" | "suspended" | "disabled"; }>`
30
+ - `api.apps.promoteDeployment(appId: string, deploymentId: string, signal?: AbortSignal | undefined): Promise<{ id: string; projectId: string; componentId: string; branchId: string | null; configId: string; type?: "streamlit" | "python-js" | null | undefined; url: string | null; hasManagedGitRepo: boolean; production: { desiredDeploymentId?: string | null | undefined; actualDeploymentId?: string | null | undefined; desiredConfigVersion?: string | null | undefined; actualConfigVersion?: string | null | undefined; desiredCreatedAt?: string | null | undefined; }; state: "starting" | "running" | "notDeployed" | "suspended" | "disabled"; }>`
31
31
  - `api.apps.resetAppPassword(appId: string, signal?: AbortSignal | undefined): Promise<{ password: string; }>`
32
- - `api.apps.resumeApp(appId: string, signal?: AbortSignal | undefined): Promise<{ id: string; projectId: string; componentId: string; branchId: string | null; configId: string; type?: "streamlit" | "python-js" | null | undefined; url: string | null; hasManagedGitRepo: boolean; production: { desiredDeploymentId?: string | null | undefined; actualDeploymentId?: string | null | undefined; }; state: "starting" | "running" | "notDeployed" | "suspended" | "disabled"; }>`
33
- - `api.apps.suspendApp(appId: string, signal?: AbortSignal | undefined): Promise<{ id: string; projectId: string; componentId: string; branchId: string | null; configId: string; type?: "streamlit" | "python-js" | null | undefined; url: string | null; hasManagedGitRepo: boolean; production: { desiredDeploymentId?: string | null | undefined; actualDeploymentId?: string | null | undefined; }; state: "starting" | "running" | "notDeployed" | "suspended" | "disabled"; }>`
34
- - `api.apps.unpublishApp(appId: string, signal?: AbortSignal | undefined): Promise<{ id: string; projectId: string; componentId: string; branchId: string | null; configId: string; type?: "streamlit" | "python-js" | null | undefined; url: string | null; hasManagedGitRepo: boolean; production: { desiredDeploymentId?: string | null | undefined; actualDeploymentId?: string | null | undefined; }; state: "starting" | "running" | "notDeployed" | "suspended" | "disabled"; }>`
32
+ - `api.apps.resumeApp(appId: string, signal?: AbortSignal | undefined): Promise<{ id: string; projectId: string; componentId: string; branchId: string | null; configId: string; type?: "streamlit" | "python-js" | null | undefined; url: string | null; hasManagedGitRepo: boolean; production: { desiredDeploymentId?: string | null | undefined; actualDeploymentId?: string | null | undefined; desiredConfigVersion?: string | null | undefined; actualConfigVersion?: string | null | undefined; desiredCreatedAt?: string | null | undefined; }; state: "starting" | "running" | "notDeployed" | "suspended" | "disabled"; }>`
33
+ - `api.apps.suspendApp(appId: string, signal?: AbortSignal | undefined): Promise<{ id: string; projectId: string; componentId: string; branchId: string | null; configId: string; type?: "streamlit" | "python-js" | null | undefined; url: string | null; hasManagedGitRepo: boolean; production: { desiredDeploymentId?: string | null | undefined; actualDeploymentId?: string | null | undefined; desiredConfigVersion?: string | null | undefined; actualConfigVersion?: string | null | undefined; desiredCreatedAt?: string | null | undefined; }; state: "starting" | "running" | "notDeployed" | "suspended" | "disabled"; }>`
34
+ - `api.apps.unpublishApp(appId: string, signal?: AbortSignal | undefined): Promise<{ id: string; projectId: string; componentId: string; branchId: string | null; configId: string; type?: "streamlit" | "python-js" | null | undefined; url: string | null; hasManagedGitRepo: boolean; production: { desiredDeploymentId?: string | null | undefined; actualDeploymentId?: string | null | undefined; desiredConfigVersion?: string | null | undefined; actualConfigVersion?: string | null | undefined; desiredCreatedAt?: string | null | undefined; }; state: "starting" | "running" | "notDeployed" | "suspended" | "disabled"; }>`
@@ -34,5 +34,6 @@ Part of the [`@keboola/api-client` surface index](../API-SURFACE.md).
34
34
  - `api.kaiAgent.updateAgentSettings(request: UpdateAgentSettingsRequest, signal?: AbortSignal | undefined): Promise<{ projectId: string; customInstructions: string | null; createdAt: string; updatedAt: string; toolPermissions?: Record<string, ProjectToolPolicyValue> | null | undefined; canWriteToolPolicy?: boolean | undefined; }>`
35
35
  - `api.kaiAgent.updateProjectToolPolicy(toolPermissions: ProjectToolPolicy, signal?: AbortSignal | undefined): Promise<{ projectId: string; customInstructions: string | null; createdAt: string; updatedAt: string; toolPermissions?: Record<string, ProjectToolPolicyValue> | null | undefined; canWriteToolPolicy?: boolean | undefined; }>`
36
36
  - `api.kaiAgent.updateSpendCaps(request: UpdateSpendCapsRequest, signal?: AbortSignal | undefined): Promise<SpendCapsView>`
37
+ - `api.kaiAgent.updateTurnCredential(chatId: string): Promise<{ updated: boolean; }>`
37
38
  - `api.kaiAgent.updateUserAgentSettings(request: UpdateUserAgentSettingsRequest, signal?: AbortSignal | undefined): Promise<{ projectId: string; userId: string; customInstructions: string | null; toolPermissions: Record<string, "blocked" | "always_ask" | "always_allow"> | null; createdAt: string; updatedAt: string; projectToolPermissions?: Record<string, ProjectToolPolicyValue> | null | undefined; memorySaveMode?: "auto" | "ask" | undefined; }>`
38
39
  - `api.kaiAgent.updateUserMemory(memoryId: string, content: string, signal?: AbortSignal | undefined): Promise<{ id: string; content: string; createdAt: string; }>`
@@ -1 +0,0 @@
1
- {"version":3,"file":"kaiAgent-D2TiMDjW.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 // Optional on the wire (rollout skew): an older kai-agent omits it, and its default is `auto`.\n memorySaveMode: z.enum(['auto', 'ask']).optional(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nconst userMemorySchema = z.object({ id: z.string(), content: z.string(), createdAt: z.string() });\n\nconst userMemoriesSchema = z.object({ memories: z.array(userMemorySchema) });\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 userMemorySchema>;\nexport type MemorySaveMode = NonNullable<UserAgentSettings['memorySaveMode']>;\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 memorySaveMode?: MemorySaveMode;\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 updateUserMemory = async (\n memoryId: string,\n content: string,\n signal?: AbortSignal,\n ): Promise<UserMemory> => {\n const { data } = await genericClient.patch(\n `/api/settings/user/memories/${encodeURIComponent(memoryId)}`,\n { body: { content } },\n { signal },\n );\n const result = userMemorySchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid user memory response format');\n }\n return result.data;\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 updateUserMemory,\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 +0,0 @@
1
- {"version":3,"file":"kaiAgent-gaA7dqki.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 // Optional on the wire (rollout skew): an older kai-agent omits it, and its default is `auto`.\n memorySaveMode: z.enum(['auto', 'ask']).optional(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nconst userMemorySchema = z.object({ id: z.string(), content: z.string(), createdAt: z.string() });\n\nconst userMemoriesSchema = z.object({ memories: z.array(userMemorySchema) });\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 userMemorySchema>;\nexport type MemorySaveMode = NonNullable<UserAgentSettings['memorySaveMode']>;\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 memorySaveMode?: MemorySaveMode;\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 updateUserMemory = async (\n memoryId: string,\n content: string,\n signal?: AbortSignal,\n ): Promise<UserMemory> => {\n const { data } = await genericClient.patch(\n `/api/settings/user/memories/${encodeURIComponent(memoryId)}`,\n { body: { content } },\n { signal },\n );\n const result = userMemorySchema.safeParse(data);\n if (!result.success) {\n throw new Error('Invalid user memory response format');\n }\n return result.data;\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 updateUserMemory,\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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"}