@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.
@@ -29,7 +29,7 @@ const createQueryKey = (id, options, infinite, tags) => {
29
29
  };
30
30
  export const agentListQueryKey = (options) => createQueryKey("agentList", options);
31
31
  /**
32
- * List agents
32
+ * List and search agents
33
33
  */
34
34
  export const agentListOptions = (options) => queryOptions({
35
35
  queryFn: async ({ queryKey, signal }) => {
@@ -73,7 +73,7 @@ const createInfiniteParams = (queryKey, page) => {
73
73
  };
74
74
  export const agentListInfiniteQueryKey = (options) => createQueryKey("agentList", options, true);
75
75
  /**
76
- * List agents
76
+ * List and search agents
77
77
  */
78
78
  export const agentListInfiniteOptions = (options) => infiniteQueryOptions(
79
79
  // @ts-ignore
@@ -114,41 +114,9 @@ export const agentCreateMutation = (options) => {
114
114
  };
115
115
  return mutationOptions;
116
116
  };
117
- /**
118
- * Search agents across private, org, and published tiers
119
- */
120
- export const agentSearchMutation = (options) => {
121
- const mutationOptions = {
122
- mutationFn: async (fnOptions) => {
123
- const { data } = await RenClient.__registry.get().agent.search({
124
- ...options,
125
- ...fnOptions,
126
- throwOnError: true,
127
- });
128
- return data;
129
- },
130
- };
131
- return mutationOptions;
132
- };
133
- export const agentGetBySlugQueryKey = (options) => createQueryKey("agentGetBySlug", options);
134
- /**
135
- * Get an agent by slug
136
- */
137
- export const agentGetBySlugOptions = (options) => queryOptions({
138
- queryFn: async ({ queryKey, signal }) => {
139
- const { data } = await RenClient.__registry.get().agent.getBySlug({
140
- ...options,
141
- ...queryKey[0],
142
- signal,
143
- throwOnError: true,
144
- });
145
- return data;
146
- },
147
- queryKey: agentGetBySlugQueryKey(options),
148
- });
149
117
  export const agentGetQueryKey = (options) => createQueryKey("agentGet", options);
150
118
  /**
151
- * Get an agent
119
+ * Get an agent by ID or slug
152
120
  */
153
121
  export const agentGetOptions = (options) => queryOptions({
154
122
  queryFn: async ({ queryKey, signal }) => {
@@ -335,6 +303,8 @@ export const agentVersionGetOptions = (options) => queryOptions({
335
303
  });
336
304
  /**
337
305
  * Archive an agent version
306
+ *
307
+ * 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.
338
308
  */
339
309
  export const agentVersionArchiveMutation = (options) => {
340
310
  const mutationOptions = {
@@ -861,6 +831,65 @@ export const environmentUpdateMutation = (options) => {
861
831
  };
862
832
  return mutationOptions;
863
833
  };
834
+ /**
835
+ * Start a custom template build for an environment
836
+ */
837
+ export const environmentBuildStartMutation = (options) => {
838
+ const mutationOptions = {
839
+ mutationFn: async (fnOptions) => {
840
+ const { data } = await RenClient.__registry.get().environment.build.start({
841
+ ...options,
842
+ ...fnOptions,
843
+ throwOnError: true,
844
+ });
845
+ return data;
846
+ },
847
+ };
848
+ return mutationOptions;
849
+ };
850
+ export const environmentBuildListQueryKey = (options) => createQueryKey("environmentBuildList", options);
851
+ /**
852
+ * List an environment's builds
853
+ */
854
+ export const environmentBuildListOptions = (options) => queryOptions({
855
+ queryFn: async ({ queryKey, signal }) => {
856
+ const { data } = await RenClient.__registry.get().environment.build.list({
857
+ ...options,
858
+ ...queryKey[0],
859
+ signal,
860
+ throwOnError: true,
861
+ });
862
+ return data;
863
+ },
864
+ queryKey: environmentBuildListQueryKey(options),
865
+ });
866
+ export const environmentBuildListInfiniteQueryKey = (options) => createQueryKey("environmentBuildList", options, true);
867
+ /**
868
+ * List an environment's builds
869
+ */
870
+ export const environmentBuildListInfiniteOptions = (options) => infiniteQueryOptions(
871
+ // @ts-ignore
872
+ {
873
+ queryFn: async ({ pageParam, queryKey, signal }) => {
874
+ // @ts-ignore
875
+ const page = typeof pageParam === "object"
876
+ ? pageParam
877
+ : {
878
+ query: {
879
+ offset: pageParam,
880
+ },
881
+ };
882
+ const params = createInfiniteParams(queryKey, page);
883
+ const { data } = await RenClient.__registry.get().environment.build.list({
884
+ ...options,
885
+ ...params,
886
+ signal,
887
+ throwOnError: true,
888
+ });
889
+ return data;
890
+ },
891
+ queryKey: environmentBuildListInfiniteQueryKey(options),
892
+ });
864
893
  /**
865
894
  * Archive an environment
866
895
  */
@@ -970,6 +999,8 @@ export const fileStoreUpdateMutation = (options) => {
970
999
  };
971
1000
  /**
972
1001
  * Archive a file store
1002
+ *
1003
+ * Archives the store metadata but keeps every stored object. Bytes remain recoverable until a retention sweep purges stores archived more than 30 days.
973
1004
  */
974
1005
  export const fileStoreArchiveMutation = (options) => {
975
1006
  const mutationOptions = {
@@ -986,6 +1017,8 @@ export const fileStoreArchiveMutation = (options) => {
986
1017
  };
987
1018
  /**
988
1019
  * Delete a file
1020
+ *
1021
+ * 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.
989
1022
  */
990
1023
  export const fileStoreFilesDeleteMutation = (options) => {
991
1024
  const mutationOptions = {
@@ -1003,6 +1036,8 @@ export const fileStoreFilesDeleteMutation = (options) => {
1003
1036
  export const fileStoreFilesListQueryKey = (options) => createQueryKey("fileStoreFilesList", options);
1004
1037
  /**
1005
1038
  * List files in a file store
1039
+ *
1040
+ * 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).
1006
1041
  */
1007
1042
  export const fileStoreFilesListOptions = (options) => queryOptions({
1008
1043
  queryFn: async ({ queryKey, signal }) => {
@@ -1019,6 +1054,8 @@ export const fileStoreFilesListOptions = (options) => queryOptions({
1019
1054
  export const fileStoreFilesPresignDownloadQueryKey = (options) => createQueryKey("fileStoreFilesPresignDownload", options);
1020
1055
  /**
1021
1056
  * Get a presigned GET URL for a file
1057
+ *
1058
+ * 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).
1022
1059
  */
1023
1060
  export const fileStoreFilesPresignDownloadOptions = (options) => queryOptions({
1024
1061
  queryFn: async ({ queryKey, signal }) => {
@@ -1034,6 +1071,8 @@ export const fileStoreFilesPresignDownloadOptions = (options) => queryOptions({
1034
1071
  });
1035
1072
  /**
1036
1073
  * Start a presigned upload
1074
+ *
1075
+ * 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.
1037
1076
  */
1038
1077
  export const fileStoreFilesStartUploadMutation = (options) => {
1039
1078
  const mutationOptions = {
@@ -1050,6 +1089,8 @@ export const fileStoreFilesStartUploadMutation = (options) => {
1050
1089
  };
1051
1090
  /**
1052
1091
  * Finalize an upload
1092
+ *
1093
+ * 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.
1053
1094
  */
1054
1095
  export const fileStoreFilesFinalizeUploadMutation = (options) => {
1055
1096
  const mutationOptions = {
@@ -1064,6 +1105,24 @@ export const fileStoreFilesFinalizeUploadMutation = (options) => {
1064
1105
  };
1065
1106
  return mutationOptions;
1066
1107
  };
1108
+ /**
1109
+ * Write a small file directly
1110
+ *
1111
+ * 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.
1112
+ */
1113
+ export const fileStoreFilesWriteContentMutation = (options) => {
1114
+ const mutationOptions = {
1115
+ mutationFn: async (fnOptions) => {
1116
+ const { data } = await RenClient.__registry.get().fileStore.files.writeContent({
1117
+ ...options,
1118
+ ...fnOptions,
1119
+ throwOnError: true,
1120
+ });
1121
+ return data;
1122
+ },
1123
+ };
1124
+ return mutationOptions;
1125
+ };
1067
1126
  export const invitationPreviewQueryKey = (options) => createQueryKey("invitationPreview", options);
1068
1127
  /**
1069
1128
  * Preview an organization invitation
@@ -1288,6 +1347,106 @@ export const googleConnectMutation = (options) => {
1288
1347
  };
1289
1348
  return mutationOptions;
1290
1349
  };
1350
+ export const oauthAppListQueryKey = (options) => createQueryKey("oauthAppList", options);
1351
+ /**
1352
+ * List the org's OAuth apps
1353
+ */
1354
+ export const oauthAppListOptions = (options) => queryOptions({
1355
+ queryFn: async ({ queryKey, signal }) => {
1356
+ const { data } = await RenClient.__registry.get().oauthApp.list({
1357
+ ...options,
1358
+ ...queryKey[0],
1359
+ signal,
1360
+ throwOnError: true,
1361
+ });
1362
+ return data;
1363
+ },
1364
+ queryKey: oauthAppListQueryKey(options),
1365
+ });
1366
+ /**
1367
+ * Register an OAuth app the org owns
1368
+ */
1369
+ export const oauthAppCreateMutation = (options) => {
1370
+ const mutationOptions = {
1371
+ mutationFn: async (fnOptions) => {
1372
+ const { data } = await RenClient.__registry.get().oauthApp.create({
1373
+ ...options,
1374
+ ...fnOptions,
1375
+ throwOnError: true,
1376
+ });
1377
+ return data;
1378
+ },
1379
+ };
1380
+ return mutationOptions;
1381
+ };
1382
+ export const oauthAppRedirectUriQueryKey = (options) => createQueryKey("oauthAppRedirectUri", options);
1383
+ /**
1384
+ * The redirect URI to register with an OAuth provider
1385
+ *
1386
+ * 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.
1387
+ */
1388
+ export const oauthAppRedirectUriOptions = (options) => queryOptions({
1389
+ queryFn: async ({ queryKey, signal }) => {
1390
+ const { data } = await RenClient.__registry.get().oauthApp.redirectUri({
1391
+ ...options,
1392
+ ...queryKey[0],
1393
+ signal,
1394
+ throwOnError: true,
1395
+ });
1396
+ return data;
1397
+ },
1398
+ queryKey: oauthAppRedirectUriQueryKey(options),
1399
+ });
1400
+ /**
1401
+ * Archive an OAuth app
1402
+ */
1403
+ export const oauthAppDeleteMutation = (options) => {
1404
+ const mutationOptions = {
1405
+ mutationFn: async (fnOptions) => {
1406
+ const { data } = await RenClient.__registry.get().oauthApp.delete({
1407
+ ...options,
1408
+ ...fnOptions,
1409
+ throwOnError: true,
1410
+ });
1411
+ return data;
1412
+ },
1413
+ };
1414
+ return mutationOptions;
1415
+ };
1416
+ /**
1417
+ * Update an OAuth app
1418
+ *
1419
+ * Renaming an app that MCP servers point at is refused unless ?force=true — they reference it by name.
1420
+ */
1421
+ export const oauthAppUpdateMutation = (options) => {
1422
+ const mutationOptions = {
1423
+ mutationFn: async (fnOptions) => {
1424
+ const { data } = await RenClient.__registry.get().oauthApp.update({
1425
+ ...options,
1426
+ ...fnOptions,
1427
+ throwOnError: true,
1428
+ });
1429
+ return data;
1430
+ },
1431
+ };
1432
+ return mutationOptions;
1433
+ };
1434
+ export const oauthAppUsageQueryKey = (options) => createQueryKey("oauthAppUsage", options);
1435
+ /**
1436
+ * List the MCP servers that point at this OAuth app
1437
+ */
1438
+ export const oauthAppUsageOptions = (options) => queryOptions({
1439
+ queryFn: async ({ queryKey, signal }) => {
1440
+ const { data } = await RenClient.__registry.get().oauthApp.usage({
1441
+ ...options,
1442
+ ...queryKey[0],
1443
+ signal,
1444
+ throwOnError: true,
1445
+ });
1446
+ return data;
1447
+ },
1448
+ queryKey: oauthAppUsageQueryKey(options),
1449
+ });
1291
1450
  export const mcpListQueryKey = (options) => createQueryKey("mcpList", options);
1292
1451
  /**
1293
1452
  * List MCPs
@@ -1491,38 +1650,6 @@ export const mcpUndeprecateMutation = (options) => {
1491
1650
  };
1492
1651
  return mutationOptions;
1493
1652
  };
1494
- /**
1495
- * Start OAuth for an MCP (or confirm it is already connected)
1496
- */
1497
- export const mcpOauthConnectMutation = (options) => {
1498
- const mutationOptions = {
1499
- mutationFn: async (fnOptions) => {
1500
- const { data } = await RenClient.__registry.get().mcp.oauth.connect({
1501
- ...options,
1502
- ...fnOptions,
1503
- throwOnError: true,
1504
- });
1505
- return data;
1506
- },
1507
- };
1508
- return mutationOptions;
1509
- };
1510
- export const mcpOauthSessionQueryKey = (options) => createQueryKey("mcpOauthSession", options);
1511
- /**
1512
- * Poll an MCP OAuth session status
1513
- */
1514
- export const mcpOauthSessionOptions = (options) => queryOptions({
1515
- queryFn: async ({ queryKey, signal }) => {
1516
- const { data } = await RenClient.__registry.get().mcp.oauth.session({
1517
- ...options,
1518
- ...queryKey[0],
1519
- signal,
1520
- throwOnError: true,
1521
- });
1522
- return data;
1523
- },
1524
- queryKey: mcpOauthSessionQueryKey(options),
1525
- });
1526
1653
  export const meGetQueryKey = (options) => createQueryKey("meGet", options);
1527
1654
  /**
1528
1655
  * Get the authenticated principal
@@ -1668,6 +1795,8 @@ export const memoryStoreUpdateMutation = (options) => {
1668
1795
  };
1669
1796
  /**
1670
1797
  * Archive a memory store
1798
+ *
1799
+ * Archives the store metadata but keeps every stored object. Bytes remain recoverable until a retention sweep purges stores archived more than 30 days.
1671
1800
  */
1672
1801
  export const memoryStoreArchiveMutation = (options) => {
1673
1802
  const mutationOptions = {
@@ -1684,6 +1813,8 @@ export const memoryStoreArchiveMutation = (options) => {
1684
1813
  };
1685
1814
  /**
1686
1815
  * Delete a file
1816
+ *
1817
+ * 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.
1687
1818
  */
1688
1819
  export const memoryStoreFilesDeleteMutation = (options) => {
1689
1820
  const mutationOptions = {
@@ -1701,6 +1832,8 @@ export const memoryStoreFilesDeleteMutation = (options) => {
1701
1832
  export const memoryStoreFilesListQueryKey = (options) => createQueryKey("memoryStoreFilesList", options);
1702
1833
  /**
1703
1834
  * List files in a memory store
1835
+ *
1836
+ * 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).
1704
1837
  */
1705
1838
  export const memoryStoreFilesListOptions = (options) => queryOptions({
1706
1839
  queryFn: async ({ queryKey, signal }) => {
@@ -1717,6 +1850,8 @@ export const memoryStoreFilesListOptions = (options) => queryOptions({
1717
1850
  export const memoryStoreFilesPresignDownloadQueryKey = (options) => createQueryKey("memoryStoreFilesPresignDownload", options);
1718
1851
  /**
1719
1852
  * Get a presigned GET URL for a file
1853
+ *
1854
+ * 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).
1720
1855
  */
1721
1856
  export const memoryStoreFilesPresignDownloadOptions = (options) => queryOptions({
1722
1857
  queryFn: async ({ queryKey, signal }) => {
@@ -1732,6 +1867,8 @@ export const memoryStoreFilesPresignDownloadOptions = (options) => queryOptions(
1732
1867
  });
1733
1868
  /**
1734
1869
  * Start a presigned upload
1870
+ *
1871
+ * 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.
1735
1872
  */
1736
1873
  export const memoryStoreFilesStartUploadMutation = (options) => {
1737
1874
  const mutationOptions = {
@@ -1748,6 +1885,8 @@ export const memoryStoreFilesStartUploadMutation = (options) => {
1748
1885
  };
1749
1886
  /**
1750
1887
  * Finalize an upload
1888
+ *
1889
+ * 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.
1751
1890
  */
1752
1891
  export const memoryStoreFilesFinalizeUploadMutation = (options) => {
1753
1892
  const mutationOptions = {
@@ -1762,6 +1901,24 @@ export const memoryStoreFilesFinalizeUploadMutation = (options) => {
1762
1901
  };
1763
1902
  return mutationOptions;
1764
1903
  };
1904
+ /**
1905
+ * Write a small file directly
1906
+ *
1907
+ * 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.
1908
+ */
1909
+ export const memoryStoreFilesWriteContentMutation = (options) => {
1910
+ const mutationOptions = {
1911
+ mutationFn: async (fnOptions) => {
1912
+ const { data } = await RenClient.__registry.get().memoryStore.files.writeContent({
1913
+ ...options,
1914
+ ...fnOptions,
1915
+ throwOnError: true,
1916
+ });
1917
+ return data;
1918
+ },
1919
+ };
1920
+ return mutationOptions;
1921
+ };
1765
1922
  export const modelListQueryKey = (options) => createQueryKey("modelList", options);
1766
1923
  /**
1767
1924
  * List available LLM models grouped by provider
@@ -2003,9 +2160,9 @@ export const podUpdateMutation = (options) => {
2003
2160
  };
2004
2161
  export const podUsageQueryKey = (options) => createQueryKey("podUsage", options);
2005
2162
  /**
2006
- * Get total credit usage for a pod
2163
+ * Get a pod's credit usage
2007
2164
  *
2008
- * Total Ren credits consumed across the whole pod, served from the local hourly usage rollup.
2165
+ * 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.
2009
2166
  */
2010
2167
  export const podUsageOptions = (options) => queryOptions({
2011
2168
  queryFn: async ({ queryKey, signal }) => {
@@ -2019,6 +2176,35 @@ export const podUsageOptions = (options) => queryOptions({
2019
2176
  },
2020
2177
  queryKey: podUsageQueryKey(options),
2021
2178
  });
2179
+ export const podUsageInfiniteQueryKey = (options) => createQueryKey("podUsage", options, true);
2180
+ /**
2181
+ * Get a pod's credit usage
2182
+ *
2183
+ * 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.
2184
+ */
2185
+ export const podUsageInfiniteOptions = (options) => infiniteQueryOptions(
2186
+ // @ts-ignore
2187
+ {
2188
+ queryFn: async ({ pageParam, queryKey, signal }) => {
2189
+ // @ts-ignore
2190
+ const page = typeof pageParam === "object"
2191
+ ? pageParam
2192
+ : {
2193
+ query: {
2194
+ start: pageParam,
2195
+ },
2196
+ };
2197
+ const params = createInfiniteParams(queryKey, page);
2198
+ const { data } = await RenClient.__registry.get().pod.usage({
2199
+ ...options,
2200
+ ...params,
2201
+ signal,
2202
+ throwOnError: true,
2203
+ });
2204
+ return data;
2205
+ },
2206
+ queryKey: podUsageInfiniteQueryKey(options),
2207
+ });
2022
2208
  /**
2023
2209
  * Archive a pod
2024
2210
  */
@@ -2083,13 +2269,15 @@ export const podMemberRemoveMutation = (options) => {
2083
2269
  };
2084
2270
  return mutationOptions;
2085
2271
  };
2086
- export const podVaultListQueryKey = (options) => createQueryKey("podVaultList", options);
2272
+ export const podCredentialListQueryKey = (options) => createQueryKey("podCredentialList", options);
2087
2273
  /**
2088
- * List pod vaults (ordered by priority)
2274
+ * List the credentials this pod resolves against, best match first
2275
+ *
2276
+ * 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.
2089
2277
  */
2090
- export const podVaultListOptions = (options) => queryOptions({
2278
+ export const podCredentialListOptions = (options) => queryOptions({
2091
2279
  queryFn: async ({ queryKey, signal }) => {
2092
- const { data } = await RenClient.__registry.get().pod.vault.list({
2280
+ const { data } = await RenClient.__registry.get().pod.credential.list({
2093
2281
  ...options,
2094
2282
  ...queryKey[0],
2095
2283
  signal,
@@ -2097,15 +2285,17 @@ export const podVaultListOptions = (options) => queryOptions({
2097
2285
  });
2098
2286
  return data;
2099
2287
  },
2100
- queryKey: podVaultListQueryKey(options),
2288
+ queryKey: podCredentialListQueryKey(options),
2101
2289
  });
2102
2290
  /**
2103
- * Add a vault to a pod
2291
+ * Kick off provisioning for the pod's sandbox
2292
+ *
2293
+ * Starts a durable workflow that resumes the paused sandbox or provisions a fresh one. Idempotent: concurrent calls join the running workflow. Returns immediately; poll GET /status until status is 'ready'.
2104
2294
  */
2105
- export const podVaultAddMutation = (options) => {
2295
+ export const podSandboxProvisionMutation = (options) => {
2106
2296
  const mutationOptions = {
2107
2297
  mutationFn: async (fnOptions) => {
2108
- const { data } = await RenClient.__registry.get().pod.vault.add({
2298
+ const { data } = await RenClient.__registry.get().pod.sandbox.provision({
2109
2299
  ...options,
2110
2300
  ...fnOptions,
2111
2301
  throwOnError: true,
@@ -2116,12 +2306,14 @@ export const podVaultAddMutation = (options) => {
2116
2306
  return mutationOptions;
2117
2307
  };
2118
2308
  /**
2119
- * Remove a vault from a pod
2309
+ * Destroy the pod's current sandbox
2310
+ *
2311
+ * Tears down the pod's current sandbox: aborts all running sessions and discards files not persisted to a store. Does not provision a replacement — the next session start (or POST /provision) brings up a fresh one.
2120
2312
  */
2121
- export const podVaultRemoveMutation = (options) => {
2313
+ export const podSandboxTeardownMutation = (options) => {
2122
2314
  const mutationOptions = {
2123
2315
  mutationFn: async (fnOptions) => {
2124
- const { data } = await RenClient.__registry.get().pod.vault.remove({
2316
+ const { data } = await RenClient.__registry.get().pod.sandbox.teardown({
2125
2317
  ...options,
2126
2318
  ...fnOptions,
2127
2319
  throwOnError: true,
@@ -2131,33 +2323,106 @@ export const podVaultRemoveMutation = (options) => {
2131
2323
  };
2132
2324
  return mutationOptions;
2133
2325
  };
2326
+ export const podSandboxStatusQueryKey = (options) => createQueryKey("podSandboxStatus", options);
2134
2327
  /**
2135
- * Kick off provisioning for the pod's sandbox
2328
+ * Read the pod's sandbox provisioning status
2136
2329
  *
2137
- * Starts a durable workflow that resumes the paused sandbox or provisions a fresh one. Idempotent: concurrent calls join the running workflow. Returns immediately; poll GET /status until status is 'ready'.
2330
+ * Returns 'ready' once the sandbox is provisioned/resumed and credentials are available; 'provisioning' while the workflow is in flight; 'absent' if no workflow has been started and no sandbox is linked; 'failed' if the workflow terminated unhealthy.
2138
2331
  */
2139
- export const podSandboxProvisionMutation = (options) => {
2140
- const mutationOptions = {
2141
- mutationFn: async (fnOptions) => {
2142
- const { data } = await RenClient.__registry.get().pod.sandbox.provision({
2143
- ...options,
2144
- ...fnOptions,
2145
- throwOnError: true,
2332
+ export const podSandboxStatusOptions = (options) => queryOptions({
2333
+ queryFn: async ({ queryKey, signal }) => {
2334
+ const { data } = await RenClient.__registry.get().pod.sandbox.status({
2335
+ ...options,
2336
+ ...queryKey[0],
2337
+ signal,
2338
+ throwOnError: true,
2339
+ });
2340
+ return data;
2341
+ },
2342
+ queryKey: podSandboxStatusQueryKey(options),
2343
+ });
2344
+ export const podDatabaseListQueryKey = (options) => createQueryKey("podDatabaseList", options);
2345
+ /**
2346
+ * List a pod's databases
2347
+ */
2348
+ export const podDatabaseListOptions = (options) => queryOptions({
2349
+ queryFn: async ({ queryKey, signal }) => {
2350
+ const { data } = await RenClient.__registry.get().podDatabase.list({
2351
+ ...options,
2352
+ ...queryKey[0],
2353
+ signal,
2354
+ throwOnError: true,
2355
+ });
2356
+ return data;
2357
+ },
2358
+ queryKey: podDatabaseListQueryKey(options),
2359
+ });
2360
+ export const podDatabaseListInfiniteQueryKey = (options) => createQueryKey("podDatabaseList", options, true);
2361
+ /**
2362
+ * List a pod's databases
2363
+ */
2364
+ export const podDatabaseListInfiniteOptions = (options) => infiniteQueryOptions(
2365
+ // @ts-ignore
2366
+ {
2367
+ queryFn: async ({ pageParam, queryKey, signal }) => {
2368
+ // @ts-ignore
2369
+ const page = typeof pageParam === "object"
2370
+ ? pageParam
2371
+ : {
2372
+ query: {
2373
+ offset: pageParam,
2374
+ },
2375
+ };
2376
+ const params = createInfiniteParams(queryKey, page);
2377
+ const { data } = await RenClient.__registry.get().podDatabase.list({
2378
+ ...options,
2379
+ ...params,
2380
+ signal,
2381
+ throwOnError: true,
2382
+ });
2383
+ return data;
2384
+ },
2385
+ queryKey: podDatabaseListInfiniteQueryKey(options),
2386
+ });
2387
+ /**
2388
+ * Create a pod database
2389
+ */
2390
+ export const podDatabaseCreateMutation = (options) => {
2391
+ const mutationOptions = {
2392
+ mutationFn: async (fnOptions) => {
2393
+ const { data } = await RenClient.__registry.get().podDatabase.create({
2394
+ ...options,
2395
+ ...fnOptions,
2396
+ throwOnError: true,
2146
2397
  });
2147
2398
  return data;
2148
2399
  },
2149
2400
  };
2150
2401
  return mutationOptions;
2151
2402
  };
2403
+ export const podDatabaseGetQueryKey = (options) => createQueryKey("podDatabaseGet", options);
2152
2404
  /**
2153
- * Destroy the pod's current sandbox
2154
- *
2155
- * Tears down the pod's current sandbox: aborts all running sessions and discards files not persisted to a store. Does not provision a replacement — the next session start (or POST /provision) brings up a fresh one.
2405
+ * Get a pod database
2156
2406
  */
2157
- export const podSandboxTeardownMutation = (options) => {
2407
+ export const podDatabaseGetOptions = (options) => queryOptions({
2408
+ queryFn: async ({ queryKey, signal }) => {
2409
+ const { data } = await RenClient.__registry.get().podDatabase.get({
2410
+ ...options,
2411
+ ...queryKey[0],
2412
+ signal,
2413
+ throwOnError: true,
2414
+ });
2415
+ return data;
2416
+ },
2417
+ queryKey: podDatabaseGetQueryKey(options),
2418
+ });
2419
+ /**
2420
+ * Update a pod database
2421
+ */
2422
+ export const podDatabaseUpdateMutation = (options) => {
2158
2423
  const mutationOptions = {
2159
2424
  mutationFn: async (fnOptions) => {
2160
- const { data } = await RenClient.__registry.get().pod.sandbox.teardown({
2425
+ const { data } = await RenClient.__registry.get().podDatabase.update({
2161
2426
  ...options,
2162
2427
  ...fnOptions,
2163
2428
  throwOnError: true,
@@ -2167,15 +2432,29 @@ export const podSandboxTeardownMutation = (options) => {
2167
2432
  };
2168
2433
  return mutationOptions;
2169
2434
  };
2170
- export const podSandboxStatusQueryKey = (options) => createQueryKey("podSandboxStatus", options);
2171
2435
  /**
2172
- * Read the pod's sandbox provisioning status
2173
- *
2174
- * Returns 'ready' once the sandbox is provisioned/resumed and credentials are available; 'provisioning' while the workflow is in flight; 'absent' if no workflow has been started and no sandbox is linked; 'failed' if the workflow terminated unhealthy.
2436
+ * Archive a pod database, keeping its S3 replica restorable
2175
2437
  */
2176
- export const podSandboxStatusOptions = (options) => queryOptions({
2438
+ export const podDatabaseArchiveMutation = (options) => {
2439
+ const mutationOptions = {
2440
+ mutationFn: async (fnOptions) => {
2441
+ const { data } = await RenClient.__registry.get().podDatabase.archive({
2442
+ ...options,
2443
+ ...fnOptions,
2444
+ throwOnError: true,
2445
+ });
2446
+ return data;
2447
+ },
2448
+ };
2449
+ return mutationOptions;
2450
+ };
2451
+ export const artifactListQueryKey = (options) => createQueryKey("artifactList", options);
2452
+ /**
2453
+ * List a pod's artifacts
2454
+ */
2455
+ export const artifactListOptions = (options) => queryOptions({
2177
2456
  queryFn: async ({ queryKey, signal }) => {
2178
- const { data } = await RenClient.__registry.get().pod.sandbox.status({
2457
+ const { data } = await RenClient.__registry.get().artifact.list({
2179
2458
  ...options,
2180
2459
  ...queryKey[0],
2181
2460
  signal,
@@ -2183,8 +2462,99 @@ export const podSandboxStatusOptions = (options) => queryOptions({
2183
2462
  });
2184
2463
  return data;
2185
2464
  },
2186
- queryKey: podSandboxStatusQueryKey(options),
2465
+ queryKey: artifactListQueryKey(options),
2466
+ });
2467
+ export const artifactListInfiniteQueryKey = (options) => createQueryKey("artifactList", options, true);
2468
+ /**
2469
+ * List a pod's artifacts
2470
+ */
2471
+ export const artifactListInfiniteOptions = (options) => infiniteQueryOptions(
2472
+ // @ts-ignore
2473
+ {
2474
+ queryFn: async ({ pageParam, queryKey, signal }) => {
2475
+ // @ts-ignore
2476
+ const page = typeof pageParam === "object"
2477
+ ? pageParam
2478
+ : {
2479
+ query: {
2480
+ offset: pageParam,
2481
+ },
2482
+ };
2483
+ const params = createInfiniteParams(queryKey, page);
2484
+ const { data } = await RenClient.__registry.get().artifact.list({
2485
+ ...options,
2486
+ ...params,
2487
+ signal,
2488
+ throwOnError: true,
2489
+ });
2490
+ return data;
2491
+ },
2492
+ queryKey: artifactListInfiniteQueryKey(options),
2187
2493
  });
2494
+ /**
2495
+ * Create an artifact
2496
+ */
2497
+ export const artifactCreateMutation = (options) => {
2498
+ const mutationOptions = {
2499
+ mutationFn: async (fnOptions) => {
2500
+ const { data } = await RenClient.__registry.get().artifact.create({
2501
+ ...options,
2502
+ ...fnOptions,
2503
+ throwOnError: true,
2504
+ });
2505
+ return data;
2506
+ },
2507
+ };
2508
+ return mutationOptions;
2509
+ };
2510
+ export const artifactGetQueryKey = (options) => createQueryKey("artifactGet", options);
2511
+ /**
2512
+ * Get an artifact
2513
+ */
2514
+ export const artifactGetOptions = (options) => queryOptions({
2515
+ queryFn: async ({ queryKey, signal }) => {
2516
+ const { data } = await RenClient.__registry.get().artifact.get({
2517
+ ...options,
2518
+ ...queryKey[0],
2519
+ signal,
2520
+ throwOnError: true,
2521
+ });
2522
+ return data;
2523
+ },
2524
+ queryKey: artifactGetQueryKey(options),
2525
+ });
2526
+ /**
2527
+ * Update an artifact
2528
+ */
2529
+ export const artifactUpdateMutation = (options) => {
2530
+ const mutationOptions = {
2531
+ mutationFn: async (fnOptions) => {
2532
+ const { data } = await RenClient.__registry.get().artifact.update({
2533
+ ...options,
2534
+ ...fnOptions,
2535
+ throwOnError: true,
2536
+ });
2537
+ return data;
2538
+ },
2539
+ };
2540
+ return mutationOptions;
2541
+ };
2542
+ /**
2543
+ * Archive an artifact, keeping its S3 files as a backup
2544
+ */
2545
+ export const artifactArchiveMutation = (options) => {
2546
+ const mutationOptions = {
2547
+ mutationFn: async (fnOptions) => {
2548
+ const { data } = await RenClient.__registry.get().artifact.archive({
2549
+ ...options,
2550
+ ...fnOptions,
2551
+ throwOnError: true,
2552
+ });
2553
+ return data;
2554
+ },
2555
+ };
2556
+ return mutationOptions;
2557
+ };
2188
2558
  export const projectListQueryKey = (options) => createQueryKey("projectList", options);
2189
2559
  /**
2190
2560
  * List projects
@@ -2326,6 +2696,8 @@ export const projectUsageInfiniteOptions = (options) => infiniteQueryOptions(
2326
2696
  export const projectAgentListQueryKey = (options) => createQueryKey("projectAgentList", options);
2327
2697
  /**
2328
2698
  * List agents attached to a project
2699
+ *
2700
+ * 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.
2329
2701
  */
2330
2702
  export const projectAgentListOptions = (options) => queryOptions({
2331
2703
  queryFn: async ({ queryKey, signal }) => {
@@ -2341,6 +2713,8 @@ export const projectAgentListOptions = (options) => queryOptions({
2341
2713
  });
2342
2714
  /**
2343
2715
  * Attach an agent to a project
2716
+ *
2717
+ * 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.
2344
2718
  */
2345
2719
  export const projectAgentAddMutation = (options) => {
2346
2720
  const mutationOptions = {
@@ -2515,6 +2889,24 @@ export const projectSkillAddMutation = (options) => {
2515
2889
  };
2516
2890
  return mutationOptions;
2517
2891
  };
2892
+ export const projectSkillResolutionQueryKey = (options) => createQueryKey("projectSkillResolution", options);
2893
+ /**
2894
+ * Resolve the one version served per skill in this project, with pin-conflict warnings
2895
+ *
2896
+ * 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.
2897
+ */
2898
+ export const projectSkillResolutionOptions = (options) => queryOptions({
2899
+ queryFn: async ({ queryKey, signal }) => {
2900
+ const { data } = await RenClient.__registry.get().project.skill.resolution({
2901
+ ...options,
2902
+ ...queryKey[0],
2903
+ signal,
2904
+ throwOnError: true,
2905
+ });
2906
+ return data;
2907
+ },
2908
+ queryKey: projectSkillResolutionQueryKey(options),
2909
+ });
2518
2910
  /**
2519
2911
  * Detach a skill from a project
2520
2912
  */
@@ -2830,6 +3222,22 @@ export const replayShareMutation = (options) => {
2830
3222
  };
2831
3223
  return mutationOptions;
2832
3224
  };
3225
+ /**
3226
+ * Upload a resource icon image
3227
+ */
3228
+ export const resourceIconUploadMutation = (options) => {
3229
+ const mutationOptions = {
3230
+ mutationFn: async (fnOptions) => {
3231
+ const { data } = await RenClient.__registry.get().resourceIcon.upload({
3232
+ ...options,
3233
+ ...fnOptions,
3234
+ throwOnError: true,
3235
+ });
3236
+ return data;
3237
+ },
3238
+ };
3239
+ return mutationOptions;
3240
+ };
2833
3241
  export const sessionListQueryKey = (options) => createQueryKey("sessionList", options);
2834
3242
  /**
2835
3243
  * List sessions
@@ -3104,7 +3512,7 @@ export const sessionFilesPresignDownloadMutation = (options) => {
3104
3512
  };
3105
3513
  export const skillListQueryKey = (options) => createQueryKey("skillList", options);
3106
3514
  /**
3107
- * List skills
3515
+ * List and search skills
3108
3516
  */
3109
3517
  export const skillListOptions = (options) => queryOptions({
3110
3518
  queryFn: async ({ queryKey, signal }) => {
@@ -3120,7 +3528,7 @@ export const skillListOptions = (options) => queryOptions({
3120
3528
  });
3121
3529
  export const skillListInfiniteQueryKey = (options) => createQueryKey("skillList", options, true);
3122
3530
  /**
3123
- * List skills
3531
+ * List and search skills
3124
3532
  */
3125
3533
  export const skillListInfiniteOptions = (options) => infiniteQueryOptions(
3126
3534
  // @ts-ignore
@@ -3161,41 +3569,9 @@ export const skillCreateMutation = (options) => {
3161
3569
  };
3162
3570
  return mutationOptions;
3163
3571
  };
3164
- /**
3165
- * Search skills across private, org, and published tiers
3166
- */
3167
- export const skillSearchMutation = (options) => {
3168
- const mutationOptions = {
3169
- mutationFn: async (fnOptions) => {
3170
- const { data } = await RenClient.__registry.get().skill.search({
3171
- ...options,
3172
- ...fnOptions,
3173
- throwOnError: true,
3174
- });
3175
- return data;
3176
- },
3177
- };
3178
- return mutationOptions;
3179
- };
3180
- export const skillGetBySlugQueryKey = (options) => createQueryKey("skillGetBySlug", options);
3181
- /**
3182
- * Get a skill by slug
3183
- */
3184
- export const skillGetBySlugOptions = (options) => queryOptions({
3185
- queryFn: async ({ queryKey, signal }) => {
3186
- const { data } = await RenClient.__registry.get().skill.getBySlug({
3187
- ...options,
3188
- ...queryKey[0],
3189
- signal,
3190
- throwOnError: true,
3191
- });
3192
- return data;
3193
- },
3194
- queryKey: skillGetBySlugQueryKey(options),
3195
- });
3196
3572
  export const skillGetQueryKey = (options) => createQueryKey("skillGet", options);
3197
3573
  /**
3198
- * Get a skill
3574
+ * Get a skill by ID or slug
3199
3575
  */
3200
3576
  export const skillGetOptions = (options) => queryOptions({
3201
3577
  queryFn: async ({ queryKey, signal }) => {
@@ -3243,6 +3619,8 @@ export const skillArchiveMutation = (options) => {
3243
3619
  };
3244
3620
  /**
3245
3621
  * Publish a skill
3622
+ *
3623
+ * 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).
3246
3624
  */
3247
3625
  export const skillPublishMutation = (options) => {
3248
3626
  const mutationOptions = {
@@ -3259,6 +3637,8 @@ export const skillPublishMutation = (options) => {
3259
3637
  };
3260
3638
  /**
3261
3639
  * Deprecate a skill
3640
+ *
3641
+ * 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.
3262
3642
  */
3263
3643
  export const skillDeprecateMutation = (options) => {
3264
3644
  const mutationOptions = {
@@ -3324,6 +3704,8 @@ export const skillPromoteMutation = (options) => {
3324
3704
  export const skillVersionListQueryKey = (options) => createQueryKey("skillVersionList", options);
3325
3705
  /**
3326
3706
  * List skill versions
3707
+ *
3708
+ * 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.
3327
3709
  */
3328
3710
  export const skillVersionListOptions = (options) => queryOptions({
3329
3711
  queryFn: async ({ queryKey, signal }) => {
@@ -3340,6 +3722,8 @@ export const skillVersionListOptions = (options) => queryOptions({
3340
3722
  export const skillVersionListInfiniteQueryKey = (options) => createQueryKey("skillVersionList", options, true);
3341
3723
  /**
3342
3724
  * List skill versions
3725
+ *
3726
+ * 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.
3343
3727
  */
3344
3728
  export const skillVersionListInfiniteOptions = (options) => infiniteQueryOptions(
3345
3729
  // @ts-ignore
@@ -3519,13 +3903,13 @@ export const topologyShareArchiveMutation = (options) => {
3519
3903
  };
3520
3904
  return mutationOptions;
3521
3905
  };
3522
- export const triggerListQueryKey = (options) => createQueryKey("triggerList", options);
3906
+ export const cronTriggerListQueryKey = (options) => createQueryKey("cronTriggerList", options);
3523
3907
  /**
3524
3908
  * List cron triggers in a project
3525
3909
  */
3526
- export const triggerListOptions = (options) => queryOptions({
3910
+ export const cronTriggerListOptions = (options) => queryOptions({
3527
3911
  queryFn: async ({ queryKey, signal }) => {
3528
- const { data } = await RenClient.__registry.get().trigger.list({
3912
+ const { data } = await RenClient.__registry.get().cronTrigger.list({
3529
3913
  ...options,
3530
3914
  ...queryKey[0],
3531
3915
  signal,
@@ -3533,13 +3917,13 @@ export const triggerListOptions = (options) => queryOptions({
3533
3917
  });
3534
3918
  return data;
3535
3919
  },
3536
- queryKey: triggerListQueryKey(options),
3920
+ queryKey: cronTriggerListQueryKey(options),
3537
3921
  });
3538
- export const triggerListInfiniteQueryKey = (options) => createQueryKey("triggerList", options, true);
3922
+ export const cronTriggerListInfiniteQueryKey = (options) => createQueryKey("cronTriggerList", options, true);
3539
3923
  /**
3540
3924
  * List cron triggers in a project
3541
3925
  */
3542
- export const triggerListInfiniteOptions = (options) => infiniteQueryOptions(
3926
+ export const cronTriggerListInfiniteOptions = (options) => infiniteQueryOptions(
3543
3927
  // @ts-ignore
3544
3928
  {
3545
3929
  queryFn: async ({ pageParam, queryKey, signal }) => {
@@ -3552,7 +3936,7 @@ export const triggerListInfiniteOptions = (options) => infiniteQueryOptions(
3552
3936
  },
3553
3937
  };
3554
3938
  const params = createInfiniteParams(queryKey, page);
3555
- const { data } = await RenClient.__registry.get().trigger.list({
3939
+ const { data } = await RenClient.__registry.get().cronTrigger.list({
3556
3940
  ...options,
3557
3941
  ...params,
3558
3942
  signal,
@@ -3560,15 +3944,15 @@ export const triggerListInfiniteOptions = (options) => infiniteQueryOptions(
3560
3944
  });
3561
3945
  return data;
3562
3946
  },
3563
- queryKey: triggerListInfiniteQueryKey(options),
3947
+ queryKey: cronTriggerListInfiniteQueryKey(options),
3564
3948
  });
3565
3949
  /**
3566
3950
  * Create a cron trigger
3567
3951
  */
3568
- export const triggerCreateMutation = (options) => {
3952
+ export const cronTriggerCreateMutation = (options) => {
3569
3953
  const mutationOptions = {
3570
3954
  mutationFn: async (fnOptions) => {
3571
- const { data } = await RenClient.__registry.get().trigger.create({
3955
+ const { data } = await RenClient.__registry.get().cronTrigger.create({
3572
3956
  ...options,
3573
3957
  ...fnOptions,
3574
3958
  throwOnError: true,
@@ -3578,13 +3962,13 @@ export const triggerCreateMutation = (options) => {
3578
3962
  };
3579
3963
  return mutationOptions;
3580
3964
  };
3581
- export const triggerGetQueryKey = (options) => createQueryKey("triggerGet", options);
3965
+ export const cronTriggerGetQueryKey = (options) => createQueryKey("cronTriggerGet", options);
3582
3966
  /**
3583
3967
  * Get a cron trigger
3584
3968
  */
3585
- export const triggerGetOptions = (options) => queryOptions({
3969
+ export const cronTriggerGetOptions = (options) => queryOptions({
3586
3970
  queryFn: async ({ queryKey, signal }) => {
3587
- const { data } = await RenClient.__registry.get().trigger.get({
3971
+ const { data } = await RenClient.__registry.get().cronTrigger.get({
3588
3972
  ...options,
3589
3973
  ...queryKey[0],
3590
3974
  signal,
@@ -3592,15 +3976,15 @@ export const triggerGetOptions = (options) => queryOptions({
3592
3976
  });
3593
3977
  return data;
3594
3978
  },
3595
- queryKey: triggerGetQueryKey(options),
3979
+ queryKey: cronTriggerGetQueryKey(options),
3596
3980
  });
3597
3981
  /**
3598
3982
  * Update a cron trigger
3599
3983
  */
3600
- export const triggerUpdateMutation = (options) => {
3984
+ export const cronTriggerUpdateMutation = (options) => {
3601
3985
  const mutationOptions = {
3602
3986
  mutationFn: async (fnOptions) => {
3603
- const { data } = await RenClient.__registry.get().trigger.update({
3987
+ const { data } = await RenClient.__registry.get().cronTrigger.update({
3604
3988
  ...options,
3605
3989
  ...fnOptions,
3606
3990
  throwOnError: true,
@@ -3613,10 +3997,10 @@ export const triggerUpdateMutation = (options) => {
3613
3997
  /**
3614
3998
  * Archive a cron trigger
3615
3999
  */
3616
- export const triggerArchiveMutation = (options) => {
4000
+ export const cronTriggerArchiveMutation = (options) => {
3617
4001
  const mutationOptions = {
3618
4002
  mutationFn: async (fnOptions) => {
3619
- const { data } = await RenClient.__registry.get().trigger.archive({
4003
+ const { data } = await RenClient.__registry.get().cronTrigger.archive({
3620
4004
  ...options,
3621
4005
  ...fnOptions,
3622
4006
  throwOnError: true,
@@ -4160,38 +4544,6 @@ export const vaultListInfiniteOptions = (options) => infiniteQueryOptions(
4160
4544
  },
4161
4545
  queryKey: vaultListInfiniteQueryKey(options),
4162
4546
  });
4163
- /**
4164
- * Create a vault
4165
- */
4166
- export const vaultCreateMutation = (options) => {
4167
- const mutationOptions = {
4168
- mutationFn: async (fnOptions) => {
4169
- const { data } = await RenClient.__registry.get().vault.create({
4170
- ...options,
4171
- ...fnOptions,
4172
- throwOnError: true,
4173
- });
4174
- return data;
4175
- },
4176
- };
4177
- return mutationOptions;
4178
- };
4179
- /**
4180
- * Delete a vault permanently
4181
- */
4182
- export const vaultDeleteMutation = (options) => {
4183
- const mutationOptions = {
4184
- mutationFn: async (fnOptions) => {
4185
- const { data } = await RenClient.__registry.get().vault.delete({
4186
- ...options,
4187
- ...fnOptions,
4188
- throwOnError: true,
4189
- });
4190
- return data;
4191
- },
4192
- };
4193
- return mutationOptions;
4194
- };
4195
4547
  export const vaultGetQueryKey = (options) => createQueryKey("vaultGet", options);
4196
4548
  /**
4197
4549
  * Get a vault
@@ -4208,38 +4560,6 @@ export const vaultGetOptions = (options) => queryOptions({
4208
4560
  },
4209
4561
  queryKey: vaultGetQueryKey(options),
4210
4562
  });
4211
- /**
4212
- * Update a vault (name, description)
4213
- */
4214
- export const vaultUpdateMutation = (options) => {
4215
- const mutationOptions = {
4216
- mutationFn: async (fnOptions) => {
4217
- const { data } = await RenClient.__registry.get().vault.update({
4218
- ...options,
4219
- ...fnOptions,
4220
- throwOnError: true,
4221
- });
4222
- return data;
4223
- },
4224
- };
4225
- return mutationOptions;
4226
- };
4227
- /**
4228
- * Archive a vault
4229
- */
4230
- export const vaultArchiveMutation = (options) => {
4231
- const mutationOptions = {
4232
- mutationFn: async (fnOptions) => {
4233
- const { data } = await RenClient.__registry.get().vault.archive({
4234
- ...options,
4235
- ...fnOptions,
4236
- throwOnError: true,
4237
- });
4238
- return data;
4239
- },
4240
- };
4241
- return mutationOptions;
4242
- };
4243
4563
  export const credentialListQueryKey = (options) => createQueryKey("credentialList", options);
4244
4564
  /**
4245
4565
  * List credentials
@@ -4347,22 +4667,6 @@ export const credentialUpdateMutation = (options) => {
4347
4667
  };
4348
4668
  return mutationOptions;
4349
4669
  };
4350
- /**
4351
- * Archive a credential
4352
- */
4353
- export const credentialArchiveMutation = (options) => {
4354
- const mutationOptions = {
4355
- mutationFn: async (fnOptions) => {
4356
- const { data } = await RenClient.__registry.get().credential.archive({
4357
- ...options,
4358
- ...fnOptions,
4359
- throwOnError: true,
4360
- });
4361
- return data;
4362
- },
4363
- };
4364
- return mutationOptions;
4365
- };
4366
4670
  /**
4367
4671
  * Copy or move a credential to another vault
4368
4672
  */
@@ -4380,12 +4684,12 @@ export const credentialTransferMutation = (options) => {
4380
4684
  return mutationOptions;
4381
4685
  };
4382
4686
  /**
4383
- * Begin SDK-delegated OAuth flow against an MCP
4687
+ * Start 'Sign in with X' for an MCP in this vault (or confirm it is already connected)
4384
4688
  */
4385
- export const credentialOauthStartMutation = (options) => {
4689
+ export const credentialOauthConnectMutation = (options) => {
4386
4690
  const mutationOptions = {
4387
4691
  mutationFn: async (fnOptions) => {
4388
- const { data } = await RenClient.__registry.get().credential.oauth.start({
4692
+ const { data } = await RenClient.__registry.get().credential.oauth.connect({
4389
4693
  ...options,
4390
4694
  ...fnOptions,
4391
4695
  throwOnError: true,
@@ -4397,7 +4701,7 @@ export const credentialOauthStartMutation = (options) => {
4397
4701
  };
4398
4702
  export const credentialOauthSessionQueryKey = (options) => createQueryKey("credentialOauthSession", options);
4399
4703
  /**
4400
- * Poll an OAuth session's status
4704
+ * Poll a sign-in session's status
4401
4705
  */
4402
4706
  export const credentialOauthSessionOptions = (options) => queryOptions({
4403
4707
  queryFn: async ({ queryKey, signal }) => {
@@ -4588,6 +4892,49 @@ export const registryMcpGetOptions = (options) => queryOptions({
4588
4892
  },
4589
4893
  queryKey: registryMcpGetQueryKey(options),
4590
4894
  });
4895
+ export const registryBlueprintListQueryKey = (options) => createQueryKey("registryBlueprintList", options);
4896
+ /**
4897
+ * List registry blueprints
4898
+ */
4899
+ export const registryBlueprintListOptions = (options) => queryOptions({
4900
+ queryFn: async ({ queryKey, signal }) => {
4901
+ const { data } = await RenClient.__registry.get().registry.blueprint.list({
4902
+ ...options,
4903
+ ...queryKey[0],
4904
+ signal,
4905
+ throwOnError: true,
4906
+ });
4907
+ return data;
4908
+ },
4909
+ queryKey: registryBlueprintListQueryKey(options),
4910
+ });
4911
+ export const registryBlueprintListInfiniteQueryKey = (options) => createQueryKey("registryBlueprintList", options, true);
4912
+ /**
4913
+ * List registry blueprints
4914
+ */
4915
+ export const registryBlueprintListInfiniteOptions = (options) => infiniteQueryOptions(
4916
+ // @ts-ignore
4917
+ {
4918
+ queryFn: async ({ pageParam, queryKey, signal }) => {
4919
+ // @ts-ignore
4920
+ const page = typeof pageParam === "object"
4921
+ ? pageParam
4922
+ : {
4923
+ query: {
4924
+ offset: pageParam,
4925
+ },
4926
+ };
4927
+ const params = createInfiniteParams(queryKey, page);
4928
+ const { data } = await RenClient.__registry.get().registry.blueprint.list({
4929
+ ...options,
4930
+ ...params,
4931
+ signal,
4932
+ throwOnError: true,
4933
+ });
4934
+ return data;
4935
+ },
4936
+ queryKey: registryBlueprintListInfiniteQueryKey(options),
4937
+ });
4591
4938
  export const registryBlueprintGetQueryKey = (options) => createQueryKey("registryBlueprintGet", options);
4592
4939
  /**
4593
4940
  * Get a registry blueprint by slug
@@ -4620,6 +4967,178 @@ export const registryPublisherGetOptions = (options) => queryOptions({
4620
4967
  },
4621
4968
  queryKey: registryPublisherGetQueryKey(options),
4622
4969
  });
4970
+ export const registryPublisherBlueprintsQueryKey = (options) => createQueryKey("registryPublisherBlueprints", options);
4971
+ /**
4972
+ * List a registry publisher's blueprints
4973
+ */
4974
+ export const registryPublisherBlueprintsOptions = (options) => queryOptions({
4975
+ queryFn: async ({ queryKey, signal }) => {
4976
+ const { data } = await RenClient.__registry.get().registry.publisher.blueprints({
4977
+ ...options,
4978
+ ...queryKey[0],
4979
+ signal,
4980
+ throwOnError: true,
4981
+ });
4982
+ return data;
4983
+ },
4984
+ queryKey: registryPublisherBlueprintsQueryKey(options),
4985
+ });
4986
+ export const registryPublisherBlueprintsInfiniteQueryKey = (options) => createQueryKey("registryPublisherBlueprints", options, true);
4987
+ /**
4988
+ * List a registry publisher's blueprints
4989
+ */
4990
+ export const registryPublisherBlueprintsInfiniteOptions = (options) => infiniteQueryOptions(
4991
+ // @ts-ignore
4992
+ {
4993
+ queryFn: async ({ pageParam, queryKey, signal }) => {
4994
+ // @ts-ignore
4995
+ const page = typeof pageParam === "object"
4996
+ ? pageParam
4997
+ : {
4998
+ query: {
4999
+ offset: pageParam,
5000
+ },
5001
+ };
5002
+ const params = createInfiniteParams(queryKey, page);
5003
+ const { data } = await RenClient.__registry.get().registry.publisher.blueprints({
5004
+ ...options,
5005
+ ...params,
5006
+ signal,
5007
+ throwOnError: true,
5008
+ });
5009
+ return data;
5010
+ },
5011
+ queryKey: registryPublisherBlueprintsInfiniteQueryKey(options),
5012
+ });
5013
+ export const registryPublisherSkillsQueryKey = (options) => createQueryKey("registryPublisherSkills", options);
5014
+ /**
5015
+ * List a registry publisher's skills
5016
+ */
5017
+ export const registryPublisherSkillsOptions = (options) => queryOptions({
5018
+ queryFn: async ({ queryKey, signal }) => {
5019
+ const { data } = await RenClient.__registry.get().registry.publisher.skills({
5020
+ ...options,
5021
+ ...queryKey[0],
5022
+ signal,
5023
+ throwOnError: true,
5024
+ });
5025
+ return data;
5026
+ },
5027
+ queryKey: registryPublisherSkillsQueryKey(options),
5028
+ });
5029
+ export const registryPublisherSkillsInfiniteQueryKey = (options) => createQueryKey("registryPublisherSkills", options, true);
5030
+ /**
5031
+ * List a registry publisher's skills
5032
+ */
5033
+ export const registryPublisherSkillsInfiniteOptions = (options) => infiniteQueryOptions(
5034
+ // @ts-ignore
5035
+ {
5036
+ queryFn: async ({ pageParam, queryKey, signal }) => {
5037
+ // @ts-ignore
5038
+ const page = typeof pageParam === "object"
5039
+ ? pageParam
5040
+ : {
5041
+ query: {
5042
+ offset: pageParam,
5043
+ },
5044
+ };
5045
+ const params = createInfiniteParams(queryKey, page);
5046
+ const { data } = await RenClient.__registry.get().registry.publisher.skills({
5047
+ ...options,
5048
+ ...params,
5049
+ signal,
5050
+ throwOnError: true,
5051
+ });
5052
+ return data;
5053
+ },
5054
+ queryKey: registryPublisherSkillsInfiniteQueryKey(options),
5055
+ });
5056
+ export const registryPublisherAgentsQueryKey = (options) => createQueryKey("registryPublisherAgents", options);
5057
+ /**
5058
+ * List a registry publisher's agents
5059
+ */
5060
+ export const registryPublisherAgentsOptions = (options) => queryOptions({
5061
+ queryFn: async ({ queryKey, signal }) => {
5062
+ const { data } = await RenClient.__registry.get().registry.publisher.agents({
5063
+ ...options,
5064
+ ...queryKey[0],
5065
+ signal,
5066
+ throwOnError: true,
5067
+ });
5068
+ return data;
5069
+ },
5070
+ queryKey: registryPublisherAgentsQueryKey(options),
5071
+ });
5072
+ export const registryPublisherAgentsInfiniteQueryKey = (options) => createQueryKey("registryPublisherAgents", options, true);
5073
+ /**
5074
+ * List a registry publisher's agents
5075
+ */
5076
+ export const registryPublisherAgentsInfiniteOptions = (options) => infiniteQueryOptions(
5077
+ // @ts-ignore
5078
+ {
5079
+ queryFn: async ({ pageParam, queryKey, signal }) => {
5080
+ // @ts-ignore
5081
+ const page = typeof pageParam === "object"
5082
+ ? pageParam
5083
+ : {
5084
+ query: {
5085
+ offset: pageParam,
5086
+ },
5087
+ };
5088
+ const params = createInfiniteParams(queryKey, page);
5089
+ const { data } = await RenClient.__registry.get().registry.publisher.agents({
5090
+ ...options,
5091
+ ...params,
5092
+ signal,
5093
+ throwOnError: true,
5094
+ });
5095
+ return data;
5096
+ },
5097
+ queryKey: registryPublisherAgentsInfiniteQueryKey(options),
5098
+ });
5099
+ export const registryPublisherMcpsQueryKey = (options) => createQueryKey("registryPublisherMcps", options);
5100
+ /**
5101
+ * List a registry publisher's MCPs
5102
+ */
5103
+ export const registryPublisherMcpsOptions = (options) => queryOptions({
5104
+ queryFn: async ({ queryKey, signal }) => {
5105
+ const { data } = await RenClient.__registry.get().registry.publisher.mcps({
5106
+ ...options,
5107
+ ...queryKey[0],
5108
+ signal,
5109
+ throwOnError: true,
5110
+ });
5111
+ return data;
5112
+ },
5113
+ queryKey: registryPublisherMcpsQueryKey(options),
5114
+ });
5115
+ export const registryPublisherMcpsInfiniteQueryKey = (options) => createQueryKey("registryPublisherMcps", options, true);
5116
+ /**
5117
+ * List a registry publisher's MCPs
5118
+ */
5119
+ export const registryPublisherMcpsInfiniteOptions = (options) => infiniteQueryOptions(
5120
+ // @ts-ignore
5121
+ {
5122
+ queryFn: async ({ pageParam, queryKey, signal }) => {
5123
+ // @ts-ignore
5124
+ const page = typeof pageParam === "object"
5125
+ ? pageParam
5126
+ : {
5127
+ query: {
5128
+ offset: pageParam,
5129
+ },
5130
+ };
5131
+ const params = createInfiniteParams(queryKey, page);
5132
+ const { data } = await RenClient.__registry.get().registry.publisher.mcps({
5133
+ ...options,
5134
+ ...params,
5135
+ signal,
5136
+ throwOnError: true,
5137
+ });
5138
+ return data;
5139
+ },
5140
+ queryKey: registryPublisherMcpsInfiniteQueryKey(options),
5141
+ });
4623
5142
  export const registryReplayGetQueryKey = (options) => createQueryKey("registryReplayGet", options);
4624
5143
  /**
4625
5144
  * Get a registry replay by slug