@keboola/api-client 1.0.0 → 1.0.1

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/dist/index.js CHANGED
@@ -961,6 +961,24 @@ var toolInfoSchema2 = z.object({
961
961
  var toolsListResponseSchema2 = z.object({
962
962
  tools: z.array(toolInfoSchema2)
963
963
  });
964
+ var sandboxFileEntrySchema = z.object({
965
+ name: z.string(),
966
+ path: z.string(),
967
+ type: z.enum(["file", "dir"]),
968
+ size: z.number().int().nonnegative().optional()
969
+ });
970
+ var sandboxFileListingSchema = z.object({
971
+ entries: z.array(sandboxFileEntrySchema)
972
+ });
973
+ var sandboxFileContentSchema = z.object({
974
+ content: z.string(),
975
+ encoding: z.enum(["utf-8", "binary"]),
976
+ truncated: z.boolean(),
977
+ size: z.number().int().nonnegative()
978
+ });
979
+ var sandboxGitBranchSchema = z.object({
980
+ branch: z.string().nullable()
981
+ });
964
982
  var createKaiAgentClient = ({ baseUrl, middlewares }) => {
965
983
  const clientOptions = { baseUrl, middlewares };
966
984
  const client = createOpenapiFetchClient(clientOptions);
@@ -1070,6 +1088,42 @@ var createKaiAgentClient = ({ baseUrl, middlewares }) => {
1070
1088
  }
1071
1089
  return result.data;
1072
1090
  };
1091
+ const listSandboxFiles = async (chatId, path, signal) => {
1092
+ const { data } = await genericClient.get(
1093
+ `/api/chat/${encodeURIComponent(chatId)}/sandbox/files`,
1094
+ { query: path ? { path } : void 0 },
1095
+ { signal }
1096
+ );
1097
+ const result = sandboxFileListingSchema.safeParse(data);
1098
+ if (!result.success) {
1099
+ throw new Error("Invalid sandbox files response format");
1100
+ }
1101
+ return result.data;
1102
+ };
1103
+ const readSandboxFile = async (chatId, path, signal) => {
1104
+ const { data } = await genericClient.get(
1105
+ `/api/chat/${encodeURIComponent(chatId)}/sandbox/file`,
1106
+ { query: { path } },
1107
+ { signal }
1108
+ );
1109
+ const result = sandboxFileContentSchema.safeParse(data);
1110
+ if (!result.success) {
1111
+ throw new Error("Invalid sandbox file response format");
1112
+ }
1113
+ return result.data;
1114
+ };
1115
+ const getSandboxGitBranch = async (chatId, signal) => {
1116
+ const { data } = await genericClient.get(
1117
+ `/api/chat/${encodeURIComponent(chatId)}/sandbox/git-branch`,
1118
+ {},
1119
+ { signal }
1120
+ );
1121
+ const result = sandboxGitBranchSchema.safeParse(data);
1122
+ if (!result.success) {
1123
+ throw new Error("Invalid sandbox git-branch response format");
1124
+ }
1125
+ return result.data;
1126
+ };
1073
1127
  const chatStreamUrl = baseUrl + "/api/chat";
1074
1128
  return {
1075
1129
  getHistory,
@@ -1088,6 +1142,9 @@ var createKaiAgentClient = ({ baseUrl, middlewares }) => {
1088
1142
  getUserAgentSettings,
1089
1143
  updateUserAgentSettings,
1090
1144
  getToolsList,
1145
+ listSandboxFiles,
1146
+ readSandboxFile,
1147
+ getSandboxGitBranch,
1091
1148
  chatStreamUrl
1092
1149
  };
1093
1150
  };
@@ -2307,6 +2364,30 @@ var createBranches = (client) => {
2307
2364
  };
2308
2365
  };
2309
2366
 
2367
+ // src/clients/storage/buckets/listingConversion.ts
2368
+ var toBackendSubscribers = (subscribers) => subscribers.map((s) => `${s.type}:${s.email}`);
2369
+ var fromBackendSubscribers = (raw) => {
2370
+ const result = [];
2371
+ for (const entry of raw) {
2372
+ const colon = entry.indexOf(":");
2373
+ if (colon === -1) continue;
2374
+ const prefix = entry.slice(0, colon);
2375
+ const email2 = entry.slice(colon + 1);
2376
+ if (prefix !== "user" && prefix !== "group") continue;
2377
+ if (email2.length === 0) continue;
2378
+ result.push({ type: prefix, email: email2 });
2379
+ }
2380
+ return result;
2381
+ };
2382
+ var toBucketListing = (raw, bucketId) => ({
2383
+ bucketId,
2384
+ name: raw.name,
2385
+ description: raw.description ?? null,
2386
+ listingId: raw.bigquery.listingId,
2387
+ subscribers: fromBackendSubscribers(raw.bigquery.subscribers),
2388
+ createdAt: raw.createdAt
2389
+ });
2390
+
2310
2391
  // src/clients/storage/buckets/buckets.ts
2311
2392
  var createBuckets = (client) => {
2312
2393
  const getBuckets = async (query = {}, signal) => {
@@ -2358,6 +2439,64 @@ var createBuckets = (client) => {
2358
2439
  path: { taskId }
2359
2440
  });
2360
2441
  };
2442
+ const getListing = async (bucketId, signal) => {
2443
+ try {
2444
+ const { data } = await client.get(
2445
+ `/buckets/{bucketId}/listing`,
2446
+ { path: { bucketId } },
2447
+ { signal }
2448
+ );
2449
+ return toBucketListing(data, bucketId);
2450
+ } catch (error) {
2451
+ if (isApiError(error) && error.response.status === 404) return null;
2452
+ throw error;
2453
+ }
2454
+ };
2455
+ const createListing = async (bucketId, input, signal) => {
2456
+ const { data } = await client.post(
2457
+ `/buckets/{bucketId}/listing`,
2458
+ {
2459
+ path: { bucketId },
2460
+ body: {
2461
+ listingName: input.name,
2462
+ listingDescription: input.description?.trim() || null,
2463
+ bigquery: {
2464
+ listingId: input.listingId,
2465
+ subscribers: toBackendSubscribers(input.subscribers)
2466
+ }
2467
+ }
2468
+ },
2469
+ { signal }
2470
+ );
2471
+ return data;
2472
+ };
2473
+ const updateListing = async (bucketId, input, signal) => {
2474
+ const body = {};
2475
+ if (input.name !== void 0) body.exposureName = input.name;
2476
+ if (input.description !== void 0) {
2477
+ body.exposureDescription = input.description?.trim() || null;
2478
+ }
2479
+ if (input.subscribers !== void 0) {
2480
+ body.bigquery = { subscribers: toBackendSubscribers(input.subscribers) };
2481
+ }
2482
+ if (Object.keys(body).length === 0) {
2483
+ throw new Error("updateListing requires at least one field");
2484
+ }
2485
+ const { data } = await client.patch(`/buckets/{bucketId}/listing`, { path: { bucketId }, body }, { signal });
2486
+ return data;
2487
+ };
2488
+ const deleteListing = async (bucketId, signal) => {
2489
+ const { data } = await client.delete(
2490
+ `/buckets/{bucketId}/listing`,
2491
+ { path: { bucketId } },
2492
+ { signal }
2493
+ );
2494
+ return data;
2495
+ };
2496
+ const listListings = async (signal) => {
2497
+ const { data } = await client.get(`/listings`, {}, { signal });
2498
+ return data.map((row) => toBucketListing(row, row.bucketId));
2499
+ };
2361
2500
  return {
2362
2501
  getBuckets,
2363
2502
  getBucket,
@@ -2366,7 +2505,12 @@ var createBuckets = (client) => {
2366
2505
  deleteBucket,
2367
2506
  deleteBucketAsync,
2368
2507
  createScheduledRefresh,
2369
- deleteScheduledTask
2508
+ deleteScheduledTask,
2509
+ getListing,
2510
+ createListing,
2511
+ updateListing,
2512
+ deleteListing,
2513
+ listListings
2370
2514
  };
2371
2515
  };
2372
2516
 
@@ -3433,10 +3577,29 @@ var createStorageSdk = ({ storageClient }) => {
3433
3577
  const job = await storageClient.tables.exportAsync(tableId, body, options?.abortSignal);
3434
3578
  return waitForJob(job, options);
3435
3579
  };
3580
+ const getBucketListing = async (bucketId, signal) => storageClient.buckets.getListing(bucketId, signal);
3581
+ const listBucketListings = async (signal) => storageClient.buckets.listListings(signal);
3582
+ const createBucketListing = async (bucketId, input, options) => {
3583
+ const job = await storageClient.buckets.createListing(bucketId, input, options?.abortSignal);
3584
+ return waitForJob(job, options);
3585
+ };
3586
+ const updateBucketListing = async (bucketId, input, options) => {
3587
+ const job = await storageClient.buckets.updateListing(bucketId, input, options?.abortSignal);
3588
+ return waitForJob(job, options);
3589
+ };
3590
+ const deleteBucketListing = async (bucketId, options) => {
3591
+ const job = await storageClient.buckets.deleteListing(bucketId, options?.abortSignal);
3592
+ return waitForJob(job, options);
3593
+ };
3436
3594
  return {
3437
3595
  createTable,
3438
3596
  importFromFile,
3439
- exportToFile
3597
+ exportToFile,
3598
+ getBucketListing,
3599
+ listBucketListings,
3600
+ createBucketListing,
3601
+ updateBucketListing,
3602
+ deleteBucketListing
3440
3603
  };
3441
3604
  };
3442
3605