@idapt/browser-app-sdk 0.3.0 → 0.4.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/dist/index.cjs CHANGED
@@ -340,15 +340,6 @@ async function moveFile(ctx, id, parentId, opts = {}) {
340
340
  });
341
341
  return res.data;
342
342
  }
343
- async function runFile(ctx, id, input = {}, opts = {}) {
344
- const res = await request(ctx, {
345
- method: "POST",
346
- path: `/api/v1/drive/files/${id}/run`,
347
- body: input,
348
- signal: opts.signal
349
- });
350
- return res.data;
351
- }
352
343
 
353
344
  // ../sdk/src/api/agents.ts
354
345
  var AgentsApi = class {
@@ -477,6 +468,22 @@ var AiGatewayApi = class {
477
468
  });
478
469
  return res.data;
479
470
  }
471
+ /** Preview the provider route order for a model without spending tokens. */
472
+ async routePreview(input) {
473
+ const { signal, modelId, workspaceId, promptTokens, requiredCapabilities } = input;
474
+ const res = await request(this.ctx, {
475
+ method: "POST",
476
+ path: "/api/v1/ai-gateway/routing-preview",
477
+ body: {
478
+ model_id: modelId,
479
+ ...workspaceId ? { workspace_id: workspaceId } : {},
480
+ ...promptTokens !== void 0 ? { prompt_tokens: promptTokens } : {},
481
+ ...requiredCapabilities ? { required_capabilities: requiredCapabilities } : {}
482
+ },
483
+ signal
484
+ });
485
+ return res.data;
486
+ }
480
487
  };
481
488
 
482
489
  // ../sdk/src/api/api-keys.ts
@@ -545,151 +552,26 @@ var AudioApi = class {
545
552
  constructor(ctx) {
546
553
  this.ctx = ctx;
547
554
  }
548
- /** Text-to-speech. Responds HTTP 201 with the written file ref under `data`. */
549
- async speak(input, opts = {}) {
555
+ /** List the available TTS / transcription models. */
556
+ async listModels(opts = {}) {
550
557
  const res = await request(this.ctx, {
551
- method: "POST",
552
- path: "/api/v1/audio/speech",
553
- body: input,
558
+ method: "GET",
559
+ path: "/api/v1/audio/models",
554
560
  signal: opts.signal
555
561
  });
556
562
  return res.data;
557
563
  }
558
- async transcribe(input, opts = {}) {
559
- const form = new FormData();
560
- const filename = input.filename ?? (input.file instanceof File ? input.file.name : "audio");
561
- form.set("file", input.file, filename);
562
- if (input.model) form.set("model", input.model);
563
- if (input.language) form.set("language", input.language);
564
+ /** List the TTS voice catalog (filter by language / gender). */
565
+ async listVoices(input = {}, opts = {}) {
564
566
  const res = await request(this.ctx, {
565
- method: "POST",
566
- path: "/api/v1/audio/transcriptions",
567
- bodyRaw: form,
567
+ method: "GET",
568
+ path: "/api/v1/audio/voices",
569
+ query: input,
568
570
  signal: opts.signal
569
571
  });
570
572
  return res.data;
571
573
  }
572
- async *streamSpeech(input, opts = {}) {
573
- const res = await requestRaw(this.ctx, {
574
- method: "POST",
575
- path: "/api/v1/audio/speech/stream",
576
- body: input,
577
- signal: opts.signal,
578
- expectJson: false
579
- });
580
- yield* parseSpeechStream(res, opts.signal);
581
- }
582
- async *streamTranscribe(input, opts = {}) {
583
- const form = new FormData();
584
- const filename = input.filename ?? (input.file instanceof File ? input.file.name : "audio");
585
- form.set("file", input.file, filename);
586
- if (input.model) form.set("model", input.model);
587
- if (input.language) form.set("language", input.language);
588
- const res = await requestRaw(this.ctx, {
589
- method: "POST",
590
- path: "/api/v1/audio/transcriptions/stream",
591
- bodyRaw: form,
592
- signal: opts.signal,
593
- expectJson: false
594
- });
595
- yield* parseTranscriptionStream(res, opts.signal);
596
- }
597
574
  };
598
- async function* parseSpeechStream(response, signal) {
599
- for await (const frame of parseSse(response, signal)) {
600
- const payload = safeJson(frame.data);
601
- if (frame.event === "chunk") {
602
- const audio = payload?.audio;
603
- if (typeof audio === "string") yield { type: "chunk", audio };
604
- } else if (frame.event === "done") {
605
- const event = { type: "done" };
606
- const totalBytes = numberOrUndefined(payload?.totalBytes);
607
- const durationMs = numberOrUndefined(payload?.durationMs);
608
- const charCount = numberOrUndefined(payload?.charCount);
609
- if (totalBytes !== void 0) event.total_bytes = totalBytes;
610
- if (durationMs !== void 0) event.duration_ms = durationMs;
611
- if (charCount !== void 0) event.char_count = charCount;
612
- if (typeof payload?.cached === "boolean") event.cached = payload.cached;
613
- yield event;
614
- } else if (frame.event === "error") {
615
- yield errorEvent(payload);
616
- }
617
- }
618
- }
619
- async function* parseTranscriptionStream(response, signal) {
620
- for await (const frame of parseSse(response, signal)) {
621
- const payload = safeJson(frame.data);
622
- if (frame.event === "partial") {
623
- const text = payload?.text;
624
- if (typeof text === "string") yield { type: "partial", text };
625
- } else if (frame.event === "final") {
626
- const text = payload?.text;
627
- if (typeof text === "string") yield { type: "final", text };
628
- } else if (frame.event === "error") {
629
- yield errorEvent(payload);
630
- }
631
- }
632
- }
633
- async function* parseSse(response, signal) {
634
- if (!response.body) return;
635
- const reader = response.body.getReader();
636
- const decoder = new TextDecoder();
637
- let buffer = "";
638
- try {
639
- while (true) {
640
- if (signal?.aborted) return;
641
- const { done, value } = await reader.read();
642
- if (done) break;
643
- buffer += decoder.decode(value, { stream: true }).replace(/\r\n/g, "\n");
644
- while (true) {
645
- const boundary = buffer.indexOf("\n\n");
646
- if (boundary === -1) break;
647
- const block = buffer.slice(0, boundary);
648
- buffer = buffer.slice(boundary + 2);
649
- const parsed = parseSseBlock(block);
650
- if (parsed) yield parsed;
651
- }
652
- }
653
- } finally {
654
- try {
655
- reader.releaseLock();
656
- } catch {
657
- }
658
- }
659
- }
660
- function parseSseBlock(block) {
661
- let event = "message";
662
- let data = "";
663
- for (const line of block.split("\n")) {
664
- if (!line) continue;
665
- if (line.startsWith("event: ")) event = line.slice(7).trim();
666
- else if (line.startsWith("event:")) event = line.slice(6).trim();
667
- else if (line.startsWith("data: ")) data += line.slice(6);
668
- else if (line.startsWith("data:")) data += line.slice(5);
669
- }
670
- if (!data && event === "message") return null;
671
- return { event, data };
672
- }
673
- function safeJson(raw) {
674
- try {
675
- return JSON.parse(raw);
676
- } catch {
677
- return null;
678
- }
679
- }
680
- function numberOrUndefined(value) {
681
- return typeof value === "number" && Number.isFinite(value) ? value : void 0;
682
- }
683
- function errorEvent(payload) {
684
- const event = {
685
- type: "error"
686
- };
687
- const status = numberOrUndefined(payload?.status);
688
- const retryAfter = numberOrUndefined(payload?.retryAfter);
689
- if (status !== void 0) event.status = status;
690
- if (retryAfter !== void 0) event.retry_after = retryAfter;
691
- return event;
692
- }
693
575
 
694
576
  // ../sdk/src/api/automations.ts
695
577
  var AutomationsApi = class {
@@ -711,10 +593,9 @@ var AutomationsApi = class {
711
593
  /**
712
594
  * Create an automation. `workspace_id` is passed in the request BODY
713
595
  * alongside the flat automation definition — it is not a query param. The request
714
- * body is flat: every scheduling field (`cron_expression`, …) and every
715
- * action field (`agent_id`, `prompt_template`, `function_id`, …) sits at the
716
- * top level — there are no nested `trigger_config` / `action_config`
717
- * objects any more.
596
+ * body is flat: every scheduling field (`cron_expression`, …) and agent-run
597
+ * action field (`agent_id`, `prompt_template`, …) sits at the top level —
598
+ * there are no nested `trigger_config` / `action_config` objects.
718
599
  *
719
600
  * For a webhook automation the response additionally carries a one-time
720
601
  * plaintext `secret` (use `AutomationWithSecret`); other automation types
@@ -836,108 +717,6 @@ var AutomationsApi = class {
836
717
  }
837
718
  };
838
719
 
839
- // ../sdk/src/api/blobs.ts
840
- var enc = encodeURIComponent;
841
- var BlobsApi = class {
842
- constructor(ctx) {
843
- this.ctx = ctx;
844
- }
845
- /** List objects in a namespace (prefix-filterable). */
846
- async list(namespace, opts = {}) {
847
- const q = new URLSearchParams();
848
- if (opts.prefix) q.set("prefix", opts.prefix);
849
- if (opts.cursor) q.set("cursor", opts.cursor);
850
- if (opts.limit) q.set("limit", String(opts.limit));
851
- const qs = q.toString() ? `?${q.toString()}` : "";
852
- const res = await request(this.ctx, {
853
- method: "GET",
854
- path: `/api/v1/blobs/${enc(namespace)}${qs}`,
855
- signal: opts.signal
856
- });
857
- return res.data;
858
- }
859
- /**
860
- * Upload (upsert) an object's bytes. Returns its metadata.
861
- *
862
- * Sent as `multipart/form-data` (the bytes ride a `file` part, with an
863
- * optional `content_type` field) — the same upload convention as
864
- * `client.files.upload`, so it flows through the one multipart transport and
865
- * is reachable identically via `client.call("blobs put", …)`. The SDK leaves
866
- * `Content-Type` unset so the runtime picks the multipart boundary.
867
- */
868
- async put(namespace, key, content, contentType, opts = {}) {
869
- const ct = contentType ?? (content instanceof Blob && content.type ? content.type : "application/octet-stream");
870
- const blob = content instanceof Blob ? content : new Blob([content], { type: ct });
871
- const form = new FormData();
872
- form.set("file", blob, key);
873
- form.set("content_type", ct);
874
- const res = await request(this.ctx, {
875
- method: "POST",
876
- path: `/api/v1/blobs/${enc(namespace)}/${enc(key)}`,
877
- // No explicit Content-Type — the runtime sets the multipart boundary.
878
- bodyRaw: form,
879
- signal: opts.signal
880
- });
881
- return res.data;
882
- }
883
- /**
884
- * Download an object's raw bytes (preserving its stored Content-Type).
885
- *
886
- * `GET /blobs/:ns/:key` returns JSON metadata + a signed URL by default (the
887
- * agent/CLI form); `?download=true` is the raw-bytes escape hatch this facade
888
- * uses. For the JSON reference instead, call `client.call("blobs get", …)`.
889
- */
890
- async get(namespace, key, opts = {}) {
891
- const res = await requestRaw(this.ctx, {
892
- method: "GET",
893
- path: `/api/v1/blobs/${enc(namespace)}/${enc(key)}?download=true`,
894
- signal: opts.signal,
895
- expectJson: false
896
- });
897
- const blob = await res.blob();
898
- return {
899
- blob,
900
- contentType: res.headers.get("content-type") ?? "application/octet-stream"
901
- };
902
- }
903
- /** Read an object's metadata (no bytes). */
904
- async head(namespace, key, opts = {}) {
905
- const res = await request(this.ctx, {
906
- method: "GET",
907
- path: `/api/v1/blobs/${enc(namespace)}/${enc(key)}/meta`,
908
- signal: opts.signal
909
- });
910
- return res.data;
911
- }
912
- /** Delete an object (idempotent). */
913
- async delete(namespace, key, opts = {}) {
914
- return request(this.ctx, {
915
- method: "DELETE",
916
- path: `/api/v1/blobs/${enc(namespace)}/${enc(key)}`,
917
- signal: opts.signal
918
- });
919
- }
920
- /** Mint a time-limited direct-download URL for an object. */
921
- async createSignedUrl(namespace, key, expiresIn, opts = {}) {
922
- const res = await request(this.ctx, {
923
- method: "POST",
924
- path: `/api/v1/blobs/${enc(namespace)}/${enc(key)}/signed-url`,
925
- body: { expires_in: expiresIn },
926
- signal: opts.signal
927
- });
928
- return res.data;
929
- }
930
- /** List the blob namespaces in the workspace. */
931
- async listNamespaces(opts = {}) {
932
- const res = await request(this.ctx, {
933
- method: "GET",
934
- path: "/api/v1/blobs",
935
- signal: opts.signal
936
- });
937
- return res.data.map((n) => n.namespace);
938
- }
939
- };
940
-
941
720
  // ../sdk/src/core/execute.ts
942
721
  var TERMINAL = /* @__PURE__ */ new Set(["completed", "failed", "cancelled"]);
943
722
  var defaultSleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
@@ -1000,7 +779,7 @@ function buildRequest(binding, path, rest, signal) {
1000
779
  return base;
1001
780
  }
1002
781
  }
1003
- async function* parseSse2(response, signal) {
782
+ async function* parseSse(response, signal) {
1004
783
  if (!response.body) return;
1005
784
  const reader = response.body.getReader();
1006
785
  const decoder = new TextDecoder();
@@ -1016,7 +795,7 @@ async function* parseSse2(response, signal) {
1016
795
  if (boundary === -1) break;
1017
796
  const block = buffer.slice(0, boundary);
1018
797
  buffer = buffer.slice(boundary + 2);
1019
- const frame = parseSseBlock2(block);
798
+ const frame = parseSseBlock(block);
1020
799
  if (frame) yield frame;
1021
800
  }
1022
801
  }
@@ -1027,7 +806,7 @@ async function* parseSse2(response, signal) {
1027
806
  }
1028
807
  }
1029
808
  }
1030
- function parseSseBlock2(block) {
809
+ function parseSseBlock(block) {
1031
810
  let event = "message";
1032
811
  let data = "";
1033
812
  for (const line of block.split("\n")) {
@@ -1071,7 +850,7 @@ async function executeCommand(binding, args = {}, ctx, opts = {}) {
1071
850
  if (binding.responseKind === "binary") {
1072
851
  if (isSseBinding(binding) && !opts.bufferBinary) {
1073
852
  const res = await requestRaw(ctx, { ...req, expectJson: false });
1074
- return parseSse2(res, opts.signal);
853
+ return parseSse(res, opts.signal);
1075
854
  }
1076
855
  return await request(ctx, { ...req, expectBlob: true });
1077
856
  }
@@ -1245,6 +1024,15 @@ var COMMAND_BINDINGS = {
1245
1024
  "responseKind": "list",
1246
1025
  "async": false
1247
1026
  },
1027
+ "ai-gateway route-preview": {
1028
+ "command": "ai-gateway route-preview",
1029
+ "method": "POST",
1030
+ "path": "/ai-gateway/routing-preview",
1031
+ "pathParams": [],
1032
+ "argLocation": "body",
1033
+ "responseKind": "single",
1034
+ "async": false
1035
+ },
1248
1036
  "ai-gateway usage": {
1249
1037
  "command": "ai-gateway usage",
1250
1038
  "method": "GET",
@@ -1332,48 +1120,6 @@ var COMMAND_BINDINGS = {
1332
1120
  "responseKind": "single",
1333
1121
  "async": false
1334
1122
  },
1335
- "audio speak": {
1336
- "command": "audio speak",
1337
- "method": "POST",
1338
- "path": "/audio/speech",
1339
- "pathParams": [],
1340
- "argLocation": "body",
1341
- "responseKind": "created",
1342
- "async": true
1343
- },
1344
- "audio speak-stream": {
1345
- "command": "audio speak-stream",
1346
- "method": "POST",
1347
- "path": "/audio/speech/stream",
1348
- "pathParams": [],
1349
- "argLocation": "body",
1350
- "responseKind": "binary",
1351
- "async": false,
1352
- "binaryContentTypes": [
1353
- "text/event-stream"
1354
- ]
1355
- },
1356
- "audio transcribe": {
1357
- "command": "audio transcribe",
1358
- "method": "POST",
1359
- "path": "/audio/transcriptions",
1360
- "pathParams": [],
1361
- "argLocation": "multipart",
1362
- "responseKind": "single",
1363
- "async": true
1364
- },
1365
- "audio transcribe-stream": {
1366
- "command": "audio transcribe-stream",
1367
- "method": "POST",
1368
- "path": "/audio/transcriptions/stream",
1369
- "pathParams": [],
1370
- "argLocation": "multipart",
1371
- "responseKind": "binary",
1372
- "async": false,
1373
- "binaryContentTypes": [
1374
- "text/event-stream"
1375
- ]
1376
- },
1377
1123
  "audio voices": {
1378
1124
  "command": "audio voices",
1379
1125
  "method": "GET",
@@ -1394,6 +1140,18 @@ var COMMAND_BINDINGS = {
1394
1140
  "responseKind": "single",
1395
1141
  "async": false
1396
1142
  },
1143
+ "automation cancel-run": {
1144
+ "command": "automation cancel-run",
1145
+ "method": "POST",
1146
+ "path": "/automations/:id/runs/:runId/cancel",
1147
+ "pathParams": [
1148
+ "id",
1149
+ "runId"
1150
+ ],
1151
+ "argLocation": "body",
1152
+ "responseKind": "single",
1153
+ "async": true
1154
+ },
1397
1155
  "automation cost-stats": {
1398
1156
  "command": "automation cost-stats",
1399
1157
  "method": "GET",
@@ -1465,6 +1223,18 @@ var COMMAND_BINDINGS = {
1465
1223
  "responseKind": "list",
1466
1224
  "async": false
1467
1225
  },
1226
+ "automation retry-run": {
1227
+ "command": "automation retry-run",
1228
+ "method": "POST",
1229
+ "path": "/automations/:id/runs/:runId/retry",
1230
+ "pathParams": [
1231
+ "id",
1232
+ "runId"
1233
+ ],
1234
+ "argLocation": "body",
1235
+ "responseKind": "single",
1236
+ "async": true
1237
+ },
1468
1238
  "automation rotate-secret": {
1469
1239
  "command": "automation rotate-secret",
1470
1240
  "method": "POST",
@@ -1487,6 +1257,15 @@ var COMMAND_BINDINGS = {
1487
1257
  "responseKind": "list",
1488
1258
  "async": false
1489
1259
  },
1260
+ "automation runs-all": {
1261
+ "command": "automation runs-all",
1262
+ "method": "GET",
1263
+ "path": "/automations/runs",
1264
+ "pathParams": [],
1265
+ "argLocation": "query",
1266
+ "responseKind": "list",
1267
+ "async": false
1268
+ },
1490
1269
  "automation test-fire": {
1491
1270
  "command": "automation test-fire",
1492
1271
  "method": "POST",
@@ -1520,86 +1299,6 @@ var COMMAND_BINDINGS = {
1520
1299
  "responseKind": "single",
1521
1300
  "async": false
1522
1301
  },
1523
- "blobs delete": {
1524
- "command": "blobs delete",
1525
- "method": "DELETE",
1526
- "path": "/blobs/:namespace/:key",
1527
- "pathParams": [
1528
- "namespace",
1529
- "key"
1530
- ],
1531
- "argLocation": "body",
1532
- "responseKind": "deleted",
1533
- "async": false
1534
- },
1535
- "blobs get": {
1536
- "command": "blobs get",
1537
- "method": "GET",
1538
- "path": "/blobs/:namespace/:key",
1539
- "pathParams": [
1540
- "namespace",
1541
- "key"
1542
- ],
1543
- "argLocation": "query",
1544
- "responseKind": "single",
1545
- "async": false
1546
- },
1547
- "blobs head": {
1548
- "command": "blobs head",
1549
- "method": "GET",
1550
- "path": "/blobs/:namespace/:key/meta",
1551
- "pathParams": [
1552
- "namespace",
1553
- "key"
1554
- ],
1555
- "argLocation": "query",
1556
- "responseKind": "single",
1557
- "async": false
1558
- },
1559
- "blobs list": {
1560
- "command": "blobs list",
1561
- "method": "GET",
1562
- "path": "/blobs/:namespace",
1563
- "pathParams": [
1564
- "namespace"
1565
- ],
1566
- "argLocation": "query",
1567
- "responseKind": "list",
1568
- "async": false
1569
- },
1570
- "blobs namespaces": {
1571
- "command": "blobs namespaces",
1572
- "method": "GET",
1573
- "path": "/blobs",
1574
- "pathParams": [],
1575
- "argLocation": "query",
1576
- "responseKind": "list",
1577
- "async": false
1578
- },
1579
- "blobs put": {
1580
- "command": "blobs put",
1581
- "method": "POST",
1582
- "path": "/blobs/:namespace/:key",
1583
- "pathParams": [
1584
- "namespace",
1585
- "key"
1586
- ],
1587
- "argLocation": "multipart",
1588
- "responseKind": "single",
1589
- "async": false
1590
- },
1591
- "blobs signed-url": {
1592
- "command": "blobs signed-url",
1593
- "method": "POST",
1594
- "path": "/blobs/:namespace/:key/signed-url",
1595
- "pathParams": [
1596
- "namespace",
1597
- "key"
1598
- ],
1599
- "argLocation": "body",
1600
- "responseKind": "single",
1601
- "async": false
1602
- },
1603
1302
  "browser-app create": {
1604
1303
  "command": "browser-app create",
1605
1304
  "method": "POST",
@@ -2055,12 +1754,12 @@ var COMMAND_BINDINGS = {
2055
1754
  },
2056
1755
  "computer app-external": {
2057
1756
  "command": "computer app-external",
2058
- "method": "POST",
1757
+ "method": "GET",
2059
1758
  "path": "/computers/:id/apps/external",
2060
1759
  "pathParams": [
2061
1760
  "id"
2062
1761
  ],
2063
- "argLocation": "body",
1762
+ "argLocation": "query",
2064
1763
  "responseKind": "single",
2065
1764
  "async": false
2066
1765
  },
@@ -2285,7 +1984,7 @@ var COMMAND_BINDINGS = {
2285
1984
  "computer download": {
2286
1985
  "command": "computer download",
2287
1986
  "method": "GET",
2288
- "path": "/computers/:id/sftp/download",
1987
+ "path": "/computers/:id/fs/download",
2289
1988
  "pathParams": [
2290
1989
  "id"
2291
1990
  ],
@@ -2300,7 +1999,7 @@ var COMMAND_BINDINGS = {
2300
1999
  "computer download-to-drive": {
2301
2000
  "command": "computer download-to-drive",
2302
2001
  "method": "POST",
2303
- "path": "/computers/:id/sftp/download",
2002
+ "path": "/computers/:id/fs/download",
2304
2003
  "pathParams": [
2305
2004
  "id"
2306
2005
  ],
@@ -2339,10 +2038,21 @@ var COMMAND_BINDINGS = {
2339
2038
  "responseKind": "single",
2340
2039
  "async": false
2341
2040
  },
2342
- "computer get": {
2343
- "command": "computer get",
2344
- "method": "GET",
2345
- "path": "/computers/:id",
2041
+ "computer fs": {
2042
+ "command": "computer fs",
2043
+ "method": "POST",
2044
+ "path": "/computers/:id/fs",
2045
+ "pathParams": [
2046
+ "id"
2047
+ ],
2048
+ "argLocation": "body",
2049
+ "responseKind": "single",
2050
+ "async": false
2051
+ },
2052
+ "computer get": {
2053
+ "command": "computer get",
2054
+ "method": "GET",
2055
+ "path": "/computers/:id",
2346
2056
  "pathParams": [
2347
2057
  "id"
2348
2058
  ],
@@ -2491,17 +2201,6 @@ var COMMAND_BINDINGS = {
2491
2201
  "responseKind": "created",
2492
2202
  "async": false
2493
2203
  },
2494
- "computer sftp": {
2495
- "command": "computer sftp",
2496
- "method": "POST",
2497
- "path": "/computers/:id/sftp",
2498
- "pathParams": [
2499
- "id"
2500
- ],
2501
- "argLocation": "body",
2502
- "responseKind": "single",
2503
- "async": false
2504
- },
2505
2204
  "computer start": {
2506
2205
  "command": "computer start",
2507
2206
  "method": "POST",
@@ -2524,10 +2223,10 @@ var COMMAND_BINDINGS = {
2524
2223
  "responseKind": "single",
2525
2224
  "async": false
2526
2225
  },
2527
- "computer test-connection": {
2528
- "command": "computer test-connection",
2226
+ "computer terminal": {
2227
+ "command": "computer terminal",
2529
2228
  "method": "POST",
2530
- "path": "/computers/:id/test-connection",
2229
+ "path": "/computers/:id/terminal",
2531
2230
  "pathParams": [
2532
2231
  "id"
2533
2232
  ],
@@ -2535,10 +2234,10 @@ var COMMAND_BINDINGS = {
2535
2234
  "responseKind": "single",
2536
2235
  "async": false
2537
2236
  },
2538
- "computer tmux": {
2539
- "command": "computer tmux",
2237
+ "computer test-connection": {
2238
+ "command": "computer test-connection",
2540
2239
  "method": "POST",
2541
- "path": "/computers/:id/tmux",
2240
+ "path": "/computers/:id/test-connection",
2542
2241
  "pathParams": [
2543
2242
  "id"
2544
2243
  ],
@@ -2628,7 +2327,7 @@ var COMMAND_BINDINGS = {
2628
2327
  "computer upload": {
2629
2328
  "command": "computer upload",
2630
2329
  "method": "POST",
2631
- "path": "/computers/:id/sftp/upload",
2330
+ "path": "/computers/:id/fs/upload",
2632
2331
  "pathParams": [
2633
2332
  "id"
2634
2333
  ],
@@ -2707,80 +2406,52 @@ var COMMAND_BINDINGS = {
2707
2406
  "responseKind": "list",
2708
2407
  "async": false
2709
2408
  },
2710
- "datastore batch": {
2711
- "command": "datastore batch",
2409
+ "custom-models create": {
2410
+ "command": "custom-models create",
2712
2411
  "method": "POST",
2713
- "path": "/datastore/:namespace",
2714
- "pathParams": [
2715
- "namespace"
2716
- ],
2412
+ "path": "/custom-models",
2413
+ "pathParams": [],
2717
2414
  "argLocation": "body",
2718
- "responseKind": "single",
2415
+ "responseKind": "created",
2719
2416
  "async": false
2720
2417
  },
2721
- "datastore delete": {
2722
- "command": "datastore delete",
2418
+ "custom-models delete": {
2419
+ "command": "custom-models delete",
2723
2420
  "method": "DELETE",
2724
- "path": "/datastore/:namespace/:key",
2421
+ "path": "/custom-models/:id",
2725
2422
  "pathParams": [
2726
- "namespace",
2727
- "key"
2423
+ "id"
2728
2424
  ],
2729
2425
  "argLocation": "body",
2730
2426
  "responseKind": "deleted",
2731
2427
  "async": false
2732
2428
  },
2733
- "datastore get": {
2734
- "command": "datastore get",
2429
+ "custom-models get": {
2430
+ "command": "custom-models get",
2735
2431
  "method": "GET",
2736
- "path": "/datastore/:namespace/:key",
2432
+ "path": "/custom-models/:id",
2737
2433
  "pathParams": [
2738
- "namespace",
2739
- "key"
2434
+ "id"
2740
2435
  ],
2741
2436
  "argLocation": "query",
2742
2437
  "responseKind": "single",
2743
2438
  "async": false
2744
2439
  },
2745
- "datastore increment": {
2746
- "command": "datastore increment",
2747
- "method": "POST",
2748
- "path": "/datastore/:namespace/:key/increment",
2749
- "pathParams": [
2750
- "namespace",
2751
- "key"
2752
- ],
2753
- "argLocation": "body",
2754
- "responseKind": "single",
2755
- "async": false
2756
- },
2757
- "datastore list": {
2758
- "command": "datastore list",
2759
- "method": "GET",
2760
- "path": "/datastore/:namespace",
2761
- "pathParams": [
2762
- "namespace"
2763
- ],
2764
- "argLocation": "query",
2765
- "responseKind": "list",
2766
- "async": false
2767
- },
2768
- "datastore namespaces": {
2769
- "command": "datastore namespaces",
2440
+ "custom-models list": {
2441
+ "command": "custom-models list",
2770
2442
  "method": "GET",
2771
- "path": "/datastore",
2443
+ "path": "/custom-models",
2772
2444
  "pathParams": [],
2773
2445
  "argLocation": "query",
2774
2446
  "responseKind": "list",
2775
2447
  "async": false
2776
2448
  },
2777
- "datastore set": {
2778
- "command": "datastore set",
2779
- "method": "POST",
2780
- "path": "/datastore/:namespace/:key",
2449
+ "custom-models update": {
2450
+ "command": "custom-models update",
2451
+ "method": "PATCH",
2452
+ "path": "/custom-models/:id",
2781
2453
  "pathParams": [
2782
- "namespace",
2783
- "key"
2454
+ "id"
2784
2455
  ],
2785
2456
  "argLocation": "body",
2786
2457
  "responseKind": "single",
@@ -2913,17 +2584,6 @@ var COMMAND_BINDINGS = {
2913
2584
  "responseKind": "single",
2914
2585
  "async": false
2915
2586
  },
2916
- "drive run": {
2917
- "command": "drive run",
2918
- "method": "POST",
2919
- "path": "/drive/files/:id/run",
2920
- "pathParams": [
2921
- "id"
2922
- ],
2923
- "argLocation": "body",
2924
- "responseKind": "created",
2925
- "async": true
2926
- },
2927
2587
  "drive update": {
2928
2588
  "command": "drive update",
2929
2589
  "method": "PATCH",
@@ -2944,101 +2604,6 @@ var COMMAND_BINDINGS = {
2944
2604
  "responseKind": "created",
2945
2605
  "async": false
2946
2606
  },
2947
- "functions create": {
2948
- "command": "functions create",
2949
- "method": "POST",
2950
- "path": "/functions",
2951
- "pathParams": [],
2952
- "argLocation": "body",
2953
- "responseKind": "created",
2954
- "async": false
2955
- },
2956
- "functions delete": {
2957
- "command": "functions delete",
2958
- "method": "DELETE",
2959
- "path": "/functions/:id",
2960
- "pathParams": [
2961
- "id"
2962
- ],
2963
- "argLocation": "query",
2964
- "responseKind": "deleted",
2965
- "async": false
2966
- },
2967
- "functions deploy": {
2968
- "command": "functions deploy",
2969
- "method": "POST",
2970
- "path": "/functions/:id/deploy",
2971
- "pathParams": [
2972
- "id"
2973
- ],
2974
- "argLocation": "body",
2975
- "responseKind": "created",
2976
- "async": false
2977
- },
2978
- "functions deployments": {
2979
- "command": "functions deployments",
2980
- "method": "GET",
2981
- "path": "/functions/:id/deployments",
2982
- "pathParams": [
2983
- "id"
2984
- ],
2985
- "argLocation": "query",
2986
- "responseKind": "list",
2987
- "async": false
2988
- },
2989
- "functions get": {
2990
- "command": "functions get",
2991
- "method": "GET",
2992
- "path": "/functions/:id",
2993
- "pathParams": [
2994
- "id"
2995
- ],
2996
- "argLocation": "query",
2997
- "responseKind": "single",
2998
- "async": false
2999
- },
3000
- "functions invoke": {
3001
- "command": "functions invoke",
3002
- "method": "POST",
3003
- "path": "/functions/:id/invoke",
3004
- "pathParams": [
3005
- "id"
3006
- ],
3007
- "argLocation": "body",
3008
- "responseKind": "single",
3009
- "async": false
3010
- },
3011
- "functions list": {
3012
- "command": "functions list",
3013
- "method": "GET",
3014
- "path": "/functions",
3015
- "pathParams": [],
3016
- "argLocation": "query",
3017
- "responseKind": "list",
3018
- "async": false
3019
- },
3020
- "functions promote": {
3021
- "command": "functions promote",
3022
- "method": "POST",
3023
- "path": "/functions/:id/promote",
3024
- "pathParams": [
3025
- "id"
3026
- ],
3027
- "argLocation": "body",
3028
- "responseKind": "single",
3029
- "async": false
3030
- },
3031
- "functions update": {
3032
- "command": "functions update",
3033
- "method": "PATCH",
3034
- "path": "/functions/:id",
3035
- "pathParams": [
3036
- "id"
3037
- ],
3038
- "argLocation": "body",
3039
- "responseKind": "single",
3040
- "async": false
3041
- },
3042
2607
  "guide get": {
3043
2608
  "command": "guide get",
3044
2609
  "method": "GET",
@@ -3141,92 +2706,112 @@ var COMMAND_BINDINGS = {
3141
2706
  "responseKind": "single",
3142
2707
  "async": false
3143
2708
  },
3144
- "hub install": {
3145
- "command": "hub install",
3146
- "method": "POST",
3147
- "path": "/hub/:resourceId/install",
3148
- "pathParams": [
3149
- "resourceId"
3150
- ],
3151
- "argLocation": "body",
3152
- "responseKind": "created",
3153
- "async": false
3154
- },
3155
- "hub search": {
3156
- "command": "hub search",
2709
+ "image models": {
2710
+ "command": "image models",
3157
2711
  "method": "GET",
3158
- "path": "/hub/search",
2712
+ "path": "/images/models",
3159
2713
  "pathParams": [],
3160
2714
  "argLocation": "query",
3161
2715
  "responseKind": "list",
3162
2716
  "async": false
3163
2717
  },
3164
- "hub submissions": {
3165
- "command": "hub submissions",
2718
+ "image search": {
2719
+ "command": "image search",
3166
2720
  "method": "GET",
3167
- "path": "/hub/submissions/mine",
2721
+ "path": "/images/models/search",
3168
2722
  "pathParams": [],
3169
2723
  "argLocation": "query",
3170
- "responseKind": "list",
2724
+ "responseKind": "single",
3171
2725
  "async": false
3172
2726
  },
3173
- "hub submit": {
3174
- "command": "hub submit",
2727
+ "inference image": {
2728
+ "command": "inference image",
3175
2729
  "method": "POST",
3176
- "path": "/hub/submissions",
2730
+ "path": "/inference/images",
3177
2731
  "pathParams": [],
3178
2732
  "argLocation": "body",
3179
- "responseKind": "created",
3180
- "async": false
2733
+ "responseKind": "single",
2734
+ "async": true,
2735
+ "pollHint": {
2736
+ "intervalMs": 1e3,
2737
+ "maxAttempts": 120
2738
+ }
3181
2739
  },
3182
- "hub update": {
3183
- "command": "hub update",
2740
+ "inference speech": {
2741
+ "command": "inference speech",
3184
2742
  "method": "POST",
3185
- "path": "/hub/:resourceId/update",
3186
- "pathParams": [
3187
- "resourceId"
3188
- ],
2743
+ "path": "/inference/speech",
2744
+ "pathParams": [],
3189
2745
  "argLocation": "body",
3190
2746
  "responseKind": "single",
3191
- "async": false
2747
+ "async": true,
2748
+ "pollHint": {
2749
+ "intervalMs": 1e3,
2750
+ "maxAttempts": 120
2751
+ }
3192
2752
  },
3193
- "hub update-check": {
3194
- "command": "hub update-check",
2753
+ "inference speech-stream": {
2754
+ "command": "inference speech-stream",
3195
2755
  "method": "POST",
3196
- "path": "/hub/:resourceId/update-check",
3197
- "pathParams": [
3198
- "resourceId"
3199
- ],
2756
+ "path": "/inference/speech/stream",
2757
+ "pathParams": [],
2758
+ "argLocation": "body",
2759
+ "responseKind": "binary",
2760
+ "async": false,
2761
+ "binaryContentTypes": [
2762
+ "text/event-stream"
2763
+ ]
2764
+ },
2765
+ "inference text": {
2766
+ "command": "inference text",
2767
+ "method": "POST",
2768
+ "path": "/inference/text",
2769
+ "pathParams": [],
3200
2770
  "argLocation": "body",
3201
2771
  "responseKind": "single",
3202
- "async": false
2772
+ "async": true,
2773
+ "pollHint": {
2774
+ "intervalMs": 1e3,
2775
+ "maxAttempts": 120
2776
+ }
3203
2777
  },
3204
- "image generate": {
3205
- "command": "image generate",
2778
+ "inference text-stream": {
2779
+ "command": "inference text-stream",
3206
2780
  "method": "POST",
3207
- "path": "/images/generations",
2781
+ "path": "/inference/text/stream",
3208
2782
  "pathParams": [],
3209
2783
  "argLocation": "body",
3210
- "responseKind": "created",
3211
- "async": true
2784
+ "responseKind": "binary",
2785
+ "async": false,
2786
+ "binaryContentTypes": [
2787
+ "text/event-stream"
2788
+ ]
3212
2789
  },
3213
- "image models": {
3214
- "command": "image models",
3215
- "method": "GET",
3216
- "path": "/images/models",
2790
+ "inference transcribe": {
2791
+ "command": "inference transcribe",
2792
+ "method": "POST",
2793
+ "path": "/inference/transcriptions",
3217
2794
  "pathParams": [],
3218
- "argLocation": "query",
3219
- "responseKind": "list",
3220
- "async": false
2795
+ "argLocation": "multipart",
2796
+ "responseKind": "single",
2797
+ "async": true,
2798
+ "pollHint": {
2799
+ "intervalMs": 1e3,
2800
+ "maxAttempts": 120
2801
+ }
3221
2802
  },
3222
- "image search": {
3223
- "command": "image search",
3224
- "method": "GET",
3225
- "path": "/images/models/search",
2803
+ "inference video": {
2804
+ "command": "inference video",
2805
+ "method": "POST",
2806
+ "path": "/inference/videos",
3226
2807
  "pathParams": [],
3227
- "argLocation": "query",
2808
+ "argLocation": "body",
3228
2809
  "responseKind": "single",
3229
- "async": false
2810
+ "async": true,
2811
+ "pollHint": {
2812
+ "intervalMs": 5e3,
2813
+ "maxAttempts": 240
2814
+ }
3230
2815
  },
3231
2816
  "me get": {
3232
2817
  "command": "me get",
@@ -3795,6 +3380,17 @@ var COMMAND_BINDINGS = {
3795
3380
  "responseKind": "list",
3796
3381
  "async": false
3797
3382
  },
3383
+ "operation await": {
3384
+ "command": "operation await",
3385
+ "method": "GET",
3386
+ "path": "/operations/:id/await",
3387
+ "pathParams": [
3388
+ "id"
3389
+ ],
3390
+ "argLocation": "query",
3391
+ "responseKind": "single",
3392
+ "async": false
3393
+ },
3798
3394
  "operation cancel": {
3799
3395
  "command": "operation cancel",
3800
3396
  "method": "POST",
@@ -3806,6 +3402,21 @@ var COMMAND_BINDINGS = {
3806
3402
  "responseKind": "single",
3807
3403
  "async": false
3808
3404
  },
3405
+ "operation content": {
3406
+ "command": "operation content",
3407
+ "method": "GET",
3408
+ "path": "/operations/:id/content",
3409
+ "pathParams": [
3410
+ "id"
3411
+ ],
3412
+ "argLocation": "query",
3413
+ "responseKind": "binary",
3414
+ "async": false,
3415
+ "binaryContentTypes": [
3416
+ "application/octet-stream",
3417
+ "text/plain"
3418
+ ]
3419
+ },
3809
3420
  "operation get": {
3810
3421
  "command": "operation get",
3811
3422
  "method": "GET",
@@ -3931,150 +3542,44 @@ var COMMAND_BINDINGS = {
3931
3542
  "text/event-stream"
3932
3543
  ]
3933
3544
  },
3934
- "repos branches": {
3935
- "command": "repos branches",
3545
+ "search query": {
3546
+ "command": "search query",
3936
3547
  "method": "GET",
3937
- "path": "/repos/:id/branches",
3938
- "pathParams": [
3939
- "id"
3940
- ],
3548
+ "path": "/search",
3549
+ "pathParams": [],
3941
3550
  "argLocation": "query",
3942
3551
  "responseKind": "list",
3943
3552
  "async": false
3944
3553
  },
3945
- "repos clone-url": {
3946
- "command": "repos clone-url",
3947
- "method": "GET",
3948
- "path": "/repos/:id/clone-url",
3949
- "pathParams": [
3950
- "id"
3951
- ],
3952
- "argLocation": "query",
3953
- "responseKind": "single",
3554
+ "secret create": {
3555
+ "command": "secret create",
3556
+ "method": "POST",
3557
+ "path": "/secrets",
3558
+ "pathParams": [],
3559
+ "argLocation": "body",
3560
+ "responseKind": "created",
3954
3561
  "async": false
3955
3562
  },
3956
- "repos commit": {
3957
- "command": "repos commit",
3958
- "method": "POST",
3959
- "path": "/repos/:id/commits",
3563
+ "secret delete": {
3564
+ "command": "secret delete",
3565
+ "method": "DELETE",
3566
+ "path": "/secrets/:id",
3960
3567
  "pathParams": [
3961
3568
  "id"
3962
3569
  ],
3963
3570
  "argLocation": "body",
3964
- "responseKind": "single",
3571
+ "responseKind": "deleted",
3965
3572
  "async": false
3966
3573
  },
3967
- "repos commits": {
3968
- "command": "repos commits",
3574
+ "secret get": {
3575
+ "command": "secret get",
3969
3576
  "method": "GET",
3970
- "path": "/repos/:id/commits",
3577
+ "path": "/secrets/:id",
3971
3578
  "pathParams": [
3972
3579
  "id"
3973
3580
  ],
3974
3581
  "argLocation": "query",
3975
- "responseKind": "list",
3976
- "async": false
3977
- },
3978
- "repos create": {
3979
- "command": "repos create",
3980
- "method": "POST",
3981
- "path": "/repos",
3982
- "pathParams": [],
3983
- "argLocation": "body",
3984
- "responseKind": "created",
3985
- "async": false
3986
- },
3987
- "repos delete": {
3988
- "command": "repos delete",
3989
- "method": "DELETE",
3990
- "path": "/repos/:id",
3991
- "pathParams": [
3992
- "id"
3993
- ],
3994
- "argLocation": "body",
3995
- "responseKind": "deleted",
3996
- "async": false
3997
- },
3998
- "repos get": {
3999
- "command": "repos get",
4000
- "method": "GET",
4001
- "path": "/repos/:id",
4002
- "pathParams": [
4003
- "id"
4004
- ],
4005
- "argLocation": "query",
4006
- "responseKind": "single",
4007
- "async": false
4008
- },
4009
- "repos list": {
4010
- "command": "repos list",
4011
- "method": "GET",
4012
- "path": "/repos",
4013
- "pathParams": [],
4014
- "argLocation": "query",
4015
- "responseKind": "list",
4016
- "async": false
4017
- },
4018
- "repos read-file": {
4019
- "command": "repos read-file",
4020
- "method": "GET",
4021
- "path": "/repos/:id/file",
4022
- "pathParams": [
4023
- "id"
4024
- ],
4025
- "argLocation": "query",
4026
- "responseKind": "single",
4027
- "async": false
4028
- },
4029
- "repos set-visibility": {
4030
- "command": "repos set-visibility",
4031
- "method": "PATCH",
4032
- "path": "/repos/:id/visibility",
4033
- "pathParams": [
4034
- "id"
4035
- ],
4036
- "argLocation": "body",
4037
- "responseKind": "single",
4038
- "async": false
4039
- },
4040
- "search query": {
4041
- "command": "search query",
4042
- "method": "GET",
4043
- "path": "/search",
4044
- "pathParams": [],
4045
- "argLocation": "query",
4046
- "responseKind": "list",
4047
- "async": false
4048
- },
4049
- "secret create": {
4050
- "command": "secret create",
4051
- "method": "POST",
4052
- "path": "/secrets",
4053
- "pathParams": [],
4054
- "argLocation": "body",
4055
- "responseKind": "created",
4056
- "async": false
4057
- },
4058
- "secret delete": {
4059
- "command": "secret delete",
4060
- "method": "DELETE",
4061
- "path": "/secrets/:id",
4062
- "pathParams": [
4063
- "id"
4064
- ],
4065
- "argLocation": "body",
4066
- "responseKind": "deleted",
4067
- "async": false
4068
- },
4069
- "secret get": {
4070
- "command": "secret get",
4071
- "method": "GET",
4072
- "path": "/secrets/:id",
4073
- "pathParams": [
4074
- "id"
4075
- ],
4076
- "argLocation": "query",
4077
- "responseKind": "single",
3582
+ "responseKind": "single",
4078
3583
  "async": false
4079
3584
  },
4080
3585
  "secret list": {
@@ -4171,207 +3676,6 @@ var COMMAND_BINDINGS = {
4171
3676
  "responseKind": "list",
4172
3677
  "async": false
4173
3678
  },
4174
- "skill apply-update": {
4175
- "command": "skill apply-update",
4176
- "method": "POST",
4177
- "path": "/skills/:id/apply-update",
4178
- "pathParams": [
4179
- "id"
4180
- ],
4181
- "argLocation": "body",
4182
- "responseKind": "single",
4183
- "async": false
4184
- },
4185
- "skill attach": {
4186
- "command": "skill attach",
4187
- "method": "POST",
4188
- "path": "/skills/:id/attach",
4189
- "pathParams": [
4190
- "id"
4191
- ],
4192
- "argLocation": "body",
4193
- "responseKind": "single",
4194
- "async": false
4195
- },
4196
- "skill body": {
4197
- "command": "skill body",
4198
- "method": "GET",
4199
- "path": "/skills/:id/body",
4200
- "pathParams": [
4201
- "id"
4202
- ],
4203
- "argLocation": "query",
4204
- "responseKind": "single",
4205
- "async": false
4206
- },
4207
- "skill create": {
4208
- "command": "skill create",
4209
- "method": "POST",
4210
- "path": "/skills",
4211
- "pathParams": [],
4212
- "argLocation": "body",
4213
- "responseKind": "created",
4214
- "async": false
4215
- },
4216
- "skill delete": {
4217
- "command": "skill delete",
4218
- "method": "DELETE",
4219
- "path": "/skills/:id",
4220
- "pathParams": [
4221
- "id"
4222
- ],
4223
- "argLocation": "body",
4224
- "responseKind": "deleted",
4225
- "async": false
4226
- },
4227
- "skill detach": {
4228
- "command": "skill detach",
4229
- "method": "DELETE",
4230
- "path": "/skills/:id/attach",
4231
- "pathParams": [
4232
- "id"
4233
- ],
4234
- "argLocation": "query",
4235
- "responseKind": "deleted",
4236
- "async": false
4237
- },
4238
- "skill file-delete": {
4239
- "command": "skill file-delete",
4240
- "method": "DELETE",
4241
- "path": "/skills/:id/file",
4242
- "pathParams": [
4243
- "id"
4244
- ],
4245
- "argLocation": "query",
4246
- "responseKind": "deleted",
4247
- "async": false
4248
- },
4249
- "skill file-list": {
4250
- "command": "skill file-list",
4251
- "method": "GET",
4252
- "path": "/skills/:id/files",
4253
- "pathParams": [
4254
- "id"
4255
- ],
4256
- "argLocation": "query",
4257
- "responseKind": "list",
4258
- "async": false
4259
- },
4260
- "skill file-read": {
4261
- "command": "skill file-read",
4262
- "method": "GET",
4263
- "path": "/skills/:id/file",
4264
- "pathParams": [
4265
- "id"
4266
- ],
4267
- "argLocation": "query",
4268
- "responseKind": "single",
4269
- "async": false
4270
- },
4271
- "skill file-write": {
4272
- "command": "skill file-write",
4273
- "method": "POST",
4274
- "path": "/skills/:id/files",
4275
- "pathParams": [
4276
- "id"
4277
- ],
4278
- "argLocation": "body",
4279
- "responseKind": "single",
4280
- "async": false
4281
- },
4282
- "skill fork": {
4283
- "command": "skill fork",
4284
- "method": "POST",
4285
- "path": "/skills/:id/fork",
4286
- "pathParams": [
4287
- "id"
4288
- ],
4289
- "argLocation": "body",
4290
- "responseKind": "created",
4291
- "async": false
4292
- },
4293
- "skill get": {
4294
- "command": "skill get",
4295
- "method": "GET",
4296
- "path": "/skills/:id",
4297
- "pathParams": [
4298
- "id"
4299
- ],
4300
- "argLocation": "query",
4301
- "responseKind": "single",
4302
- "async": false
4303
- },
4304
- "skill install": {
4305
- "command": "skill install",
4306
- "method": "POST",
4307
- "path": "/skills/install",
4308
- "pathParams": [],
4309
- "argLocation": "body",
4310
- "responseKind": "created",
4311
- "async": false
4312
- },
4313
- "skill list": {
4314
- "command": "skill list",
4315
- "method": "GET",
4316
- "path": "/skills",
4317
- "pathParams": [],
4318
- "argLocation": "query",
4319
- "responseKind": "list",
4320
- "async": false
4321
- },
4322
- "skill publish": {
4323
- "command": "skill publish",
4324
- "method": "POST",
4325
- "path": "/skills/:id/publish",
4326
- "pathParams": [
4327
- "id"
4328
- ],
4329
- "argLocation": "body",
4330
- "responseKind": "single",
4331
- "async": false
4332
- },
4333
- "skill render": {
4334
- "command": "skill render",
4335
- "method": "POST",
4336
- "path": "/skills/:id/render",
4337
- "pathParams": [
4338
- "id"
4339
- ],
4340
- "argLocation": "body",
4341
- "responseKind": "single",
4342
- "async": false
4343
- },
4344
- "skill search": {
4345
- "command": "skill search",
4346
- "method": "GET",
4347
- "path": "/skills/search",
4348
- "pathParams": [],
4349
- "argLocation": "query",
4350
- "responseKind": "list",
4351
- "async": false
4352
- },
4353
- "skill update": {
4354
- "command": "skill update",
4355
- "method": "PATCH",
4356
- "path": "/skills/:id",
4357
- "pathParams": [
4358
- "id"
4359
- ],
4360
- "argLocation": "body",
4361
- "responseKind": "single",
4362
- "async": false
4363
- },
4364
- "skill update-check": {
4365
- "command": "skill update-check",
4366
- "method": "GET",
4367
- "path": "/skills/:id/update-check",
4368
- "pathParams": [
4369
- "id"
4370
- ],
4371
- "argLocation": "query",
4372
- "responseKind": "single",
4373
- "async": false
4374
- },
4375
3679
  "subscription get": {
4376
3680
  "command": "subscription get",
4377
3681
  "method": "GET",
@@ -4381,137 +3685,6 @@ var COMMAND_BINDINGS = {
4381
3685
  "responseKind": "single",
4382
3686
  "async": false
4383
3687
  },
4384
- "table create": {
4385
- "command": "table create",
4386
- "method": "POST",
4387
- "path": "/tables",
4388
- "pathParams": [],
4389
- "argLocation": "body",
4390
- "responseKind": "created",
4391
- "async": false
4392
- },
4393
- "table create-record": {
4394
- "command": "table create-record",
4395
- "method": "POST",
4396
- "path": "/tables/:id/records",
4397
- "pathParams": [
4398
- "id"
4399
- ],
4400
- "argLocation": "body",
4401
- "responseKind": "created",
4402
- "async": false
4403
- },
4404
- "table delete": {
4405
- "command": "table delete",
4406
- "method": "DELETE",
4407
- "path": "/tables/:id",
4408
- "pathParams": [
4409
- "id"
4410
- ],
4411
- "argLocation": "body",
4412
- "responseKind": "deleted",
4413
- "async": false
4414
- },
4415
- "table delete-record": {
4416
- "command": "table delete-record",
4417
- "method": "DELETE",
4418
- "path": "/tables/:id/records/:recordId",
4419
- "pathParams": [
4420
- "id",
4421
- "recordId"
4422
- ],
4423
- "argLocation": "body",
4424
- "responseKind": "deleted",
4425
- "async": false
4426
- },
4427
- "table export": {
4428
- "command": "table export",
4429
- "method": "GET",
4430
- "path": "/tables/:id/export",
4431
- "pathParams": [
4432
- "id"
4433
- ],
4434
- "argLocation": "query",
4435
- "responseKind": "binary",
4436
- "async": false
4437
- },
4438
- "table get": {
4439
- "command": "table get",
4440
- "method": "GET",
4441
- "path": "/tables/:id",
4442
- "pathParams": [
4443
- "id"
4444
- ],
4445
- "argLocation": "query",
4446
- "responseKind": "single",
4447
- "async": false
4448
- },
4449
- "table get-record": {
4450
- "command": "table get-record",
4451
- "method": "GET",
4452
- "path": "/tables/:id/records/:recordId",
4453
- "pathParams": [
4454
- "id",
4455
- "recordId"
4456
- ],
4457
- "argLocation": "query",
4458
- "responseKind": "single",
4459
- "async": false
4460
- },
4461
- "table import": {
4462
- "command": "table import",
4463
- "method": "POST",
4464
- "path": "/tables/:id/import",
4465
- "pathParams": [
4466
- "id"
4467
- ],
4468
- "argLocation": "body",
4469
- "responseKind": "single",
4470
- "async": false
4471
- },
4472
- "table list": {
4473
- "command": "table list",
4474
- "method": "GET",
4475
- "path": "/tables",
4476
- "pathParams": [],
4477
- "argLocation": "query",
4478
- "responseKind": "list",
4479
- "async": false
4480
- },
4481
- "table query": {
4482
- "command": "table query",
4483
- "method": "POST",
4484
- "path": "/tables/:id/query",
4485
- "pathParams": [
4486
- "id"
4487
- ],
4488
- "argLocation": "body",
4489
- "responseKind": "list",
4490
- "async": false
4491
- },
4492
- "table update": {
4493
- "command": "table update",
4494
- "method": "PATCH",
4495
- "path": "/tables/:id",
4496
- "pathParams": [
4497
- "id"
4498
- ],
4499
- "argLocation": "body",
4500
- "responseKind": "single",
4501
- "async": false
4502
- },
4503
- "table update-record": {
4504
- "command": "table update-record",
4505
- "method": "PATCH",
4506
- "path": "/tables/:id/records/:recordId",
4507
- "pathParams": [
4508
- "id",
4509
- "recordId"
4510
- ],
4511
- "argLocation": "body",
4512
- "responseKind": "single",
4513
- "async": false
4514
- },
4515
3688
  "tasks ancestors": {
4516
3689
  "command": "tasks ancestors",
4517
3690
  "method": "GET",
@@ -4809,19 +3982,6 @@ var COMMAND_BINDINGS = {
4809
3982
  "responseKind": "single",
4810
3983
  "async": false
4811
3984
  },
4812
- "video generate": {
4813
- "command": "video generate",
4814
- "method": "POST",
4815
- "path": "/videos/generations",
4816
- "pathParams": [],
4817
- "argLocation": "body",
4818
- "responseKind": "single",
4819
- "async": true,
4820
- "pollHint": {
4821
- "intervalMs": 5e3,
4822
- "maxAttempts": 240
4823
- }
4824
- },
4825
3985
  "video models": {
4826
3986
  "command": "video models",
4827
3987
  "method": "GET",
@@ -5365,7 +4525,7 @@ var ComputersApi = class {
5365
4525
  return res.data;
5366
4526
  }
5367
4527
  // ---------------------------------------------------------------------------
5368
- // Exec & tmux
4528
+ // Exec & terminals
5369
4529
  // ---------------------------------------------------------------------------
5370
4530
  async exec(id, input, opts = {}) {
5371
4531
  const res = await request(this.ctx, {
@@ -5377,56 +4537,57 @@ var ComputersApi = class {
5377
4537
  return res.data;
5378
4538
  }
5379
4539
  /**
5380
- * tmux dispatcher. Each `op` returns a different shape — see the route
5381
- * docs for the per-op payload. Common case: `op: "run"` starts a window,
4540
+ * Persistent-terminal dispatcher. Each `op` returns a different shape — see
4541
+ * the route docs for the per-op payload. Common case: `op: "run"` runs a
4542
+ * command to completion in a named window (state persists across runs),
5382
4543
  * `op: "capture"` reads its output.
5383
4544
  */
5384
- async tmux(id, input, opts = {}) {
4545
+ async terminal(id, input, opts = {}) {
5385
4546
  const res = await request(
5386
4547
  this.ctx,
5387
4548
  {
5388
4549
  method: "POST",
5389
- path: `/api/v1/computers/${id}/tmux`,
4550
+ path: `/api/v1/computers/${id}/terminal`,
5390
4551
  body: input,
5391
4552
  signal: opts.signal
5392
4553
  }
5393
4554
  );
5394
4555
  return res.data;
5395
4556
  }
5396
- /** Convenience over `tmux({ op: "list" })`. */
5397
- async listTmuxWindows(id, opts = {}) {
5398
- const result = await this.tmux(id, { op: "list" }, opts);
4557
+ /** Convenience over `terminal({ op: "list" })`. */
4558
+ async listTerminals(id, opts = {}) {
4559
+ const result = await this.terminal(id, { op: "list" }, opts);
5399
4560
  return result.windows ?? [];
5400
4561
  }
5401
4562
  // ---------------------------------------------------------------------------
5402
- // SFTP
4563
+ // FS
5403
4564
  // ---------------------------------------------------------------------------
5404
4565
  /**
5405
- * Unified SFTP dispatcher. Returns op-shaped payload. For streaming
5406
- * uploads/downloads use `sftpUpload` / `sftpDownload`.
4566
+ * Unified FS dispatcher. Returns op-shaped payload. For streaming
4567
+ * uploads/downloads use `fsUpload` / `fsDownload`.
5407
4568
  */
5408
- async sftp(id, input, opts = {}) {
4569
+ async fs(id, input, opts = {}) {
5409
4570
  const res = await request(
5410
4571
  this.ctx,
5411
4572
  {
5412
4573
  method: "POST",
5413
- path: `/api/v1/computers/${id}/sftp`,
4574
+ path: `/api/v1/computers/${id}/fs`,
5414
4575
  body: input,
5415
4576
  signal: opts.signal
5416
4577
  }
5417
4578
  );
5418
4579
  return res.data;
5419
4580
  }
5420
- /** Convenience: `sftp({op:"list"})` returning the entries array directly. */
5421
- async sftpList(id, path, opts = {}) {
5422
- const result = await this.sftp(id, { op: "list", path }, opts);
4581
+ /** Convenience: `fs({op:"list"})` returning the entries array directly. */
4582
+ async fsList(id, path, opts = {}) {
4583
+ const result = await this.fs(id, { op: "list", path }, opts);
5423
4584
  return result;
5424
4585
  }
5425
4586
  /**
5426
4587
  * Multipart upload of a file/folder member. Falls back to single-file mode
5427
4588
  * when `relative_path` is omitted.
5428
4589
  */
5429
- async sftpUpload(id, input, opts = {}) {
4590
+ async fsUpload(id, input, opts = {}) {
5430
4591
  const form = new FormData();
5431
4592
  form.append("file", input.file);
5432
4593
  form.append("path", input.path);
@@ -5436,7 +4597,7 @@ var ComputersApi = class {
5436
4597
  this.ctx,
5437
4598
  {
5438
4599
  method: "POST",
5439
- path: `/api/v1/computers/${id}/sftp/upload`,
4600
+ path: `/api/v1/computers/${id}/fs/upload`,
5440
4601
  bodyRaw: form,
5441
4602
  signal: opts.signal
5442
4603
  }
@@ -5447,10 +4608,10 @@ var ComputersApi = class {
5447
4608
  * Stream a remote file (or a folder as `tar.gz`) as a `Blob`. The server
5448
4609
  * sends the real MIME type on `Content-Type`.
5449
4610
  */
5450
- async sftpDownload(id, remotePath, opts = {}) {
4611
+ async fsDownload(id, remotePath, opts = {}) {
5451
4612
  return request(this.ctx, {
5452
4613
  method: "GET",
5453
- path: `/api/v1/computers/${id}/sftp/download`,
4614
+ path: `/api/v1/computers/${id}/fs/download`,
5454
4615
  query: { path: remotePath },
5455
4616
  expectBlob: true,
5456
4617
  signal: opts.signal
@@ -5718,117 +4879,6 @@ var ComputersApi = class {
5718
4879
  }
5719
4880
  };
5720
4881
 
5721
- // ../sdk/src/api/datastore.ts
5722
- var enc2 = encodeURIComponent;
5723
- var DatastoreApi = class {
5724
- constructor(ctx) {
5725
- this.ctx = ctx;
5726
- }
5727
- /** List keys in a namespace (prefix-filterable). */
5728
- async list(namespace, opts = {}) {
5729
- const q = new URLSearchParams();
5730
- if (opts.prefix) q.set("prefix", opts.prefix);
5731
- if (opts.cursor) q.set("cursor", opts.cursor);
5732
- if (opts.limit) q.set("limit", String(opts.limit));
5733
- const qs = q.toString() ? `?${q.toString()}` : "";
5734
- const res = await request(this.ctx, {
5735
- method: "GET",
5736
- path: `/api/v1/datastore/${enc2(namespace)}${qs}`,
5737
- signal: opts.signal
5738
- });
5739
- return res.data;
5740
- }
5741
- /** Read a KV entry. */
5742
- async get(namespace, key, opts = {}) {
5743
- const res = await request(this.ctx, {
5744
- method: "GET",
5745
- path: `/api/v1/datastore/${enc2(namespace)}/${enc2(key)}`,
5746
- signal: opts.signal
5747
- });
5748
- return res.data;
5749
- }
5750
- /** Upsert a KV entry (optionally with a TTL). */
5751
- async set(namespace, key, value, opts = {}) {
5752
- const res = await request(this.ctx, {
5753
- method: "POST",
5754
- path: `/api/v1/datastore/${enc2(namespace)}/${enc2(key)}`,
5755
- body: { value, ttl_seconds: opts.ttlSeconds },
5756
- signal: opts.signal
5757
- });
5758
- return res.data;
5759
- }
5760
- /** Delete a KV entry (idempotent). */
5761
- async delete(namespace, key, opts = {}) {
5762
- return request(this.ctx, {
5763
- method: "DELETE",
5764
- path: `/api/v1/datastore/${enc2(namespace)}/${enc2(key)}`,
5765
- signal: opts.signal
5766
- });
5767
- }
5768
- /** Atomically add `by` (default 1) to a numeric counter. */
5769
- async increment(namespace, key, by = 1, opts = {}) {
5770
- const res = await request(
5771
- this.ctx,
5772
- {
5773
- method: "POST",
5774
- path: `/api/v1/datastore/${enc2(namespace)}/${enc2(key)}/increment`,
5775
- body: { by },
5776
- signal: opts.signal
5777
- }
5778
- );
5779
- return res.data;
5780
- }
5781
- /** List the namespaces in the workspace. */
5782
- async listNamespaces(opts = {}) {
5783
- const res = await request(this.ctx, {
5784
- method: "GET",
5785
- path: "/api/v1/datastore",
5786
- signal: opts.signal
5787
- });
5788
- return res.data.map((n) => n.namespace);
5789
- }
5790
- /** Read several keys at once. */
5791
- async batchGet(namespace, keys, opts = {}) {
5792
- const res = await request(
5793
- this.ctx,
5794
- {
5795
- method: "POST",
5796
- path: `/api/v1/datastore/${enc2(namespace)}`,
5797
- body: { op: "get", keys },
5798
- signal: opts.signal
5799
- }
5800
- );
5801
- return res.data.entries ?? [];
5802
- }
5803
- /** Upsert several entries at once. */
5804
- async batchSet(namespace, entries, opts = {}) {
5805
- const res = await request(this.ctx, {
5806
- method: "POST",
5807
- path: `/api/v1/datastore/${enc2(namespace)}`,
5808
- body: {
5809
- op: "set",
5810
- entries: entries.map((e) => ({
5811
- key: e.key,
5812
- value: e.value,
5813
- ttl_seconds: e.ttlSeconds
5814
- }))
5815
- },
5816
- signal: opts.signal
5817
- });
5818
- return res.data.count ?? 0;
5819
- }
5820
- /** Delete several keys at once; returns the count removed. */
5821
- async batchDelete(namespace, keys, opts = {}) {
5822
- const res = await request(this.ctx, {
5823
- method: "POST",
5824
- path: `/api/v1/datastore/${enc2(namespace)}`,
5825
- body: { op: "delete", keys },
5826
- signal: opts.signal
5827
- });
5828
- return res.data.count ?? 0;
5829
- }
5830
- };
5831
-
5832
4882
  // ../sdk/src/api/docs.ts
5833
4883
  var DocsApi = class {
5834
4884
  constructor(ctx) {
@@ -5873,197 +4923,40 @@ var FilesApi = class {
5873
4923
  return getFileText(this.ctx, id, opts);
5874
4924
  }
5875
4925
  /**
5876
- * Fetch a file's raw bytes as a Blob. The server sends the real MIME
5877
- * type on `Content-Type`; the returned Blob's `.type` reflects it.
5878
- */
5879
- getBlob(id, opts = {}) {
5880
- return getFileBlob(this.ctx, id, opts);
5881
- }
5882
- /**
5883
- * Patch file metadata or content. Supports `expectedUpdatedAt` for
5884
- * optimistic concurrency — pass it when you know the version you read.
5885
- */
5886
- patch(id, input, opts = {}) {
5887
- return patchFile(this.ctx, id, input, opts);
5888
- }
5889
- delete(id, opts = {}) {
5890
- return deleteFile(this.ctx, id, opts);
5891
- }
5892
- restore(id, opts = {}) {
5893
- return restoreFile(this.ctx, id, opts);
5894
- }
5895
- permanentDelete(id, opts = {}) {
5896
- return permanentDeleteFile(this.ctx, id, opts);
5897
- }
5898
- // ---------------------------------------------------------------------------
5899
- // Folder / move / run
5900
- // ---------------------------------------------------------------------------
5901
- /**
5902
- * Idempotent create-or-get a folder. Returns the existing folder (with
5903
- * `200`) or the new one (`201`) — consumers don't need to distinguish.
5904
- */
5905
- createFolder(input, opts = {}) {
5906
- return createFolder(this.ctx, input, opts);
5907
- }
5908
- move(id, parentId, opts = {}) {
5909
- return moveFile(this.ctx, id, parentId, opts);
5910
- }
5911
- /**
5912
- * Execute a code file (js/ts/py/sh) in a sandboxed Lambda. Returns the
5913
- * full `ExecutionRun` record (status, stdout/stderr, exit code, timestamps).
5914
- */
5915
- run(id, input = {}, opts = {}) {
5916
- return runFile(this.ctx, id, input, opts);
5917
- }
5918
- };
5919
-
5920
- // ../sdk/src/api/functions.ts
5921
- var enc3 = encodeURIComponent;
5922
- var FunctionRunsApi = class {
5923
- constructor(ctx) {
5924
- this.ctx = ctx;
5925
- }
5926
- /** List one-off function runs (cursor-paginated). */
5927
- async list(query = {}, opts = {}) {
5928
- const res = await request(this.ctx, {
5929
- method: "GET",
5930
- path: "/api/v1/functions/runs",
5931
- query,
5932
- signal: opts.signal
5933
- });
5934
- return res.data;
5935
- }
5936
- /** Get a single one-off run by id. */
5937
- async get(id, opts = {}) {
5938
- const res = await request(this.ctx, {
5939
- method: "GET",
5940
- path: `/api/v1/functions/runs/${enc3(id)}`,
5941
- signal: opts.signal
5942
- });
5943
- return res.data;
5944
- }
5945
- /**
5946
- * Interrupt a running run. Only computer-backed runs can be interrupted;
5947
- * Lambda-backed runs return 409 (`ConflictError`).
5948
- */
5949
- async interrupt(id, opts = {}) {
5950
- const res = await request(this.ctx, {
5951
- method: "POST",
5952
- path: `/api/v1/functions/runs/${enc3(id)}/interrupt`,
5953
- body: {},
5954
- signal: opts.signal
5955
- });
5956
- return res.data;
5957
- }
5958
- };
5959
- var FunctionsApi = class {
5960
- constructor(ctx) {
5961
- this.ctx = ctx;
5962
- this.runs = new FunctionRunsApi(ctx);
5963
- }
5964
- /**
5965
- * Run a script ONCE in the sandbox. Pass EITHER inline `script` (+ optional
5966
- * `language`) OR an existing Drive `file_id`. Returns the full `FunctionRun`
5967
- * row — `id`, `status`, `stdout`, `stderr`, `exit_code`, the run timestamps,
5968
- * and any `output_files` the script wrote under `/tmp/output/`.
4926
+ * Fetch a file's raw bytes as a Blob. The server sends the real MIME
4927
+ * type on `Content-Type`; the returned Blob's `.type` reflects it.
5969
4928
  */
5970
- async run(input, opts = {}) {
5971
- const res = await request(this.ctx, {
5972
- method: "POST",
5973
- path: "/api/v1/functions/runs",
5974
- body: input,
5975
- signal: opts.signal
5976
- });
5977
- return res.data;
5978
- }
5979
- /** List deployed functions in the workspace. */
5980
- async list(query = {}, opts = {}) {
5981
- const res = await request(this.ctx, {
5982
- method: "GET",
5983
- path: "/api/v1/functions",
5984
- query,
5985
- signal: opts.signal
5986
- });
5987
- return res.data;
4929
+ getBlob(id, opts = {}) {
4930
+ return getFileBlob(this.ctx, id, opts);
5988
4931
  }
5989
- /** Get a deployed function by its resourceId. */
5990
- async get(id, opts = {}) {
5991
- const res = await request(this.ctx, {
5992
- method: "GET",
5993
- path: `/api/v1/functions/${enc3(id)}`,
5994
- signal: opts.signal
5995
- });
5996
- return res.data;
4932
+ /**
4933
+ * Patch file metadata or content. Supports `expectedUpdatedAt` for
4934
+ * optimistic concurrency pass it when you know the version you read.
4935
+ */
4936
+ patch(id, input, opts = {}) {
4937
+ return patchFile(this.ctx, id, input, opts);
5997
4938
  }
5998
- /** Create a deployed function (config only `deploy` adds a bundle). */
5999
- async create(input, opts = {}) {
6000
- const res = await request(this.ctx, {
6001
- method: "POST",
6002
- path: "/api/v1/functions",
6003
- body: input,
6004
- signal: opts.signal
6005
- });
6006
- return res.data;
4939
+ delete(id, opts = {}) {
4940
+ return deleteFile(this.ctx, id, opts);
6007
4941
  }
6008
- /** Update a deployed function's config. */
6009
- async update(id, patch, opts = {}) {
6010
- const res = await request(this.ctx, {
6011
- method: "PATCH",
6012
- path: `/api/v1/functions/${enc3(id)}`,
6013
- body: patch,
6014
- signal: opts.signal
6015
- });
6016
- return res.data;
4942
+ restore(id, opts = {}) {
4943
+ return restoreFile(this.ctx, id, opts);
6017
4944
  }
6018
- /** Delete a deployed function + all its deployments. */
6019
- async delete(id, opts = {}) {
6020
- return request(this.ctx, {
6021
- method: "DELETE",
6022
- path: `/api/v1/functions/${enc3(id)}`,
6023
- signal: opts.signal
6024
- });
4945
+ permanentDelete(id, opts = {}) {
4946
+ return permanentDeleteFile(this.ctx, id, opts);
6025
4947
  }
4948
+ // ---------------------------------------------------------------------------
4949
+ // Folder / move
4950
+ // ---------------------------------------------------------------------------
6026
4951
  /**
6027
- * Deploy a new bundle (inline base64 files). Promotes the new deployment to
6028
- * live immediately unless `promote: false`. Returns the new deployment.
4952
+ * Idempotent create-or-get a folder. Returns the existing folder (with
4953
+ * `200`) or the new one (`201`) consumers don't need to distinguish.
6029
4954
  */
6030
- async deploy(id, input, opts = {}) {
6031
- const res = await request(this.ctx, {
6032
- method: "POST",
6033
- path: `/api/v1/functions/${enc3(id)}/deploy`,
6034
- body: input,
6035
- signal: opts.signal
6036
- });
6037
- return res.data;
6038
- }
6039
- /** List a function's deployments (newest-first). */
6040
- async deployments(id, opts = {}) {
6041
- const res = await request(this.ctx, {
6042
- method: "GET",
6043
- path: `/api/v1/functions/${enc3(id)}/deployments`,
6044
- signal: opts.signal
6045
- });
6046
- return res.data;
6047
- }
6048
- /** Promote (or roll back to) a deployment — flips the active one. */
6049
- async promote(id, input, opts = {}) {
6050
- const res = await request(this.ctx, {
6051
- method: "POST",
6052
- path: `/api/v1/functions/${enc3(id)}/promote`,
6053
- body: input,
6054
- signal: opts.signal
6055
- });
6056
- return res.data;
4955
+ createFolder(input, opts = {}) {
4956
+ return createFolder(this.ctx, input, opts);
6057
4957
  }
6058
- /** Invoke a deployed function synchronously; returns its response. */
6059
- async invoke(id, input = {}, opts = {}) {
6060
- const res = await request(this.ctx, {
6061
- method: "POST",
6062
- path: `/api/v1/functions/${enc3(id)}/invoke`,
6063
- body: input,
6064
- signal: opts.signal
6065
- });
6066
- return res.data;
4958
+ move(id, parentId, opts = {}) {
4959
+ return moveFile(this.ctx, id, parentId, opts);
6067
4960
  }
6068
4961
  };
6069
4962
 
@@ -6091,6 +4984,7 @@ var ImagesApi = class {
6091
4984
  constructor(ctx) {
6092
4985
  this.ctx = ctx;
6093
4986
  }
4987
+ /** List the available image-generation models. */
6094
4988
  async listModels(opts = {}) {
6095
4989
  const res = await request(this.ctx, {
6096
4990
  method: "GET",
@@ -6099,16 +4993,51 @@ var ImagesApi = class {
6099
4993
  });
6100
4994
  return res.data;
6101
4995
  }
6102
- /** Generate an image. Responds HTTP 201 with the written file ref under `data`. */
6103
- async generate(input, opts = {}) {
6104
- const res = await request(this.ctx, {
6105
- method: "POST",
6106
- path: "/api/v1/images/generations",
6107
- body: input,
6108
- signal: opts.signal
6109
- });
6110
- return res.data;
4996
+ };
4997
+
4998
+ // ../sdk/src/api/inference.ts
4999
+ var InferenceApi = class {
5000
+ constructor(ctx) {
5001
+ this.ctx = ctx;
6111
5002
  }
5003
+ /** One-shot LLM completion (message-based). */
5004
+ text(input, opts = {}) {
5005
+ return executeCommand(
5006
+ COMMAND_BINDINGS["inference text"],
5007
+ input,
5008
+ this.ctx,
5009
+ opts
5010
+ );
5011
+ }
5012
+ /** Generate an image from a prompt. */
5013
+ image(input, opts = {}) {
5014
+ return executeCommand(
5015
+ COMMAND_BINDINGS["inference image"],
5016
+ input,
5017
+ this.ctx,
5018
+ opts
5019
+ );
5020
+ }
5021
+ /** Generate a video (ALWAYS async — polls to completion unless `wait:false`). */
5022
+ video(input, opts = {}) {
5023
+ return executeCommand(
5024
+ COMMAND_BINDINGS["inference video"],
5025
+ input,
5026
+ this.ctx,
5027
+ opts
5028
+ );
5029
+ }
5030
+ /** Synthesize speech from text (TTS). */
5031
+ speech(input, opts = {}) {
5032
+ return executeCommand(
5033
+ COMMAND_BINDINGS["inference speech"],
5034
+ input,
5035
+ this.ctx,
5036
+ opts
5037
+ );
5038
+ }
5039
+ // `inference transcribe` is multipart (audio file upload) — use
5040
+ // `client.call("inference transcribe", …)` with a File/Blob body.
6112
5041
  };
6113
5042
 
6114
5043
  // ../sdk/src/api/models.ts
@@ -6309,6 +5238,40 @@ var NotificationsApi = class {
6309
5238
  }
6310
5239
  };
6311
5240
 
5241
+ // ../sdk/src/api/operations.ts
5242
+ var OperationsApi = class {
5243
+ constructor(ctx) {
5244
+ this.ctx = ctx;
5245
+ }
5246
+ /** Fetch one operation by its handle id (`inf_…` / execution-run id). */
5247
+ async get(id, opts = {}) {
5248
+ const res = await request(this.ctx, {
5249
+ method: "GET",
5250
+ path: `/api/v1/operations/${encodeURIComponent(id)}`,
5251
+ signal: opts.signal
5252
+ });
5253
+ return res.data;
5254
+ }
5255
+ /** List the caller's recent operations, newest first (keyset-paginated). */
5256
+ async list(input = {}, opts = {}) {
5257
+ return request(this.ctx, {
5258
+ method: "GET",
5259
+ path: "/api/v1/operations",
5260
+ query: input,
5261
+ signal: opts.signal
5262
+ });
5263
+ }
5264
+ /** Request cancellation (idempotent — a terminal op is returned as-is). */
5265
+ async cancel(id, opts = {}) {
5266
+ const res = await request(this.ctx, {
5267
+ method: "POST",
5268
+ path: `/api/v1/operations/${encodeURIComponent(id)}/cancel`,
5269
+ signal: opts.signal
5270
+ });
5271
+ return res.data;
5272
+ }
5273
+ };
5274
+
6312
5275
  // ../sdk/src/api/provider-endpoints.ts
6313
5276
  var ProviderEndpointsApi = class {
6314
5277
  constructor(ctx) {
@@ -6369,7 +5332,7 @@ var ProviderEndpointsApi = class {
6369
5332
  };
6370
5333
 
6371
5334
  // ../sdk/src/api/realtime.ts
6372
- var enc4 = encodeURIComponent;
5335
+ var enc = encodeURIComponent;
6373
5336
  var RECONNECT_MIN_MS = 1e3;
6374
5337
  var RECONNECT_MAX_MS = 3e4;
6375
5338
  var RealtimeApi = class {
@@ -6380,7 +5343,7 @@ var RealtimeApi = class {
6380
5343
  async broadcast(channel, message, opts = {}) {
6381
5344
  const res = await request(this.ctx, {
6382
5345
  method: "POST",
6383
- path: `/api/v1/realtime/${enc4(channel)}/broadcast`,
5346
+ path: `/api/v1/realtime/${enc(channel)}/broadcast`,
6384
5347
  body: { message },
6385
5348
  signal: opts.signal
6386
5349
  });
@@ -6390,7 +5353,7 @@ var RealtimeApi = class {
6390
5353
  async heartbeat(channel, opts = {}) {
6391
5354
  const res = await request(this.ctx, {
6392
5355
  method: "POST",
6393
- path: `/api/v1/realtime/${enc4(channel)}/presence`,
5356
+ path: `/api/v1/realtime/${enc(channel)}/presence`,
6394
5357
  body: { meta: opts.meta, ttl_seconds: opts.ttlSeconds },
6395
5358
  signal: opts.signal
6396
5359
  });
@@ -6400,7 +5363,7 @@ var RealtimeApi = class {
6400
5363
  async presence(channel, opts = {}) {
6401
5364
  const res = await request(this.ctx, {
6402
5365
  method: "GET",
6403
- path: `/api/v1/realtime/${enc4(channel)}/presence`,
5366
+ path: `/api/v1/realtime/${enc(channel)}/presence`,
6404
5367
  signal: opts.signal
6405
5368
  });
6406
5369
  return res.data;
@@ -6494,7 +5457,7 @@ async function* parseSseStream(response, signal) {
6494
5457
  if (boundary === -1) break;
6495
5458
  const block = buffer.slice(0, boundary);
6496
5459
  buffer = buffer.slice(boundary + 2);
6497
- const parsed = parseSseBlock3(block);
5460
+ const parsed = parseSseBlock2(block);
6498
5461
  if (parsed) yield parsed;
6499
5462
  }
6500
5463
  }
@@ -6505,7 +5468,7 @@ async function* parseSseStream(response, signal) {
6505
5468
  }
6506
5469
  }
6507
5470
  }
6508
- function parseSseBlock3(block) {
5471
+ function parseSseBlock2(block) {
6509
5472
  let id;
6510
5473
  let data = "";
6511
5474
  let isHeartbeat = false;
@@ -6755,42 +5718,6 @@ var SharingApi = class {
6755
5718
  }
6756
5719
  };
6757
5720
 
6758
- // ../sdk/src/api/store.ts
6759
- var StoreApi = class {
6760
- constructor(ctx) {
6761
- this.ctx = ctx;
6762
- }
6763
- /**
6764
- * Search the hub. Open envelope — items are heterogeneous (skills carry
6765
- * version/license, agents carry icons/prompts, computer templates carry
6766
- * sizing) so we surface them as `StoreItem` with an open index signature.
6767
- */
6768
- async search(query = {}, opts = {}) {
6769
- const res = await request(this.ctx, {
6770
- method: "GET",
6771
- path: "/api/v1/store/search",
6772
- query,
6773
- signal: opts.signal
6774
- });
6775
- return res.data;
6776
- }
6777
- /**
6778
- * Install a hub item into one of the caller's workspaces. Returns whatever
6779
- * the per-template installer produces (folder ids, agent ids, ...) —
6780
- * `StoreInstallResult` carries the common fields and leaves the rest
6781
- * open.
6782
- */
6783
- async install(resourceId, input, opts = {}) {
6784
- const res = await request(this.ctx, {
6785
- method: "POST",
6786
- path: `/api/v1/store/${resourceId}/install`,
6787
- body: input,
6788
- signal: opts.signal
6789
- });
6790
- return res.data;
6791
- }
6792
- };
6793
-
6794
5721
  // ../sdk/src/api/subscription.ts
6795
5722
  var SubscriptionApi = class {
6796
5723
  constructor(ctx) {
@@ -6806,123 +5733,6 @@ var SubscriptionApi = class {
6806
5733
  }
6807
5734
  };
6808
5735
 
6809
- // ../sdk/src/api/tables.ts
6810
- var enc5 = encodeURIComponent;
6811
- var TablesApi = class {
6812
- constructor(ctx) {
6813
- this.ctx = ctx;
6814
- }
6815
- async list(opts = {}) {
6816
- const q = new URLSearchParams();
6817
- if (opts.workspaceId) q.set("workspace_id", opts.workspaceId);
6818
- if (opts.cursor) q.set("cursor", opts.cursor);
6819
- if (opts.limit) q.set("limit", String(opts.limit));
6820
- const qs = q.toString() ? `?${q.toString()}` : "";
6821
- const res = await request(this.ctx, {
6822
- method: "GET",
6823
- path: `/api/v1/tables${qs}`,
6824
- signal: opts.signal
6825
- });
6826
- return res.data;
6827
- }
6828
- async get(id, opts = {}) {
6829
- const res = await request(this.ctx, {
6830
- method: "GET",
6831
- path: `/api/v1/tables/${enc5(id)}`,
6832
- signal: opts.signal
6833
- });
6834
- return res.data;
6835
- }
6836
- async create(input, opts = {}) {
6837
- const res = await request(this.ctx, {
6838
- method: "POST",
6839
- path: "/api/v1/tables",
6840
- body: input,
6841
- signal: opts.signal
6842
- });
6843
- return res.data;
6844
- }
6845
- async update(id, input, opts = {}) {
6846
- const res = await request(this.ctx, {
6847
- method: "PATCH",
6848
- path: `/api/v1/tables/${enc5(id)}`,
6849
- body: input,
6850
- signal: opts.signal
6851
- });
6852
- return res.data;
6853
- }
6854
- async delete(id, opts = {}) {
6855
- return request(this.ctx, {
6856
- method: "DELETE",
6857
- path: `/api/v1/tables/${enc5(id)}`,
6858
- signal: opts.signal
6859
- });
6860
- }
6861
- /** Query a collection's records with the filter/sort/paginate DSL. */
6862
- async query(id, query = {}, opts = {}) {
6863
- const res = await request(this.ctx, {
6864
- method: "POST",
6865
- path: `/api/v1/tables/${enc5(id)}/query`,
6866
- body: query,
6867
- signal: opts.signal
6868
- });
6869
- return res.data;
6870
- }
6871
- async createRecord(id, values, opts = {}) {
6872
- const res = await request(this.ctx, {
6873
- method: "POST",
6874
- path: `/api/v1/tables/${enc5(id)}/records`,
6875
- body: { values },
6876
- signal: opts.signal
6877
- });
6878
- return res.data;
6879
- }
6880
- async getRecord(id, recordId, opts = {}) {
6881
- const res = await request(this.ctx, {
6882
- method: "GET",
6883
- path: `/api/v1/tables/${enc5(id)}/records/${enc5(recordId)}`,
6884
- signal: opts.signal
6885
- });
6886
- return res.data;
6887
- }
6888
- async updateRecord(id, recordId, values, opts = {}) {
6889
- const res = await request(this.ctx, {
6890
- method: "PATCH",
6891
- path: `/api/v1/tables/${enc5(id)}/records/${enc5(recordId)}`,
6892
- body: { values },
6893
- signal: opts.signal
6894
- });
6895
- return res.data;
6896
- }
6897
- async deleteRecord(id, recordId, opts = {}) {
6898
- return request(this.ctx, {
6899
- method: "DELETE",
6900
- path: `/api/v1/tables/${enc5(id)}/records/${enc5(recordId)}`,
6901
- signal: opts.signal
6902
- });
6903
- }
6904
- /** Export a collection's records as a CSV string (header row = field keys). */
6905
- async exportCsv(id, opts = {}) {
6906
- const res = await requestRaw(this.ctx, {
6907
- method: "GET",
6908
- path: `/api/v1/tables/${enc5(id)}/export`,
6909
- signal: opts.signal,
6910
- expectJson: false
6911
- });
6912
- return res.text();
6913
- }
6914
- /** Import records into a collection from a CSV string. Returns the count. */
6915
- async importCsv(id, csv, opts = {}) {
6916
- const res = await request(this.ctx, {
6917
- method: "POST",
6918
- path: `/api/v1/tables/${enc5(id)}/import`,
6919
- body: { csv },
6920
- signal: opts.signal
6921
- });
6922
- return res.data;
6923
- }
6924
- };
6925
-
6926
5736
  // ../sdk/src/api/user.ts
6927
5737
  var UserApi = class {
6928
5738
  constructor(ctx) {
@@ -6966,11 +5776,11 @@ var UserApi = class {
6966
5776
  };
6967
5777
 
6968
5778
  // ../sdk/src/api/videos.ts
6969
- var GENERATE_BINDING = COMMAND_BINDINGS["video generate"];
6970
5779
  var VideosApi = class {
6971
5780
  constructor(ctx) {
6972
5781
  this.ctx = ctx;
6973
5782
  }
5783
+ /** List the available video-generation models. */
6974
5784
  async listModels(opts = {}) {
6975
5785
  const res = await request(this.ctx, {
6976
5786
  method: "GET",
@@ -6979,6 +5789,7 @@ var VideosApi = class {
6979
5789
  });
6980
5790
  return res.data;
6981
5791
  }
5792
+ /** Search the video-model registry (filtered + paginated envelope). */
6982
5793
  async searchModels(input = {}, opts = {}) {
6983
5794
  const res = await request(
6984
5795
  this.ctx,
@@ -6991,27 +5802,6 @@ var VideosApi = class {
6991
5802
  );
6992
5803
  return res.data;
6993
5804
  }
6994
- async generate(input, opts = {}) {
6995
- const res = await request(this.ctx, {
6996
- method: "POST",
6997
- path: "/api/v1/videos/generations",
6998
- body: input,
6999
- signal: opts.signal
7000
- });
7001
- const handle = res.data;
7002
- if (opts.wait === false) return handle;
7003
- const pollOpts = {
7004
- signal: opts.signal,
7005
- pollIntervalMs: opts.pollIntervalMs,
7006
- maxPollAttempts: opts.maxPollAttempts
7007
- };
7008
- return await awaitOperation(
7009
- GENERATE_BINDING,
7010
- handle.id,
7011
- this.ctx,
7012
- pollOpts
7013
- );
7014
- }
7015
5805
  };
7016
5806
 
7017
5807
  // ../sdk/src/api/web.ts
@@ -7176,8 +5966,12 @@ var WorkspacesApi = class {
7176
5966
  }
7177
5967
  };
7178
5968
 
5969
+ // ../sdk/src/api-version.ts
5970
+ var IDAPT_API_VERSION = "2026-07-12";
5971
+ var IDAPT_API_VERSION_HEADER = "x-idapt-version";
5972
+
7179
5973
  // ../sdk/src/version.ts
7180
- var VERSION = "0.3.0" ;
5974
+ var VERSION = "0.4.0" ;
7181
5975
 
7182
5976
  // src/api/app.ts
7183
5977
  var RemoteBundleReader = class {
@@ -7674,21 +6468,16 @@ var IdaptClient2 = class {
7674
6468
  this.automations = new AutomationsApi(v1Ctx);
7675
6469
  this.computers = new ComputersApi(v1Ctx);
7676
6470
  this.secrets = new SecretsApi(v1Ctx);
7677
- this.kv = new DatastoreApi(v1Ctx);
7678
- this.blobs = new BlobsApi(v1Ctx);
7679
- this.tables = new TablesApi(v1Ctx);
7680
6471
  this.realtime = new RealtimeApi(v1Ctx);
7681
6472
  this.apiKeys = new ApiKeysApi(v1Ctx);
7682
6473
  this.notifications = new NotificationsApi(v1Ctx);
7683
6474
  this.settings = new SettingsApi(v1Ctx);
7684
6475
  this.subscription = new SubscriptionApi(v1Ctx);
7685
6476
  this.sharing = new SharingApi(v1Ctx);
7686
- this.store = new StoreApi(v1Ctx);
7687
6477
  this.models = new ModelsApi(v1Ctx);
7688
6478
  this.providerEndpoints = new ProviderEndpointsApi(v1Ctx);
7689
6479
  this.images = new ImagesApi(v1Ctx);
7690
6480
  this.audio = new AudioApi(v1Ctx);
7691
- this.functions = new FunctionsApi(v1Ctx);
7692
6481
  this.search = new SearchApi(v1Ctx);
7693
6482
  this.web = new WebSearchApi(v1Ctx);
7694
6483
  this.guide = new GuideApi(v1Ctx);
@@ -8076,26 +6865,27 @@ exports.AppFolder = AppFolder;
8076
6865
  exports.AudioApi = AudioApi;
8077
6866
  exports.AuthError = AuthError;
8078
6867
  exports.AutomationsApi = AutomationsApi;
8079
- exports.BlobsApi = BlobsApi;
8080
6868
  exports.COMMAND_BINDINGS = COMMAND_BINDINGS;
8081
6869
  exports.ChatsApi = ChatsApi;
8082
6870
  exports.ComputersApi = ComputersApi;
8083
6871
  exports.ConflictError = ConflictError;
8084
6872
  exports.DataFolder = DataFolder;
8085
- exports.DatastoreApi = DatastoreApi;
8086
6873
  exports.DocsApi = DocsApi;
8087
6874
  exports.FilesApi = FilesApi;
8088
- exports.FunctionsApi = FunctionsApi;
8089
6875
  exports.GuideApi = GuideApi;
6876
+ exports.IDAPT_API_VERSION = IDAPT_API_VERSION;
6877
+ exports.IDAPT_API_VERSION_HEADER = IDAPT_API_VERSION_HEADER;
8090
6878
  exports.Idapt = Idapt2;
8091
6879
  exports.IdaptClient = IdaptClient2;
8092
6880
  exports.IdaptError = IdaptError;
8093
6881
  exports.ImagesApi = ImagesApi;
6882
+ exports.InferenceApi = InferenceApi;
8094
6883
  exports.InvalidRequestError = InvalidRequestError;
8095
6884
  exports.ModelsApi = ModelsApi;
8096
6885
  exports.NetworkError = NetworkError;
8097
6886
  exports.NotFoundError = NotFoundError;
8098
6887
  exports.NotificationsApi = NotificationsApi;
6888
+ exports.OperationsApi = OperationsApi;
8099
6889
  exports.PermissionError = PermissionError;
8100
6890
  exports.ProviderEndpointsApi = ProviderEndpointsApi;
8101
6891
  exports.RateLimitError = RateLimitError;
@@ -8108,9 +6898,7 @@ exports.ServerError = ServerError;
8108
6898
  exports.ServiceUnavailableError = ServiceUnavailableError;
8109
6899
  exports.SettingsApi = SettingsApi;
8110
6900
  exports.SharingApi = SharingApi;
8111
- exports.StoreApi = StoreApi;
8112
6901
  exports.SubscriptionApi = SubscriptionApi;
8113
- exports.TablesApi = TablesApi;
8114
6902
  exports.UserApi = UserApi;
8115
6903
  exports.VERSION = VERSION;
8116
6904
  exports.VideosApi = VideosApi;