@idapt/browser-app-sdk 0.2.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,251 +552,168 @@ 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
- // ../sdk/src/api/blobs.ts
695
- var enc = encodeURIComponent;
696
- var BlobsApi = class {
576
+ // ../sdk/src/api/automations.ts
577
+ var AutomationsApi = class {
697
578
  constructor(ctx) {
698
579
  this.ctx = ctx;
699
580
  }
700
- /** List objects in a namespace (prefix-filterable). */
701
- async list(namespace, opts = {}) {
702
- const q = new URLSearchParams();
703
- if (opts.prefix) q.set("prefix", opts.prefix);
704
- if (opts.cursor) q.set("cursor", opts.cursor);
705
- if (opts.limit) q.set("limit", String(opts.limit));
706
- const qs = q.toString() ? `?${q.toString()}` : "";
581
+ // ---------------------------------------------------------------------------
582
+ // CRUD
583
+ // ---------------------------------------------------------------------------
584
+ async list(query = {}, opts = {}) {
707
585
  const res = await request(this.ctx, {
708
586
  method: "GET",
709
- path: `/api/v1/blobs/${enc(namespace)}${qs}`,
587
+ path: "/api/v1/automations",
588
+ query,
710
589
  signal: opts.signal
711
590
  });
712
591
  return res.data;
713
592
  }
714
593
  /**
715
- * Upload (upsert) an object's bytes. Returns its metadata.
594
+ * Create an automation. `workspace_id` is passed in the request BODY
595
+ * alongside the flat automation definition — it is not a query param. The request
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.
716
599
  *
717
- * Sent as `multipart/form-data` (the bytes ride a `file` part, with an
718
- * optional `content_type` field) the same upload convention as
719
- * `client.files.upload`, so it flows through the one multipart transport and
720
- * is reachable identically via `client.call("blobs put", …)`. The SDK leaves
721
- * `Content-Type` unset so the runtime picks the multipart boundary.
600
+ * For a webhook automation the response additionally carries a one-time
601
+ * plaintext `secret` (use `AutomationWithSecret`); other automation types
602
+ * resolve to a plain `Automation`.
722
603
  */
723
- async put(namespace, key, content, contentType, opts = {}) {
724
- const ct = contentType ?? (content instanceof Blob && content.type ? content.type : "application/octet-stream");
725
- const blob = content instanceof Blob ? content : new Blob([content], { type: ct });
726
- const form = new FormData();
727
- form.set("file", blob, key);
728
- form.set("content_type", ct);
604
+ async create(workspaceId, input, opts = {}) {
729
605
  const res = await request(this.ctx, {
730
606
  method: "POST",
731
- path: `/api/v1/blobs/${enc(namespace)}/${enc(key)}`,
732
- // No explicit Content-Type the runtime sets the multipart boundary.
733
- bodyRaw: form,
607
+ path: "/api/v1/automations",
608
+ body: { workspace_id: workspaceId, ...input },
734
609
  signal: opts.signal
735
610
  });
736
611
  return res.data;
737
612
  }
738
- /**
739
- * Download an object's raw bytes (preserving its stored Content-Type).
740
- *
741
- * `GET /blobs/:ns/:key` returns JSON metadata + a signed URL by default (the
742
- * agent/CLI form); `?download=true` is the raw-bytes escape hatch this facade
743
- * uses. For the JSON reference instead, call `client.call("blobs get", …)`.
744
- */
745
- async get(namespace, key, opts = {}) {
746
- const res = await requestRaw(this.ctx, {
613
+ async get(id, opts = {}) {
614
+ const res = await request(this.ctx, {
747
615
  method: "GET",
748
- path: `/api/v1/blobs/${enc(namespace)}/${enc(key)}?download=true`,
749
- signal: opts.signal,
750
- expectJson: false
616
+ path: `/api/v1/automations/${id}`,
617
+ signal: opts.signal
751
618
  });
752
- const blob = await res.blob();
753
- return {
754
- blob,
755
- contentType: res.headers.get("content-type") ?? "application/octet-stream"
756
- };
619
+ return res.data;
757
620
  }
758
- /** Read an object's metadata (no bytes). */
759
- async head(namespace, key, opts = {}) {
621
+ async update(id, input, opts = {}) {
760
622
  const res = await request(this.ctx, {
761
- method: "GET",
762
- path: `/api/v1/blobs/${enc(namespace)}/${enc(key)}/meta`,
623
+ method: "PATCH",
624
+ path: `/api/v1/automations/${id}`,
625
+ body: input,
763
626
  signal: opts.signal
764
627
  });
765
628
  return res.data;
766
629
  }
767
- /** Delete an object (idempotent). */
768
- async delete(namespace, key, opts = {}) {
630
+ async delete(id, opts = {}) {
769
631
  return request(this.ctx, {
770
632
  method: "DELETE",
771
- path: `/api/v1/blobs/${enc(namespace)}/${enc(key)}`,
633
+ path: `/api/v1/automations/${id}`,
634
+ signal: opts.signal
635
+ });
636
+ }
637
+ async archive(id, opts = {}) {
638
+ const res = await request(this.ctx, {
639
+ method: "POST",
640
+ path: `/api/v1/automations/${id}/archive`,
641
+ signal: opts.signal
642
+ });
643
+ return res.data;
644
+ }
645
+ async unarchive(id, opts = {}) {
646
+ const res = await request(this.ctx, {
647
+ method: "POST",
648
+ path: `/api/v1/automations/${id}/unarchive`,
649
+ signal: opts.signal
650
+ });
651
+ return res.data;
652
+ }
653
+ // ---------------------------------------------------------------------------
654
+ // Fire + rotate-secret + runs
655
+ // ---------------------------------------------------------------------------
656
+ /**
657
+ * Fire an automation via its webhook secret. This endpoint does NOT use the
658
+ * client's `ap_` key — the bearer is the automation's secret — so we build a
659
+ * one-off HttpContext for it rather than mutating the shared one.
660
+ *
661
+ * Responds HTTP 202. The response identifies the fired automation via `id`
662
+ * only.
663
+ */
664
+ async fire(id, input, opts = {}) {
665
+ const localCtx = {
666
+ apiUrl: this.ctx.apiUrl,
667
+ key: input.secret,
668
+ fetch: this.ctx.fetch
669
+ };
670
+ const res = await request(localCtx, {
671
+ method: "POST",
672
+ path: `/api/v1/automations/${id}/fire`,
673
+ body: input.body ?? {},
772
674
  signal: opts.signal
773
675
  });
676
+ return res.data;
774
677
  }
775
- /** Mint a time-limited direct-download URL for an object. */
776
- async createSignedUrl(namespace, key, expiresIn, opts = {}) {
678
+ /**
679
+ * Rotate the webhook secret. Returns the automation with a fresh one-time
680
+ * plaintext `secret` populated (`AutomationWithSecret`). The old secret
681
+ * immediately stops working.
682
+ */
683
+ async rotateSecret(id, opts = {}) {
777
684
  const res = await request(this.ctx, {
778
685
  method: "POST",
779
- path: `/api/v1/blobs/${enc(namespace)}/${enc(key)}/signed-url`,
780
- body: { expires_in: expiresIn },
686
+ path: `/api/v1/automations/${id}/rotate-secret`,
687
+ signal: opts.signal
688
+ });
689
+ return res.data;
690
+ }
691
+ /** Recent fires + their success/error outcome. */
692
+ async listRuns(id, query = {}, opts = {}) {
693
+ const res = await request(this.ctx, {
694
+ method: "GET",
695
+ path: `/api/v1/automations/${id}/runs`,
696
+ query,
697
+ signal: opts.signal
698
+ });
699
+ return res.data;
700
+ }
701
+ async getCostStats(id, opts = {}) {
702
+ const res = await request(this.ctx, {
703
+ method: "GET",
704
+ path: `/api/v1/automations/${id}/cost-stats`,
781
705
  signal: opts.signal
782
706
  });
783
707
  return res.data;
784
708
  }
785
- /** List the blob namespaces in the workspace. */
786
- async listNamespaces(opts = {}) {
709
+ async getCostStatsMap(query = {}, opts = {}) {
787
710
  const res = await request(this.ctx, {
788
711
  method: "GET",
789
- path: "/api/v1/blobs",
712
+ path: "/api/v1/automations/cost-stats",
713
+ query,
790
714
  signal: opts.signal
791
715
  });
792
- return res.data.map((n) => n.namespace);
716
+ return res.data.by_id;
793
717
  }
794
718
  };
795
719
 
@@ -855,7 +779,7 @@ function buildRequest(binding, path, rest, signal) {
855
779
  return base;
856
780
  }
857
781
  }
858
- async function* parseSse2(response, signal) {
782
+ async function* parseSse(response, signal) {
859
783
  if (!response.body) return;
860
784
  const reader = response.body.getReader();
861
785
  const decoder = new TextDecoder();
@@ -871,7 +795,7 @@ async function* parseSse2(response, signal) {
871
795
  if (boundary === -1) break;
872
796
  const block = buffer.slice(0, boundary);
873
797
  buffer = buffer.slice(boundary + 2);
874
- const frame = parseSseBlock2(block);
798
+ const frame = parseSseBlock(block);
875
799
  if (frame) yield frame;
876
800
  }
877
801
  }
@@ -882,7 +806,7 @@ async function* parseSse2(response, signal) {
882
806
  }
883
807
  }
884
808
  }
885
- function parseSseBlock2(block) {
809
+ function parseSseBlock(block) {
886
810
  let event = "message";
887
811
  let data = "";
888
812
  for (const line of block.split("\n")) {
@@ -926,7 +850,7 @@ async function executeCommand(binding, args = {}, ctx, opts = {}) {
926
850
  if (binding.responseKind === "binary") {
927
851
  if (isSseBinding(binding) && !opts.bufferBinary) {
928
852
  const res = await requestRaw(ctx, { ...req, expectJson: false });
929
- return parseSse2(res, opts.signal);
853
+ return parseSse(res, opts.signal);
930
854
  }
931
855
  return await request(ctx, { ...req, expectBlob: true });
932
856
  }
@@ -1100,6 +1024,15 @@ var COMMAND_BINDINGS = {
1100
1024
  "responseKind": "list",
1101
1025
  "async": false
1102
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
+ },
1103
1036
  "ai-gateway usage": {
1104
1037
  "command": "ai-gateway usage",
1105
1038
  "method": "GET",
@@ -1187,48 +1120,6 @@ var COMMAND_BINDINGS = {
1187
1120
  "responseKind": "single",
1188
1121
  "async": false
1189
1122
  },
1190
- "audio speak": {
1191
- "command": "audio speak",
1192
- "method": "POST",
1193
- "path": "/audio/speech",
1194
- "pathParams": [],
1195
- "argLocation": "body",
1196
- "responseKind": "created",
1197
- "async": true
1198
- },
1199
- "audio speak-stream": {
1200
- "command": "audio speak-stream",
1201
- "method": "POST",
1202
- "path": "/audio/speech/stream",
1203
- "pathParams": [],
1204
- "argLocation": "body",
1205
- "responseKind": "binary",
1206
- "async": false,
1207
- "binaryContentTypes": [
1208
- "text/event-stream"
1209
- ]
1210
- },
1211
- "audio transcribe": {
1212
- "command": "audio transcribe",
1213
- "method": "POST",
1214
- "path": "/audio/transcriptions",
1215
- "pathParams": [],
1216
- "argLocation": "multipart",
1217
- "responseKind": "single",
1218
- "async": true
1219
- },
1220
- "audio transcribe-stream": {
1221
- "command": "audio transcribe-stream",
1222
- "method": "POST",
1223
- "path": "/audio/transcriptions/stream",
1224
- "pathParams": [],
1225
- "argLocation": "multipart",
1226
- "responseKind": "binary",
1227
- "async": false,
1228
- "binaryContentTypes": [
1229
- "text/event-stream"
1230
- ]
1231
- },
1232
1123
  "audio voices": {
1233
1124
  "command": "audio voices",
1234
1125
  "method": "GET",
@@ -1238,89 +1129,179 @@ var COMMAND_BINDINGS = {
1238
1129
  "responseKind": "list",
1239
1130
  "async": false
1240
1131
  },
1241
- "blobs delete": {
1242
- "command": "blobs delete",
1243
- "method": "DELETE",
1244
- "path": "/blobs/:namespace/:key",
1132
+ "automation archive": {
1133
+ "command": "automation archive",
1134
+ "method": "POST",
1135
+ "path": "/automations/:id/archive",
1245
1136
  "pathParams": [
1246
- "namespace",
1247
- "key"
1137
+ "id"
1248
1138
  ],
1249
1139
  "argLocation": "body",
1250
- "responseKind": "deleted",
1140
+ "responseKind": "single",
1251
1141
  "async": false
1252
1142
  },
1253
- "blobs get": {
1254
- "command": "blobs get",
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
+ },
1155
+ "automation cost-stats": {
1156
+ "command": "automation cost-stats",
1255
1157
  "method": "GET",
1256
- "path": "/blobs/:namespace/:key",
1158
+ "path": "/automations/:id/cost-stats",
1257
1159
  "pathParams": [
1258
- "namespace",
1259
- "key"
1160
+ "id"
1260
1161
  ],
1261
1162
  "argLocation": "query",
1262
1163
  "responseKind": "single",
1263
1164
  "async": false
1264
1165
  },
1265
- "blobs head": {
1266
- "command": "blobs head",
1166
+ "automation cost-stats-all": {
1167
+ "command": "automation cost-stats-all",
1267
1168
  "method": "GET",
1268
- "path": "/blobs/:namespace/:key/meta",
1269
- "pathParams": [
1270
- "namespace",
1271
- "key"
1272
- ],
1169
+ "path": "/automations/cost-stats",
1170
+ "pathParams": [],
1273
1171
  "argLocation": "query",
1274
1172
  "responseKind": "single",
1275
1173
  "async": false
1276
1174
  },
1277
- "blobs list": {
1278
- "command": "blobs list",
1175
+ "automation create": {
1176
+ "command": "automation create",
1177
+ "method": "POST",
1178
+ "path": "/automations",
1179
+ "pathParams": [],
1180
+ "argLocation": "body",
1181
+ "responseKind": "created",
1182
+ "async": false
1183
+ },
1184
+ "automation delete": {
1185
+ "command": "automation delete",
1186
+ "method": "DELETE",
1187
+ "path": "/automations/:id",
1188
+ "pathParams": [
1189
+ "id"
1190
+ ],
1191
+ "argLocation": "body",
1192
+ "responseKind": "deleted",
1193
+ "async": false
1194
+ },
1195
+ "automation fire": {
1196
+ "command": "automation fire",
1197
+ "method": "POST",
1198
+ "path": "/automations/:id/fire",
1199
+ "pathParams": [
1200
+ "id"
1201
+ ],
1202
+ "argLocation": "body",
1203
+ "responseKind": "created",
1204
+ "async": true
1205
+ },
1206
+ "automation get": {
1207
+ "command": "automation get",
1279
1208
  "method": "GET",
1280
- "path": "/blobs/:namespace",
1209
+ "path": "/automations/:id",
1281
1210
  "pathParams": [
1282
- "namespace"
1211
+ "id"
1283
1212
  ],
1284
1213
  "argLocation": "query",
1285
- "responseKind": "list",
1214
+ "responseKind": "single",
1286
1215
  "async": false
1287
1216
  },
1288
- "blobs namespaces": {
1289
- "command": "blobs namespaces",
1217
+ "automation list": {
1218
+ "command": "automation list",
1290
1219
  "method": "GET",
1291
- "path": "/blobs",
1220
+ "path": "/automations",
1292
1221
  "pathParams": [],
1293
1222
  "argLocation": "query",
1294
1223
  "responseKind": "list",
1295
1224
  "async": false
1296
1225
  },
1297
- "blobs put": {
1298
- "command": "blobs put",
1226
+ "automation retry-run": {
1227
+ "command": "automation retry-run",
1299
1228
  "method": "POST",
1300
- "path": "/blobs/:namespace/:key",
1229
+ "path": "/automations/:id/runs/:runId/retry",
1301
1230
  "pathParams": [
1302
- "namespace",
1303
- "key"
1231
+ "id",
1232
+ "runId"
1304
1233
  ],
1305
- "argLocation": "multipart",
1234
+ "argLocation": "body",
1306
1235
  "responseKind": "single",
1307
- "async": false
1236
+ "async": true
1308
1237
  },
1309
- "blobs signed-url": {
1310
- "command": "blobs signed-url",
1238
+ "automation rotate-secret": {
1239
+ "command": "automation rotate-secret",
1311
1240
  "method": "POST",
1312
- "path": "/blobs/:namespace/:key/signed-url",
1241
+ "path": "/automations/:id/rotate-secret",
1313
1242
  "pathParams": [
1314
- "namespace",
1315
- "key"
1243
+ "id"
1316
1244
  ],
1317
1245
  "argLocation": "body",
1318
1246
  "responseKind": "single",
1319
1247
  "async": false
1320
1248
  },
1321
- "browser-app create": {
1322
- "command": "browser-app create",
1323
- "method": "POST",
1249
+ "automation runs": {
1250
+ "command": "automation runs",
1251
+ "method": "GET",
1252
+ "path": "/automations/:id/runs",
1253
+ "pathParams": [
1254
+ "id"
1255
+ ],
1256
+ "argLocation": "query",
1257
+ "responseKind": "list",
1258
+ "async": false
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
+ },
1269
+ "automation test-fire": {
1270
+ "command": "automation test-fire",
1271
+ "method": "POST",
1272
+ "path": "/automations/:id/test-fire",
1273
+ "pathParams": [
1274
+ "id"
1275
+ ],
1276
+ "argLocation": "body",
1277
+ "responseKind": "single",
1278
+ "async": true
1279
+ },
1280
+ "automation unarchive": {
1281
+ "command": "automation unarchive",
1282
+ "method": "POST",
1283
+ "path": "/automations/:id/unarchive",
1284
+ "pathParams": [
1285
+ "id"
1286
+ ],
1287
+ "argLocation": "body",
1288
+ "responseKind": "single",
1289
+ "async": false
1290
+ },
1291
+ "automation update": {
1292
+ "command": "automation update",
1293
+ "method": "PATCH",
1294
+ "path": "/automations/:id",
1295
+ "pathParams": [
1296
+ "id"
1297
+ ],
1298
+ "argLocation": "body",
1299
+ "responseKind": "single",
1300
+ "async": false
1301
+ },
1302
+ "browser-app create": {
1303
+ "command": "browser-app create",
1304
+ "method": "POST",
1324
1305
  "path": "/browser-apps",
1325
1306
  "pathParams": [],
1326
1307
  "argLocation": "body",
@@ -1702,6 +1683,17 @@ var COMMAND_BINDINGS = {
1702
1683
  "responseKind": "single",
1703
1684
  "async": false
1704
1685
  },
1686
+ "computer add-exposure": {
1687
+ "command": "computer add-exposure",
1688
+ "method": "POST",
1689
+ "path": "/computers/:id/expose",
1690
+ "pathParams": [
1691
+ "id"
1692
+ ],
1693
+ "argLocation": "body",
1694
+ "responseKind": "created",
1695
+ "async": false
1696
+ },
1705
1697
  "computer add-local-model": {
1706
1698
  "command": "computer add-local-model",
1707
1699
  "method": "POST",
@@ -1762,12 +1754,12 @@ var COMMAND_BINDINGS = {
1762
1754
  },
1763
1755
  "computer app-external": {
1764
1756
  "command": "computer app-external",
1765
- "method": "POST",
1757
+ "method": "GET",
1766
1758
  "path": "/computers/:id/apps/external",
1767
1759
  "pathParams": [
1768
1760
  "id"
1769
1761
  ],
1770
- "argLocation": "body",
1762
+ "argLocation": "query",
1771
1763
  "responseKind": "single",
1772
1764
  "async": false
1773
1765
  },
@@ -1992,7 +1984,7 @@ var COMMAND_BINDINGS = {
1992
1984
  "computer download": {
1993
1985
  "command": "computer download",
1994
1986
  "method": "GET",
1995
- "path": "/computers/:id/sftp/download",
1987
+ "path": "/computers/:id/fs/download",
1996
1988
  "pathParams": [
1997
1989
  "id"
1998
1990
  ],
@@ -2007,7 +1999,7 @@ var COMMAND_BINDINGS = {
2007
1999
  "computer download-to-drive": {
2008
2000
  "command": "computer download-to-drive",
2009
2001
  "method": "POST",
2010
- "path": "/computers/:id/sftp/download",
2002
+ "path": "/computers/:id/fs/download",
2011
2003
  "pathParams": [
2012
2004
  "id"
2013
2005
  ],
@@ -2046,6 +2038,17 @@ var COMMAND_BINDINGS = {
2046
2038
  "responseKind": "single",
2047
2039
  "async": false
2048
2040
  },
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
+ },
2049
2052
  "computer get": {
2050
2053
  "command": "computer get",
2051
2054
  "method": "GET",
@@ -2080,28 +2083,6 @@ var COMMAND_BINDINGS = {
2080
2083
  "responseKind": "single",
2081
2084
  "async": false
2082
2085
  },
2083
- "computer link": {
2084
- "command": "computer link",
2085
- "method": "POST",
2086
- "path": "/computers/:id/workspace-links",
2087
- "pathParams": [
2088
- "id"
2089
- ],
2090
- "argLocation": "body",
2091
- "responseKind": "created",
2092
- "async": false
2093
- },
2094
- "computer links": {
2095
- "command": "computer links",
2096
- "method": "GET",
2097
- "path": "/computers/:id/workspace-links",
2098
- "pathParams": [
2099
- "id"
2100
- ],
2101
- "argLocation": "query",
2102
- "responseKind": "single",
2103
- "async": false
2104
- },
2105
2086
  "computer list": {
2106
2087
  "command": "computer list",
2107
2088
  "method": "GET",
@@ -2164,6 +2145,18 @@ var COMMAND_BINDINGS = {
2164
2145
  "responseKind": "single",
2165
2146
  "async": false
2166
2147
  },
2148
+ "computer remove-exposure": {
2149
+ "command": "computer remove-exposure",
2150
+ "method": "DELETE",
2151
+ "path": "/computers/:id/expose/:workspace_id",
2152
+ "pathParams": [
2153
+ "id",
2154
+ "workspace_id"
2155
+ ],
2156
+ "argLocation": "body",
2157
+ "responseKind": "single",
2158
+ "async": false
2159
+ },
2167
2160
  "computer remove-local-model": {
2168
2161
  "command": "computer remove-local-model",
2169
2162
  "method": "DELETE",
@@ -2176,6 +2169,15 @@ var COMMAND_BINDINGS = {
2176
2169
  "responseKind": "single",
2177
2170
  "async": false
2178
2171
  },
2172
+ "computer run": {
2173
+ "command": "computer run",
2174
+ "method": "POST",
2175
+ "path": "/computers/run",
2176
+ "pathParams": [],
2177
+ "argLocation": "body",
2178
+ "responseKind": "single",
2179
+ "async": true
2180
+ },
2179
2181
  "computer set-ports": {
2180
2182
  "command": "computer set-ports",
2181
2183
  "method": "PATCH",
@@ -2199,10 +2201,10 @@ var COMMAND_BINDINGS = {
2199
2201
  "responseKind": "created",
2200
2202
  "async": false
2201
2203
  },
2202
- "computer sftp": {
2203
- "command": "computer sftp",
2204
+ "computer start": {
2205
+ "command": "computer start",
2204
2206
  "method": "POST",
2205
- "path": "/computers/:id/sftp",
2207
+ "path": "/computers/:id/start",
2206
2208
  "pathParams": [
2207
2209
  "id"
2208
2210
  ],
@@ -2210,10 +2212,10 @@ var COMMAND_BINDINGS = {
2210
2212
  "responseKind": "single",
2211
2213
  "async": false
2212
2214
  },
2213
- "computer start": {
2214
- "command": "computer start",
2215
+ "computer stop": {
2216
+ "command": "computer stop",
2215
2217
  "method": "POST",
2216
- "path": "/computers/:id/start",
2218
+ "path": "/computers/:id/stop",
2217
2219
  "pathParams": [
2218
2220
  "id"
2219
2221
  ],
@@ -2221,10 +2223,10 @@ var COMMAND_BINDINGS = {
2221
2223
  "responseKind": "single",
2222
2224
  "async": false
2223
2225
  },
2224
- "computer stop": {
2225
- "command": "computer stop",
2226
+ "computer terminal": {
2227
+ "command": "computer terminal",
2226
2228
  "method": "POST",
2227
- "path": "/computers/:id/stop",
2229
+ "path": "/computers/:id/terminal",
2228
2230
  "pathParams": [
2229
2231
  "id"
2230
2232
  ],
@@ -2243,10 +2245,10 @@ var COMMAND_BINDINGS = {
2243
2245
  "responseKind": "single",
2244
2246
  "async": false
2245
2247
  },
2246
- "computer tmux": {
2247
- "command": "computer tmux",
2248
+ "computer transfer": {
2249
+ "command": "computer transfer",
2248
2250
  "method": "POST",
2249
- "path": "/computers/:id/tmux",
2251
+ "path": "/computers/:id/transfer",
2250
2252
  "pathParams": [
2251
2253
  "id"
2252
2254
  ],
@@ -2287,24 +2289,24 @@ var COMMAND_BINDINGS = {
2287
2289
  "responseKind": "single",
2288
2290
  "async": false
2289
2291
  },
2290
- "computer unlink": {
2291
- "command": "computer unlink",
2292
- "method": "DELETE",
2293
- "path": "/computers/:id/workspace-links/:workspace_id",
2292
+ "computer update": {
2293
+ "command": "computer update",
2294
+ "method": "PATCH",
2295
+ "path": "/computers/:id",
2294
2296
  "pathParams": [
2295
- "id",
2296
- "workspace_id"
2297
+ "id"
2297
2298
  ],
2298
2299
  "argLocation": "body",
2299
2300
  "responseKind": "single",
2300
2301
  "async": false
2301
2302
  },
2302
- "computer update": {
2303
- "command": "computer update",
2303
+ "computer update-exposure": {
2304
+ "command": "computer update-exposure",
2304
2305
  "method": "PATCH",
2305
- "path": "/computers/:id",
2306
+ "path": "/computers/:id/expose/:workspace_id",
2306
2307
  "pathParams": [
2307
- "id"
2308
+ "id",
2309
+ "workspace_id"
2308
2310
  ],
2309
2311
  "argLocation": "body",
2310
2312
  "responseKind": "single",
@@ -2325,7 +2327,7 @@ var COMMAND_BINDINGS = {
2325
2327
  "computer upload": {
2326
2328
  "command": "computer upload",
2327
2329
  "method": "POST",
2328
- "path": "/computers/:id/sftp/upload",
2330
+ "path": "/computers/:id/fs/upload",
2329
2331
  "pathParams": [
2330
2332
  "id"
2331
2333
  ],
@@ -2404,80 +2406,52 @@ var COMMAND_BINDINGS = {
2404
2406
  "responseKind": "list",
2405
2407
  "async": false
2406
2408
  },
2407
- "datastore batch": {
2408
- "command": "datastore batch",
2409
+ "custom-models create": {
2410
+ "command": "custom-models create",
2409
2411
  "method": "POST",
2410
- "path": "/datastore/:namespace",
2411
- "pathParams": [
2412
- "namespace"
2413
- ],
2412
+ "path": "/custom-models",
2413
+ "pathParams": [],
2414
2414
  "argLocation": "body",
2415
- "responseKind": "single",
2415
+ "responseKind": "created",
2416
2416
  "async": false
2417
2417
  },
2418
- "datastore delete": {
2419
- "command": "datastore delete",
2418
+ "custom-models delete": {
2419
+ "command": "custom-models delete",
2420
2420
  "method": "DELETE",
2421
- "path": "/datastore/:namespace/:key",
2421
+ "path": "/custom-models/:id",
2422
2422
  "pathParams": [
2423
- "namespace",
2424
- "key"
2423
+ "id"
2425
2424
  ],
2426
2425
  "argLocation": "body",
2427
2426
  "responseKind": "deleted",
2428
2427
  "async": false
2429
2428
  },
2430
- "datastore get": {
2431
- "command": "datastore get",
2429
+ "custom-models get": {
2430
+ "command": "custom-models get",
2432
2431
  "method": "GET",
2433
- "path": "/datastore/:namespace/:key",
2432
+ "path": "/custom-models/:id",
2434
2433
  "pathParams": [
2435
- "namespace",
2436
- "key"
2434
+ "id"
2437
2435
  ],
2438
2436
  "argLocation": "query",
2439
2437
  "responseKind": "single",
2440
2438
  "async": false
2441
2439
  },
2442
- "datastore increment": {
2443
- "command": "datastore increment",
2444
- "method": "POST",
2445
- "path": "/datastore/:namespace/:key/increment",
2446
- "pathParams": [
2447
- "namespace",
2448
- "key"
2449
- ],
2450
- "argLocation": "body",
2451
- "responseKind": "single",
2452
- "async": false
2453
- },
2454
- "datastore list": {
2455
- "command": "datastore list",
2456
- "method": "GET",
2457
- "path": "/datastore/:namespace",
2458
- "pathParams": [
2459
- "namespace"
2460
- ],
2461
- "argLocation": "query",
2462
- "responseKind": "list",
2463
- "async": false
2464
- },
2465
- "datastore namespaces": {
2466
- "command": "datastore namespaces",
2440
+ "custom-models list": {
2441
+ "command": "custom-models list",
2467
2442
  "method": "GET",
2468
- "path": "/datastore",
2443
+ "path": "/custom-models",
2469
2444
  "pathParams": [],
2470
2445
  "argLocation": "query",
2471
2446
  "responseKind": "list",
2472
2447
  "async": false
2473
2448
  },
2474
- "datastore set": {
2475
- "command": "datastore set",
2476
- "method": "POST",
2477
- "path": "/datastore/:namespace/:key",
2449
+ "custom-models update": {
2450
+ "command": "custom-models update",
2451
+ "method": "PATCH",
2452
+ "path": "/custom-models/:id",
2478
2453
  "pathParams": [
2479
- "namespace",
2480
- "key"
2454
+ "id"
2481
2455
  ],
2482
2456
  "argLocation": "body",
2483
2457
  "responseKind": "single",
@@ -2610,17 +2584,6 @@ var COMMAND_BINDINGS = {
2610
2584
  "responseKind": "single",
2611
2585
  "async": false
2612
2586
  },
2613
- "drive run": {
2614
- "command": "drive run",
2615
- "method": "POST",
2616
- "path": "/drive/files/:id/run",
2617
- "pathParams": [
2618
- "id"
2619
- ],
2620
- "argLocation": "body",
2621
- "responseKind": "created",
2622
- "async": true
2623
- },
2624
2587
  "drive update": {
2625
2588
  "command": "drive update",
2626
2589
  "method": "PATCH",
@@ -2641,141 +2604,6 @@ var COMMAND_BINDINGS = {
2641
2604
  "responseKind": "created",
2642
2605
  "async": false
2643
2606
  },
2644
- "functions create": {
2645
- "command": "functions create",
2646
- "method": "POST",
2647
- "path": "/functions",
2648
- "pathParams": [],
2649
- "argLocation": "body",
2650
- "responseKind": "created",
2651
- "async": false
2652
- },
2653
- "functions delete": {
2654
- "command": "functions delete",
2655
- "method": "DELETE",
2656
- "path": "/functions/:id",
2657
- "pathParams": [
2658
- "id"
2659
- ],
2660
- "argLocation": "query",
2661
- "responseKind": "deleted",
2662
- "async": false
2663
- },
2664
- "functions deploy": {
2665
- "command": "functions deploy",
2666
- "method": "POST",
2667
- "path": "/functions/:id/deploy",
2668
- "pathParams": [
2669
- "id"
2670
- ],
2671
- "argLocation": "body",
2672
- "responseKind": "created",
2673
- "async": false
2674
- },
2675
- "functions deployments": {
2676
- "command": "functions deployments",
2677
- "method": "GET",
2678
- "path": "/functions/:id/deployments",
2679
- "pathParams": [
2680
- "id"
2681
- ],
2682
- "argLocation": "query",
2683
- "responseKind": "list",
2684
- "async": false
2685
- },
2686
- "functions get": {
2687
- "command": "functions get",
2688
- "method": "GET",
2689
- "path": "/functions/:id",
2690
- "pathParams": [
2691
- "id"
2692
- ],
2693
- "argLocation": "query",
2694
- "responseKind": "single",
2695
- "async": false
2696
- },
2697
- "functions invoke": {
2698
- "command": "functions invoke",
2699
- "method": "POST",
2700
- "path": "/functions/:id/invoke",
2701
- "pathParams": [
2702
- "id"
2703
- ],
2704
- "argLocation": "body",
2705
- "responseKind": "single",
2706
- "async": false
2707
- },
2708
- "functions list": {
2709
- "command": "functions list",
2710
- "method": "GET",
2711
- "path": "/functions",
2712
- "pathParams": [],
2713
- "argLocation": "query",
2714
- "responseKind": "list",
2715
- "async": false
2716
- },
2717
- "functions promote": {
2718
- "command": "functions promote",
2719
- "method": "POST",
2720
- "path": "/functions/:id/promote",
2721
- "pathParams": [
2722
- "id"
2723
- ],
2724
- "argLocation": "body",
2725
- "responseKind": "single",
2726
- "async": false
2727
- },
2728
- "functions run": {
2729
- "command": "functions run",
2730
- "method": "POST",
2731
- "path": "/functions/runs",
2732
- "pathParams": [],
2733
- "argLocation": "body",
2734
- "responseKind": "created",
2735
- "async": true
2736
- },
2737
- "functions run-get": {
2738
- "command": "functions run-get",
2739
- "method": "GET",
2740
- "path": "/functions/runs/:id",
2741
- "pathParams": [
2742
- "id"
2743
- ],
2744
- "argLocation": "query",
2745
- "responseKind": "single",
2746
- "async": false
2747
- },
2748
- "functions run-interrupt": {
2749
- "command": "functions run-interrupt",
2750
- "method": "POST",
2751
- "path": "/functions/runs/:id/interrupt",
2752
- "pathParams": [
2753
- "id"
2754
- ],
2755
- "argLocation": "body",
2756
- "responseKind": "single",
2757
- "async": false
2758
- },
2759
- "functions run-list": {
2760
- "command": "functions run-list",
2761
- "method": "GET",
2762
- "path": "/functions/runs",
2763
- "pathParams": [],
2764
- "argLocation": "query",
2765
- "responseKind": "list",
2766
- "async": false
2767
- },
2768
- "functions update": {
2769
- "command": "functions update",
2770
- "method": "PATCH",
2771
- "path": "/functions/:id",
2772
- "pathParams": [
2773
- "id"
2774
- ],
2775
- "argLocation": "body",
2776
- "responseKind": "single",
2777
- "async": false
2778
- },
2779
2607
  "guide get": {
2780
2608
  "command": "guide get",
2781
2609
  "method": "GET",
@@ -2878,92 +2706,112 @@ var COMMAND_BINDINGS = {
2878
2706
  "responseKind": "single",
2879
2707
  "async": false
2880
2708
  },
2881
- "hub install": {
2882
- "command": "hub install",
2883
- "method": "POST",
2884
- "path": "/hub/:resourceId/install",
2885
- "pathParams": [
2886
- "resourceId"
2887
- ],
2888
- "argLocation": "body",
2889
- "responseKind": "created",
2890
- "async": false
2891
- },
2892
- "hub search": {
2893
- "command": "hub search",
2709
+ "image models": {
2710
+ "command": "image models",
2894
2711
  "method": "GET",
2895
- "path": "/hub/search",
2712
+ "path": "/images/models",
2896
2713
  "pathParams": [],
2897
2714
  "argLocation": "query",
2898
2715
  "responseKind": "list",
2899
2716
  "async": false
2900
2717
  },
2901
- "hub submissions": {
2902
- "command": "hub submissions",
2718
+ "image search": {
2719
+ "command": "image search",
2903
2720
  "method": "GET",
2904
- "path": "/hub/submissions/mine",
2721
+ "path": "/images/models/search",
2905
2722
  "pathParams": [],
2906
2723
  "argLocation": "query",
2907
- "responseKind": "list",
2724
+ "responseKind": "single",
2908
2725
  "async": false
2909
2726
  },
2910
- "hub submit": {
2911
- "command": "hub submit",
2727
+ "inference image": {
2728
+ "command": "inference image",
2912
2729
  "method": "POST",
2913
- "path": "/hub/submissions",
2730
+ "path": "/inference/images",
2914
2731
  "pathParams": [],
2915
2732
  "argLocation": "body",
2916
- "responseKind": "created",
2917
- "async": false
2733
+ "responseKind": "single",
2734
+ "async": true,
2735
+ "pollHint": {
2736
+ "intervalMs": 1e3,
2737
+ "maxAttempts": 120
2738
+ }
2918
2739
  },
2919
- "hub update": {
2920
- "command": "hub update",
2740
+ "inference speech": {
2741
+ "command": "inference speech",
2921
2742
  "method": "POST",
2922
- "path": "/hub/:resourceId/update",
2923
- "pathParams": [
2924
- "resourceId"
2925
- ],
2743
+ "path": "/inference/speech",
2744
+ "pathParams": [],
2926
2745
  "argLocation": "body",
2927
2746
  "responseKind": "single",
2928
- "async": false
2747
+ "async": true,
2748
+ "pollHint": {
2749
+ "intervalMs": 1e3,
2750
+ "maxAttempts": 120
2751
+ }
2929
2752
  },
2930
- "hub update-check": {
2931
- "command": "hub update-check",
2753
+ "inference speech-stream": {
2754
+ "command": "inference speech-stream",
2932
2755
  "method": "POST",
2933
- "path": "/hub/:resourceId/update-check",
2934
- "pathParams": [
2935
- "resourceId"
2936
- ],
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": [],
2937
2770
  "argLocation": "body",
2938
2771
  "responseKind": "single",
2939
- "async": false
2772
+ "async": true,
2773
+ "pollHint": {
2774
+ "intervalMs": 1e3,
2775
+ "maxAttempts": 120
2776
+ }
2940
2777
  },
2941
- "image generate": {
2942
- "command": "image generate",
2778
+ "inference text-stream": {
2779
+ "command": "inference text-stream",
2943
2780
  "method": "POST",
2944
- "path": "/images/generations",
2781
+ "path": "/inference/text/stream",
2945
2782
  "pathParams": [],
2946
2783
  "argLocation": "body",
2947
- "responseKind": "created",
2948
- "async": true
2784
+ "responseKind": "binary",
2785
+ "async": false,
2786
+ "binaryContentTypes": [
2787
+ "text/event-stream"
2788
+ ]
2949
2789
  },
2950
- "image models": {
2951
- "command": "image models",
2952
- "method": "GET",
2953
- "path": "/images/models",
2790
+ "inference transcribe": {
2791
+ "command": "inference transcribe",
2792
+ "method": "POST",
2793
+ "path": "/inference/transcriptions",
2954
2794
  "pathParams": [],
2955
- "argLocation": "query",
2956
- "responseKind": "list",
2957
- "async": false
2795
+ "argLocation": "multipart",
2796
+ "responseKind": "single",
2797
+ "async": true,
2798
+ "pollHint": {
2799
+ "intervalMs": 1e3,
2800
+ "maxAttempts": 120
2801
+ }
2958
2802
  },
2959
- "image search": {
2960
- "command": "image search",
2961
- "method": "GET",
2962
- "path": "/images/models/search",
2803
+ "inference video": {
2804
+ "command": "inference video",
2805
+ "method": "POST",
2806
+ "path": "/inference/videos",
2963
2807
  "pathParams": [],
2964
- "argLocation": "query",
2808
+ "argLocation": "body",
2965
2809
  "responseKind": "single",
2966
- "async": false
2810
+ "async": true,
2811
+ "pollHint": {
2812
+ "intervalMs": 5e3,
2813
+ "maxAttempts": 240
2814
+ }
2967
2815
  },
2968
2816
  "me get": {
2969
2817
  "command": "me get",
@@ -3532,6 +3380,17 @@ var COMMAND_BINDINGS = {
3532
3380
  "responseKind": "list",
3533
3381
  "async": false
3534
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
+ },
3535
3394
  "operation cancel": {
3536
3395
  "command": "operation cancel",
3537
3396
  "method": "POST",
@@ -3543,6 +3402,21 @@ var COMMAND_BINDINGS = {
3543
3402
  "responseKind": "single",
3544
3403
  "async": false
3545
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
+ },
3546
3420
  "operation get": {
3547
3421
  "command": "operation get",
3548
3422
  "method": "GET",
@@ -3668,112 +3542,6 @@ var COMMAND_BINDINGS = {
3668
3542
  "text/event-stream"
3669
3543
  ]
3670
3544
  },
3671
- "repos branches": {
3672
- "command": "repos branches",
3673
- "method": "GET",
3674
- "path": "/repos/:id/branches",
3675
- "pathParams": [
3676
- "id"
3677
- ],
3678
- "argLocation": "query",
3679
- "responseKind": "list",
3680
- "async": false
3681
- },
3682
- "repos clone-url": {
3683
- "command": "repos clone-url",
3684
- "method": "GET",
3685
- "path": "/repos/:id/clone-url",
3686
- "pathParams": [
3687
- "id"
3688
- ],
3689
- "argLocation": "query",
3690
- "responseKind": "single",
3691
- "async": false
3692
- },
3693
- "repos commit": {
3694
- "command": "repos commit",
3695
- "method": "POST",
3696
- "path": "/repos/:id/commits",
3697
- "pathParams": [
3698
- "id"
3699
- ],
3700
- "argLocation": "body",
3701
- "responseKind": "single",
3702
- "async": false
3703
- },
3704
- "repos commits": {
3705
- "command": "repos commits",
3706
- "method": "GET",
3707
- "path": "/repos/:id/commits",
3708
- "pathParams": [
3709
- "id"
3710
- ],
3711
- "argLocation": "query",
3712
- "responseKind": "list",
3713
- "async": false
3714
- },
3715
- "repos create": {
3716
- "command": "repos create",
3717
- "method": "POST",
3718
- "path": "/repos",
3719
- "pathParams": [],
3720
- "argLocation": "body",
3721
- "responseKind": "created",
3722
- "async": false
3723
- },
3724
- "repos delete": {
3725
- "command": "repos delete",
3726
- "method": "DELETE",
3727
- "path": "/repos/:id",
3728
- "pathParams": [
3729
- "id"
3730
- ],
3731
- "argLocation": "body",
3732
- "responseKind": "deleted",
3733
- "async": false
3734
- },
3735
- "repos get": {
3736
- "command": "repos get",
3737
- "method": "GET",
3738
- "path": "/repos/:id",
3739
- "pathParams": [
3740
- "id"
3741
- ],
3742
- "argLocation": "query",
3743
- "responseKind": "single",
3744
- "async": false
3745
- },
3746
- "repos list": {
3747
- "command": "repos list",
3748
- "method": "GET",
3749
- "path": "/repos",
3750
- "pathParams": [],
3751
- "argLocation": "query",
3752
- "responseKind": "list",
3753
- "async": false
3754
- },
3755
- "repos read-file": {
3756
- "command": "repos read-file",
3757
- "method": "GET",
3758
- "path": "/repos/:id/file",
3759
- "pathParams": [
3760
- "id"
3761
- ],
3762
- "argLocation": "query",
3763
- "responseKind": "single",
3764
- "async": false
3765
- },
3766
- "repos set-visibility": {
3767
- "command": "repos set-visibility",
3768
- "method": "PATCH",
3769
- "path": "/repos/:id/visibility",
3770
- "pathParams": [
3771
- "id"
3772
- ],
3773
- "argLocation": "body",
3774
- "responseKind": "single",
3775
- "async": false
3776
- },
3777
3545
  "search query": {
3778
3546
  "command": "search query",
3779
3547
  "method": "GET",
@@ -3908,21 +3676,30 @@ var COMMAND_BINDINGS = {
3908
3676
  "responseKind": "list",
3909
3677
  "async": false
3910
3678
  },
3911
- "skill apply-update": {
3912
- "command": "skill apply-update",
3913
- "method": "POST",
3914
- "path": "/skills/:id/apply-update",
3679
+ "subscription get": {
3680
+ "command": "subscription get",
3681
+ "method": "GET",
3682
+ "path": "/subscription",
3683
+ "pathParams": [],
3684
+ "argLocation": "query",
3685
+ "responseKind": "single",
3686
+ "async": false
3687
+ },
3688
+ "tasks ancestors": {
3689
+ "command": "tasks ancestors",
3690
+ "method": "GET",
3691
+ "path": "/tasks/tasks/:id/ancestors",
3915
3692
  "pathParams": [
3916
3693
  "id"
3917
3694
  ],
3918
- "argLocation": "body",
3919
- "responseKind": "single",
3695
+ "argLocation": "query",
3696
+ "responseKind": "list",
3920
3697
  "async": false
3921
3698
  },
3922
- "skill attach": {
3923
- "command": "skill attach",
3699
+ "tasks assign": {
3700
+ "command": "tasks assign",
3924
3701
  "method": "POST",
3925
- "path": "/skills/:id/attach",
3702
+ "path": "/tasks/tasks/:id/assign",
3926
3703
  "pathParams": [
3927
3704
  "id"
3928
3705
  ],
@@ -3930,85 +3707,78 @@ var COMMAND_BINDINGS = {
3930
3707
  "responseKind": "single",
3931
3708
  "async": false
3932
3709
  },
3933
- "skill body": {
3934
- "command": "skill body",
3935
- "method": "GET",
3936
- "path": "/skills/:id/body",
3710
+ "tasks comment": {
3711
+ "command": "tasks comment",
3712
+ "method": "POST",
3713
+ "path": "/tasks/tasks/:id/comments",
3937
3714
  "pathParams": [
3938
3715
  "id"
3939
3716
  ],
3940
- "argLocation": "query",
3941
- "responseKind": "single",
3942
- "async": false
3943
- },
3944
- "skill create": {
3945
- "command": "skill create",
3946
- "method": "POST",
3947
- "path": "/skills",
3948
- "pathParams": [],
3949
3717
  "argLocation": "body",
3950
3718
  "responseKind": "created",
3951
3719
  "async": false
3952
3720
  },
3953
- "skill delete": {
3954
- "command": "skill delete",
3721
+ "tasks comment-delete": {
3722
+ "command": "tasks comment-delete",
3955
3723
  "method": "DELETE",
3956
- "path": "/skills/:id",
3724
+ "path": "/tasks/tasks/:id/comments/:commentId",
3957
3725
  "pathParams": [
3958
- "id"
3726
+ "id",
3727
+ "commentId"
3959
3728
  ],
3960
3729
  "argLocation": "body",
3961
3730
  "responseKind": "deleted",
3962
3731
  "async": false
3963
3732
  },
3964
- "skill detach": {
3965
- "command": "skill detach",
3966
- "method": "DELETE",
3967
- "path": "/skills/:id/attach",
3733
+ "tasks comment-list": {
3734
+ "command": "tasks comment-list",
3735
+ "method": "GET",
3736
+ "path": "/tasks/tasks/:id/comments",
3968
3737
  "pathParams": [
3969
3738
  "id"
3970
3739
  ],
3971
3740
  "argLocation": "query",
3972
- "responseKind": "deleted",
3741
+ "responseKind": "list",
3973
3742
  "async": false
3974
3743
  },
3975
- "skill file-delete": {
3976
- "command": "skill file-delete",
3977
- "method": "DELETE",
3978
- "path": "/skills/:id/file",
3744
+ "tasks comment-update": {
3745
+ "command": "tasks comment-update",
3746
+ "method": "PATCH",
3747
+ "path": "/tasks/tasks/:id/comments/:commentId",
3979
3748
  "pathParams": [
3980
- "id"
3749
+ "id",
3750
+ "commentId"
3981
3751
  ],
3982
- "argLocation": "query",
3983
- "responseKind": "deleted",
3752
+ "argLocation": "body",
3753
+ "responseKind": "single",
3984
3754
  "async": false
3985
3755
  },
3986
- "skill file-list": {
3987
- "command": "skill file-list",
3988
- "method": "GET",
3989
- "path": "/skills/:id/files",
3756
+ "tasks create": {
3757
+ "command": "tasks create",
3758
+ "method": "POST",
3759
+ "path": "/tasks/lists/:id/tasks",
3990
3760
  "pathParams": [
3991
3761
  "id"
3992
3762
  ],
3993
- "argLocation": "query",
3994
- "responseKind": "list",
3763
+ "argLocation": "body",
3764
+ "responseKind": "created",
3995
3765
  "async": false
3996
3766
  },
3997
- "skill file-read": {
3998
- "command": "skill file-read",
3999
- "method": "GET",
4000
- "path": "/skills/:id/file",
3767
+ "tasks delete": {
3768
+ "command": "tasks delete",
3769
+ "method": "DELETE",
3770
+ "path": "/tasks/tasks/:id",
4001
3771
  "pathParams": [
4002
3772
  "id"
4003
3773
  ],
4004
- "argLocation": "query",
4005
- "responseKind": "single",
3774
+ "argLocation": "body",
3775
+ "responseKind": "deleted",
4006
3776
  "async": false
4007
3777
  },
4008
- "skill file-write": {
4009
- "command": "skill file-write",
3778
+ "tasks depend": {
3779
+ "command": "tasks depend",
4010
3780
  "method": "POST",
4011
- "path": "/skills/:id/files",
3781
+ "path": "/tasks/tasks/:id/dependencies",
4012
3782
  "pathParams": [
4013
3783
  "id"
4014
3784
  ],
@@ -4016,359 +3786,25 @@ var COMMAND_BINDINGS = {
4016
3786
  "responseKind": "single",
4017
3787
  "async": false
4018
3788
  },
4019
- "skill fork": {
4020
- "command": "skill fork",
4021
- "method": "POST",
4022
- "path": "/skills/:id/fork",
3789
+ "tasks dependencies": {
3790
+ "command": "tasks dependencies",
3791
+ "method": "GET",
3792
+ "path": "/tasks/tasks/:id/dependencies",
4023
3793
  "pathParams": [
4024
3794
  "id"
4025
3795
  ],
4026
- "argLocation": "body",
4027
- "responseKind": "created",
3796
+ "argLocation": "query",
3797
+ "responseKind": "single",
4028
3798
  "async": false
4029
3799
  },
4030
- "skill get": {
4031
- "command": "skill get",
4032
- "method": "GET",
4033
- "path": "/skills/:id",
3800
+ "tasks duplicate": {
3801
+ "command": "tasks duplicate",
3802
+ "method": "POST",
3803
+ "path": "/tasks/tasks/:id/duplicate",
4034
3804
  "pathParams": [
4035
3805
  "id"
4036
3806
  ],
4037
- "argLocation": "query",
4038
- "responseKind": "single",
4039
- "async": false
4040
- },
4041
- "skill install": {
4042
- "command": "skill install",
4043
- "method": "POST",
4044
- "path": "/skills/install",
4045
- "pathParams": [],
4046
- "argLocation": "body",
4047
- "responseKind": "created",
4048
- "async": false
4049
- },
4050
- "skill list": {
4051
- "command": "skill list",
4052
- "method": "GET",
4053
- "path": "/skills",
4054
- "pathParams": [],
4055
- "argLocation": "query",
4056
- "responseKind": "list",
4057
- "async": false
4058
- },
4059
- "skill publish": {
4060
- "command": "skill publish",
4061
- "method": "POST",
4062
- "path": "/skills/:id/publish",
4063
- "pathParams": [
4064
- "id"
4065
- ],
4066
- "argLocation": "body",
4067
- "responseKind": "single",
4068
- "async": false
4069
- },
4070
- "skill render": {
4071
- "command": "skill render",
4072
- "method": "POST",
4073
- "path": "/skills/:id/render",
4074
- "pathParams": [
4075
- "id"
4076
- ],
4077
- "argLocation": "body",
4078
- "responseKind": "single",
4079
- "async": false
4080
- },
4081
- "skill search": {
4082
- "command": "skill search",
4083
- "method": "GET",
4084
- "path": "/skills/search",
4085
- "pathParams": [],
4086
- "argLocation": "query",
4087
- "responseKind": "list",
4088
- "async": false
4089
- },
4090
- "skill update": {
4091
- "command": "skill update",
4092
- "method": "PATCH",
4093
- "path": "/skills/:id",
4094
- "pathParams": [
4095
- "id"
4096
- ],
4097
- "argLocation": "body",
4098
- "responseKind": "single",
4099
- "async": false
4100
- },
4101
- "skill update-check": {
4102
- "command": "skill update-check",
4103
- "method": "GET",
4104
- "path": "/skills/:id/update-check",
4105
- "pathParams": [
4106
- "id"
4107
- ],
4108
- "argLocation": "query",
4109
- "responseKind": "single",
4110
- "async": false
4111
- },
4112
- "subscription get": {
4113
- "command": "subscription get",
4114
- "method": "GET",
4115
- "path": "/subscription",
4116
- "pathParams": [],
4117
- "argLocation": "query",
4118
- "responseKind": "single",
4119
- "async": false
4120
- },
4121
- "table create": {
4122
- "command": "table create",
4123
- "method": "POST",
4124
- "path": "/tables",
4125
- "pathParams": [],
4126
- "argLocation": "body",
4127
- "responseKind": "created",
4128
- "async": false
4129
- },
4130
- "table create-record": {
4131
- "command": "table create-record",
4132
- "method": "POST",
4133
- "path": "/tables/:id/records",
4134
- "pathParams": [
4135
- "id"
4136
- ],
4137
- "argLocation": "body",
4138
- "responseKind": "created",
4139
- "async": false
4140
- },
4141
- "table delete": {
4142
- "command": "table delete",
4143
- "method": "DELETE",
4144
- "path": "/tables/:id",
4145
- "pathParams": [
4146
- "id"
4147
- ],
4148
- "argLocation": "body",
4149
- "responseKind": "deleted",
4150
- "async": false
4151
- },
4152
- "table delete-record": {
4153
- "command": "table delete-record",
4154
- "method": "DELETE",
4155
- "path": "/tables/:id/records/:recordId",
4156
- "pathParams": [
4157
- "id",
4158
- "recordId"
4159
- ],
4160
- "argLocation": "body",
4161
- "responseKind": "deleted",
4162
- "async": false
4163
- },
4164
- "table export": {
4165
- "command": "table export",
4166
- "method": "GET",
4167
- "path": "/tables/:id/export",
4168
- "pathParams": [
4169
- "id"
4170
- ],
4171
- "argLocation": "query",
4172
- "responseKind": "binary",
4173
- "async": false
4174
- },
4175
- "table get": {
4176
- "command": "table get",
4177
- "method": "GET",
4178
- "path": "/tables/:id",
4179
- "pathParams": [
4180
- "id"
4181
- ],
4182
- "argLocation": "query",
4183
- "responseKind": "single",
4184
- "async": false
4185
- },
4186
- "table get-record": {
4187
- "command": "table get-record",
4188
- "method": "GET",
4189
- "path": "/tables/:id/records/:recordId",
4190
- "pathParams": [
4191
- "id",
4192
- "recordId"
4193
- ],
4194
- "argLocation": "query",
4195
- "responseKind": "single",
4196
- "async": false
4197
- },
4198
- "table import": {
4199
- "command": "table import",
4200
- "method": "POST",
4201
- "path": "/tables/:id/import",
4202
- "pathParams": [
4203
- "id"
4204
- ],
4205
- "argLocation": "body",
4206
- "responseKind": "single",
4207
- "async": false
4208
- },
4209
- "table list": {
4210
- "command": "table list",
4211
- "method": "GET",
4212
- "path": "/tables",
4213
- "pathParams": [],
4214
- "argLocation": "query",
4215
- "responseKind": "list",
4216
- "async": false
4217
- },
4218
- "table query": {
4219
- "command": "table query",
4220
- "method": "POST",
4221
- "path": "/tables/:id/query",
4222
- "pathParams": [
4223
- "id"
4224
- ],
4225
- "argLocation": "body",
4226
- "responseKind": "list",
4227
- "async": false
4228
- },
4229
- "table update": {
4230
- "command": "table update",
4231
- "method": "PATCH",
4232
- "path": "/tables/:id",
4233
- "pathParams": [
4234
- "id"
4235
- ],
4236
- "argLocation": "body",
4237
- "responseKind": "single",
4238
- "async": false
4239
- },
4240
- "table update-record": {
4241
- "command": "table update-record",
4242
- "method": "PATCH",
4243
- "path": "/tables/:id/records/:recordId",
4244
- "pathParams": [
4245
- "id",
4246
- "recordId"
4247
- ],
4248
- "argLocation": "body",
4249
- "responseKind": "single",
4250
- "async": false
4251
- },
4252
- "tasks ancestors": {
4253
- "command": "tasks ancestors",
4254
- "method": "GET",
4255
- "path": "/tasks/tasks/:id/ancestors",
4256
- "pathParams": [
4257
- "id"
4258
- ],
4259
- "argLocation": "query",
4260
- "responseKind": "list",
4261
- "async": false
4262
- },
4263
- "tasks assign": {
4264
- "command": "tasks assign",
4265
- "method": "POST",
4266
- "path": "/tasks/tasks/:id/assign",
4267
- "pathParams": [
4268
- "id"
4269
- ],
4270
- "argLocation": "body",
4271
- "responseKind": "single",
4272
- "async": false
4273
- },
4274
- "tasks comment": {
4275
- "command": "tasks comment",
4276
- "method": "POST",
4277
- "path": "/tasks/tasks/:id/comments",
4278
- "pathParams": [
4279
- "id"
4280
- ],
4281
- "argLocation": "body",
4282
- "responseKind": "created",
4283
- "async": false
4284
- },
4285
- "tasks comment-delete": {
4286
- "command": "tasks comment-delete",
4287
- "method": "DELETE",
4288
- "path": "/tasks/tasks/:id/comments/:commentId",
4289
- "pathParams": [
4290
- "id",
4291
- "commentId"
4292
- ],
4293
- "argLocation": "body",
4294
- "responseKind": "deleted",
4295
- "async": false
4296
- },
4297
- "tasks comment-list": {
4298
- "command": "tasks comment-list",
4299
- "method": "GET",
4300
- "path": "/tasks/tasks/:id/comments",
4301
- "pathParams": [
4302
- "id"
4303
- ],
4304
- "argLocation": "query",
4305
- "responseKind": "list",
4306
- "async": false
4307
- },
4308
- "tasks comment-update": {
4309
- "command": "tasks comment-update",
4310
- "method": "PATCH",
4311
- "path": "/tasks/tasks/:id/comments/:commentId",
4312
- "pathParams": [
4313
- "id",
4314
- "commentId"
4315
- ],
4316
- "argLocation": "body",
4317
- "responseKind": "single",
4318
- "async": false
4319
- },
4320
- "tasks create": {
4321
- "command": "tasks create",
4322
- "method": "POST",
4323
- "path": "/tasks/lists/:id/tasks",
4324
- "pathParams": [
4325
- "id"
4326
- ],
4327
- "argLocation": "body",
4328
- "responseKind": "created",
4329
- "async": false
4330
- },
4331
- "tasks delete": {
4332
- "command": "tasks delete",
4333
- "method": "DELETE",
4334
- "path": "/tasks/tasks/:id",
4335
- "pathParams": [
4336
- "id"
4337
- ],
4338
- "argLocation": "body",
4339
- "responseKind": "deleted",
4340
- "async": false
4341
- },
4342
- "tasks depend": {
4343
- "command": "tasks depend",
4344
- "method": "POST",
4345
- "path": "/tasks/tasks/:id/dependencies",
4346
- "pathParams": [
4347
- "id"
4348
- ],
4349
- "argLocation": "body",
4350
- "responseKind": "single",
4351
- "async": false
4352
- },
4353
- "tasks dependencies": {
4354
- "command": "tasks dependencies",
4355
- "method": "GET",
4356
- "path": "/tasks/tasks/:id/dependencies",
4357
- "pathParams": [
4358
- "id"
4359
- ],
4360
- "argLocation": "query",
4361
- "responseKind": "single",
4362
- "async": false
4363
- },
4364
- "tasks duplicate": {
4365
- "command": "tasks duplicate",
4366
- "method": "POST",
4367
- "path": "/tasks/tasks/:id/duplicate",
4368
- "pathParams": [
4369
- "id"
4370
- ],
4371
- "argLocation": "body",
3807
+ "argLocation": "body",
4372
3808
  "responseKind": "single",
4373
3809
  "async": false
4374
3810
  },
@@ -4546,156 +3982,6 @@ var COMMAND_BINDINGS = {
4546
3982
  "responseKind": "single",
4547
3983
  "async": false
4548
3984
  },
4549
- "trigger archive": {
4550
- "command": "trigger archive",
4551
- "method": "POST",
4552
- "path": "/triggers/:id/archive",
4553
- "pathParams": [
4554
- "id"
4555
- ],
4556
- "argLocation": "body",
4557
- "responseKind": "single",
4558
- "async": false
4559
- },
4560
- "trigger cost-stats": {
4561
- "command": "trigger cost-stats",
4562
- "method": "GET",
4563
- "path": "/triggers/:id/cost-stats",
4564
- "pathParams": [
4565
- "id"
4566
- ],
4567
- "argLocation": "query",
4568
- "responseKind": "single",
4569
- "async": false
4570
- },
4571
- "trigger cost-stats-all": {
4572
- "command": "trigger cost-stats-all",
4573
- "method": "GET",
4574
- "path": "/triggers/cost-stats",
4575
- "pathParams": [],
4576
- "argLocation": "query",
4577
- "responseKind": "single",
4578
- "async": false
4579
- },
4580
- "trigger create": {
4581
- "command": "trigger create",
4582
- "method": "POST",
4583
- "path": "/triggers",
4584
- "pathParams": [],
4585
- "argLocation": "body",
4586
- "responseKind": "created",
4587
- "async": false
4588
- },
4589
- "trigger delete": {
4590
- "command": "trigger delete",
4591
- "method": "DELETE",
4592
- "path": "/triggers/:id",
4593
- "pathParams": [
4594
- "id"
4595
- ],
4596
- "argLocation": "body",
4597
- "responseKind": "deleted",
4598
- "async": false
4599
- },
4600
- "trigger fire": {
4601
- "command": "trigger fire",
4602
- "method": "POST",
4603
- "path": "/triggers/:id/fire",
4604
- "pathParams": [
4605
- "id"
4606
- ],
4607
- "argLocation": "body",
4608
- "responseKind": "created",
4609
- "async": true
4610
- },
4611
- "trigger get": {
4612
- "command": "trigger get",
4613
- "method": "GET",
4614
- "path": "/triggers/:id",
4615
- "pathParams": [
4616
- "id"
4617
- ],
4618
- "argLocation": "query",
4619
- "responseKind": "single",
4620
- "async": false
4621
- },
4622
- "trigger list": {
4623
- "command": "trigger list",
4624
- "method": "GET",
4625
- "path": "/triggers",
4626
- "pathParams": [],
4627
- "argLocation": "query",
4628
- "responseKind": "list",
4629
- "async": false
4630
- },
4631
- "trigger rotate-secret": {
4632
- "command": "trigger rotate-secret",
4633
- "method": "POST",
4634
- "path": "/triggers/:id/rotate-secret",
4635
- "pathParams": [
4636
- "id"
4637
- ],
4638
- "argLocation": "body",
4639
- "responseKind": "single",
4640
- "async": false
4641
- },
4642
- "trigger runs": {
4643
- "command": "trigger runs",
4644
- "method": "GET",
4645
- "path": "/triggers/:id/runs",
4646
- "pathParams": [
4647
- "id"
4648
- ],
4649
- "argLocation": "query",
4650
- "responseKind": "list",
4651
- "async": false
4652
- },
4653
- "trigger test-fire": {
4654
- "command": "trigger test-fire",
4655
- "method": "POST",
4656
- "path": "/triggers/:id/test-fire",
4657
- "pathParams": [
4658
- "id"
4659
- ],
4660
- "argLocation": "body",
4661
- "responseKind": "single",
4662
- "async": true
4663
- },
4664
- "trigger unarchive": {
4665
- "command": "trigger unarchive",
4666
- "method": "POST",
4667
- "path": "/triggers/:id/unarchive",
4668
- "pathParams": [
4669
- "id"
4670
- ],
4671
- "argLocation": "body",
4672
- "responseKind": "single",
4673
- "async": false
4674
- },
4675
- "trigger update": {
4676
- "command": "trigger update",
4677
- "method": "PATCH",
4678
- "path": "/triggers/:id",
4679
- "pathParams": [
4680
- "id"
4681
- ],
4682
- "argLocation": "body",
4683
- "responseKind": "single",
4684
- "async": false
4685
- },
4686
- "video generate": {
4687
- "command": "video generate",
4688
- "method": "POST",
4689
- "path": "/videos/generations",
4690
- "pathParams": [],
4691
- "argLocation": "body",
4692
- "responseKind": "single",
4693
- "async": true,
4694
- "pollHint": {
4695
- "intervalMs": 5e3,
4696
- "maxAttempts": 240
4697
- }
4698
- },
4699
3985
  "video models": {
4700
3986
  "command": "video models",
4701
3987
  "method": "GET",
@@ -5239,7 +4525,7 @@ var ComputersApi = class {
5239
4525
  return res.data;
5240
4526
  }
5241
4527
  // ---------------------------------------------------------------------------
5242
- // Exec & tmux
4528
+ // Exec & terminals
5243
4529
  // ---------------------------------------------------------------------------
5244
4530
  async exec(id, input, opts = {}) {
5245
4531
  const res = await request(this.ctx, {
@@ -5251,56 +4537,57 @@ var ComputersApi = class {
5251
4537
  return res.data;
5252
4538
  }
5253
4539
  /**
5254
- * tmux dispatcher. Each `op` returns a different shape — see the route
5255
- * 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),
5256
4543
  * `op: "capture"` reads its output.
5257
4544
  */
5258
- async tmux(id, input, opts = {}) {
4545
+ async terminal(id, input, opts = {}) {
5259
4546
  const res = await request(
5260
4547
  this.ctx,
5261
4548
  {
5262
4549
  method: "POST",
5263
- path: `/api/v1/computers/${id}/tmux`,
4550
+ path: `/api/v1/computers/${id}/terminal`,
5264
4551
  body: input,
5265
4552
  signal: opts.signal
5266
4553
  }
5267
4554
  );
5268
4555
  return res.data;
5269
4556
  }
5270
- /** Convenience over `tmux({ op: "list" })`. */
5271
- async listTmuxWindows(id, opts = {}) {
5272
- 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);
5273
4560
  return result.windows ?? [];
5274
4561
  }
5275
4562
  // ---------------------------------------------------------------------------
5276
- // SFTP
4563
+ // FS
5277
4564
  // ---------------------------------------------------------------------------
5278
4565
  /**
5279
- * Unified SFTP dispatcher. Returns op-shaped payload. For streaming
5280
- * uploads/downloads use `sftpUpload` / `sftpDownload`.
4566
+ * Unified FS dispatcher. Returns op-shaped payload. For streaming
4567
+ * uploads/downloads use `fsUpload` / `fsDownload`.
5281
4568
  */
5282
- async sftp(id, input, opts = {}) {
4569
+ async fs(id, input, opts = {}) {
5283
4570
  const res = await request(
5284
4571
  this.ctx,
5285
4572
  {
5286
4573
  method: "POST",
5287
- path: `/api/v1/computers/${id}/sftp`,
4574
+ path: `/api/v1/computers/${id}/fs`,
5288
4575
  body: input,
5289
4576
  signal: opts.signal
5290
4577
  }
5291
4578
  );
5292
4579
  return res.data;
5293
4580
  }
5294
- /** Convenience: `sftp({op:"list"})` returning the entries array directly. */
5295
- async sftpList(id, path, opts = {}) {
5296
- 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);
5297
4584
  return result;
5298
4585
  }
5299
4586
  /**
5300
4587
  * Multipart upload of a file/folder member. Falls back to single-file mode
5301
4588
  * when `relative_path` is omitted.
5302
4589
  */
5303
- async sftpUpload(id, input, opts = {}) {
4590
+ async fsUpload(id, input, opts = {}) {
5304
4591
  const form = new FormData();
5305
4592
  form.append("file", input.file);
5306
4593
  form.append("path", input.path);
@@ -5310,7 +4597,7 @@ var ComputersApi = class {
5310
4597
  this.ctx,
5311
4598
  {
5312
4599
  method: "POST",
5313
- path: `/api/v1/computers/${id}/sftp/upload`,
4600
+ path: `/api/v1/computers/${id}/fs/upload`,
5314
4601
  bodyRaw: form,
5315
4602
  signal: opts.signal
5316
4603
  }
@@ -5321,10 +4608,10 @@ var ComputersApi = class {
5321
4608
  * Stream a remote file (or a folder as `tar.gz`) as a `Blob`. The server
5322
4609
  * sends the real MIME type on `Content-Type`.
5323
4610
  */
5324
- async sftpDownload(id, remotePath, opts = {}) {
4611
+ async fsDownload(id, remotePath, opts = {}) {
5325
4612
  return request(this.ctx, {
5326
4613
  method: "GET",
5327
- path: `/api/v1/computers/${id}/sftp/download`,
4614
+ path: `/api/v1/computers/${id}/fs/download`,
5328
4615
  query: { path: remotePath },
5329
4616
  expectBlob: true,
5330
4617
  signal: opts.signal
@@ -5478,65 +4765,91 @@ var ComputersApi = class {
5478
4765
  signal: opts.signal
5479
4766
  }
5480
4767
  );
5481
- return res.data;
4768
+ return res.data;
4769
+ }
4770
+ async checkUserEnvSync(id, username, opts = {}) {
4771
+ const res = await request(
4772
+ this.ctx,
4773
+ {
4774
+ method: "GET",
4775
+ path: `/api/v1/computers/${id}/users/${username}/env/sync`,
4776
+ signal: opts.signal
4777
+ }
4778
+ );
4779
+ return res.data;
4780
+ }
4781
+ // ---------------------------------------------------------------------------
4782
+ // Workspace exposures (expose an actor-owned machine into a workspace) +
4783
+ // ownership transfer
4784
+ // ---------------------------------------------------------------------------
4785
+ /**
4786
+ * Expose an actor-owned machine INTO a workspace (Layer 2) with a
4787
+ * per-capability grant, so that workspace's members can use it. Requires
4788
+ * machine-admin and membership of the target workspace. Rejects a duplicate
4789
+ * exposure. (CLI verb: `computer add-exposure` — the bare `expose`/`unexpose`
4790
+ * verbs are the tunnel port commands.)
4791
+ */
4792
+ async expose(id, input, opts = {}) {
4793
+ const res = await request(
4794
+ this.ctx,
4795
+ {
4796
+ method: "POST",
4797
+ path: `/api/v1/computers/${id}/expose`,
4798
+ body: input,
4799
+ signal: opts.signal
4800
+ }
4801
+ );
4802
+ return res.data.exposure;
4803
+ }
4804
+ /**
4805
+ * Replace the capability grant on an existing exposure. `workspaceId` is the
4806
+ * exposed workspace's `ws_…` resourceId. Requires machine-admin.
4807
+ * (CLI verb: `computer update-exposure`.)
4808
+ */
4809
+ async updateExposure(id, workspaceId, capabilities, opts = {}) {
4810
+ const res = await request(
4811
+ this.ctx,
4812
+ {
4813
+ method: "PATCH",
4814
+ path: `/api/v1/computers/${id}/expose/${workspaceId}`,
4815
+ body: { capabilities },
4816
+ signal: opts.signal
4817
+ }
4818
+ );
4819
+ return res.data.exposure;
5482
4820
  }
5483
- async checkUserEnvSync(id, username, opts = {}) {
4821
+ /**
4822
+ * Stop exposing a machine into a workspace. `workspaceId` is the exposed
4823
+ * workspace's `ws_…` resourceId. Allowed for machine-admin OR an admin of the
4824
+ * exposed workspace. Idempotent. (CLI verb: `computer remove-exposure`.)
4825
+ */
4826
+ async unexpose(id, workspaceId, opts = {}) {
5484
4827
  const res = await request(
5485
4828
  this.ctx,
5486
4829
  {
5487
- method: "GET",
5488
- path: `/api/v1/computers/${id}/users/${username}/env/sync`,
4830
+ method: "DELETE",
4831
+ path: `/api/v1/computers/${id}/expose/${workspaceId}`,
5489
4832
  signal: opts.signal
5490
4833
  }
5491
4834
  );
5492
4835
  return res.data;
5493
4836
  }
5494
- // ---------------------------------------------------------------------------
5495
- // Workspace links (share LOCAL INFERENCE into other workspaces)
5496
- // ---------------------------------------------------------------------------
5497
- /**
5498
- * List the workspaces a computer's LOCAL INFERENCE is shared into. The home
5499
- * workspace is never listed (it already has full access). The route returns
5500
- * the links under a `links` key (not a standard list envelope).
5501
- */
5502
- async listWorkspaceLinks(id, opts = {}) {
5503
- const res = await request(this.ctx, {
5504
- method: "GET",
5505
- path: `/api/v1/computers/${id}/workspace-links`,
5506
- signal: opts.signal
5507
- });
5508
- return res.data.links;
5509
- }
5510
4837
  /**
5511
- * Share a computer's LOCAL INFERENCE into another workspace (never shell /
5512
- * files / tunnels). `workspaceId` is the target workspace's `ws_…`
5513
- * resourceId or slug. Requires EDIT on the computer's home workspace and
5514
- * membership of the target. Rejects the home workspace and duplicates.
4838
+ * Transfer an actor-owned machine to a new owner (self, or an org the caller
4839
+ * administers). `owner` is the target profile's resourceId; existing workspace
4840
+ * exposures are kept. Requires machine-admin. (CLI verb: `computer transfer`.)
5515
4841
  */
5516
- async linkWorkspace(id, workspaceId, opts = {}) {
4842
+ async transfer(id, owner, opts = {}) {
5517
4843
  const res = await request(
5518
4844
  this.ctx,
5519
4845
  {
5520
4846
  method: "POST",
5521
- path: `/api/v1/computers/${id}/workspace-links`,
5522
- body: { workspace_id: workspaceId },
4847
+ path: `/api/v1/computers/${id}/transfer`,
4848
+ body: { owner },
5523
4849
  signal: opts.signal
5524
4850
  }
5525
4851
  );
5526
- return res.data.link;
5527
- }
5528
- /**
5529
- * Stop sharing a computer's local inference into a workspace. `workspaceId`
5530
- * is the target workspace's `ws_…` resourceId. Idempotent — unlinking a
5531
- * non-existent link still succeeds.
5532
- */
5533
- async unlinkWorkspace(id, workspaceId, opts = {}) {
5534
- const res = await request(this.ctx, {
5535
- method: "DELETE",
5536
- path: `/api/v1/computers/${id}/workspace-links/${workspaceId}`,
5537
- signal: opts.signal
5538
- });
5539
- return res.data;
4852
+ return res.data.computer;
5540
4853
  }
5541
4854
  // ---------------------------------------------------------------------------
5542
4855
  // Pair-token redemption (daemon bootstrap)
@@ -5544,7 +4857,7 @@ var ComputersApi = class {
5544
4857
  /**
5545
4858
  * Redeem a one-time pair token for a long-lived computer identity. The
5546
4859
  * token itself is the auth — we swap the bearer for the token on this
5547
- * call only (same pattern as `triggers.fire`).
4860
+ * call only (same pattern as `automations.fire`).
5548
4861
  *
5549
4862
  * Used by `idapt up --token` to bootstrap a daemon. The request body is
5550
4863
  * snake_case; the response is wrapped in the standard `{data:{…}}`
@@ -5566,117 +4879,6 @@ var ComputersApi = class {
5566
4879
  }
5567
4880
  };
5568
4881
 
5569
- // ../sdk/src/api/datastore.ts
5570
- var enc2 = encodeURIComponent;
5571
- var DatastoreApi = class {
5572
- constructor(ctx) {
5573
- this.ctx = ctx;
5574
- }
5575
- /** List keys in a namespace (prefix-filterable). */
5576
- async list(namespace, opts = {}) {
5577
- const q = new URLSearchParams();
5578
- if (opts.prefix) q.set("prefix", opts.prefix);
5579
- if (opts.cursor) q.set("cursor", opts.cursor);
5580
- if (opts.limit) q.set("limit", String(opts.limit));
5581
- const qs = q.toString() ? `?${q.toString()}` : "";
5582
- const res = await request(this.ctx, {
5583
- method: "GET",
5584
- path: `/api/v1/datastore/${enc2(namespace)}${qs}`,
5585
- signal: opts.signal
5586
- });
5587
- return res.data;
5588
- }
5589
- /** Read a KV entry. */
5590
- async get(namespace, key, opts = {}) {
5591
- const res = await request(this.ctx, {
5592
- method: "GET",
5593
- path: `/api/v1/datastore/${enc2(namespace)}/${enc2(key)}`,
5594
- signal: opts.signal
5595
- });
5596
- return res.data;
5597
- }
5598
- /** Upsert a KV entry (optionally with a TTL). */
5599
- async set(namespace, key, value, opts = {}) {
5600
- const res = await request(this.ctx, {
5601
- method: "POST",
5602
- path: `/api/v1/datastore/${enc2(namespace)}/${enc2(key)}`,
5603
- body: { value, ttl_seconds: opts.ttlSeconds },
5604
- signal: opts.signal
5605
- });
5606
- return res.data;
5607
- }
5608
- /** Delete a KV entry (idempotent). */
5609
- async delete(namespace, key, opts = {}) {
5610
- return request(this.ctx, {
5611
- method: "DELETE",
5612
- path: `/api/v1/datastore/${enc2(namespace)}/${enc2(key)}`,
5613
- signal: opts.signal
5614
- });
5615
- }
5616
- /** Atomically add `by` (default 1) to a numeric counter. */
5617
- async increment(namespace, key, by = 1, opts = {}) {
5618
- const res = await request(
5619
- this.ctx,
5620
- {
5621
- method: "POST",
5622
- path: `/api/v1/datastore/${enc2(namespace)}/${enc2(key)}/increment`,
5623
- body: { by },
5624
- signal: opts.signal
5625
- }
5626
- );
5627
- return res.data;
5628
- }
5629
- /** List the namespaces in the workspace. */
5630
- async listNamespaces(opts = {}) {
5631
- const res = await request(this.ctx, {
5632
- method: "GET",
5633
- path: "/api/v1/datastore",
5634
- signal: opts.signal
5635
- });
5636
- return res.data.map((n) => n.namespace);
5637
- }
5638
- /** Read several keys at once. */
5639
- async batchGet(namespace, keys, opts = {}) {
5640
- const res = await request(
5641
- this.ctx,
5642
- {
5643
- method: "POST",
5644
- path: `/api/v1/datastore/${enc2(namespace)}`,
5645
- body: { op: "get", keys },
5646
- signal: opts.signal
5647
- }
5648
- );
5649
- return res.data.entries ?? [];
5650
- }
5651
- /** Upsert several entries at once. */
5652
- async batchSet(namespace, entries, opts = {}) {
5653
- const res = await request(this.ctx, {
5654
- method: "POST",
5655
- path: `/api/v1/datastore/${enc2(namespace)}`,
5656
- body: {
5657
- op: "set",
5658
- entries: entries.map((e) => ({
5659
- key: e.key,
5660
- value: e.value,
5661
- ttl_seconds: e.ttlSeconds
5662
- }))
5663
- },
5664
- signal: opts.signal
5665
- });
5666
- return res.data.count ?? 0;
5667
- }
5668
- /** Delete several keys at once; returns the count removed. */
5669
- async batchDelete(namespace, keys, opts = {}) {
5670
- const res = await request(this.ctx, {
5671
- method: "POST",
5672
- path: `/api/v1/datastore/${enc2(namespace)}`,
5673
- body: { op: "delete", keys },
5674
- signal: opts.signal
5675
- });
5676
- return res.data.count ?? 0;
5677
- }
5678
- };
5679
-
5680
4882
  // ../sdk/src/api/docs.ts
5681
4883
  var DocsApi = class {
5682
4884
  constructor(ctx) {
@@ -5744,7 +4946,7 @@ var FilesApi = class {
5744
4946
  return permanentDeleteFile(this.ctx, id, opts);
5745
4947
  }
5746
4948
  // ---------------------------------------------------------------------------
5747
- // Folder / move / run
4949
+ // Folder / move
5748
4950
  // ---------------------------------------------------------------------------
5749
4951
  /**
5750
4952
  * Idempotent create-or-get a folder. Returns the existing folder (with
@@ -5756,163 +4958,6 @@ var FilesApi = class {
5756
4958
  move(id, parentId, opts = {}) {
5757
4959
  return moveFile(this.ctx, id, parentId, opts);
5758
4960
  }
5759
- /**
5760
- * Execute a code file (js/ts/py/sh) in a sandboxed Lambda. Returns the
5761
- * full `ExecutionRun` record (status, stdout/stderr, exit code, timestamps).
5762
- */
5763
- run(id, input = {}, opts = {}) {
5764
- return runFile(this.ctx, id, input, opts);
5765
- }
5766
- };
5767
-
5768
- // ../sdk/src/api/functions.ts
5769
- var enc3 = encodeURIComponent;
5770
- var FunctionRunsApi = class {
5771
- constructor(ctx) {
5772
- this.ctx = ctx;
5773
- }
5774
- /** List one-off function runs (cursor-paginated). */
5775
- async list(query = {}, opts = {}) {
5776
- const res = await request(this.ctx, {
5777
- method: "GET",
5778
- path: "/api/v1/functions/runs",
5779
- query,
5780
- signal: opts.signal
5781
- });
5782
- return res.data;
5783
- }
5784
- /** Get a single one-off run by id. */
5785
- async get(id, opts = {}) {
5786
- const res = await request(this.ctx, {
5787
- method: "GET",
5788
- path: `/api/v1/functions/runs/${enc3(id)}`,
5789
- signal: opts.signal
5790
- });
5791
- return res.data;
5792
- }
5793
- /**
5794
- * Interrupt a running run. Only computer-backed runs can be interrupted;
5795
- * Lambda-backed runs return 409 (`ConflictError`).
5796
- */
5797
- async interrupt(id, opts = {}) {
5798
- const res = await request(this.ctx, {
5799
- method: "POST",
5800
- path: `/api/v1/functions/runs/${enc3(id)}/interrupt`,
5801
- body: {},
5802
- signal: opts.signal
5803
- });
5804
- return res.data;
5805
- }
5806
- };
5807
- var FunctionsApi = class {
5808
- constructor(ctx) {
5809
- this.ctx = ctx;
5810
- this.runs = new FunctionRunsApi(ctx);
5811
- }
5812
- /**
5813
- * Run a script ONCE in the sandbox. Pass EITHER inline `script` (+ optional
5814
- * `language`) OR an existing Drive `file_id`. Returns the full `FunctionRun`
5815
- * row — `id`, `status`, `stdout`, `stderr`, `exit_code`, the run timestamps,
5816
- * and any `output_files` the script wrote under `/tmp/output/`.
5817
- */
5818
- async run(input, opts = {}) {
5819
- const res = await request(this.ctx, {
5820
- method: "POST",
5821
- path: "/api/v1/functions/runs",
5822
- body: input,
5823
- signal: opts.signal
5824
- });
5825
- return res.data;
5826
- }
5827
- /** List deployed functions in the workspace. */
5828
- async list(query = {}, opts = {}) {
5829
- const res = await request(this.ctx, {
5830
- method: "GET",
5831
- path: "/api/v1/functions",
5832
- query,
5833
- signal: opts.signal
5834
- });
5835
- return res.data;
5836
- }
5837
- /** Get a deployed function by its resourceId. */
5838
- async get(id, opts = {}) {
5839
- const res = await request(this.ctx, {
5840
- method: "GET",
5841
- path: `/api/v1/functions/${enc3(id)}`,
5842
- signal: opts.signal
5843
- });
5844
- return res.data;
5845
- }
5846
- /** Create a deployed function (config only — `deploy` adds a bundle). */
5847
- async create(input, opts = {}) {
5848
- const res = await request(this.ctx, {
5849
- method: "POST",
5850
- path: "/api/v1/functions",
5851
- body: input,
5852
- signal: opts.signal
5853
- });
5854
- return res.data;
5855
- }
5856
- /** Update a deployed function's config. */
5857
- async update(id, patch, opts = {}) {
5858
- const res = await request(this.ctx, {
5859
- method: "PATCH",
5860
- path: `/api/v1/functions/${enc3(id)}`,
5861
- body: patch,
5862
- signal: opts.signal
5863
- });
5864
- return res.data;
5865
- }
5866
- /** Delete a deployed function + all its deployments. */
5867
- async delete(id, opts = {}) {
5868
- return request(this.ctx, {
5869
- method: "DELETE",
5870
- path: `/api/v1/functions/${enc3(id)}`,
5871
- signal: opts.signal
5872
- });
5873
- }
5874
- /**
5875
- * Deploy a new bundle (inline base64 files). Promotes the new deployment to
5876
- * live immediately unless `promote: false`. Returns the new deployment.
5877
- */
5878
- async deploy(id, input, opts = {}) {
5879
- const res = await request(this.ctx, {
5880
- method: "POST",
5881
- path: `/api/v1/functions/${enc3(id)}/deploy`,
5882
- body: input,
5883
- signal: opts.signal
5884
- });
5885
- return res.data;
5886
- }
5887
- /** List a function's deployments (newest-first). */
5888
- async deployments(id, opts = {}) {
5889
- const res = await request(this.ctx, {
5890
- method: "GET",
5891
- path: `/api/v1/functions/${enc3(id)}/deployments`,
5892
- signal: opts.signal
5893
- });
5894
- return res.data;
5895
- }
5896
- /** Promote (or roll back to) a deployment — flips the active one. */
5897
- async promote(id, input, opts = {}) {
5898
- const res = await request(this.ctx, {
5899
- method: "POST",
5900
- path: `/api/v1/functions/${enc3(id)}/promote`,
5901
- body: input,
5902
- signal: opts.signal
5903
- });
5904
- return res.data;
5905
- }
5906
- /** Invoke a deployed function synchronously; returns its response. */
5907
- async invoke(id, input = {}, opts = {}) {
5908
- const res = await request(this.ctx, {
5909
- method: "POST",
5910
- path: `/api/v1/functions/${enc3(id)}/invoke`,
5911
- body: input,
5912
- signal: opts.signal
5913
- });
5914
- return res.data;
5915
- }
5916
4961
  };
5917
4962
 
5918
4963
  // ../sdk/src/api/guide.ts
@@ -5939,6 +4984,7 @@ var ImagesApi = class {
5939
4984
  constructor(ctx) {
5940
4985
  this.ctx = ctx;
5941
4986
  }
4987
+ /** List the available image-generation models. */
5942
4988
  async listModels(opts = {}) {
5943
4989
  const res = await request(this.ctx, {
5944
4990
  method: "GET",
@@ -5947,16 +4993,51 @@ var ImagesApi = class {
5947
4993
  });
5948
4994
  return res.data;
5949
4995
  }
5950
- /** Generate an image. Responds HTTP 201 with the written file ref under `data`. */
5951
- async generate(input, opts = {}) {
5952
- const res = await request(this.ctx, {
5953
- method: "POST",
5954
- path: "/api/v1/images/generations",
5955
- body: input,
5956
- signal: opts.signal
5957
- });
5958
- return res.data;
4996
+ };
4997
+
4998
+ // ../sdk/src/api/inference.ts
4999
+ var InferenceApi = class {
5000
+ constructor(ctx) {
5001
+ this.ctx = ctx;
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
+ );
5959
5038
  }
5039
+ // `inference transcribe` is multipart (audio file upload) — use
5040
+ // `client.call("inference transcribe", …)` with a File/Blob body.
5960
5041
  };
5961
5042
 
5962
5043
  // ../sdk/src/api/models.ts
@@ -6139,20 +5220,54 @@ var NotificationsApi = class {
6139
5220
  );
6140
5221
  return res.data;
6141
5222
  }
6142
- /**
6143
- * Bulk-update preferences. Each entry sets one (type, subtype?, channel)
6144
- * row. Empty `updates[]` → 422. Returns the full flat preference array.
6145
- */
6146
- async updatePreferences(updates, opts = {}) {
6147
- const res = await request(
6148
- this.ctx,
6149
- {
6150
- method: "PATCH",
6151
- path: "/api/v1/notifications/preferences",
6152
- body: { updates },
6153
- signal: opts.signal
6154
- }
6155
- );
5223
+ /**
5224
+ * Bulk-update preferences. Each entry sets one (type, subtype?, channel)
5225
+ * row. Empty `updates[]` → 422. Returns the full flat preference array.
5226
+ */
5227
+ async updatePreferences(updates, opts = {}) {
5228
+ const res = await request(
5229
+ this.ctx,
5230
+ {
5231
+ method: "PATCH",
5232
+ path: "/api/v1/notifications/preferences",
5233
+ body: { updates },
5234
+ signal: opts.signal
5235
+ }
5236
+ );
5237
+ return res.data;
5238
+ }
5239
+ };
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
+ });
6156
5271
  return res.data;
6157
5272
  }
6158
5273
  };
@@ -6217,7 +5332,7 @@ var ProviderEndpointsApi = class {
6217
5332
  };
6218
5333
 
6219
5334
  // ../sdk/src/api/realtime.ts
6220
- var enc4 = encodeURIComponent;
5335
+ var enc = encodeURIComponent;
6221
5336
  var RECONNECT_MIN_MS = 1e3;
6222
5337
  var RECONNECT_MAX_MS = 3e4;
6223
5338
  var RealtimeApi = class {
@@ -6228,7 +5343,7 @@ var RealtimeApi = class {
6228
5343
  async broadcast(channel, message, opts = {}) {
6229
5344
  const res = await request(this.ctx, {
6230
5345
  method: "POST",
6231
- path: `/api/v1/realtime/${enc4(channel)}/broadcast`,
5346
+ path: `/api/v1/realtime/${enc(channel)}/broadcast`,
6232
5347
  body: { message },
6233
5348
  signal: opts.signal
6234
5349
  });
@@ -6238,7 +5353,7 @@ var RealtimeApi = class {
6238
5353
  async heartbeat(channel, opts = {}) {
6239
5354
  const res = await request(this.ctx, {
6240
5355
  method: "POST",
6241
- path: `/api/v1/realtime/${enc4(channel)}/presence`,
5356
+ path: `/api/v1/realtime/${enc(channel)}/presence`,
6242
5357
  body: { meta: opts.meta, ttl_seconds: opts.ttlSeconds },
6243
5358
  signal: opts.signal
6244
5359
  });
@@ -6248,7 +5363,7 @@ var RealtimeApi = class {
6248
5363
  async presence(channel, opts = {}) {
6249
5364
  const res = await request(this.ctx, {
6250
5365
  method: "GET",
6251
- path: `/api/v1/realtime/${enc4(channel)}/presence`,
5366
+ path: `/api/v1/realtime/${enc(channel)}/presence`,
6252
5367
  signal: opts.signal
6253
5368
  });
6254
5369
  return res.data;
@@ -6342,7 +5457,7 @@ async function* parseSseStream(response, signal) {
6342
5457
  if (boundary === -1) break;
6343
5458
  const block = buffer.slice(0, boundary);
6344
5459
  buffer = buffer.slice(boundary + 2);
6345
- const parsed = parseSseBlock3(block);
5460
+ const parsed = parseSseBlock2(block);
6346
5461
  if (parsed) yield parsed;
6347
5462
  }
6348
5463
  }
@@ -6353,7 +5468,7 @@ async function* parseSseStream(response, signal) {
6353
5468
  }
6354
5469
  }
6355
5470
  }
6356
- function parseSseBlock3(block) {
5471
+ function parseSseBlock2(block) {
6357
5472
  let id;
6358
5473
  let data = "";
6359
5474
  let isHeartbeat = false;
@@ -6603,42 +5718,6 @@ var SharingApi = class {
6603
5718
  }
6604
5719
  };
6605
5720
 
6606
- // ../sdk/src/api/store.ts
6607
- var StoreApi = class {
6608
- constructor(ctx) {
6609
- this.ctx = ctx;
6610
- }
6611
- /**
6612
- * Search the hub. Open envelope — items are heterogeneous (skills carry
6613
- * version/license, agents carry icons/prompts, computer templates carry
6614
- * sizing) so we surface them as `StoreItem` with an open index signature.
6615
- */
6616
- async search(query = {}, opts = {}) {
6617
- const res = await request(this.ctx, {
6618
- method: "GET",
6619
- path: "/api/v1/store/search",
6620
- query,
6621
- signal: opts.signal
6622
- });
6623
- return res.data;
6624
- }
6625
- /**
6626
- * Install a hub item into one of the caller's workspaces. Returns whatever
6627
- * the per-template installer produces (folder ids, agent ids, ...) —
6628
- * `StoreInstallResult` carries the common fields and leaves the rest
6629
- * open.
6630
- */
6631
- async install(resourceId, input, opts = {}) {
6632
- const res = await request(this.ctx, {
6633
- method: "POST",
6634
- path: `/api/v1/store/${resourceId}/install`,
6635
- body: input,
6636
- signal: opts.signal
6637
- });
6638
- return res.data;
6639
- }
6640
- };
6641
-
6642
5721
  // ../sdk/src/api/subscription.ts
6643
5722
  var SubscriptionApi = class {
6644
5723
  constructor(ctx) {
@@ -6654,271 +5733,6 @@ var SubscriptionApi = class {
6654
5733
  }
6655
5734
  };
6656
5735
 
6657
- // ../sdk/src/api/tables.ts
6658
- var enc5 = encodeURIComponent;
6659
- var TablesApi = class {
6660
- constructor(ctx) {
6661
- this.ctx = ctx;
6662
- }
6663
- async list(opts = {}) {
6664
- const q = new URLSearchParams();
6665
- if (opts.workspaceId) q.set("workspace_id", opts.workspaceId);
6666
- if (opts.cursor) q.set("cursor", opts.cursor);
6667
- if (opts.limit) q.set("limit", String(opts.limit));
6668
- const qs = q.toString() ? `?${q.toString()}` : "";
6669
- const res = await request(this.ctx, {
6670
- method: "GET",
6671
- path: `/api/v1/tables${qs}`,
6672
- signal: opts.signal
6673
- });
6674
- return res.data;
6675
- }
6676
- async get(id, opts = {}) {
6677
- const res = await request(this.ctx, {
6678
- method: "GET",
6679
- path: `/api/v1/tables/${enc5(id)}`,
6680
- signal: opts.signal
6681
- });
6682
- return res.data;
6683
- }
6684
- async create(input, opts = {}) {
6685
- const res = await request(this.ctx, {
6686
- method: "POST",
6687
- path: "/api/v1/tables",
6688
- body: input,
6689
- signal: opts.signal
6690
- });
6691
- return res.data;
6692
- }
6693
- async update(id, input, opts = {}) {
6694
- const res = await request(this.ctx, {
6695
- method: "PATCH",
6696
- path: `/api/v1/tables/${enc5(id)}`,
6697
- body: input,
6698
- signal: opts.signal
6699
- });
6700
- return res.data;
6701
- }
6702
- async delete(id, opts = {}) {
6703
- return request(this.ctx, {
6704
- method: "DELETE",
6705
- path: `/api/v1/tables/${enc5(id)}`,
6706
- signal: opts.signal
6707
- });
6708
- }
6709
- /** Query a collection's records with the filter/sort/paginate DSL. */
6710
- async query(id, query = {}, opts = {}) {
6711
- const res = await request(this.ctx, {
6712
- method: "POST",
6713
- path: `/api/v1/tables/${enc5(id)}/query`,
6714
- body: query,
6715
- signal: opts.signal
6716
- });
6717
- return res.data;
6718
- }
6719
- async createRecord(id, values, opts = {}) {
6720
- const res = await request(this.ctx, {
6721
- method: "POST",
6722
- path: `/api/v1/tables/${enc5(id)}/records`,
6723
- body: { values },
6724
- signal: opts.signal
6725
- });
6726
- return res.data;
6727
- }
6728
- async getRecord(id, recordId, opts = {}) {
6729
- const res = await request(this.ctx, {
6730
- method: "GET",
6731
- path: `/api/v1/tables/${enc5(id)}/records/${enc5(recordId)}`,
6732
- signal: opts.signal
6733
- });
6734
- return res.data;
6735
- }
6736
- async updateRecord(id, recordId, values, opts = {}) {
6737
- const res = await request(this.ctx, {
6738
- method: "PATCH",
6739
- path: `/api/v1/tables/${enc5(id)}/records/${enc5(recordId)}`,
6740
- body: { values },
6741
- signal: opts.signal
6742
- });
6743
- return res.data;
6744
- }
6745
- async deleteRecord(id, recordId, opts = {}) {
6746
- return request(this.ctx, {
6747
- method: "DELETE",
6748
- path: `/api/v1/tables/${enc5(id)}/records/${enc5(recordId)}`,
6749
- signal: opts.signal
6750
- });
6751
- }
6752
- /** Export a collection's records as a CSV string (header row = field keys). */
6753
- async exportCsv(id, opts = {}) {
6754
- const res = await requestRaw(this.ctx, {
6755
- method: "GET",
6756
- path: `/api/v1/tables/${enc5(id)}/export`,
6757
- signal: opts.signal,
6758
- expectJson: false
6759
- });
6760
- return res.text();
6761
- }
6762
- /** Import records into a collection from a CSV string. Returns the count. */
6763
- async importCsv(id, csv, opts = {}) {
6764
- const res = await request(this.ctx, {
6765
- method: "POST",
6766
- path: `/api/v1/tables/${enc5(id)}/import`,
6767
- body: { csv },
6768
- signal: opts.signal
6769
- });
6770
- return res.data;
6771
- }
6772
- };
6773
-
6774
- // ../sdk/src/api/triggers.ts
6775
- var TriggersApi = class {
6776
- constructor(ctx) {
6777
- this.ctx = ctx;
6778
- }
6779
- // ---------------------------------------------------------------------------
6780
- // CRUD
6781
- // ---------------------------------------------------------------------------
6782
- async list(query = {}, opts = {}) {
6783
- const res = await request(this.ctx, {
6784
- method: "GET",
6785
- path: "/api/v1/triggers",
6786
- query,
6787
- signal: opts.signal
6788
- });
6789
- return res.data;
6790
- }
6791
- /**
6792
- * Create a trigger. `workspace_id` is passed in the request BODY (alongside
6793
- * the flat trigger definition) — it is not a query param. The request
6794
- * body is flat: every scheduling field (`cron_expression`, …) and every
6795
- * action field (`agent_id`, `prompt_template`, `file_id`, …) sits at the
6796
- * top level — there are no nested `trigger_config` / `action_config`
6797
- * objects any more.
6798
- *
6799
- * For a `webhook` trigger the response additionally carries a one-time
6800
- * plaintext `secret` (use `TriggerWithSecret`); other trigger types
6801
- * resolve to a plain `Trigger`.
6802
- */
6803
- async create(workspaceId, input, opts = {}) {
6804
- const res = await request(
6805
- this.ctx,
6806
- {
6807
- method: "POST",
6808
- path: "/api/v1/triggers",
6809
- body: { workspace_id: workspaceId, ...input },
6810
- signal: opts.signal
6811
- }
6812
- );
6813
- return res.data;
6814
- }
6815
- async get(id, opts = {}) {
6816
- const res = await request(this.ctx, {
6817
- method: "GET",
6818
- path: `/api/v1/triggers/${id}`,
6819
- signal: opts.signal
6820
- });
6821
- return res.data;
6822
- }
6823
- async update(id, input, opts = {}) {
6824
- const res = await request(this.ctx, {
6825
- method: "PATCH",
6826
- path: `/api/v1/triggers/${id}`,
6827
- body: input,
6828
- signal: opts.signal
6829
- });
6830
- return res.data;
6831
- }
6832
- async delete(id, opts = {}) {
6833
- return request(this.ctx, {
6834
- method: "DELETE",
6835
- path: `/api/v1/triggers/${id}`,
6836
- signal: opts.signal
6837
- });
6838
- }
6839
- async archive(id, opts = {}) {
6840
- const res = await request(this.ctx, {
6841
- method: "POST",
6842
- path: `/api/v1/triggers/${id}/archive`,
6843
- signal: opts.signal
6844
- });
6845
- return res.data;
6846
- }
6847
- async unarchive(id, opts = {}) {
6848
- const res = await request(this.ctx, {
6849
- method: "POST",
6850
- path: `/api/v1/triggers/${id}/unarchive`,
6851
- signal: opts.signal
6852
- });
6853
- return res.data;
6854
- }
6855
- // ---------------------------------------------------------------------------
6856
- // Fire + rotate-secret + runs
6857
- // ---------------------------------------------------------------------------
6858
- /**
6859
- * Fire a trigger via its webhook secret. This endpoint does NOT use the
6860
- * client's `ap_` key — the bearer is the trigger's secret — so we build a
6861
- * one-off HttpContext for it rather than mutating the shared one.
6862
- *
6863
- * Responds HTTP 202. The response identifies the fired trigger via `id`
6864
- * only.
6865
- */
6866
- async fire(id, input, opts = {}) {
6867
- const localCtx = {
6868
- apiUrl: this.ctx.apiUrl,
6869
- key: input.secret,
6870
- fetch: this.ctx.fetch
6871
- };
6872
- const res = await request(localCtx, {
6873
- method: "POST",
6874
- path: `/api/v1/triggers/${id}/fire`,
6875
- body: input.body ?? {},
6876
- signal: opts.signal
6877
- });
6878
- return res.data;
6879
- }
6880
- /**
6881
- * Rotate the webhook secret. Returns the trigger with a fresh one-time
6882
- * plaintext `secret` populated (`TriggerWithSecret`). The old secret
6883
- * immediately stops working.
6884
- */
6885
- async rotateSecret(id, opts = {}) {
6886
- const res = await request(this.ctx, {
6887
- method: "POST",
6888
- path: `/api/v1/triggers/${id}/rotate-secret`,
6889
- signal: opts.signal
6890
- });
6891
- return res.data;
6892
- }
6893
- /** Recent fires + their success/error outcome. */
6894
- async listRuns(id, query = {}, opts = {}) {
6895
- const res = await request(this.ctx, {
6896
- method: "GET",
6897
- path: `/api/v1/triggers/${id}/runs`,
6898
- query,
6899
- signal: opts.signal
6900
- });
6901
- return res.data;
6902
- }
6903
- async getCostStats(id, opts = {}) {
6904
- const res = await request(this.ctx, {
6905
- method: "GET",
6906
- path: `/api/v1/triggers/${id}/cost-stats`,
6907
- signal: opts.signal
6908
- });
6909
- return res.data;
6910
- }
6911
- async getCostStatsMap(query = {}, opts = {}) {
6912
- const res = await request(this.ctx, {
6913
- method: "GET",
6914
- path: "/api/v1/triggers/cost-stats",
6915
- query,
6916
- signal: opts.signal
6917
- });
6918
- return res.data.by_id;
6919
- }
6920
- };
6921
-
6922
5736
  // ../sdk/src/api/user.ts
6923
5737
  var UserApi = class {
6924
5738
  constructor(ctx) {
@@ -6962,11 +5776,11 @@ var UserApi = class {
6962
5776
  };
6963
5777
 
6964
5778
  // ../sdk/src/api/videos.ts
6965
- var GENERATE_BINDING = COMMAND_BINDINGS["video generate"];
6966
5779
  var VideosApi = class {
6967
5780
  constructor(ctx) {
6968
5781
  this.ctx = ctx;
6969
5782
  }
5783
+ /** List the available video-generation models. */
6970
5784
  async listModels(opts = {}) {
6971
5785
  const res = await request(this.ctx, {
6972
5786
  method: "GET",
@@ -6975,6 +5789,7 @@ var VideosApi = class {
6975
5789
  });
6976
5790
  return res.data;
6977
5791
  }
5792
+ /** Search the video-model registry (filtered + paginated envelope). */
6978
5793
  async searchModels(input = {}, opts = {}) {
6979
5794
  const res = await request(
6980
5795
  this.ctx,
@@ -6987,27 +5802,6 @@ var VideosApi = class {
6987
5802
  );
6988
5803
  return res.data;
6989
5804
  }
6990
- async generate(input, opts = {}) {
6991
- const res = await request(this.ctx, {
6992
- method: "POST",
6993
- path: "/api/v1/videos/generations",
6994
- body: input,
6995
- signal: opts.signal
6996
- });
6997
- const handle = res.data;
6998
- if (opts.wait === false) return handle;
6999
- const pollOpts = {
7000
- signal: opts.signal,
7001
- pollIntervalMs: opts.pollIntervalMs,
7002
- maxPollAttempts: opts.maxPollAttempts
7003
- };
7004
- return await awaitOperation(
7005
- GENERATE_BINDING,
7006
- handle.id,
7007
- this.ctx,
7008
- pollOpts
7009
- );
7010
- }
7011
5805
  };
7012
5806
 
7013
5807
  // ../sdk/src/api/web.ts
@@ -7172,8 +5966,12 @@ var WorkspacesApi = class {
7172
5966
  }
7173
5967
  };
7174
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
+
7175
5973
  // ../sdk/src/version.ts
7176
- var VERSION = "0.2.0" ;
5974
+ var VERSION = "0.4.0" ;
7177
5975
 
7178
5976
  // src/api/app.ts
7179
5977
  var RemoteBundleReader = class {
@@ -7667,24 +6465,19 @@ var IdaptClient2 = class {
7667
6465
  this.agents = new AgentsApi(v1Ctx);
7668
6466
  this.chats = new ChatsApi(v1Ctx);
7669
6467
  this.workspaces = new WorkspacesApi(v1Ctx);
7670
- this.triggers = new TriggersApi(v1Ctx);
6468
+ this.automations = new AutomationsApi(v1Ctx);
7671
6469
  this.computers = new ComputersApi(v1Ctx);
7672
6470
  this.secrets = new SecretsApi(v1Ctx);
7673
- this.kv = new DatastoreApi(v1Ctx);
7674
- this.blobs = new BlobsApi(v1Ctx);
7675
- this.tables = new TablesApi(v1Ctx);
7676
6471
  this.realtime = new RealtimeApi(v1Ctx);
7677
6472
  this.apiKeys = new ApiKeysApi(v1Ctx);
7678
6473
  this.notifications = new NotificationsApi(v1Ctx);
7679
6474
  this.settings = new SettingsApi(v1Ctx);
7680
6475
  this.subscription = new SubscriptionApi(v1Ctx);
7681
6476
  this.sharing = new SharingApi(v1Ctx);
7682
- this.store = new StoreApi(v1Ctx);
7683
6477
  this.models = new ModelsApi(v1Ctx);
7684
6478
  this.providerEndpoints = new ProviderEndpointsApi(v1Ctx);
7685
6479
  this.images = new ImagesApi(v1Ctx);
7686
6480
  this.audio = new AudioApi(v1Ctx);
7687
- this.functions = new FunctionsApi(v1Ctx);
7688
6481
  this.search = new SearchApi(v1Ctx);
7689
6482
  this.web = new WebSearchApi(v1Ctx);
7690
6483
  this.guide = new GuideApi(v1Ctx);
@@ -8071,26 +6864,28 @@ exports.ApiKeysApi = ApiKeysApi;
8071
6864
  exports.AppFolder = AppFolder;
8072
6865
  exports.AudioApi = AudioApi;
8073
6866
  exports.AuthError = AuthError;
8074
- exports.BlobsApi = BlobsApi;
6867
+ exports.AutomationsApi = AutomationsApi;
8075
6868
  exports.COMMAND_BINDINGS = COMMAND_BINDINGS;
8076
6869
  exports.ChatsApi = ChatsApi;
8077
6870
  exports.ComputersApi = ComputersApi;
8078
6871
  exports.ConflictError = ConflictError;
8079
6872
  exports.DataFolder = DataFolder;
8080
- exports.DatastoreApi = DatastoreApi;
8081
6873
  exports.DocsApi = DocsApi;
8082
6874
  exports.FilesApi = FilesApi;
8083
- exports.FunctionsApi = FunctionsApi;
8084
6875
  exports.GuideApi = GuideApi;
6876
+ exports.IDAPT_API_VERSION = IDAPT_API_VERSION;
6877
+ exports.IDAPT_API_VERSION_HEADER = IDAPT_API_VERSION_HEADER;
8085
6878
  exports.Idapt = Idapt2;
8086
6879
  exports.IdaptClient = IdaptClient2;
8087
6880
  exports.IdaptError = IdaptError;
8088
6881
  exports.ImagesApi = ImagesApi;
6882
+ exports.InferenceApi = InferenceApi;
8089
6883
  exports.InvalidRequestError = InvalidRequestError;
8090
6884
  exports.ModelsApi = ModelsApi;
8091
6885
  exports.NetworkError = NetworkError;
8092
6886
  exports.NotFoundError = NotFoundError;
8093
6887
  exports.NotificationsApi = NotificationsApi;
6888
+ exports.OperationsApi = OperationsApi;
8094
6889
  exports.PermissionError = PermissionError;
8095
6890
  exports.ProviderEndpointsApi = ProviderEndpointsApi;
8096
6891
  exports.RateLimitError = RateLimitError;
@@ -8103,10 +6898,7 @@ exports.ServerError = ServerError;
8103
6898
  exports.ServiceUnavailableError = ServiceUnavailableError;
8104
6899
  exports.SettingsApi = SettingsApi;
8105
6900
  exports.SharingApi = SharingApi;
8106
- exports.StoreApi = StoreApi;
8107
6901
  exports.SubscriptionApi = SubscriptionApi;
8108
- exports.TablesApi = TablesApi;
8109
- exports.TriggersApi = TriggersApi;
8110
6902
  exports.UserApi = UserApi;
8111
6903
  exports.VERSION = VERSION;
8112
6904
  exports.VideosApi = VideosApi;