@renai-labs/sdk 0.1.25 → 0.1.27

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.
@@ -287,6 +287,10 @@ export const zBlueprintPublicListItem = z.object({
287
287
  updatedAt: z.iso
288
288
  .datetime()
289
289
  .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
290
+ resourceIds: z.object({
291
+ skillIds: z.array(z.string()),
292
+ mcpIds: z.array(z.string()),
293
+ }),
290
294
  });
291
295
  export const zSetupSource = z.object({
292
296
  name: z.string().min(1).max(64),
@@ -1068,6 +1072,91 @@ export const zTopology = z.object({
1068
1072
  }))
1069
1073
  .optional(),
1070
1074
  });
1075
+ /**
1076
+ * One immutable entry in the product-wide activity log.
1077
+ */
1078
+ export const zEvent = z.object({
1079
+ id: z.string(),
1080
+ orgId: z.string(),
1081
+ entityType: z.string(),
1082
+ entityId: z.string(),
1083
+ type: z.string(),
1084
+ data: z.record(z.string(), z.unknown()),
1085
+ actorUserId: z.string().nullable(),
1086
+ actorProjectAgentId: z.string().nullable(),
1087
+ createdAt: z.iso
1088
+ .datetime()
1089
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
1090
+ });
1091
+ /**
1092
+ * A task with its activity trail embedded.
1093
+ */
1094
+ export const zTaskDetail = z.object({
1095
+ id: z.string(),
1096
+ orgId: z.string(),
1097
+ userId: z.string().nullable(),
1098
+ podId: z.string().nullable(),
1099
+ projectId: z.string().nullable(),
1100
+ title: z.string(),
1101
+ description: z.string().nullable(),
1102
+ status: z.enum(["open", "in_progress", "done", "dismissed"]),
1103
+ priority: z.enum(["low", "medium", "high"]).nullable(),
1104
+ labels: z.array(z.string()),
1105
+ links: z.array(z.string()),
1106
+ dueAt: z.iso
1107
+ .datetime()
1108
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
1109
+ .nullable(),
1110
+ assignedToUserId: z.string().nullable(),
1111
+ assignedToProjectAgentId: z.string().nullable(),
1112
+ createdByUserId: z.string().nullable(),
1113
+ createdByProjectAgentId: z.string().nullable(),
1114
+ createdAt: z.iso
1115
+ .datetime()
1116
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
1117
+ updatedAt: z.iso
1118
+ .datetime()
1119
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
1120
+ archivedAt: z.iso
1121
+ .datetime()
1122
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
1123
+ .nullable(),
1124
+ events: z.array(zEvent).optional(),
1125
+ });
1126
+ /**
1127
+ * An action item in Ren, created and maintained by people or by agents.
1128
+ */
1129
+ export const zTask = z.object({
1130
+ id: z.string(),
1131
+ orgId: z.string(),
1132
+ userId: z.string().nullable(),
1133
+ podId: z.string().nullable(),
1134
+ projectId: z.string().nullable(),
1135
+ title: z.string(),
1136
+ description: z.string().nullable(),
1137
+ status: z.enum(["open", "in_progress", "done", "dismissed"]),
1138
+ priority: z.enum(["low", "medium", "high"]).nullable(),
1139
+ labels: z.array(z.string()),
1140
+ links: z.array(z.string()),
1141
+ dueAt: z.iso
1142
+ .datetime()
1143
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
1144
+ .nullable(),
1145
+ assignedToUserId: z.string().nullable(),
1146
+ assignedToProjectAgentId: z.string().nullable(),
1147
+ createdByUserId: z.string().nullable(),
1148
+ createdByProjectAgentId: z.string().nullable(),
1149
+ createdAt: z.iso
1150
+ .datetime()
1151
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
1152
+ updatedAt: z.iso
1153
+ .datetime()
1154
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
1155
+ archivedAt: z.iso
1156
+ .datetime()
1157
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
1158
+ .nullable(),
1159
+ });
1071
1160
  export const zSkillVersionFiles = z.object({
1072
1161
  type: z.literal("files"),
1073
1162
  files: z.array(z.object({
@@ -1826,7 +1915,7 @@ export const zOnboardingSetupPersonalOrg = z.object({
1826
1915
  export const zOnboardingStart = z.object({
1827
1916
  podId: z.string(),
1828
1917
  projectId: z.string(),
1829
- sessionId: z.string(),
1918
+ jobId: z.string(),
1830
1919
  initialPrompt: z.string(),
1831
1920
  });
1832
1921
  export const zModelPricing = z.object({
@@ -2075,43 +2164,72 @@ export const zInferenceKey = z.object({
2075
2164
  export const zInferenceSubscriptionRenameInput = z.object({
2076
2165
  label: z.string().min(1).max(64),
2077
2166
  });
2078
- export const zInferenceSubscriptionConnectInput = z.object({
2167
+ export const zInferenceConnectCodexInput = z.object({
2168
+ artifact: z.literal("access_token"),
2169
+ token: z.string().min(1).max(8192),
2079
2170
  label: z.string().min(1).max(64).optional(),
2080
- profile: z.object({
2081
- token: z
2082
- .string()
2083
- .max(4096)
2084
- .regex(/^sk-ant-oat.*/),
2085
- deviceId: z.string().min(1).max(512),
2086
- accountUuid: z.string().min(1).max(128),
2087
- organizationUuid: z.string().max(128).nullish().default(null),
2088
- subscriptionType: z.string().max(128).nullish().default(null),
2089
- rateLimitTier: z.string().max(128).nullish().default(null),
2090
- clientHeaders: z.record(z.string(), z.string().max(512)).optional().default({}),
2091
- }),
2171
+ });
2172
+ export const zInferenceCodexModel = z.object({
2173
+ slug: z.string(),
2174
+ defaultEffort: z.string(),
2175
+ efforts: z.array(z.string()),
2176
+ contextWindow: z.int().gt(0).lte(9007199254740991),
2177
+ maxContextWindow: z.int().gt(0).lte(9007199254740991),
2178
+ });
2179
+ export const zInferenceCodexCatalog = z.object({
2180
+ models: z.array(zInferenceCodexModel),
2092
2181
  });
2093
2182
  export const zInferenceProviderUsage = z.object({
2094
2183
  windows: z.array(z.object({
2095
2184
  key: z.string(),
2185
+ kind: z.enum(["quota", "entitlement"]).optional().default("entitlement"),
2186
+ windowMinutes: z.int().gt(0).lte(9007199254740991).nullish().default(null),
2096
2187
  utilization: z.number().gte(0).nullable(),
2097
2188
  status: z.string().nullable(),
2098
2189
  resetsAt: z.string().nullable(),
2190
+ models: z.array(z.string()).optional().default([]),
2191
+ family: z.enum(["opus", "sonnet", "fable", "haiku"]).nullish().default(null),
2192
+ label: z.string().nullish().default(null),
2193
+ source: z.enum(["oauth_endpoint", "response_header"]).optional().default("response_header"),
2194
+ observedAt: z.string().nullish().default(null),
2099
2195
  })),
2100
2196
  status: z.string().nullable(),
2197
+ resetsAt: z.string().nullish().default(null),
2101
2198
  representativeWindow: z.string().nullable(),
2102
- overageStatus: z.string().nullable(),
2103
2199
  overageDisabledReason: z.string().nullable(),
2200
+ fallbackPercentage: z.number().nullish().default(null),
2201
+ activeLimit: z.string().nullish().default(null),
2202
+ planType: z.string().nullish().default(null),
2203
+ creditsAvailable: z.boolean().nullish().default(null),
2204
+ creditsUnlimited: z.boolean().nullish().default(null),
2205
+ safetyBufferingFasterModel: z.string().nullish().default(null),
2206
+ polledAt: z.string().nullish().default(null),
2104
2207
  observedAt: z.string(),
2105
2208
  });
2106
- export const zInferenceProvider = z.enum(["anthropic"]);
2209
+ export const zInferenceSeatHealth = z.enum([
2210
+ "connected",
2211
+ "exhausted",
2212
+ "transient",
2213
+ "needs_reauth",
2214
+ "blocked",
2215
+ "refresh_uncertain",
2216
+ "disabled",
2217
+ ]);
2218
+ export const zInferenceProvider = z.enum(["anthropic", "openai"]);
2107
2219
  export const zInferenceSubscriptionSeat = z.object({
2108
2220
  id: z.string(),
2109
2221
  provider: zInferenceProvider,
2110
2222
  label: z.string(),
2111
- health: z.enum(["connected", "exhausted", "needs_reauth", "transient"]),
2223
+ health: zInferenceSeatHealth,
2112
2224
  cooldownUntil: z.string().nullable(),
2113
2225
  subscriptionType: z.string().nullable(),
2114
2226
  rateLimitTier: z.string().nullable(),
2227
+ credentialKind: z.string(),
2228
+ workspaceId: z.string().nullable(),
2229
+ planType: z.string().nullable(),
2230
+ supportedModels: z.array(z.string()).nullable(),
2231
+ healthReason: z.string().nullable(),
2232
+ credentialExpiresAt: z.string().nullable(),
2115
2233
  contributor: z
2116
2234
  .object({
2117
2235
  id: z.string(),
@@ -2122,6 +2240,100 @@ export const zInferenceSubscriptionSeat = z.object({
2122
2240
  lastSelectedAt: z.string().nullable(),
2123
2241
  connectedAt: z.string(),
2124
2242
  });
2243
+ export const zInferenceCodexDeviceStatus = z.object({
2244
+ status: z.enum(["pending", "completed", "failed", "expired"]),
2245
+ seat: zInferenceSubscriptionSeat.nullable(),
2246
+ reason: z.string().nullable(),
2247
+ });
2248
+ export const zInferenceCodexDeviceStartInput = z.object({
2249
+ label: z.string().min(1).max(64).optional(),
2250
+ });
2251
+ export const zInferenceCodexDeviceStart = z.object({
2252
+ sessionId: z.string(),
2253
+ verificationUrl: z.url(),
2254
+ userCode: z.string(),
2255
+ intervalMs: z.number(),
2256
+ expiresAt: z.string(),
2257
+ });
2258
+ export const zInferenceOauthCompleteInput = z.object({
2259
+ sessionId: z.string().min(1),
2260
+ code: z.string().min(1).max(4096),
2261
+ });
2262
+ export const zInferenceOauthStartInput = z.object({
2263
+ label: z.string().min(1).max(64).optional(),
2264
+ });
2265
+ export const zInferenceOauthStart = z.object({
2266
+ sessionId: z.string(),
2267
+ authorizeUrl: z.url(),
2268
+ expiresAt: z.string(),
2269
+ });
2270
+ export const zInferenceUsageBudgetEstimate = z.object({
2271
+ unit: z.literal("normalized_provider_budget"),
2272
+ granularityMinutes: z.int().gt(0).lte(9007199254740991),
2273
+ reliableUntil: z.string(),
2274
+ points: z.array(z.object({
2275
+ capacity: z.number().gte(0),
2276
+ knownCapacity: z.number().gte(0),
2277
+ remaining: z.number().gte(0),
2278
+ remainingRatio: z.number().gte(0).lte(1).nullable(),
2279
+ unknownPlans: z.int().gte(0).lte(9007199254740991),
2280
+ at: z.string(),
2281
+ byProvider: z.object({
2282
+ anthropic: z.object({
2283
+ capacity: z.number().gte(0),
2284
+ knownCapacity: z.number().gte(0),
2285
+ remaining: z.number().gte(0),
2286
+ remainingRatio: z.number().gte(0).lte(1).nullable(),
2287
+ unknownPlans: z.int().gte(0).lte(9007199254740991),
2288
+ byClass: z.object({
2289
+ "5h": z.object({
2290
+ capacity: z.number().gte(0),
2291
+ knownCapacity: z.number().gte(0),
2292
+ remaining: z.number().gte(0),
2293
+ remainingRatio: z.number().gte(0).lte(1).nullable(),
2294
+ unknownPlans: z.int().gte(0).lte(9007199254740991),
2295
+ unlimitedCapacity: z.number().gte(0),
2296
+ }),
2297
+ "7d": z.object({
2298
+ capacity: z.number().gte(0),
2299
+ knownCapacity: z.number().gte(0),
2300
+ remaining: z.number().gte(0),
2301
+ remainingRatio: z.number().gte(0).lte(1).nullable(),
2302
+ unknownPlans: z.int().gte(0).lte(9007199254740991),
2303
+ unlimitedCapacity: z.number().gte(0),
2304
+ }),
2305
+ }),
2306
+ elasticPlans: z.int().gte(0).lte(9007199254740991),
2307
+ }),
2308
+ openai: z.object({
2309
+ capacity: z.number().gte(0),
2310
+ knownCapacity: z.number().gte(0),
2311
+ remaining: z.number().gte(0),
2312
+ remainingRatio: z.number().gte(0).lte(1).nullable(),
2313
+ unknownPlans: z.int().gte(0).lte(9007199254740991),
2314
+ byClass: z.object({
2315
+ "5h": z.object({
2316
+ capacity: z.number().gte(0),
2317
+ knownCapacity: z.number().gte(0),
2318
+ remaining: z.number().gte(0),
2319
+ remainingRatio: z.number().gte(0).lte(1).nullable(),
2320
+ unknownPlans: z.int().gte(0).lte(9007199254740991),
2321
+ unlimitedCapacity: z.number().gte(0),
2322
+ }),
2323
+ "7d": z.object({
2324
+ capacity: z.number().gte(0),
2325
+ knownCapacity: z.number().gte(0),
2326
+ remaining: z.number().gte(0),
2327
+ remainingRatio: z.number().gte(0).lte(1).nullable(),
2328
+ unknownPlans: z.int().gte(0).lte(9007199254740991),
2329
+ unlimitedCapacity: z.number().gte(0),
2330
+ }),
2331
+ }),
2332
+ elasticPlans: z.int().gte(0).lte(9007199254740991),
2333
+ }),
2334
+ }),
2335
+ })),
2336
+ });
2125
2337
  export const zGoogleWorkspaceOAuthStartResult = z.object({
2126
2338
  url: z.url(),
2127
2339
  });
@@ -2627,6 +2839,19 @@ export const zAgent = z.object({
2627
2839
  publisher: zPublisherPublicView.nullish().default(null),
2628
2840
  latestVersion: zAgentLatestVersion.nullish(),
2629
2841
  });
2842
+ export const zActivation = z.object({
2843
+ steps: z.array(z.enum(["member.invited", "slack.channel.connected", "client.used", "cron_trigger.created", "artifact.created"])),
2844
+ complete: z.boolean(),
2845
+ dismissed: z.boolean(),
2846
+ });
2847
+ /**
2848
+ * Completed checklist steps and whether the checklist is finished or dismissed
2849
+ */
2850
+ export const zActivationGetResponse = zActivation;
2851
+ /**
2852
+ * Checklist state after dismissal
2853
+ */
2854
+ export const zActivationDismissResponse = zActivation;
2630
2855
  export const zAgentListQuery = z.object({
2631
2856
  limit: z.int().gte(1).lte(1000).optional(),
2632
2857
  offset: z.int().gte(0).lte(9007199254740991).optional(),
@@ -3436,11 +3661,44 @@ export const zGoogleConnectResponse = zGoogleWorkspaceOAuthStartResult;
3436
3661
  * Seat health and provider usage
3437
3662
  */
3438
3663
  export const zInferenceSubscriptionsListResponse = z.array(zInferenceSubscriptionSeat);
3439
- export const zInferenceSubscriptionsConnectAnthropicBody = zInferenceSubscriptionConnectInput;
3664
+ export const zInferenceSubscriptionsBudgetQuery = z.object({
3665
+ horizon: z.enum(["5h", "7d"]).optional().default("5h"),
3666
+ });
3667
+ /**
3668
+ * Remaining capacity through the requested horizon or last known reset
3669
+ */
3670
+ export const zInferenceSubscriptionsBudgetResponse = zInferenceUsageBudgetEstimate;
3671
+ export const zInferenceSubscriptionsOauthStartBody = zInferenceOauthStartInput;
3672
+ /**
3673
+ * Where to authorize, and when this attempt stops being valid
3674
+ */
3675
+ export const zInferenceSubscriptionsOauthStartResponse = zInferenceOauthStart;
3676
+ export const zInferenceSubscriptionsOauthCompleteBody = zInferenceOauthCompleteInput;
3440
3677
  /**
3441
3678
  * The connected seat
3442
3679
  */
3443
- export const zInferenceSubscriptionsConnectAnthropicResponse = zInferenceSubscriptionSeat;
3680
+ export const zInferenceSubscriptionsOauthCompleteResponse = zInferenceSubscriptionSeat;
3681
+ export const zInferenceSubscriptionsCodexDeviceStartBody = zInferenceCodexDeviceStartInput;
3682
+ /**
3683
+ * The code to enter, and where to enter it
3684
+ */
3685
+ export const zInferenceSubscriptionsCodexDeviceStartResponse = zInferenceCodexDeviceStart;
3686
+ export const zInferenceSubscriptionsCodexDevicePollPath = z.object({
3687
+ id: z.string(),
3688
+ });
3689
+ /**
3690
+ * Whether the device code has been approved yet
3691
+ */
3692
+ export const zInferenceSubscriptionsCodexDevicePollResponse = zInferenceCodexDeviceStatus;
3693
+ /**
3694
+ * The published Codex models
3695
+ */
3696
+ export const zInferenceHarnessesCodexCatalogResponse = zInferenceCodexCatalog;
3697
+ export const zInferenceSubscriptionsConnectCodexBody = zInferenceConnectCodexInput;
3698
+ /**
3699
+ * The connected seat
3700
+ */
3701
+ export const zInferenceSubscriptionsConnectCodexResponse = zInferenceSubscriptionSeat;
3444
3702
  export const zInferenceSubscriptionsRemovePath = z.object({
3445
3703
  id: z.string(),
3446
3704
  });
@@ -4812,6 +5070,91 @@ export const zSkillVersionArchivePath = z.object({
4812
5070
  * Archived skill version
4813
5071
  */
4814
5072
  export const zSkillVersionArchiveResponse = zSkillVersion;
5073
+ export const zTaskListQuery = z.object({
5074
+ limit: z.int().gte(1).lte(1000).optional(),
5075
+ offset: z.int().gte(0).lte(9007199254740991).optional(),
5076
+ includeDeprecated: z.boolean().optional(),
5077
+ orgId: z.string().optional(),
5078
+ userId: z.string().nullish(),
5079
+ visibility: z.enum(["private", "pod", "org"]).optional(),
5080
+ status: z.enum(["open", "in_progress", "done", "dismissed"]).optional(),
5081
+ priority: z.enum(["low", "medium", "high"]).optional(),
5082
+ label: z.string().optional(),
5083
+ podId: z.string().optional(),
5084
+ projectId: z.string().optional(),
5085
+ assignedToUserId: z.string().optional(),
5086
+ assignedToProjectAgentId: z.string().optional(),
5087
+ includeDone: z.boolean().optional(),
5088
+ });
5089
+ /**
5090
+ * List of tasks
5091
+ */
5092
+ export const zTaskListResponse = z.array(zTask);
5093
+ export const zTaskCreateBody = z.object({
5094
+ title: z.string().min(1).max(256),
5095
+ description: z.string().nullish().default(null),
5096
+ status: z.enum(["open", "in_progress", "done", "dismissed"]).optional().default("open"),
5097
+ priority: z.enum(["low", "medium", "high"]).nullish().default(null),
5098
+ labels: z.array(z.string()).optional(),
5099
+ links: z.array(z.string()).optional(),
5100
+ dueAt: z.iso
5101
+ .datetime()
5102
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
5103
+ .nullish()
5104
+ .default(null),
5105
+ podId: z.string().nullish().default(null),
5106
+ projectId: z.string().nullish().default(null),
5107
+ assignedToUserId: z.string().nullish().default(null),
5108
+ assignedToProjectAgentId: z.string().nullish().default(null),
5109
+ visibility: z.enum(["private", "org"]).optional().default("org"),
5110
+ });
5111
+ /**
5112
+ * Created task
5113
+ */
5114
+ export const zTaskCreateResponse = zTask;
5115
+ export const zTaskArchivePath = z.object({
5116
+ id: z.string().regex(/^tsk_[0-9A-HJKMNP-TV-Z]{26}$/),
5117
+ });
5118
+ /**
5119
+ * Archived task
5120
+ */
5121
+ export const zTaskArchiveResponse = zTask;
5122
+ export const zTaskGetPath = z.object({
5123
+ id: z.string().regex(/^tsk_[0-9A-HJKMNP-TV-Z]{26}$/),
5124
+ });
5125
+ export const zTaskGetQuery = z.object({
5126
+ includeEvents: z.boolean().optional(),
5127
+ });
5128
+ /**
5129
+ * Task details
5130
+ */
5131
+ export const zTaskGetResponse = zTaskDetail;
5132
+ /**
5133
+ * Partial patch — the only way to change a task. An omitted field is left alone; an explicit `null` clears one, so `assignedToUserId: null` unassigns the human owner and `assignedToProjectAgentId: null` unassigns the agent. Move `status` to `done` when the work is finished, or to `dismissed` to reject a suggestion — a dismissed task stays queryable, so it is not proposed again. Changing `projectId` re-derives `podId`.
5134
+ */
5135
+ export const zTaskUpdateBody = z.object({
5136
+ title: z.string().min(1).max(256).optional(),
5137
+ description: z.string().nullish(),
5138
+ status: z.enum(["open", "in_progress", "done", "dismissed"]).optional(),
5139
+ priority: z.enum(["low", "medium", "high"]).nullish(),
5140
+ labels: z.array(z.string()).optional(),
5141
+ links: z.array(z.string()).optional(),
5142
+ dueAt: z.iso
5143
+ .datetime()
5144
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
5145
+ .nullish(),
5146
+ podId: z.string().nullish(),
5147
+ projectId: z.string().nullish(),
5148
+ assignedToUserId: z.string().nullish(),
5149
+ assignedToProjectAgentId: z.string().nullish(),
5150
+ });
5151
+ export const zTaskUpdatePath = z.object({
5152
+ id: z.string().regex(/^tsk_[0-9A-HJKMNP-TV-Z]{26}$/),
5153
+ });
5154
+ /**
5155
+ * Updated task
5156
+ */
5157
+ export const zTaskUpdateResponse = zTask;
4815
5158
  /**
4816
5159
  * Agent-stack topology
4817
5160
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@renai-labs/sdk",
3
- "version": "0.1.25",
3
+ "version": "0.1.27",
4
4
  "description": "TypeScript SDK for the Ren API, generated from OpenAPI.",
5
5
  "license": "MIT",
6
6
  "author": "Ren Labs, Inc.",