@renai-labs/sdk 0.1.20 → 0.1.22

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.
@@ -55,6 +55,8 @@ export class Version extends HeyApiClient {
55
55
  }
56
56
  /**
57
57
  * Archive an agent version
58
+ *
59
+ * Archiving the latest version repoints agents tracking latest to the next non-archived version. The response reports the blast radius (projectCount/podCount) of the pinned and tracking-latest placements affected.
58
60
  */
59
61
  archive(options) {
60
62
  return (options.client ?? this.client).post({
@@ -65,7 +67,7 @@ export class Version extends HeyApiClient {
65
67
  }
66
68
  export class Agent extends HeyApiClient {
67
69
  /**
68
- * List agents
70
+ * List and search agents
69
71
  */
70
72
  list(options) {
71
73
  return (options?.client ?? this.client).get({
@@ -87,33 +89,11 @@ export class Agent extends HeyApiClient {
87
89
  });
88
90
  }
89
91
  /**
90
- * Search agents across private, org, and published tiers
91
- */
92
- search(options) {
93
- return (options?.client ?? this.client).post({
94
- url: "/api/agents/search",
95
- ...options,
96
- headers: {
97
- "Content-Type": "application/json",
98
- ...options?.headers,
99
- },
100
- });
101
- }
102
- /**
103
- * Get an agent by slug
104
- */
105
- getBySlug(options) {
106
- return (options.client ?? this.client).get({
107
- url: "/api/agents/slug/{slug}",
108
- ...options,
109
- });
110
- }
111
- /**
112
- * Get an agent
92
+ * Get an agent by ID or slug
113
93
  */
114
94
  get(options) {
115
95
  return (options.client ?? this.client).get({
116
- url: "/api/agents/{id}",
96
+ url: "/api/agents/{idOrSlug}",
117
97
  ...options,
118
98
  });
119
99
  }
@@ -394,6 +374,20 @@ export class Dashboard extends HeyApiClient {
394
374
  });
395
375
  }
396
376
  }
377
+ export class Build extends HeyApiClient {
378
+ /**
379
+ * Start a custom template build for an environment
380
+ */
381
+ start(options) {
382
+ return (options.client ?? this.client).post({ url: "/api/environments/{id}/build", ...options });
383
+ }
384
+ /**
385
+ * List an environment's builds
386
+ */
387
+ list(options) {
388
+ return (options.client ?? this.client).get({ url: "/api/environments/{id}/builds", ...options });
389
+ }
390
+ }
397
391
  export class Environment extends HeyApiClient {
398
392
  /**
399
393
  * List environments
@@ -457,16 +451,24 @@ export class Environment extends HeyApiClient {
457
451
  ...options,
458
452
  });
459
453
  }
454
+ _build;
455
+ get build() {
456
+ return (this._build ??= new Build({ client: this.client }));
457
+ }
460
458
  }
461
459
  export class Files extends HeyApiClient {
462
460
  /**
463
461
  * Delete a file
462
+ *
463
+ * Deletes a file from the store. This does not coordinate with live sandbox mounts: a sandbox holding an unflushed write to the same path can re-create the file after this delete lands.
464
464
  */
465
465
  delete(options) {
466
466
  return (options.client ?? this.client).delete({ url: "/api/file-stores/{id}/files", ...options });
467
467
  }
468
468
  /**
469
469
  * List files in a file store
470
+ *
471
+ * Lists finalized files under the given prefix. Reads can be stale relative to a live mount: a sandbox holding an unflushed write to the same path may not have uploaded it yet, and a mount can serve a cached read of a file another writer has since changed (bounded by the mount's cache windows).
470
472
  */
471
473
  list(options) {
472
474
  return (options.client ?? this.client).get({
@@ -476,12 +478,16 @@ export class Files extends HeyApiClient {
476
478
  }
477
479
  /**
478
480
  * Get a presigned GET URL for a file
481
+ *
482
+ * Returns a presigned GET URL for a file. Content can be stale relative to a live mount: a mount may serve a cached read of a file another writer has changed, and a sandbox's own unflushed write may not be reflected yet (bounded by the mount's cache windows).
479
483
  */
480
484
  presignDownload(options) {
481
485
  return (options.client ?? this.client).get({ url: "/api/file-stores/{id}/files/presign-download", ...options });
482
486
  }
483
487
  /**
484
488
  * Start a presigned upload
489
+ *
490
+ * Starts a presigned upload. The returned URL uploads bytes to a private staging area outside the store — the file is invisible to workspaces and absent from the store's file list until finalize promotes it. Returns an uploadId that finalize requires. For small files a tool can call, prefer PUT /:id/files/content.
485
491
  */
486
492
  startUpload(options) {
487
493
  return (options.client ?? this.client).post({
@@ -495,6 +501,8 @@ export class Files extends HeyApiClient {
495
501
  }
496
502
  /**
497
503
  * Finalize an upload
504
+ *
505
+ * Finalizes a presigned upload identified by uploadId: stats the staged object, enforces the 50 MiB ceiling (over-limit objects are rejected and deleted), promotes it onto the store key, and fans the new file out to attached workspaces. Required — an unfinalized upload stays in staging, invisible to workspaces and the file list, and is reaped after 24 hours.
498
506
  */
499
507
  finalizeUpload(options) {
500
508
  return (options.client ?? this.client).post({
@@ -506,6 +514,22 @@ export class Files extends HeyApiClient {
506
514
  },
507
515
  });
508
516
  }
517
+ /**
518
+ * Write a small file directly
519
+ *
520
+ * Writes the raw request body to `path` in one call (no presign/finalize round-trip), capped at 5 MiB — the write path a tool-caller can use. Same path rules and workspace fan-out as a finalized upload. Use presigned uploads for larger files.
521
+ */
522
+ writeContent(options) {
523
+ return (options.client ?? this.client).put({
524
+ bodySerializer: null,
525
+ url: "/api/file-stores/{id}/files/content",
526
+ ...options,
527
+ headers: {
528
+ "Content-Type": "application/octet-stream",
529
+ ...options.headers,
530
+ },
531
+ });
532
+ }
509
533
  }
510
534
  export class FileStore extends HeyApiClient {
511
535
  /**
@@ -554,6 +578,8 @@ export class FileStore extends HeyApiClient {
554
578
  }
555
579
  /**
556
580
  * Archive a file store
581
+ *
582
+ * Archives the store metadata but keeps every stored object. Bytes remain recoverable until a retention sweep purges stores archived more than 30 days.
557
583
  */
558
584
  archive(options) {
559
585
  return (options.client ?? this.client).post({
@@ -721,13 +747,57 @@ export class Google extends HeyApiClient {
721
747
  return (this._config ??= new Config({ client: this.client }));
722
748
  }
723
749
  }
724
- export class Oauth extends HeyApiClient {
750
+ export class OauthApp extends HeyApiClient {
725
751
  /**
726
- * Start OAuth for an MCP (or confirm it is already connected)
752
+ * List the org's OAuth apps
727
753
  */
728
- connect(options) {
729
- return (options.client ?? this.client).post({
730
- url: "/api/mcps/{id}/oauth/connect",
754
+ list(options) {
755
+ return (options?.client ?? this.client).get({
756
+ url: "/api/oauth-apps",
757
+ ...options,
758
+ });
759
+ }
760
+ /**
761
+ * Register an OAuth app the org owns
762
+ */
763
+ create(options) {
764
+ return (options?.client ?? this.client).post({
765
+ url: "/api/oauth-apps",
766
+ ...options,
767
+ headers: {
768
+ "Content-Type": "application/json",
769
+ ...options?.headers,
770
+ },
771
+ });
772
+ }
773
+ /**
774
+ * The redirect URI to register with an OAuth provider
775
+ *
776
+ * Register this exact value as the app's authorized redirect URI before creating it — providers match it byte-for-byte and reject the login otherwise. It is deployment-specific, so read it here rather than assuming a host.
777
+ */
778
+ redirectUri(options) {
779
+ return (options?.client ?? this.client).get({
780
+ url: "/api/oauth-apps/redirect-uri",
781
+ ...options,
782
+ });
783
+ }
784
+ /**
785
+ * Archive an OAuth app
786
+ */
787
+ delete(options) {
788
+ return (options.client ?? this.client).delete({
789
+ url: "/api/oauth-apps/{id}",
790
+ ...options,
791
+ });
792
+ }
793
+ /**
794
+ * Update an OAuth app
795
+ *
796
+ * Renaming an app that MCP servers point at is refused unless ?force=true — they reference it by name.
797
+ */
798
+ update(options) {
799
+ return (options.client ?? this.client).patch({
800
+ url: "/api/oauth-apps/{id}",
731
801
  ...options,
732
802
  headers: {
733
803
  "Content-Type": "application/json",
@@ -736,11 +806,11 @@ export class Oauth extends HeyApiClient {
736
806
  });
737
807
  }
738
808
  /**
739
- * Poll an MCP OAuth session status
809
+ * List the MCP servers that point at this OAuth app
740
810
  */
741
- session(options) {
811
+ usage(options) {
742
812
  return (options.client ?? this.client).get({
743
- url: "/api/mcps/{id}/oauth/sessions/{sessionId}",
813
+ url: "/api/oauth-apps/{id}/usage",
744
814
  ...options,
745
815
  });
746
816
  }
@@ -861,10 +931,6 @@ export class Mcp extends HeyApiClient {
861
931
  ...options,
862
932
  });
863
933
  }
864
- _oauth;
865
- get oauth() {
866
- return (this._oauth ??= new Oauth({ client: this.client }));
867
- }
868
934
  }
869
935
  export class Me extends HeyApiClient {
870
936
  /**
@@ -910,24 +976,32 @@ export class Me extends HeyApiClient {
910
976
  export class Files2 extends HeyApiClient {
911
977
  /**
912
978
  * Delete a file
979
+ *
980
+ * Deletes a file from the store. This does not coordinate with live sandbox mounts: a sandbox holding an unflushed write to the same path can re-create the file after this delete lands.
913
981
  */
914
982
  delete(options) {
915
983
  return (options.client ?? this.client).delete({ url: "/api/memory-stores/{id}/files", ...options });
916
984
  }
917
985
  /**
918
986
  * List files in a memory store
987
+ *
988
+ * Lists finalized files under the given prefix. Reads can be stale relative to a live mount: a sandbox holding an unflushed write to the same path may not have uploaded it yet, and a mount can serve a cached read of a file another writer has since changed (bounded by the mount's cache windows).
919
989
  */
920
990
  list(options) {
921
991
  return (options.client ?? this.client).get({ url: "/api/memory-stores/{id}/files", ...options });
922
992
  }
923
993
  /**
924
994
  * Get a presigned GET URL for a file
995
+ *
996
+ * Returns a presigned GET URL for a file. Content can be stale relative to a live mount: a mount may serve a cached read of a file another writer has changed, and a sandbox's own unflushed write may not be reflected yet (bounded by the mount's cache windows).
925
997
  */
926
998
  presignDownload(options) {
927
999
  return (options.client ?? this.client).get({ url: "/api/memory-stores/{id}/files/presign-download", ...options });
928
1000
  }
929
1001
  /**
930
1002
  * Start a presigned upload
1003
+ *
1004
+ * Starts a presigned upload. The returned URL uploads bytes to a private staging area outside the store — the file is invisible to workspaces and absent from the store's file list until finalize promotes it. Returns an uploadId that finalize requires. For small files a tool can call, prefer PUT /:id/files/content.
931
1005
  */
932
1006
  startUpload(options) {
933
1007
  return (options.client ?? this.client).post({
@@ -941,6 +1015,8 @@ export class Files2 extends HeyApiClient {
941
1015
  }
942
1016
  /**
943
1017
  * Finalize an upload
1018
+ *
1019
+ * Finalizes a presigned upload identified by uploadId: stats the staged object, enforces the 50 MiB ceiling (over-limit objects are rejected and deleted), promotes it onto the store key, and fans the new file out to attached workspaces. Required — an unfinalized upload stays in staging, invisible to workspaces and the file list, and is reaped after 24 hours.
944
1020
  */
945
1021
  finalizeUpload(options) {
946
1022
  return (options.client ?? this.client).post({
@@ -952,6 +1028,22 @@ export class Files2 extends HeyApiClient {
952
1028
  },
953
1029
  });
954
1030
  }
1031
+ /**
1032
+ * Write a small file directly
1033
+ *
1034
+ * Writes the raw request body to `path` in one call (no presign/finalize round-trip), capped at 5 MiB — the write path a tool-caller can use. Same path rules and workspace fan-out as a finalized upload. Use presigned uploads for larger files.
1035
+ */
1036
+ writeContent(options) {
1037
+ return (options.client ?? this.client).put({
1038
+ bodySerializer: null,
1039
+ url: "/api/memory-stores/{id}/files/content",
1040
+ ...options,
1041
+ headers: {
1042
+ "Content-Type": "application/octet-stream",
1043
+ ...options.headers,
1044
+ },
1045
+ });
1046
+ }
955
1047
  }
956
1048
  export class MemoryStore extends HeyApiClient {
957
1049
  /**
@@ -1000,6 +1092,8 @@ export class MemoryStore extends HeyApiClient {
1000
1092
  }
1001
1093
  /**
1002
1094
  * Archive a memory store
1095
+ *
1096
+ * Archives the store metadata but keeps every stored object. Bytes remain recoverable until a retention sweep purges stores archived more than 30 days.
1003
1097
  */
1004
1098
  archive(options) {
1005
1099
  return (options.client ?? this.client).post({
@@ -1154,35 +1248,15 @@ export class Member extends HeyApiClient {
1154
1248
  });
1155
1249
  }
1156
1250
  }
1157
- export class Vault extends HeyApiClient {
1251
+ export class Credential extends HeyApiClient {
1158
1252
  /**
1159
- * List pod vaults (ordered by priority)
1253
+ * List the credentials this pod resolves against, best match first
1254
+ *
1255
+ * Read-only. Derived from the pod's tier: a shared pod sees its own vault then the org vault; a private pod sees its owner's vault, then every shared pod that owner belongs to, then the org vault. Entries shadowed by a higher-priority credential are marked rather than hidden.
1160
1256
  */
1161
1257
  list(options) {
1162
1258
  return (options.client ?? this.client).get({
1163
- url: "/api/pods/{id}/vaults",
1164
- ...options,
1165
- });
1166
- }
1167
- /**
1168
- * Add a vault to a pod
1169
- */
1170
- add(options) {
1171
- return (options.client ?? this.client).post({
1172
- url: "/api/pods/{id}/vaults",
1173
- ...options,
1174
- headers: {
1175
- "Content-Type": "application/json",
1176
- ...options.headers,
1177
- },
1178
- });
1179
- }
1180
- /**
1181
- * Remove a vault from a pod
1182
- */
1183
- remove(options) {
1184
- return (options.client ?? this.client).delete({
1185
- url: "/api/pods/{id}/vaults/{vaultId}",
1259
+ url: "/api/pods/{id}/credentials",
1186
1260
  ...options,
1187
1261
  });
1188
1262
  }
@@ -1268,9 +1342,9 @@ export class Pod extends HeyApiClient {
1268
1342
  });
1269
1343
  }
1270
1344
  /**
1271
- * Get total credit usage for a pod
1345
+ * Get a pod's credit usage
1272
1346
  *
1273
- * Total Ren credits consumed across the whole pod, served from the local hourly usage rollup.
1347
+ * Ren credits consumed across the whole pod, with a per-day trend, a breakdown by usage source and operation, and an optional grouped breakdown (e.g. `groupBy=project` for per-project costs). `start`/`end` bound the range (max 92 days); omit both for all-time. Served from the local hourly usage rollup.
1274
1348
  */
1275
1349
  usage(options) {
1276
1350
  return (options.client ?? this.client).get({
@@ -1291,18 +1365,130 @@ export class Pod extends HeyApiClient {
1291
1365
  get member() {
1292
1366
  return (this._member ??= new Member({ client: this.client }));
1293
1367
  }
1294
- _vault;
1295
- get vault() {
1296
- return (this._vault ??= new Vault({ client: this.client }));
1368
+ _credential;
1369
+ get credential() {
1370
+ return (this._credential ??= new Credential({ client: this.client }));
1297
1371
  }
1298
1372
  _sandbox;
1299
1373
  get sandbox() {
1300
1374
  return (this._sandbox ??= new Sandbox({ client: this.client }));
1301
1375
  }
1302
1376
  }
1377
+ export class PodDatabase extends HeyApiClient {
1378
+ /**
1379
+ * List a pod's databases
1380
+ */
1381
+ list(options) {
1382
+ return (options.client ?? this.client).get({
1383
+ url: "/api/pods/{podId}/databases",
1384
+ ...options,
1385
+ });
1386
+ }
1387
+ /**
1388
+ * Create a pod database
1389
+ */
1390
+ create(options) {
1391
+ return (options.client ?? this.client).post({
1392
+ url: "/api/pods/{podId}/databases",
1393
+ ...options,
1394
+ headers: {
1395
+ "Content-Type": "application/json",
1396
+ ...options.headers,
1397
+ },
1398
+ });
1399
+ }
1400
+ /**
1401
+ * Get a pod database
1402
+ */
1403
+ get(options) {
1404
+ return (options.client ?? this.client).get({
1405
+ url: "/api/pods/{podId}/databases/{id}",
1406
+ ...options,
1407
+ });
1408
+ }
1409
+ /**
1410
+ * Update a pod database
1411
+ */
1412
+ update(options) {
1413
+ return (options.client ?? this.client).patch({
1414
+ url: "/api/pods/{podId}/databases/{id}",
1415
+ ...options,
1416
+ headers: {
1417
+ "Content-Type": "application/json",
1418
+ ...options.headers,
1419
+ },
1420
+ });
1421
+ }
1422
+ /**
1423
+ * Archive a pod database, keeping its S3 replica restorable
1424
+ */
1425
+ archive(options) {
1426
+ return (options.client ?? this.client).post({
1427
+ url: "/api/pods/{podId}/databases/{id}/archive",
1428
+ ...options,
1429
+ });
1430
+ }
1431
+ }
1432
+ export class Artifact extends HeyApiClient {
1433
+ /**
1434
+ * List a pod's artifacts
1435
+ */
1436
+ list(options) {
1437
+ return (options.client ?? this.client).get({
1438
+ url: "/api/pods/{podId}/artifacts",
1439
+ ...options,
1440
+ });
1441
+ }
1442
+ /**
1443
+ * Create an artifact
1444
+ */
1445
+ create(options) {
1446
+ return (options.client ?? this.client).post({
1447
+ url: "/api/pods/{podId}/artifacts",
1448
+ ...options,
1449
+ headers: {
1450
+ "Content-Type": "application/json",
1451
+ ...options.headers,
1452
+ },
1453
+ });
1454
+ }
1455
+ /**
1456
+ * Get an artifact
1457
+ */
1458
+ get(options) {
1459
+ return (options.client ?? this.client).get({
1460
+ url: "/api/pods/{podId}/artifacts/{id}",
1461
+ ...options,
1462
+ });
1463
+ }
1464
+ /**
1465
+ * Update an artifact
1466
+ */
1467
+ update(options) {
1468
+ return (options.client ?? this.client).patch({
1469
+ url: "/api/pods/{podId}/artifacts/{id}",
1470
+ ...options,
1471
+ headers: {
1472
+ "Content-Type": "application/json",
1473
+ ...options.headers,
1474
+ },
1475
+ });
1476
+ }
1477
+ /**
1478
+ * Archive an artifact, keeping its S3 files as a backup
1479
+ */
1480
+ archive(options) {
1481
+ return (options.client ?? this.client).post({
1482
+ url: "/api/pods/{podId}/artifacts/{id}/archive",
1483
+ ...options,
1484
+ });
1485
+ }
1486
+ }
1303
1487
  export class Agent2 extends HeyApiClient {
1304
1488
  /**
1305
1489
  * List agents attached to a project
1490
+ *
1491
+ * Includes the auto-attached published "ren" meta agent (mode "all"), which project creation adds transactionally — it is present without any explicit project.agent.add call.
1306
1492
  */
1307
1493
  list(options) {
1308
1494
  return (options.client ?? this.client).get({
@@ -1312,6 +1498,8 @@ export class Agent2 extends HeyApiClient {
1312
1498
  }
1313
1499
  /**
1314
1500
  * Attach an agent to a project
1501
+ *
1502
+ * Attaches an agent as a new placement. Re-attaching an already attached agent is a 409 — use project.agent.update to change its pin or mode. Note: creating a project auto-attaches the published "ren" meta agent with mode "all", so it appears in project.agent.list without an explicit add.
1315
1503
  */
1316
1504
  add(options) {
1317
1505
  return (options.client ?? this.client).post({
@@ -1423,6 +1611,14 @@ export class Skill extends HeyApiClient {
1423
1611
  },
1424
1612
  });
1425
1613
  }
1614
+ /**
1615
+ * Resolve the one version served per skill in this project, with pin-conflict warnings
1616
+ *
1617
+ * The server resolves one version per skill per project — highest live version wins (decision 5). When a bound pin loses, it is reported here as a warning (never an error at bind time): a pin can lose later when someone publishes a newer version, so there is no request to reject at that moment.
1618
+ */
1619
+ resolution(options) {
1620
+ return (options.client ?? this.client).get({ url: "/api/projects/{id}/skills/resolution", ...options });
1621
+ }
1426
1622
  /**
1427
1623
  * Detach a skill from a project
1428
1624
  */
@@ -1697,6 +1893,22 @@ export class Replay extends HeyApiClient {
1697
1893
  });
1698
1894
  }
1699
1895
  }
1896
+ export class ResourceIcon extends HeyApiClient {
1897
+ /**
1898
+ * Upload a resource icon image
1899
+ */
1900
+ upload(options) {
1901
+ return (options.client ?? this.client).post({
1902
+ ...formDataBodySerializer,
1903
+ url: "/api/resource-icons",
1904
+ ...options,
1905
+ headers: {
1906
+ "Content-Type": null,
1907
+ ...options.headers,
1908
+ },
1909
+ });
1910
+ }
1911
+ }
1700
1912
  export class Messages extends HeyApiClient {
1701
1913
  /**
1702
1914
  * List a session's messages
@@ -1858,6 +2070,8 @@ export class Session extends HeyApiClient {
1858
2070
  export class Version2 extends HeyApiClient {
1859
2071
  /**
1860
2072
  * List skill versions
2073
+ *
2074
+ * Git-backed skills are versionless (GitHub owns their history) but expose one pointer row holding the git source; its version string is a placeholder, not a commit SHA.
1861
2075
  */
1862
2076
  list(options) {
1863
2077
  return (options.client ?? this.client).get({
@@ -1870,11 +2084,10 @@ export class Version2 extends HeyApiClient {
1870
2084
  */
1871
2085
  create(options) {
1872
2086
  return (options.client ?? this.client).post({
1873
- ...formDataBodySerializer,
1874
2087
  url: "/api/skills/{id}/versions",
1875
2088
  ...options,
1876
2089
  headers: {
1877
- "Content-Type": null,
2090
+ "Content-Type": "application/json",
1878
2091
  ...options.headers,
1879
2092
  },
1880
2093
  });
@@ -1909,7 +2122,7 @@ export class Version2 extends HeyApiClient {
1909
2122
  }
1910
2123
  export class Skill2 extends HeyApiClient {
1911
2124
  /**
1912
- * List skills
2125
+ * List and search skills
1913
2126
  */
1914
2127
  list(options) {
1915
2128
  return (options?.client ?? this.client).get({
@@ -1921,22 +2134,8 @@ export class Skill2 extends HeyApiClient {
1921
2134
  * Create a skill
1922
2135
  */
1923
2136
  create(options) {
1924
- return (options.client ?? this.client).post({
1925
- ...formDataBodySerializer,
1926
- url: "/api/skills",
1927
- ...options,
1928
- headers: {
1929
- "Content-Type": null,
1930
- ...options.headers,
1931
- },
1932
- });
1933
- }
1934
- /**
1935
- * Search skills across private, org, and published tiers
1936
- */
1937
- search(options) {
1938
2137
  return (options?.client ?? this.client).post({
1939
- url: "/api/skills/search",
2138
+ url: "/api/skills",
1940
2139
  ...options,
1941
2140
  headers: {
1942
2141
  "Content-Type": "application/json",
@@ -1945,20 +2144,11 @@ export class Skill2 extends HeyApiClient {
1945
2144
  });
1946
2145
  }
1947
2146
  /**
1948
- * Get a skill by slug
1949
- */
1950
- getBySlug(options) {
1951
- return (options.client ?? this.client).get({
1952
- url: "/api/skills/slug/{slug}",
1953
- ...options,
1954
- });
1955
- }
1956
- /**
1957
- * Get a skill
2147
+ * Get a skill by ID or slug
1958
2148
  */
1959
2149
  get(options) {
1960
2150
  return (options.client ?? this.client).get({
1961
- url: "/api/skills/{id}",
2151
+ url: "/api/skills/{idOrSlug}",
1962
2152
  ...options,
1963
2153
  });
1964
2154
  }
@@ -1986,6 +2176,8 @@ export class Skill2 extends HeyApiClient {
1986
2176
  }
1987
2177
  /**
1988
2178
  * Publish a skill
2179
+ *
2180
+ * Publishing changes copyability (the skill enters the registry), not materialisation: it does NOT fan out to sandboxes. A git-backed skill's repository must be publicly cloneable (decision 11).
1989
2181
  */
1990
2182
  publish(options) {
1991
2183
  return (options.client ?? this.client).post({
@@ -1995,6 +2187,8 @@ export class Skill2 extends HeyApiClient {
1995
2187
  }
1996
2188
  /**
1997
2189
  * Deprecate a skill
2190
+ *
2191
+ * Deprecation is an adoption signal only — it does NOT affect materialisation: sandboxes already tracking the skill keep receiving it. Use archive to remove a skill from sandboxes.
1998
2192
  */
1999
2193
  deprecate(options) {
2000
2194
  return (options.client ?? this.client).post({
@@ -2076,13 +2270,13 @@ export class TopologyShare extends HeyApiClient {
2076
2270
  return (options.client ?? this.client).post({ url: "/api/topology-shares/{id}/archive", ...options });
2077
2271
  }
2078
2272
  }
2079
- export class Trigger extends HeyApiClient {
2273
+ export class CronTrigger extends HeyApiClient {
2080
2274
  /**
2081
2275
  * List cron triggers in a project
2082
2276
  */
2083
2277
  list(options) {
2084
2278
  return (options.client ?? this.client).get({
2085
- url: "/api/triggers",
2279
+ url: "/api/projects/{projectId}/cron-triggers",
2086
2280
  ...options,
2087
2281
  });
2088
2282
  }
@@ -2090,12 +2284,12 @@ export class Trigger extends HeyApiClient {
2090
2284
  * Create a cron trigger
2091
2285
  */
2092
2286
  create(options) {
2093
- return (options?.client ?? this.client).post({
2094
- url: "/api/triggers",
2287
+ return (options.client ?? this.client).post({
2288
+ url: "/api/projects/{projectId}/cron-triggers",
2095
2289
  ...options,
2096
2290
  headers: {
2097
2291
  "Content-Type": "application/json",
2098
- ...options?.headers,
2292
+ ...options.headers,
2099
2293
  },
2100
2294
  });
2101
2295
  }
@@ -2104,7 +2298,7 @@ export class Trigger extends HeyApiClient {
2104
2298
  */
2105
2299
  get(options) {
2106
2300
  return (options.client ?? this.client).get({
2107
- url: "/api/triggers/{triggerId}",
2301
+ url: "/api/projects/{projectId}/cron-triggers/{triggerId}",
2108
2302
  ...options,
2109
2303
  });
2110
2304
  }
@@ -2113,7 +2307,7 @@ export class Trigger extends HeyApiClient {
2113
2307
  */
2114
2308
  update(options) {
2115
2309
  return (options.client ?? this.client).patch({
2116
- url: "/api/triggers/{triggerId}",
2310
+ url: "/api/projects/{projectId}/cron-triggers/{triggerId}",
2117
2311
  ...options,
2118
2312
  headers: {
2119
2313
  "Content-Type": "application/json",
@@ -2126,12 +2320,8 @@ export class Trigger extends HeyApiClient {
2126
2320
  */
2127
2321
  archive(options) {
2128
2322
  return (options.client ?? this.client).post({
2129
- url: "/api/triggers/{triggerId}/archive",
2323
+ url: "/api/projects/{projectId}/cron-triggers/{triggerId}/archive",
2130
2324
  ...options,
2131
- headers: {
2132
- "Content-Type": "application/json",
2133
- ...options.headers,
2134
- },
2135
2325
  });
2136
2326
  }
2137
2327
  }
@@ -2456,7 +2646,7 @@ export class Linear extends HeyApiClient {
2456
2646
  return (this._mappings ??= new Mappings2({ client: this.client }));
2457
2647
  }
2458
2648
  }
2459
- export class Vault2 extends HeyApiClient {
2649
+ export class Vault extends HeyApiClient {
2460
2650
  /**
2461
2651
  * List vaults
2462
2652
  */
@@ -2466,28 +2656,6 @@ export class Vault2 extends HeyApiClient {
2466
2656
  ...options,
2467
2657
  });
2468
2658
  }
2469
- /**
2470
- * Create a vault
2471
- */
2472
- create(options) {
2473
- return (options?.client ?? this.client).post({
2474
- url: "/api/vaults",
2475
- ...options,
2476
- headers: {
2477
- "Content-Type": "application/json",
2478
- ...options?.headers,
2479
- },
2480
- });
2481
- }
2482
- /**
2483
- * Delete a vault permanently
2484
- */
2485
- delete(options) {
2486
- return (options.client ?? this.client).delete({
2487
- url: "/api/vaults/{id}",
2488
- ...options,
2489
- });
2490
- }
2491
2659
  /**
2492
2660
  * Get a vault
2493
2661
  */
@@ -2497,36 +2665,14 @@ export class Vault2 extends HeyApiClient {
2497
2665
  ...options,
2498
2666
  });
2499
2667
  }
2500
- /**
2501
- * Update a vault (name, description)
2502
- */
2503
- update(options) {
2504
- return (options.client ?? this.client).patch({
2505
- url: "/api/vaults/{id}",
2506
- ...options,
2507
- headers: {
2508
- "Content-Type": "application/json",
2509
- ...options.headers,
2510
- },
2511
- });
2512
- }
2513
- /**
2514
- * Archive a vault
2515
- */
2516
- archive(options) {
2517
- return (options.client ?? this.client).post({
2518
- url: "/api/vaults/{id}/archive",
2519
- ...options,
2520
- });
2521
- }
2522
2668
  }
2523
- export class Oauth2 extends HeyApiClient {
2669
+ export class Oauth extends HeyApiClient {
2524
2670
  /**
2525
- * Begin SDK-delegated OAuth flow against an MCP
2671
+ * Start 'Sign in with X' for an MCP in this vault (or confirm it is already connected)
2526
2672
  */
2527
- start(options) {
2673
+ connect(options) {
2528
2674
  return (options.client ?? this.client).post({
2529
- url: "/api/vaults/{vaultId}/credentials/oauth/start",
2675
+ url: "/api/vaults/{vaultId}/oauth/connect",
2530
2676
  ...options,
2531
2677
  headers: {
2532
2678
  "Content-Type": "application/json",
@@ -2535,13 +2681,13 @@ export class Oauth2 extends HeyApiClient {
2535
2681
  });
2536
2682
  }
2537
2683
  /**
2538
- * Poll an OAuth session's status
2684
+ * Poll a sign-in session's status
2539
2685
  */
2540
2686
  session(options) {
2541
- return (options.client ?? this.client).get({ url: "/api/vaults/{vaultId}/oauth/sessions/{sessionId}", ...options });
2687
+ return (options.client ?? this.client).get({ url: "/api/vaults/oauth/sessions/{sessionId}", ...options });
2542
2688
  }
2543
2689
  }
2544
- export class Credential extends HeyApiClient {
2690
+ export class Credential2 extends HeyApiClient {
2545
2691
  /**
2546
2692
  * List credentials
2547
2693
  */
@@ -2595,15 +2741,6 @@ export class Credential extends HeyApiClient {
2595
2741
  },
2596
2742
  });
2597
2743
  }
2598
- /**
2599
- * Archive a credential
2600
- */
2601
- archive(options) {
2602
- return (options.client ?? this.client).post({
2603
- url: "/api/vaults/{vaultId}/credentials/{id}/archive",
2604
- ...options,
2605
- });
2606
- }
2607
2744
  /**
2608
2745
  * Copy or move a credential to another vault
2609
2746
  */
@@ -2619,7 +2756,7 @@ export class Credential extends HeyApiClient {
2619
2756
  }
2620
2757
  _oauth;
2621
2758
  get oauth() {
2622
- return (this._oauth ??= new Oauth2({ client: this.client }));
2759
+ return (this._oauth ??= new Oauth({ client: this.client }));
2623
2760
  }
2624
2761
  }
2625
2762
  export class Agent3 extends HeyApiClient {
@@ -2683,6 +2820,12 @@ export class Mcp3 extends HeyApiClient {
2683
2820
  }
2684
2821
  }
2685
2822
  export class Blueprint2 extends HeyApiClient {
2823
+ /**
2824
+ * List registry blueprints
2825
+ */
2826
+ list(options) {
2827
+ return (options?.client ?? this.client).get({ url: "/api/registry/blueprints", ...options });
2828
+ }
2686
2829
  /**
2687
2830
  * Get a registry blueprint by slug
2688
2831
  */
@@ -2697,6 +2840,30 @@ export class Publisher2 extends HeyApiClient {
2697
2840
  get(options) {
2698
2841
  return (options.client ?? this.client).get({ url: "/api/registry/publishers/{slug}", ...options });
2699
2842
  }
2843
+ /**
2844
+ * List a registry publisher's blueprints
2845
+ */
2846
+ blueprints(options) {
2847
+ return (options.client ?? this.client).get({ url: "/api/registry/publishers/{slug}/blueprints", ...options });
2848
+ }
2849
+ /**
2850
+ * List a registry publisher's skills
2851
+ */
2852
+ skills(options) {
2853
+ return (options.client ?? this.client).get({ url: "/api/registry/publishers/{slug}/skills", ...options });
2854
+ }
2855
+ /**
2856
+ * List a registry publisher's agents
2857
+ */
2858
+ agents(options) {
2859
+ return (options.client ?? this.client).get({ url: "/api/registry/publishers/{slug}/agents", ...options });
2860
+ }
2861
+ /**
2862
+ * List a registry publisher's MCPs
2863
+ */
2864
+ mcps(options) {
2865
+ return (options.client ?? this.client).get({ url: "/api/registry/publishers/{slug}/mcps", ...options });
2866
+ }
2700
2867
  }
2701
2868
  export class Files4 extends HeyApiClient {
2702
2869
  /**
@@ -2845,6 +3012,10 @@ export class RenClient extends HeyApiClient {
2845
3012
  get google() {
2846
3013
  return (this._google ??= new Google({ client: this.client }));
2847
3014
  }
3015
+ _oauthApp;
3016
+ get oauthApp() {
3017
+ return (this._oauthApp ??= new OauthApp({ client: this.client }));
3018
+ }
2848
3019
  _mcp;
2849
3020
  get mcp() {
2850
3021
  return (this._mcp ??= new Mcp({ client: this.client }));
@@ -2881,6 +3052,14 @@ export class RenClient extends HeyApiClient {
2881
3052
  get pod() {
2882
3053
  return (this._pod ??= new Pod({ client: this.client }));
2883
3054
  }
3055
+ _podDatabase;
3056
+ get podDatabase() {
3057
+ return (this._podDatabase ??= new PodDatabase({ client: this.client }));
3058
+ }
3059
+ _artifact;
3060
+ get artifact() {
3061
+ return (this._artifact ??= new Artifact({ client: this.client }));
3062
+ }
2884
3063
  _project;
2885
3064
  get project() {
2886
3065
  return (this._project ??= new Project({ client: this.client }));
@@ -2893,6 +3072,10 @@ export class RenClient extends HeyApiClient {
2893
3072
  get replay() {
2894
3073
  return (this._replay ??= new Replay({ client: this.client }));
2895
3074
  }
3075
+ _resourceIcon;
3076
+ get resourceIcon() {
3077
+ return (this._resourceIcon ??= new ResourceIcon({ client: this.client }));
3078
+ }
2896
3079
  _session;
2897
3080
  get session() {
2898
3081
  return (this._session ??= new Session({ client: this.client }));
@@ -2909,9 +3092,9 @@ export class RenClient extends HeyApiClient {
2909
3092
  get topologyShare() {
2910
3093
  return (this._topologyShare ??= new TopologyShare({ client: this.client }));
2911
3094
  }
2912
- _trigger;
2913
- get trigger() {
2914
- return (this._trigger ??= new Trigger({ client: this.client }));
3095
+ _cronTrigger;
3096
+ get cronTrigger() {
3097
+ return (this._cronTrigger ??= new CronTrigger({ client: this.client }));
2915
3098
  }
2916
3099
  _webhookTrigger;
2917
3100
  get webhookTrigger() {
@@ -2935,11 +3118,11 @@ export class RenClient extends HeyApiClient {
2935
3118
  }
2936
3119
  _vault;
2937
3120
  get vault() {
2938
- return (this._vault ??= new Vault2({ client: this.client }));
3121
+ return (this._vault ??= new Vault({ client: this.client }));
2939
3122
  }
2940
3123
  _credential;
2941
3124
  get credential() {
2942
- return (this._credential ??= new Credential({ client: this.client }));
3125
+ return (this._credential ??= new Credential2({ client: this.client }));
2943
3126
  }
2944
3127
  _registry;
2945
3128
  get registry() {