@vm0/cli 9.278.0 → 9.278.1

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.
Files changed (194) hide show
  1. package/{agent-HUDTEGLK.js → agent-4F3XAJWN.js} +12 -6
  2. package/agent-4F3XAJWN.js.map +1 -0
  3. package/{banking-BMZONEXP.js → banking-CWQFQKZB.js} +61 -7
  4. package/banking-CWQFQKZB.js.map +1 -0
  5. package/{browser-LQP445CU.js → browser-BI6UFWPH.js} +4 -5
  6. package/browser-BI6UFWPH.js.map +1 -0
  7. package/{chat-UF7QAWUT.js → chat-MKIW4FPP.js} +24 -16
  8. package/chat-MKIW4FPP.js.map +1 -0
  9. package/chunk-2SJTFDC2.js +189 -0
  10. package/chunk-2SJTFDC2.js.map +1 -0
  11. package/chunk-4FTIKZKP.js +64 -0
  12. package/chunk-4FTIKZKP.js.map +1 -0
  13. package/chunk-7UZXNER2.js +568 -0
  14. package/chunk-7UZXNER2.js.map +1 -0
  15. package/chunk-A6ZRMNM3.js +102 -0
  16. package/chunk-A6ZRMNM3.js.map +1 -0
  17. package/{chunk-QC63TUJC.js → chunk-C62A6LD6.js} +2 -2
  18. package/chunk-CCTF3YVW.js +52 -0
  19. package/chunk-CCTF3YVW.js.map +1 -0
  20. package/chunk-CD2BLKGC.js +188 -0
  21. package/chunk-CD2BLKGC.js.map +1 -0
  22. package/chunk-CEJGHPF3.js +55 -0
  23. package/chunk-CEJGHPF3.js.map +1 -0
  24. package/chunk-DUA6CF7E.js +2053 -0
  25. package/chunk-DUA6CF7E.js.map +1 -0
  26. package/chunk-E2TQAKNL.js +1300 -0
  27. package/chunk-E2TQAKNL.js.map +1 -0
  28. package/{chunk-5ZZI2LSO.js → chunk-GHKWW4NC.js} +5 -5
  29. package/chunk-GV3PG6CZ.js +114 -0
  30. package/chunk-GV3PG6CZ.js.map +1 -0
  31. package/chunk-GY7D76EZ.js +81 -0
  32. package/chunk-GY7D76EZ.js.map +1 -0
  33. package/chunk-HHHHZMTA.js +434 -0
  34. package/chunk-HHHHZMTA.js.map +1 -0
  35. package/chunk-HZYOJTEE.js +1275 -0
  36. package/chunk-HZYOJTEE.js.map +1 -0
  37. package/chunk-J3ZRXVI6.js +740 -0
  38. package/chunk-J3ZRXVI6.js.map +1 -0
  39. package/chunk-JJWFO27K.js +31 -0
  40. package/chunk-JJWFO27K.js.map +1 -0
  41. package/chunk-JV6LM2YC.js +39 -0
  42. package/chunk-JV6LM2YC.js.map +1 -0
  43. package/chunk-KER77KJB.js +105 -0
  44. package/chunk-KER77KJB.js.map +1 -0
  45. package/{chunk-V5ZVB7RJ.js → chunk-KKO2XGLQ.js} +1 -6
  46. package/chunk-KKO2XGLQ.js.map +1 -0
  47. package/chunk-LIYPTQAO.js +198 -0
  48. package/chunk-LIYPTQAO.js.map +1 -0
  49. package/chunk-LYLDVUHT.js +131 -0
  50. package/chunk-LYLDVUHT.js.map +1 -0
  51. package/chunk-PFWBO2VK.js +801 -0
  52. package/chunk-PFWBO2VK.js.map +1 -0
  53. package/chunk-RTCRU35A.js +194 -0
  54. package/chunk-RTCRU35A.js.map +1 -0
  55. package/{chunk-F2AM4RWA.js → chunk-RTEEWZUT.js} +2 -2
  56. package/{chunk-F2AM4RWA.js.map → chunk-RTEEWZUT.js.map} +1 -1
  57. package/{chunk-BRV4D3P2.js → chunk-RUKMHBNQ.js} +2 -2
  58. package/chunk-SA4DYSBR.js +31 -0
  59. package/chunk-SA4DYSBR.js.map +1 -0
  60. package/chunk-SJPOFQJU.js +792 -0
  61. package/chunk-SJPOFQJU.js.map +1 -0
  62. package/{chunk-V7A6ZFHR.js → chunk-SMPSKBAP.js} +25 -774
  63. package/chunk-SMPSKBAP.js.map +1 -0
  64. package/{chunk-E53W6UVQ.js → chunk-T2X2EGV2.js} +4 -4
  65. package/chunk-T2X2EGV2.js.map +1 -0
  66. package/chunk-U2GQH6AD.js +309 -0
  67. package/chunk-U2GQH6AD.js.map +1 -0
  68. package/chunk-U6A2RPHO.js +66 -0
  69. package/chunk-U6A2RPHO.js.map +1 -0
  70. package/chunk-UIXUGVZB.js +362 -0
  71. package/chunk-UIXUGVZB.js.map +1 -0
  72. package/chunk-XRZKJACM.js +49 -0
  73. package/chunk-XRZKJACM.js.map +1 -0
  74. package/chunk-YDS3X7KB.js +202 -0
  75. package/chunk-YDS3X7KB.js.map +1 -0
  76. package/{chunk-A6TMOGPR.js → chunk-ZKNJW4K6.js} +1412 -334
  77. package/chunk-ZKNJW4K6.js.map +1 -0
  78. package/chunk-ZXSCBS77.js +90 -0
  79. package/chunk-ZXSCBS77.js.map +1 -0
  80. package/{computer-use-RRD7BCCK.js → computer-use-6AEVW47F.js} +9 -7
  81. package/computer-use-6AEVW47F.js.map +1 -0
  82. package/{connector-XX7UU6XE.js → connector-XDQ6JEBU.js} +25 -13
  83. package/connector-XDQ6JEBU.js.map +1 -0
  84. package/{credit-GDNNAQRO.js → credit-JPQA5XPA.js} +8 -10
  85. package/credit-JPQA5XPA.js.map +1 -0
  86. package/{developer-support-IISP5UBI.js → developer-support-V7NZOU2P.js} +27 -7
  87. package/developer-support-V7NZOU2P.js.map +1 -0
  88. package/{doctor-IZM2TJOH.js → doctor-FJO24TG3.js} +13 -11
  89. package/doctor-FJO24TG3.js.map +1 -0
  90. package/{feishu-XB7SQBSI.js → feishu-PNOAM33Q.js} +99 -9
  91. package/feishu-PNOAM33Q.js.map +1 -0
  92. package/{finance-OGWHKQLU.js → finance-55OJ6GYP.js} +49 -9
  93. package/finance-55OJ6GYP.js.map +1 -0
  94. package/{generate-AA2PVOYQ.js → generate-XUKBK523.js} +26 -21
  95. package/generate-XUKBK523.js.map +1 -0
  96. package/{github-VJVIBTVF.js → github-V4MD2PMM.js} +83 -8
  97. package/github-V4MD2PMM.js.map +1 -0
  98. package/{goal-7SYVHDTK.js → goal-FS5FJKVU.js} +69 -13
  99. package/goal-FS5FJKVU.js.map +1 -0
  100. package/{host-UVQMIOBA.js → host-GITTJ6PR.js} +124 -10
  101. package/host-GITTJ6PR.js.map +1 -0
  102. package/{logs-PIS4X24E.js → logs-EEUIGYUD.js} +51 -11
  103. package/logs-EEUIGYUD.js.map +1 -0
  104. package/{mail-L33OSQ2R.js → mail-G4SAJSBD.js} +39 -8
  105. package/mail-G4SAJSBD.js.map +1 -0
  106. package/{maps-D5XTXU5U.js → maps-7ANNU3BX.js} +65 -11
  107. package/maps-7ANNU3BX.js.map +1 -0
  108. package/{model-ZFMRECDM.js → model-DSPDCJLB.js} +6 -6
  109. package/model-DSPDCJLB.js.map +1 -0
  110. package/{model-provider-EZZ2DRYZ.js → model-provider-RZQ45PNG.js} +6 -6
  111. package/model-provider-RZQ45PNG.js.map +1 -0
  112. package/package.json +1 -1
  113. package/{people-search-PFTIO2QS.js → people-search-I7PUMF5M.js} +22 -6
  114. package/people-search-I7PUMF5M.js.map +1 -0
  115. package/{phone-6SG5ZUNL.js → phone-SSAPGMTW.js} +90 -9
  116. package/phone-SSAPGMTW.js.map +1 -0
  117. package/{recognize-LLU6J3SW.js → recognize-D7VORZBN.js} +27 -9
  118. package/recognize-D7VORZBN.js.map +1 -0
  119. package/{resource-FGUSXS4G.js → resource-76IV3TMW.js} +21 -7
  120. package/resource-76IV3TMW.js.map +1 -0
  121. package/{scrape-BAUZ2YFD.js → scrape-JBDLNTLB.js} +22 -6
  122. package/scrape-JBDLNTLB.js.map +1 -0
  123. package/{search-DLO5RXRM.js → search-UNZNUTZX.js} +29 -9
  124. package/search-UNZNUTZX.js.map +1 -0
  125. package/{slack-CVATPKP3.js → slack-AAH6GG2W.js} +103 -11
  126. package/slack-AAH6GG2W.js.map +1 -0
  127. package/{teams-ZZYO6YIK.js → teams-6OPXE4TX.js} +90 -9
  128. package/teams-6OPXE4TX.js.map +1 -0
  129. package/{telegram-VY7T4YAR.js → telegram-RRZG73RT.js} +101 -10
  130. package/telegram-RRZG73RT.js.map +1 -0
  131. package/{upgrade-GFA4ZUU4.js → upgrade-I5IL4UQL.js} +3 -4
  132. package/upgrade-I5IL4UQL.js.map +1 -0
  133. package/{video-STFG7BET.js → video-HV44W4X7.js} +5 -4
  134. package/video-HV44W4X7.js.map +1 -0
  135. package/{weather-ISJEHJWR.js → weather-EQ7CSADB.js} +70 -16
  136. package/weather-EQ7CSADB.js.map +1 -0
  137. package/{web-YN4CVHK7.js → web-6LIMWEOZ.js} +5 -5
  138. package/web-6LIMWEOZ.js.map +1 -0
  139. package/{web-search-PC7IECND.js → web-search-AT7WONZN.js} +22 -6
  140. package/web-search-AT7WONZN.js.map +1 -0
  141. package/{whoami-KXFXZGM6.js → whoami-RKTLLSI4.js} +16 -7
  142. package/whoami-RKTLLSI4.js.map +1 -0
  143. package/{workflow-O7YZHB7A.js → workflow-ZH32P622.js} +135 -39
  144. package/workflow-ZH32P622.js.map +1 -0
  145. package/zero.js +40 -40
  146. package/agent-HUDTEGLK.js.map +0 -1
  147. package/banking-BMZONEXP.js.map +0 -1
  148. package/browser-LQP445CU.js.map +0 -1
  149. package/chat-UF7QAWUT.js.map +0 -1
  150. package/chunk-2W73DZDW.js +0 -32
  151. package/chunk-2W73DZDW.js.map +0 -1
  152. package/chunk-6PN6QGIM.js +0 -11405
  153. package/chunk-6PN6QGIM.js.map +0 -1
  154. package/chunk-A6TMOGPR.js.map +0 -1
  155. package/chunk-ANOLYIPL.js +0 -10
  156. package/chunk-ANOLYIPL.js.map +0 -1
  157. package/chunk-E53W6UVQ.js.map +0 -1
  158. package/chunk-V5ZVB7RJ.js.map +0 -1
  159. package/chunk-V7A6ZFHR.js.map +0 -1
  160. package/computer-use-RRD7BCCK.js.map +0 -1
  161. package/connector-XX7UU6XE.js.map +0 -1
  162. package/credit-GDNNAQRO.js.map +0 -1
  163. package/developer-support-IISP5UBI.js.map +0 -1
  164. package/doctor-IZM2TJOH.js.map +0 -1
  165. package/feishu-XB7SQBSI.js.map +0 -1
  166. package/finance-OGWHKQLU.js.map +0 -1
  167. package/generate-AA2PVOYQ.js.map +0 -1
  168. package/github-VJVIBTVF.js.map +0 -1
  169. package/goal-7SYVHDTK.js.map +0 -1
  170. package/host-UVQMIOBA.js.map +0 -1
  171. package/logs-PIS4X24E.js.map +0 -1
  172. package/mail-L33OSQ2R.js.map +0 -1
  173. package/maps-D5XTXU5U.js.map +0 -1
  174. package/model-ZFMRECDM.js.map +0 -1
  175. package/model-provider-EZZ2DRYZ.js.map +0 -1
  176. package/people-search-PFTIO2QS.js.map +0 -1
  177. package/phone-6SG5ZUNL.js.map +0 -1
  178. package/recognize-LLU6J3SW.js.map +0 -1
  179. package/resource-FGUSXS4G.js.map +0 -1
  180. package/scrape-BAUZ2YFD.js.map +0 -1
  181. package/search-DLO5RXRM.js.map +0 -1
  182. package/slack-CVATPKP3.js.map +0 -1
  183. package/teams-ZZYO6YIK.js.map +0 -1
  184. package/telegram-VY7T4YAR.js.map +0 -1
  185. package/upgrade-GFA4ZUU4.js.map +0 -1
  186. package/video-STFG7BET.js.map +0 -1
  187. package/weather-ISJEHJWR.js.map +0 -1
  188. package/web-YN4CVHK7.js.map +0 -1
  189. package/web-search-PC7IECND.js.map +0 -1
  190. package/whoami-KXFXZGM6.js.map +0 -1
  191. package/workflow-O7YZHB7A.js.map +0 -1
  192. /package/{chunk-QC63TUJC.js.map → chunk-C62A6LD6.js.map} +0 -0
  193. /package/{chunk-5ZZI2LSO.js.map → chunk-GHKWW4NC.js.map} +0 -0
  194. /package/{chunk-BRV4D3P2.js.map → chunk-RUKMHBNQ.js.map} +0 -0
@@ -0,0 +1,2053 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire as __createRequire } from "node:module";
3
+ const require = __createRequire(import.meta.url);
4
+ import {
5
+ hostedArtifactKindSchema
6
+ } from "./chunk-YDS3X7KB.js";
7
+ import {
8
+ zeroGoalEventSchema
9
+ } from "./chunk-LIYPTQAO.js";
10
+ import {
11
+ avatarVideoAspectRatioSchema,
12
+ avatarVideoVoiceIdSchema,
13
+ firewallPoliciesSchema
14
+ } from "./chunk-SMPSKBAP.js";
15
+ import {
16
+ orgTierSchema
17
+ } from "./chunk-A6ZRMNM3.js";
18
+ import {
19
+ authHeadersSchema,
20
+ timestampQueryNumberSchema
21
+ } from "./chunk-JV6LM2YC.js";
22
+ import {
23
+ apiErrorSchema,
24
+ external_exports,
25
+ initContract,
26
+ modelProviderTypeSchema,
27
+ supportedRunModelSchema
28
+ } from "./chunk-GHKWW4NC.js";
29
+ import {
30
+ init_esm_shims
31
+ } from "./chunk-AUWSMG4F.js";
32
+
33
+ // ../../packages/api-contracts/src/contracts/chat-events.ts
34
+ init_esm_shims();
35
+ var CHAT_EVENT_TYPES = [
36
+ "input.prompt",
37
+ "input.automation",
38
+ "input.goal",
39
+ "input.rejected",
40
+ "output.message",
41
+ "output.error",
42
+ "output.thinking",
43
+ "output.followups",
44
+ "run.queued",
45
+ "run.dequeued",
46
+ "run.completed",
47
+ "run.failed",
48
+ "run.cancelled",
49
+ "control.interrupt",
50
+ "control.revoke",
51
+ "browser.open",
52
+ "browser.close",
53
+ "goal.changed",
54
+ "usage.recorded"
55
+ ];
56
+ var chatEventTypeSchema = external_exports.enum(CHAT_EVENT_TYPES);
57
+ function revokedChatEventIds(events) {
58
+ return new Set(
59
+ events.flatMap((event) => {
60
+ return event.revokesEventId === void 0 || event.revokesEventId === null ? [] : [event.revokesEventId];
61
+ })
62
+ );
63
+ }
64
+ function isPendingChatQueueEvent(event, revokedEventIds) {
65
+ return (event.eventType === "input.prompt" || event.eventType === "input.automation" || event.eventType === "input.goal") && (event.runId === void 0 || event.runId === null) && !revokedEventIds.has(event.id);
66
+ }
67
+ function compareChatQueueEvents(left, right) {
68
+ const priority = (eventType) => {
69
+ if (eventType === "input.prompt") {
70
+ return 0;
71
+ }
72
+ if (eventType === "input.goal") {
73
+ return 1;
74
+ }
75
+ return 2;
76
+ };
77
+ const leftPriority = priority(left.eventType);
78
+ const rightPriority = priority(right.eventType);
79
+ if (leftPriority !== rightPriority) {
80
+ return leftPriority - rightPriority;
81
+ }
82
+ if (left.createdAt !== right.createdAt) {
83
+ return left.createdAt < right.createdAt ? -1 : 1;
84
+ }
85
+ if (left.id === right.id) {
86
+ return 0;
87
+ }
88
+ return left.id < right.id ? -1 : 1;
89
+ }
90
+ function foldPendingChatQueueEvents(events) {
91
+ const revokedEventIds = revokedChatEventIds(events);
92
+ return events.filter((event) => {
93
+ return isPendingChatQueueEvent(event, revokedEventIds);
94
+ }).sort(compareChatQueueEvents);
95
+ }
96
+
97
+ // ../../packages/api-contracts/src/contracts/chat-threads.ts
98
+ init_esm_shims();
99
+
100
+ // ../../packages/api-contracts/src/contracts/draft-user-message.ts
101
+ init_esm_shims();
102
+ function requireUserMessageForDraftAttachments(draft, context) {
103
+ if ((draft.draftAttachments?.length ?? 0) > 0 && draft.draftUserMessage === null) {
104
+ context.addIssue({
105
+ code: "custom",
106
+ message: "draftUserMessage is required for draft attachments",
107
+ path: ["draftUserMessage"]
108
+ });
109
+ }
110
+ }
111
+
112
+ // ../../packages/api-contracts/src/contracts/runs.ts
113
+ init_esm_shims();
114
+
115
+ // ../../packages/api-contracts/src/contracts/logs.ts
116
+ init_esm_shims();
117
+ var paginationSchema = external_exports.object({
118
+ hasMore: external_exports.boolean(),
119
+ nextCursor: external_exports.string().nullable(),
120
+ totalPages: external_exports.number()
121
+ });
122
+ var listQuerySchema = external_exports.object({
123
+ cursor: external_exports.string().optional(),
124
+ limit: external_exports.coerce.number().int().min(1).max(100).default(20)
125
+ });
126
+ var c = initContract();
127
+ var logStatusSchema = external_exports.enum([
128
+ "queued",
129
+ "pending",
130
+ "running",
131
+ "completed",
132
+ "failed",
133
+ "timeout",
134
+ "cancelled"
135
+ ]);
136
+ var triggerSourceSchema = external_exports.enum([
137
+ "web",
138
+ "slack",
139
+ "teams",
140
+ "feishu",
141
+ "email",
142
+ "telegram",
143
+ "agentphone",
144
+ "github",
145
+ "test",
146
+ "agent",
147
+ "webhook",
148
+ "workflow-schedule",
149
+ "workflow-event"
150
+ ]);
151
+ var logEntrySchema = external_exports.object({
152
+ id: external_exports.uuid(),
153
+ sessionId: external_exports.string().nullable(),
154
+ agentId: external_exports.string().nullable(),
155
+ displayName: external_exports.string().nullable(),
156
+ framework: external_exports.string().nullable(),
157
+ triggerSource: triggerSourceSchema.nullable(),
158
+ status: logStatusSchema,
159
+ /** Prompt text the run was launched with. Used as a row description. */
160
+ prompt: external_exports.string(),
161
+ createdAt: external_exports.string(),
162
+ startedAt: external_exports.string().nullable(),
163
+ completedAt: external_exports.string().nullable()
164
+ });
165
+ var logsFiltersSchema = external_exports.object({
166
+ statuses: external_exports.array(logStatusSchema),
167
+ sources: external_exports.array(triggerSourceSchema),
168
+ agents: external_exports.array(external_exports.string())
169
+ });
170
+ var logsListResponseSchema = external_exports.object({
171
+ data: external_exports.array(logEntrySchema),
172
+ pagination: paginationSchema,
173
+ filters: logsFiltersSchema
174
+ });
175
+ var artifactSchema = external_exports.object({
176
+ name: external_exports.string().nullable(),
177
+ version: external_exports.string().nullable()
178
+ });
179
+ var logDetailSchema = external_exports.object({
180
+ id: external_exports.uuid(),
181
+ sessionId: external_exports.string().nullable(),
182
+ agentId: external_exports.string().nullable(),
183
+ displayName: external_exports.string().nullable(),
184
+ framework: external_exports.string().nullable(),
185
+ modelProvider: external_exports.string().nullable(),
186
+ selectedModel: external_exports.string().nullable(),
187
+ triggerSource: triggerSourceSchema.nullable(),
188
+ status: logStatusSchema,
189
+ prompt: external_exports.string(),
190
+ appendSystemPrompt: external_exports.string().nullable(),
191
+ error: external_exports.string().nullable(),
192
+ createdAt: external_exports.string(),
193
+ startedAt: external_exports.string().nullable(),
194
+ completedAt: external_exports.string().nullable(),
195
+ artifact: artifactSchema
196
+ });
197
+ var logsListContract = c.router({
198
+ list: {
199
+ method: "GET",
200
+ path: "/api/zero/logs",
201
+ headers: authHeadersSchema,
202
+ query: listQuerySchema.extend({
203
+ search: external_exports.string().optional(),
204
+ agentId: external_exports.string().uuid().optional(),
205
+ name: external_exports.string().optional(),
206
+ since: timestampQueryNumberSchema.optional(),
207
+ status: logStatusSchema.optional(),
208
+ triggerSource: triggerSourceSchema.optional()
209
+ }),
210
+ responses: {
211
+ 200: logsListResponseSchema,
212
+ 400: apiErrorSchema,
213
+ 401: apiErrorSchema,
214
+ 403: apiErrorSchema
215
+ },
216
+ summary: "List agent run logs with pagination"
217
+ }
218
+ });
219
+ var logsByIdContract = c.router({
220
+ getById: {
221
+ method: "GET",
222
+ path: "/api/zero/logs/:id",
223
+ headers: authHeadersSchema,
224
+ pathParams: external_exports.object({
225
+ id: external_exports.string().uuid("Invalid log ID")
226
+ }),
227
+ responses: {
228
+ 200: logDetailSchema,
229
+ 401: apiErrorSchema,
230
+ 403: apiErrorSchema,
231
+ 404: apiErrorSchema
232
+ },
233
+ summary: "Get agent run log details by ID"
234
+ }
235
+ });
236
+
237
+ // ../../packages/api-contracts/src/contracts/runs.ts
238
+ var directRunModelProviderTypeSchema = modelProviderTypeSchema.refine(
239
+ (type) => {
240
+ return type !== "vm0";
241
+ },
242
+ { message: "vm0 model provider is only supported by zero runs" }
243
+ );
244
+ var claudeToolEntrySchema = external_exports.string().refine(
245
+ (tool) => {
246
+ return tool.trim().length > 0;
247
+ },
248
+ {
249
+ message: "Claude tool name must not be empty"
250
+ }
251
+ ).refine(
252
+ (tool) => {
253
+ return !tool.includes(",");
254
+ },
255
+ {
256
+ message: "Claude tool name must not contain commas"
257
+ }
258
+ ).refine(
259
+ (tool) => {
260
+ return !tool.trimStart().startsWith("-");
261
+ },
262
+ {
263
+ message: "Claude tool name must not start with a hyphen"
264
+ }
265
+ );
266
+ var MAX_EVENT_SEQUENCE_NUMBER = 2147483647;
267
+ var eventSequenceNumberSchema = external_exports.number().int().nonnegative().max(MAX_EVENT_SEQUENCE_NUMBER);
268
+ var ALL_RUN_STATUSES = [
269
+ "queued",
270
+ "pending",
271
+ "running",
272
+ "completed",
273
+ "failed",
274
+ "timeout",
275
+ "cancelled"
276
+ ];
277
+ var runStatusSchema = external_exports.enum(ALL_RUN_STATUSES);
278
+ var unifiedRunRequestSchema = external_exports.object({
279
+ // High-level shortcut for continuing an existing session.
280
+ sessionId: external_exports.string().optional(),
281
+ // Base parameters (can be used directly or overridden after shortcut expansion)
282
+ agentComposeId: external_exports.string().optional(),
283
+ agentComposeVersionId: external_exports.string().optional(),
284
+ conversationId: external_exports.string().optional(),
285
+ // Multi-mount artifacts, each with its own mountPath.
286
+ artifacts: external_exports.array(
287
+ external_exports.object({
288
+ name: external_exports.string(),
289
+ version: external_exports.string().optional(),
290
+ mountPath: external_exports.string()
291
+ })
292
+ ).optional(),
293
+ vars: external_exports.record(external_exports.string(), external_exports.string()).optional(),
294
+ secrets: external_exports.record(external_exports.string(), external_exports.string()).optional(),
295
+ volumeVersions: external_exports.record(external_exports.string(), external_exports.string()).optional(),
296
+ // Additional volumes passed directly at run time (bypass compose)
297
+ additionalVolumes: external_exports.array(
298
+ external_exports.object({
299
+ name: external_exports.string(),
300
+ version: external_exports.string().optional(),
301
+ mountPath: external_exports.string()
302
+ })
303
+ ).optional(),
304
+ // Preview evaluation escape hatch: bypass preview mock CLIs and use the
305
+ // real agent runtime.
306
+ realAgentInPreview: external_exports.boolean().optional(),
307
+ // Capture HTTP header names, selected safe header values, request bodies, and response bodies
308
+ // in network logs
309
+ captureNetworkBodies: external_exports.boolean().optional(),
310
+ // Required
311
+ prompt: external_exports.string().min(1, "Missing prompt"),
312
+ // Optional system prompt to append to the agent's system prompt
313
+ appendSystemPrompt: external_exports.string().optional(),
314
+ // Optional list of tools to disable in Claude CLI (passed as --disallowed-tools)
315
+ disallowedTools: external_exports.array(claudeToolEntrySchema).optional(),
316
+ // Optional list of tools to make available in Claude CLI (passed as --tools)
317
+ tools: external_exports.array(claudeToolEntrySchema).optional(),
318
+ // Settings JSON to pass to Claude CLI (passed as --settings)
319
+ settings: external_exports.string().optional(),
320
+ // How the run was triggered (defaults to "web" on the server if not provided)
321
+ triggerSource: triggerSourceSchema.optional(),
322
+ // Per-permission policies (e.g., { "github": { "actions:read": "allow" } })
323
+ permissionPolicies: firewallPoliciesSchema.optional(),
324
+ // Internal: pin provider type for direct CLI runs used by E2E.
325
+ // vm0 is intentionally excluded here because only zero runs enforce
326
+ // vm0-managed-provider credits.
327
+ modelProviderType: directRunModelProviderTypeSchema.optional()
328
+ }).strict();
329
+ var createRunResponseSchema = external_exports.object({
330
+ runId: external_exports.string(),
331
+ status: runStatusSchema,
332
+ sandboxId: external_exports.string().optional(),
333
+ // Agent session id — eagerly created at run insertion, always present.
334
+ sessionId: external_exports.string().uuid(),
335
+ output: external_exports.string().optional(),
336
+ error: external_exports.string().optional(),
337
+ executionTimeMs: external_exports.number().optional(),
338
+ createdAt: external_exports.string().optional()
339
+ });
340
+ var getRunResponseSchema = external_exports.object({
341
+ runId: external_exports.string(),
342
+ agentComposeVersionId: external_exports.string().nullable(),
343
+ status: runStatusSchema,
344
+ prompt: external_exports.string(),
345
+ appendSystemPrompt: external_exports.string().nullable(),
346
+ vars: external_exports.record(external_exports.string(), external_exports.string()).optional(),
347
+ sandboxId: external_exports.string().optional(),
348
+ result: external_exports.object({
349
+ output: external_exports.string().optional(),
350
+ executionTimeMs: external_exports.number().optional(),
351
+ agentSessionId: external_exports.string().optional(),
352
+ checkpointId: external_exports.string().optional(),
353
+ conversationId: external_exports.string().optional()
354
+ }).passthrough().optional(),
355
+ error: external_exports.string().optional(),
356
+ createdAt: external_exports.string(),
357
+ startedAt: external_exports.string().optional(),
358
+ completedAt: external_exports.string().optional()
359
+ });
360
+ var runEventSchema = external_exports.object({
361
+ sequenceNumber: eventSequenceNumberSchema,
362
+ eventType: external_exports.string(),
363
+ eventData: external_exports.unknown(),
364
+ createdAt: external_exports.string()
365
+ });
366
+ var runResultSchema = external_exports.object({
367
+ checkpointId: external_exports.string(),
368
+ agentSessionId: external_exports.string(),
369
+ conversationId: external_exports.string(),
370
+ artifact: external_exports.record(external_exports.string(), external_exports.string()).optional(),
371
+ // optional when run has no artifact
372
+ volumes: external_exports.record(external_exports.string(), external_exports.string()).optional()
373
+ });
374
+ var runStateSchema = external_exports.object({
375
+ status: runStatusSchema,
376
+ result: runResultSchema.optional(),
377
+ error: external_exports.string().optional(),
378
+ lastEventSequence: eventSequenceNumberSchema.optional()
379
+ });
380
+ var runListItemSchema = external_exports.object({
381
+ id: external_exports.string(),
382
+ agentName: external_exports.string(),
383
+ status: runStatusSchema,
384
+ prompt: external_exports.string(),
385
+ appendSystemPrompt: external_exports.string().nullable(),
386
+ createdAt: external_exports.string(),
387
+ startedAt: external_exports.string().nullable()
388
+ });
389
+ var runsListResponseSchema = external_exports.object({
390
+ runs: external_exports.array(runListItemSchema)
391
+ });
392
+ var cancelRunResponseSchema = external_exports.object({
393
+ id: external_exports.string(),
394
+ status: external_exports.literal("cancelled"),
395
+ message: external_exports.string()
396
+ });
397
+ var telemetryMetricSchema = external_exports.object({
398
+ ts: external_exports.string(),
399
+ cpu: external_exports.number(),
400
+ mem_used: external_exports.number(),
401
+ mem_total: external_exports.number(),
402
+ disk_used: external_exports.number(),
403
+ disk_total: external_exports.number()
404
+ });
405
+ var ISO_UTC_TIMESTAMP_PATTERN = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.\d{1,9})?Z$/;
406
+ function rejectBlankQueryNumber(value) {
407
+ if (typeof value === "string" && value.trim().length === 0) {
408
+ return Number.NaN;
409
+ }
410
+ return value;
411
+ }
412
+ var safeIntegerQueryNumberSchema = external_exports.preprocess(
413
+ rejectBlankQueryNumber,
414
+ external_exports.coerce.number().refine(Number.isSafeInteger, {
415
+ message: "Value must be a safe integer"
416
+ })
417
+ );
418
+ var sequenceQueryNumberSchema = safeIntegerQueryNumberSchema.refine(
419
+ (value) => {
420
+ return value >= -1;
421
+ },
422
+ { message: "Sequence cursor must be at least -1" }
423
+ ).refine(
424
+ (value) => {
425
+ return value <= MAX_EVENT_SEQUENCE_NUMBER;
426
+ },
427
+ { message: "Sequence cursor is out of range" }
428
+ );
429
+ function boundedIntegerQueryNumberSchema(min, max) {
430
+ return external_exports.preprocess(
431
+ rejectBlankQueryNumber,
432
+ external_exports.coerce.number().int().min(min).max(max)
433
+ );
434
+ }
435
+ function logSinceQuerySchema(cursorKind) {
436
+ return cursorKind === "time" ? timestampQueryNumberSchema : sequenceQueryNumberSchema;
437
+ }
438
+ function exactUtcTimestamp(value) {
439
+ const match = ISO_UTC_TIMESTAMP_PATTERN.exec(value);
440
+ if (!match) {
441
+ return null;
442
+ }
443
+ const [, yearPart, monthPart, dayPart, hourPart, minutePart, secondPart] = match;
444
+ if (yearPart === void 0 || monthPart === void 0 || dayPart === void 0 || hourPart === void 0 || minutePart === void 0 || secondPart === void 0) {
445
+ return null;
446
+ }
447
+ const year = Number(yearPart);
448
+ const month = Number(monthPart);
449
+ const day = Number(dayPart);
450
+ const hour = Number(hourPart);
451
+ const minute = Number(minutePart);
452
+ const second = Number(secondPart);
453
+ const date = /* @__PURE__ */ new Date(0);
454
+ date.setUTCFullYear(year, month - 1, day);
455
+ date.setUTCHours(hour, minute, second, 0);
456
+ return date.getUTCFullYear() === year && date.getUTCMonth() === month - 1 && date.getUTCDate() === day && date.getUTCHours() === hour && date.getUTCMinutes() === minute && date.getUTCSeconds() === second ? value : null;
457
+ }
458
+ function timeCursorTimestampValue(rawValue) {
459
+ let decoded;
460
+ try {
461
+ decoded = decodeURIComponent(rawValue);
462
+ } catch {
463
+ return null;
464
+ }
465
+ return exactUtcTimestamp(decoded);
466
+ }
467
+ function hasControlCharacter(value) {
468
+ for (let index = 0; index < value.length; index++) {
469
+ const code = value.charCodeAt(index);
470
+ if (code <= 31 || code === 127) {
471
+ return true;
472
+ }
473
+ }
474
+ return false;
475
+ }
476
+ function timeCursorTieBreakerValue(rawValue) {
477
+ let decoded;
478
+ try {
479
+ decoded = decodeURIComponent(rawValue);
480
+ } catch {
481
+ return null;
482
+ }
483
+ if (decoded.length === 0 || decoded.length > 2048) {
484
+ return null;
485
+ }
486
+ return hasControlCharacter(decoded) ? null : decoded;
487
+ }
488
+ function parseLogCursor(cursor) {
489
+ const timeMatch = /^time:(asc|desc):([^:]+):(.+)$/.exec(cursor);
490
+ if (timeMatch) {
491
+ const order2 = timeMatch[1];
492
+ const rawTimestamp = timeMatch[2];
493
+ const rawTieBreaker = timeMatch[3];
494
+ if (order2 !== "asc" && order2 !== "desc" || rawTimestamp === void 0 || rawTieBreaker === void 0) {
495
+ return null;
496
+ }
497
+ const timestamp = timeCursorTimestampValue(rawTimestamp);
498
+ const tieBreaker = timeCursorTieBreakerValue(rawTieBreaker);
499
+ return timestamp === null || tieBreaker === null ? null : { kind: "time", order: order2, timestamp, tieBreaker };
500
+ }
501
+ const sequenceMatch = /^sequence:(asc|desc):(-?\d+)$/.exec(cursor);
502
+ if (!sequenceMatch) {
503
+ return null;
504
+ }
505
+ const order = sequenceMatch[1];
506
+ const rawValue = sequenceMatch[2];
507
+ if (order !== "asc" && order !== "desc" || rawValue === void 0) {
508
+ return null;
509
+ }
510
+ if (!/^-?\d+$/.test(rawValue)) {
511
+ return null;
512
+ }
513
+ const value = Number(rawValue);
514
+ if (!Number.isSafeInteger(value)) {
515
+ return null;
516
+ }
517
+ return { kind: "sequence", order, value };
518
+ }
519
+ function sequenceCursorOutOfRange(cursor) {
520
+ return cursor.kind === "sequence" && (cursor.value < -1 || cursor.value > MAX_EVENT_SEQUENCE_NUMBER);
521
+ }
522
+ function createLogPaginationQuerySchema(options) {
523
+ return external_exports.object({
524
+ since: logSinceQuerySchema(options.cursorKind).optional(),
525
+ sinceTime: timestampQueryNumberSchema.optional(),
526
+ cursor: external_exports.string().min(1).optional(),
527
+ limit: external_exports.preprocess(
528
+ rejectBlankQueryNumber,
529
+ external_exports.coerce.number().int().min(1).max(options.maxLimit ?? 100)
530
+ ).default(options.defaultLimit ?? 5),
531
+ order: external_exports.enum(["asc", "desc"]).default(options.defaultOrder ?? "desc")
532
+ }).superRefine((query, ctx) => {
533
+ if (!query.cursor) {
534
+ return;
535
+ }
536
+ const cursor = parseLogCursor(query.cursor);
537
+ if (!cursor) {
538
+ ctx.addIssue({
539
+ code: external_exports.ZodIssueCode.custom,
540
+ path: ["cursor"],
541
+ message: "Cursor is malformed"
542
+ });
543
+ return;
544
+ }
545
+ if (cursor.kind !== options.cursorKind) {
546
+ ctx.addIssue({
547
+ code: external_exports.ZodIssueCode.custom,
548
+ path: ["cursor"],
549
+ message: `Cursor must be a ${options.cursorKind} cursor`
550
+ });
551
+ }
552
+ if (cursor.order !== query.order) {
553
+ ctx.addIssue({
554
+ code: external_exports.ZodIssueCode.custom,
555
+ path: ["cursor"],
556
+ message: "Cursor order must match query order"
557
+ });
558
+ }
559
+ if (sequenceCursorOutOfRange(cursor)) {
560
+ ctx.addIssue({
561
+ code: external_exports.ZodIssueCode.custom,
562
+ path: ["cursor"],
563
+ message: "Sequence cursor is out of range"
564
+ });
565
+ }
566
+ });
567
+ }
568
+ var systemLogResponseSchema = external_exports.object({
569
+ systemLog: external_exports.string(),
570
+ hasMore: external_exports.boolean(),
571
+ nextCursor: external_exports.string().nullable().optional()
572
+ });
573
+ var metricsResponseSchema = external_exports.object({
574
+ metrics: external_exports.array(telemetryMetricSchema),
575
+ hasMore: external_exports.boolean(),
576
+ nextCursor: external_exports.string().nullable().optional()
577
+ });
578
+ var agentEventsResponseSchema = external_exports.object({
579
+ events: external_exports.array(runEventSchema),
580
+ hasMore: external_exports.boolean(),
581
+ nextCursor: external_exports.string().nullable().optional(),
582
+ framework: external_exports.string()
583
+ });
584
+ var networkLogActionSchema = external_exports.enum(["ALLOW", "DENY", "BLOCK"]);
585
+ var modelCatalogCacheStatusSchema = external_exports.enum([
586
+ "model_catalog_bypass",
587
+ "model_catalog_fresh_hit",
588
+ "model_catalog_cold_stored",
589
+ "model_catalog_cold_not_stored",
590
+ "model_catalog_revalidated_304",
591
+ "model_catalog_revalidated_200_same",
592
+ "model_catalog_revalidated_200_changed",
593
+ "model_catalog_revalidation_not_stored",
594
+ "model_catalog_etag_confirmed",
595
+ "model_catalog_etag_invalidated"
596
+ ]);
597
+ var modelCatalogCacheBypassReasonSchema = external_exports.enum([
598
+ "request_url",
599
+ "request_method",
600
+ "request_framing",
601
+ "request_body",
602
+ "request_streaming",
603
+ "request_conditions",
604
+ "request_cache_control",
605
+ "request_encoding",
606
+ "request_identity",
607
+ "request_capacity",
608
+ "response_status",
609
+ "response_encoding",
610
+ "response_content_type",
611
+ "response_cache_control",
612
+ "response_vary",
613
+ "response_etag",
614
+ "response_size",
615
+ "response_stream",
616
+ "response_body",
617
+ "response_json",
618
+ "response_shape",
619
+ "response_missing",
620
+ "concurrent_change",
621
+ "transport_error"
622
+ ]);
623
+ var modelCatalogCacheUpstreamEncodingSchema = external_exports.enum(["identity", "br"]);
624
+ var modelCatalogPrefetchRoleSchema = external_exports.enum([
625
+ "producer",
626
+ "completed_consumer",
627
+ "inflight_consumer"
628
+ ]);
629
+ var modelCatalogCacheMillisecondsSchema = external_exports.number().int().min(0).max(2147483647);
630
+ var modelCatalogCacheEvictionCountSchema = external_exports.number().int().min(0).max(32);
631
+ var networkLogEntrySchema = external_exports.object({
632
+ timestamp: external_exports.string(),
633
+ type: external_exports.string().optional(),
634
+ action: networkLogActionSchema.optional(),
635
+ host: external_exports.string().optional(),
636
+ port: external_exports.number().optional(),
637
+ method: external_exports.string().optional(),
638
+ url: external_exports.string().optional(),
639
+ status: external_exports.number().optional(),
640
+ latency_ms: external_exports.number().optional(),
641
+ request_size: external_exports.number().optional(),
642
+ response_size: external_exports.number().optional(),
643
+ browser_user_agent: external_exports.boolean().optional(),
644
+ model_catalog_cache_status: modelCatalogCacheStatusSchema.optional(),
645
+ model_catalog_cache_upstream_encoding: modelCatalogCacheUpstreamEncodingSchema.optional(),
646
+ model_catalog_cache_bypass_reason: modelCatalogCacheBypassReasonSchema.optional(),
647
+ model_catalog_cache_entry_age_ms: modelCatalogCacheMillisecondsSchema.optional(),
648
+ model_catalog_cache_validation_latency_ms: modelCatalogCacheMillisecondsSchema.optional(),
649
+ model_catalog_cache_eviction_count: modelCatalogCacheEvictionCountSchema.optional(),
650
+ model_catalog_prefetch_role: modelCatalogPrefetchRoleSchema.optional(),
651
+ dns_event: external_exports.string().optional(),
652
+ dns_query_type: external_exports.string().optional(),
653
+ dns_result: external_exports.string().optional(),
654
+ dns_serial: external_exports.string().optional(),
655
+ firewall_base: external_exports.string().optional(),
656
+ firewall_name: external_exports.string().optional(),
657
+ firewall_permission: external_exports.string().optional(),
658
+ firewall_rule_match: external_exports.string().optional(),
659
+ firewall_params: external_exports.record(external_exports.string(), external_exports.string()).optional(),
660
+ firewall_billable: external_exports.boolean().optional(),
661
+ firewall_error: external_exports.string().optional(),
662
+ upstream_binding_reason: external_exports.string().optional(),
663
+ upstream_binding_trusted_host: external_exports.string().optional(),
664
+ upstream_binding_request_host: external_exports.string().optional(),
665
+ upstream_binding_request_port: external_exports.number().optional(),
666
+ upstream_binding_server_connected: external_exports.boolean().optional(),
667
+ upstream_binding_server_address: external_exports.string().optional(),
668
+ upstream_binding_server_peername: external_exports.string().optional(),
669
+ upstream_binding_server_sockname: external_exports.string().optional(),
670
+ upstream_binding_client_sockname: external_exports.string().optional(),
671
+ upstream_binding_server_id: external_exports.string().optional(),
672
+ upstream_binding_client_id: external_exports.string().optional(),
673
+ upstream_binding_direct_binding_present: external_exports.boolean().optional(),
674
+ upstream_binding_direct_binding_host: external_exports.string().optional(),
675
+ upstream_binding_direct_binding_port: external_exports.number().optional(),
676
+ upstream_binding_direct_binding_kinds: external_exports.string().optional(),
677
+ upstream_binding_client_binding_count: external_exports.number().optional(),
678
+ upstream_binding_client_binding_match: external_exports.boolean().optional(),
679
+ upstream_binding_client_binding_endpoint_match: external_exports.boolean().optional(),
680
+ upstream_binding_client_binding_hosts: external_exports.string().optional(),
681
+ connector_diagnostic_slug: external_exports.string().optional(),
682
+ connector_diagnostic_reason: external_exports.string().optional(),
683
+ connector_diagnostic_env_names: external_exports.array(external_exports.string()).optional(),
684
+ connector_diagnostic_base: external_exports.string().optional(),
685
+ connector_route_reason: external_exports.string().optional(),
686
+ connector_route_candidates: external_exports.array(external_exports.string()).optional(),
687
+ auth_resolved_secrets: external_exports.array(external_exports.string()).optional(),
688
+ auth_refreshed_connectors: external_exports.array(external_exports.string()).optional(),
689
+ auth_refreshed_secrets: external_exports.array(external_exports.string()).optional(),
690
+ auth_cache_hit: external_exports.boolean().optional(),
691
+ auth_url_rewrite: external_exports.boolean().optional(),
692
+ error: external_exports.string().optional(),
693
+ // Capture-only fields (opt-in via captureNetworkBodies)
694
+ request_headers: external_exports.record(external_exports.string(), external_exports.string()).optional(),
695
+ request_body: external_exports.string().optional(),
696
+ request_body_encoding: external_exports.enum(["utf-8", "base64", "binary"]).optional(),
697
+ request_body_truncated: external_exports.boolean().optional(),
698
+ response_headers: external_exports.record(external_exports.string(), external_exports.string()).optional(),
699
+ response_body: external_exports.string().optional(),
700
+ response_body_encoding: external_exports.enum(["utf-8", "base64", "binary"]).optional(),
701
+ response_body_truncated: external_exports.boolean().optional()
702
+ });
703
+ var networkLogsResponseSchema = external_exports.object({
704
+ networkLogs: external_exports.array(networkLogEntrySchema),
705
+ hasMore: external_exports.boolean(),
706
+ nextCursor: external_exports.string().nullable().optional()
707
+ });
708
+ var searchResultSchema = external_exports.object({
709
+ runId: external_exports.string(),
710
+ agentName: external_exports.string(),
711
+ framework: external_exports.string().nullable().optional(),
712
+ matchedEvent: runEventSchema,
713
+ contextBefore: external_exports.array(runEventSchema),
714
+ contextAfter: external_exports.array(runEventSchema)
715
+ });
716
+ var logsSearchResponseSchema = external_exports.object({
717
+ results: external_exports.array(searchResultSchema),
718
+ hasMore: external_exports.boolean()
719
+ });
720
+ var logsSearchQuerySchema = external_exports.object({
721
+ keyword: external_exports.string().trim().min(1),
722
+ agentId: external_exports.string().uuid().optional(),
723
+ runId: external_exports.string().uuid().optional(),
724
+ since: timestampQueryNumberSchema.optional(),
725
+ limit: boundedIntegerQueryNumberSchema(1, 50).default(20),
726
+ before: boundedIntegerQueryNumberSchema(0, 10).default(0),
727
+ after: boundedIntegerQueryNumberSchema(0, 10).default(0)
728
+ });
729
+ var queueEntrySchema = external_exports.object({
730
+ position: external_exports.number(),
731
+ agentName: external_exports.string().nullable(),
732
+ agentDisplayName: external_exports.string().nullable(),
733
+ userEmail: external_exports.string().nullable(),
734
+ createdAt: external_exports.string(),
735
+ isOwner: external_exports.boolean(),
736
+ runId: external_exports.string().nullable(),
737
+ prompt: external_exports.string().nullable(),
738
+ triggerSource: triggerSourceSchema.nullable(),
739
+ sessionLink: external_exports.string().nullable()
740
+ });
741
+ var runningTaskSchema = external_exports.object({
742
+ runId: external_exports.string().nullable(),
743
+ agentName: external_exports.string(),
744
+ agentDisplayName: external_exports.string().nullable(),
745
+ userEmail: external_exports.string(),
746
+ startedAt: external_exports.string().nullable(),
747
+ isOwner: external_exports.boolean()
748
+ });
749
+ var concurrencyInfoSchema = external_exports.object({
750
+ tier: orgTierSchema,
751
+ limit: external_exports.number(),
752
+ active: external_exports.number(),
753
+ available: external_exports.number()
754
+ });
755
+ var queueResponseSchema = external_exports.object({
756
+ concurrency: concurrencyInfoSchema,
757
+ queue: external_exports.array(queueEntrySchema),
758
+ runningTasks: external_exports.array(runningTaskSchema),
759
+ estimatedTimePerRun: external_exports.number().nullable()
760
+ });
761
+
762
+ // ../../packages/api-contracts/src/contracts/chat-threads.ts
763
+ var c2 = initContract();
764
+ var attachFileSchema = external_exports.object({
765
+ id: external_exports.string(),
766
+ filename: external_exports.string(),
767
+ contentType: external_exports.string(),
768
+ size: external_exports.number()
769
+ });
770
+ var assetMaterializationSchema = external_exports.discriminatedUnion("status", [
771
+ external_exports.object({ status: external_exports.literal("ready") }),
772
+ external_exports.object({ status: external_exports.literal("pending") }),
773
+ external_exports.object({
774
+ status: external_exports.literal("failed"),
775
+ error: external_exports.object({
776
+ code: external_exports.string(),
777
+ message: external_exports.string(),
778
+ retryable: external_exports.boolean()
779
+ })
780
+ })
781
+ ]);
782
+ var assetRefSchema = external_exports.object({
783
+ id: external_exports.string().uuid(),
784
+ classification: external_exports.enum(["input", "published-output"]),
785
+ access: external_exports.enum(["private", "published"]),
786
+ materialization: assetMaterializationSchema,
787
+ provenance: external_exports.object({
788
+ provider: external_exports.string()
789
+ }).optional()
790
+ });
791
+ var resolvedAttachFileSchema = attachFileSchema.extend({
792
+ url: external_exports.string(),
793
+ assetRef: assetRefSchema.optional()
794
+ });
795
+ var chatThreadArtifactGoogleDriveSyncSchema = external_exports.discriminatedUnion("status", [
796
+ external_exports.object({
797
+ status: external_exports.literal("synced"),
798
+ id: external_exports.string(),
799
+ name: external_exports.string(),
800
+ webViewLink: external_exports.string().nullable()
801
+ }),
802
+ external_exports.object({ status: external_exports.literal("not_synced") }),
803
+ external_exports.object({ status: external_exports.literal("disconnected") }),
804
+ external_exports.object({ status: external_exports.literal("unknown") })
805
+ ]);
806
+ var chatThreadArtifactFileSchema = resolvedAttachFileSchema.extend({
807
+ createdAt: external_exports.string(),
808
+ artifactKind: hostedArtifactKindSchema.optional(),
809
+ previewImageUrl: external_exports.string().optional(),
810
+ aliasUrl: external_exports.string().optional(),
811
+ googleDriveSync: chatThreadArtifactGoogleDriveSyncSchema.optional()
812
+ });
813
+ var chatThreadArtifactRunSchema = external_exports.object({
814
+ runId: external_exports.string(),
815
+ files: external_exports.array(chatThreadArtifactFileSchema)
816
+ });
817
+ var artifactItemSchema = external_exports.object({
818
+ artifactItemId: external_exports.string(),
819
+ threadId: external_exports.string(),
820
+ runId: external_exports.string(),
821
+ fileId: external_exports.string(),
822
+ agentId: external_exports.string(),
823
+ agentName: external_exports.string().nullable().optional(),
824
+ agentAvatarUrl: external_exports.string().nullable().optional(),
825
+ threadTitle: external_exports.string().nullable().optional(),
826
+ filename: external_exports.string(),
827
+ contentType: external_exports.string(),
828
+ size: external_exports.number().default(0),
829
+ url: external_exports.string(),
830
+ assetRef: assetRefSchema.optional(),
831
+ previewImageUrl: external_exports.string().optional(),
832
+ createdAt: external_exports.string(),
833
+ updatedAt: external_exports.string(),
834
+ artifactKind: hostedArtifactKindSchema.optional(),
835
+ googleDriveSync: chatThreadArtifactGoogleDriveSyncSchema.optional()
836
+ });
837
+ var artifactsListQuerySchema = external_exports.object({
838
+ limit: external_exports.coerce.number().int().positive().max(1e4).optional(),
839
+ cursor: external_exports.string().optional(),
840
+ updatedAfter: external_exports.string().datetime().optional()
841
+ });
842
+ var artifactsListResponseSchema = external_exports.object({
843
+ artifacts: external_exports.array(artifactItemSchema),
844
+ /**
845
+ * True when more artifacts exist beyond this page. Retained for backward
846
+ * compatibility with older frontend bundles that read it; new clients follow
847
+ * `nextCursor` instead.
848
+ */
849
+ truncated: external_exports.boolean(),
850
+ /**
851
+ * Opaque cursor for the next page, or null when this is the last page.
852
+ */
853
+ nextCursor: external_exports.string().nullable(),
854
+ /**
855
+ * Database time captured before the first page was read. Incremental clients
856
+ * persist it only after the complete page chain has been cached.
857
+ */
858
+ syncUntil: external_exports.string().datetime().optional()
859
+ });
860
+ var imageArtifactEditSnapshotItemSchema = external_exports.object({
861
+ url: external_exports.string().url(),
862
+ x: external_exports.number(),
863
+ y: external_exports.number(),
864
+ zIndex: external_exports.number().int()
865
+ });
866
+ var imageArtifactEditSnapshotStateSchema = external_exports.object({
867
+ items: external_exports.array(imageArtifactEditSnapshotItemSchema),
868
+ version: external_exports.literal(1)
869
+ });
870
+ var imageArtifactEditSnapshotQuerySchema = external_exports.object({
871
+ url: external_exports.string().url()
872
+ });
873
+ var imageArtifactEditSnapshotUpsertSchema = external_exports.object({
874
+ snapshot: imageArtifactEditSnapshotStateSchema,
875
+ url: external_exports.string().url()
876
+ });
877
+ var imageArtifactEditSnapshotSchema = external_exports.object({
878
+ artifactUrl: external_exports.string().url(),
879
+ snapshot: imageArtifactEditSnapshotStateSchema,
880
+ updatedAt: external_exports.string()
881
+ });
882
+ var persistedAttachmentSchema = external_exports.object({
883
+ id: external_exports.string(),
884
+ url: external_exports.string(),
885
+ filename: external_exports.string(),
886
+ contentType: external_exports.string(),
887
+ size: external_exports.number()
888
+ });
889
+ var chatThreadUnreadsSchema = external_exports.object({
890
+ unreads: external_exports.array(
891
+ external_exports.object({
892
+ threadId: external_exports.string(),
893
+ unreadAt: external_exports.string()
894
+ })
895
+ )
896
+ });
897
+ var chatThreadUnreadAgentsSchema = external_exports.object({
898
+ agentIds: external_exports.array(external_exports.string())
899
+ });
900
+ var chatThreadEventIdSchema = external_exports.string().uuid();
901
+ var codexServiceTierSchema = external_exports.enum(["fast"]);
902
+ var chatThreadServiceTierSchema = external_exports.enum(["priority"]);
903
+ var chatThreadSnapshotProjectionSchema = external_exports.object({
904
+ id: external_exports.string().uuid(),
905
+ agentId: external_exports.string().uuid(),
906
+ title: external_exports.string().nullable(),
907
+ sortAt: external_exports.string(),
908
+ createdAt: external_exports.string(),
909
+ updatedAt: external_exports.string(),
910
+ pinnedAt: external_exports.string().nullable(),
911
+ renamedAt: external_exports.string().nullable(),
912
+ selectedModel: external_exports.string().nullable().default(null),
913
+ serviceTier: chatThreadServiceTierSchema.nullable().default(null),
914
+ computerUseHostId: external_exports.string().uuid().nullable().default(null),
915
+ cloudBrowserEnabled: external_exports.boolean().optional()
916
+ });
917
+ var chatThreadEventSchema = external_exports.object({
918
+ id: chatThreadEventIdSchema,
919
+ /** Server-assigned strict position within the user/org event stream. */
920
+ seqId: external_exports.number().int().positive(),
921
+ kind: external_exports.enum([
922
+ "created",
923
+ "renamed",
924
+ "deleted",
925
+ "pinned",
926
+ "unpinned",
927
+ "model_selection_updated",
928
+ "service_tier_updated",
929
+ "computer_use_host_updated",
930
+ "sort_touched"
931
+ ]),
932
+ chatThreadId: external_exports.string().uuid(),
933
+ agentId: external_exports.string().uuid(),
934
+ title: external_exports.string().nullable(),
935
+ selectedModel: external_exports.string().nullable().default(null),
936
+ serviceTier: chatThreadServiceTierSchema.nullable().default(null),
937
+ computerUseHostId: external_exports.string().uuid().nullable().default(null),
938
+ cloudBrowserEnabled: external_exports.boolean().optional(),
939
+ createdAt: external_exports.string()
940
+ });
941
+ var chatThreadEventResponseSchema = chatThreadEventSchema.extend({
942
+ seqId: chatThreadEventSchema.shape.seqId.optional()
943
+ });
944
+ var chatEventUsageProviderBreakdownSchema = external_exports.object({
945
+ provider: external_exports.string(),
946
+ credits: external_exports.number().int().nonnegative()
947
+ });
948
+ var chatEventUsageKindBreakdownSchema = external_exports.object({
949
+ kind: external_exports.string(),
950
+ credits: external_exports.number().int().nonnegative(),
951
+ providers: external_exports.array(chatEventUsageProviderBreakdownSchema)
952
+ });
953
+ var chatEventUsagePayloadSchema = external_exports.object({
954
+ version: external_exports.literal(1),
955
+ totalCredits: external_exports.number().int().nonnegative(),
956
+ settledAt: external_exports.string(),
957
+ breakdown: external_exports.array(chatEventUsageKindBreakdownSchema)
958
+ });
959
+ var toolSummaryEntrySchema = external_exports.object({
960
+ kind: external_exports.literal("tool"),
961
+ name: external_exports.string(),
962
+ input: external_exports.record(external_exports.string(), external_exports.unknown()).optional()
963
+ });
964
+ var textSummaryEntrySchema = external_exports.object({
965
+ kind: external_exports.literal("text"),
966
+ text: external_exports.string()
967
+ });
968
+ var summaryEntrySchema = external_exports.union([
969
+ external_exports.string(),
970
+ toolSummaryEntrySchema,
971
+ textSummaryEntrySchema
972
+ ]);
973
+ var presentationGenerationTemplateRequestSchema = external_exports.object({
974
+ type: external_exports.literal("presentation"),
975
+ selection: external_exports.object({
976
+ templateId: external_exports.string().min(1),
977
+ colorSystemId: external_exports.string().min(1).optional(),
978
+ previewUrl: external_exports.string().url().optional()
979
+ }).strict()
980
+ });
981
+ var videoGenerationTemplateRequestSchema = external_exports.object({
982
+ type: external_exports.literal("video"),
983
+ selection: external_exports.object({
984
+ stylePresetId: external_exports.string().min(1),
985
+ /** User-visible snapshot for API-backed avatar templates. */
986
+ titleSnapshot: external_exports.string().trim().min(1).optional(),
987
+ /** User-visible preview snapshot for API-backed avatar templates. */
988
+ previewUrl: external_exports.url().optional(),
989
+ /** Provider voice selected for API-backed avatar templates. */
990
+ voiceId: avatarVideoVoiceIdSchema.optional(),
991
+ /** Output frame selected for API-backed avatar templates. */
992
+ aspectRatio: avatarVideoAspectRatioSchema.optional()
993
+ })
994
+ });
995
+ var illustrationGenerationTemplateRequestSchema = external_exports.object({
996
+ type: external_exports.literal("illustration"),
997
+ selection: external_exports.object({
998
+ illustrationStyleId: external_exports.string().min(1)
999
+ })
1000
+ });
1001
+ var workflowGenerationTemplateRequestSchema = external_exports.object({
1002
+ type: external_exports.literal("workflow"),
1003
+ selection: external_exports.object({
1004
+ workflowTemplateId: external_exports.string().min(1)
1005
+ })
1006
+ });
1007
+ var websiteGenerationTemplateRequestSchema = external_exports.object({
1008
+ type: external_exports.literal("website"),
1009
+ selection: external_exports.object({
1010
+ websiteTemplateId: external_exports.string().min(1)
1011
+ }).strict()
1012
+ });
1013
+ var generationTemplateRequestSchema = external_exports.discriminatedUnion("type", [
1014
+ presentationGenerationTemplateRequestSchema,
1015
+ videoGenerationTemplateRequestSchema,
1016
+ illustrationGenerationTemplateRequestSchema,
1017
+ workflowGenerationTemplateRequestSchema,
1018
+ websiteGenerationTemplateRequestSchema
1019
+ ]);
1020
+ var userMessageTextPartSchema = external_exports.object({
1021
+ type: external_exports.literal("text"),
1022
+ text: external_exports.string().min(1)
1023
+ }).strict();
1024
+ var userMessageChatThreadPartSchema = external_exports.object({
1025
+ type: external_exports.literal("chat_thread"),
1026
+ threadId: external_exports.string().uuid(),
1027
+ titleSnapshot: external_exports.string().min(1)
1028
+ }).strict();
1029
+ var userMessageAgentPartSchema = external_exports.object({
1030
+ type: external_exports.literal("agent"),
1031
+ agentId: external_exports.string().uuid(),
1032
+ nameSnapshot: external_exports.string().min(1)
1033
+ }).strict();
1034
+ var userMessageTemplatePartSchema = external_exports.object({
1035
+ type: external_exports.literal("template"),
1036
+ titleSnapshot: external_exports.string().min(1),
1037
+ template: generationTemplateRequestSchema
1038
+ }).strict();
1039
+ var feedbackNotePartSchema = external_exports.discriminatedUnion("type", [
1040
+ userMessageTextPartSchema,
1041
+ userMessageChatThreadPartSchema,
1042
+ userMessageAgentPartSchema,
1043
+ userMessageTemplatePartSchema
1044
+ ]);
1045
+ var userMessageExternalSourcePartSchema = external_exports.object({
1046
+ type: external_exports.literal("source"),
1047
+ kind: external_exports.enum([
1048
+ "slack",
1049
+ "feishu",
1050
+ "teams",
1051
+ "telegram",
1052
+ "github",
1053
+ "agentphone"
1054
+ ]),
1055
+ href: external_exports.string().url().optional()
1056
+ }).strict();
1057
+ var userMessageAgentSourcePartSchema = external_exports.object({
1058
+ type: external_exports.literal("source"),
1059
+ kind: external_exports.literal("agent"),
1060
+ runId: external_exports.string().uuid(),
1061
+ threadId: external_exports.string().uuid(),
1062
+ agentId: external_exports.string().uuid(),
1063
+ titleSnapshot: external_exports.string().min(1),
1064
+ href: external_exports.string().min(1)
1065
+ }).strict();
1066
+ var userMessageSourcePartSchema = external_exports.discriminatedUnion("kind", [
1067
+ userMessageExternalSourcePartSchema,
1068
+ userMessageAgentSourcePartSchema
1069
+ ]);
1070
+ var userMessagePartSchema = external_exports.discriminatedUnion("type", [
1071
+ userMessageTextPartSchema,
1072
+ userMessageChatThreadPartSchema,
1073
+ userMessageAgentPartSchema,
1074
+ userMessageTemplatePartSchema,
1075
+ userMessageSourcePartSchema,
1076
+ external_exports.object({
1077
+ type: external_exports.literal("automation"),
1078
+ workflowName: external_exports.string().min(1),
1079
+ workflowId: external_exports.string().uuid().optional(),
1080
+ automationBrief: external_exports.string().optional()
1081
+ }).strict(),
1082
+ external_exports.object({
1083
+ type: external_exports.literal("goal"),
1084
+ goalBrief: external_exports.string().min(1)
1085
+ }).strict(),
1086
+ external_exports.object({
1087
+ type: external_exports.literal("file"),
1088
+ fileId: external_exports.string().min(1),
1089
+ filenameSnapshot: external_exports.string().min(1),
1090
+ contentType: external_exports.string().min(1)
1091
+ }).strict(),
1092
+ external_exports.object({
1093
+ type: external_exports.literal("feedback"),
1094
+ quote: external_exports.string().min(1),
1095
+ note: external_exports.array(feedbackNotePartSchema).min(1),
1096
+ source: external_exports.object({
1097
+ type: external_exports.literal("mail"),
1098
+ id: external_exports.string().min(1),
1099
+ status: external_exports.enum(["draft", "sent"]),
1100
+ sentId: external_exports.string().min(1).optional()
1101
+ }).strict().optional()
1102
+ }).strict()
1103
+ ]);
1104
+ var userMessageDocumentSchema = external_exports.object({
1105
+ version: external_exports.literal(1),
1106
+ parts: external_exports.array(userMessagePartSchema).min(1).refine(
1107
+ (parts) => {
1108
+ return parts.filter((part) => {
1109
+ return part.type === "source" || part.type === "automation" || part.type === "goal";
1110
+ }).length <= 1;
1111
+ },
1112
+ { message: "A user message may contain at most one non-content part" }
1113
+ )
1114
+ }).strict();
1115
+ var chatEventBaseSchema = external_exports.object({
1116
+ id: external_exports.string(),
1117
+ threadId: external_exports.string(),
1118
+ content: external_exports.string().nullable(),
1119
+ runId: external_exports.string().optional(),
1120
+ runGroupId: external_exports.string().optional(),
1121
+ triggerSource: triggerSourceSchema.optional(),
1122
+ isGoalRun: external_exports.boolean().optional(),
1123
+ runEventId: external_exports.string().optional(),
1124
+ revokesEventId: external_exports.string().optional(),
1125
+ /** Server-assigned strict position within the chat thread. */
1126
+ seqId: external_exports.number().int().positive(),
1127
+ sequenceNumber: external_exports.number().nullable().optional(),
1128
+ createdAt: external_exports.string()
1129
+ });
1130
+ var chatEventRecommendedFollowupSchema = external_exports.object({
1131
+ prompt: external_exports.string(),
1132
+ kind: external_exports.enum(["talk", "generate"]),
1133
+ generationType: external_exports.enum(["image", "video", "presentation", "website"]).optional()
1134
+ });
1135
+ var chatEventRecommendedFollowupsSchema = external_exports.preprocess((value) => {
1136
+ if (!Array.isArray(value)) {
1137
+ return [];
1138
+ }
1139
+ return value.flatMap((item) => {
1140
+ const parsed = chatEventRecommendedFollowupSchema.safeParse(item);
1141
+ return parsed.success ? [parsed.data] : [];
1142
+ });
1143
+ }, external_exports.array(chatEventRecommendedFollowupSchema));
1144
+ var inputPromptEventSchema = chatEventBaseSchema.extend({
1145
+ eventType: external_exports.literal("input.prompt"),
1146
+ content: external_exports.null(),
1147
+ userMessage: userMessageDocumentSchema,
1148
+ attachFiles: external_exports.array(resolvedAttachFileSchema).optional(),
1149
+ generationTemplate: generationTemplateRequestSchema.optional()
1150
+ }).strict();
1151
+ var inputAutomationEventSchema = chatEventBaseSchema.extend({
1152
+ eventType: external_exports.literal("input.automation"),
1153
+ content: external_exports.null(),
1154
+ userMessage: userMessageDocumentSchema.optional(),
1155
+ triggerSource: triggerSourceSchema
1156
+ }).strict();
1157
+ var inputGoalEventSchema = chatEventBaseSchema.extend({
1158
+ eventType: external_exports.literal("input.goal"),
1159
+ content: external_exports.null(),
1160
+ userMessage: userMessageDocumentSchema,
1161
+ // Queue association stays server-side; the public event preserves only
1162
+ // the user-facing document and stream ordering contract.
1163
+ runId: external_exports.never().optional(),
1164
+ runGroupId: external_exports.never().optional(),
1165
+ triggerSource: external_exports.never().optional(),
1166
+ isGoalRun: external_exports.never().optional(),
1167
+ runEventId: external_exports.never().optional(),
1168
+ revokesEventId: external_exports.never().optional(),
1169
+ sequenceNumber: external_exports.never().optional()
1170
+ }).strict();
1171
+ var inputRejectedEventSchema = chatEventBaseSchema.extend({
1172
+ eventType: external_exports.literal("input.rejected"),
1173
+ content: external_exports.null(),
1174
+ userMessage: userMessageDocumentSchema,
1175
+ error: external_exports.string(),
1176
+ attachFiles: external_exports.array(resolvedAttachFileSchema).optional(),
1177
+ generationTemplate: generationTemplateRequestSchema.optional()
1178
+ }).strict();
1179
+ var outputMessageEventSchema = chatEventBaseSchema.extend({
1180
+ eventType: external_exports.literal("output.message"),
1181
+ content: external_exports.string()
1182
+ }).strict();
1183
+ var outputErrorEventSchema = chatEventBaseSchema.extend({
1184
+ eventType: external_exports.literal("output.error"),
1185
+ error: external_exports.string()
1186
+ }).strict();
1187
+ var outputThinkingEventSchema = chatEventBaseSchema.extend({
1188
+ eventType: external_exports.literal("output.thinking"),
1189
+ content: external_exports.null(),
1190
+ thinking: external_exports.string()
1191
+ }).strict();
1192
+ var outputFollowupsEventSchema = chatEventBaseSchema.extend({
1193
+ eventType: external_exports.literal("output.followups"),
1194
+ content: external_exports.null(),
1195
+ recommendedFollowups: chatEventRecommendedFollowupsSchema
1196
+ }).strict();
1197
+ var runQueuedEventSchema = chatEventBaseSchema.extend({
1198
+ eventType: external_exports.literal("run.queued"),
1199
+ runId: external_exports.string(),
1200
+ content: external_exports.string()
1201
+ }).strict();
1202
+ var runDequeuedEventSchema = chatEventBaseSchema.extend({
1203
+ eventType: external_exports.literal("run.dequeued"),
1204
+ runId: external_exports.string(),
1205
+ content: external_exports.null(),
1206
+ revokesEventId: external_exports.string()
1207
+ }).strict();
1208
+ var runCompletedEventSchema = chatEventBaseSchema.extend({
1209
+ eventType: external_exports.literal("run.completed"),
1210
+ runId: external_exports.string(),
1211
+ attachFiles: external_exports.array(resolvedAttachFileSchema).optional(),
1212
+ runLifecycleEvent: external_exports.literal("completed")
1213
+ }).strict();
1214
+ var runFailedEventSchema = chatEventBaseSchema.extend({
1215
+ eventType: external_exports.literal("run.failed"),
1216
+ runId: external_exports.string(),
1217
+ error: external_exports.string().optional(),
1218
+ runLifecycleEvent: external_exports.literal("failed")
1219
+ }).strict();
1220
+ var runCancelledEventSchema = chatEventBaseSchema.extend({
1221
+ eventType: external_exports.literal("run.cancelled"),
1222
+ runId: external_exports.string(),
1223
+ error: external_exports.string().optional(),
1224
+ runLifecycleEvent: external_exports.literal("cancelled")
1225
+ }).strict();
1226
+ var controlInterruptEventSchema = chatEventBaseSchema.extend({
1227
+ eventType: external_exports.literal("control.interrupt"),
1228
+ content: external_exports.null(),
1229
+ interruptsRunId: external_exports.string()
1230
+ }).strict();
1231
+ var controlRevokeEventSchema = chatEventBaseSchema.extend({
1232
+ eventType: external_exports.literal("control.revoke"),
1233
+ content: external_exports.null(),
1234
+ revokesEventId: external_exports.string()
1235
+ }).strict();
1236
+ var browserOpenEventSchema = chatEventBaseSchema.extend({
1237
+ eventType: external_exports.literal("browser.open"),
1238
+ content: external_exports.null()
1239
+ }).strict();
1240
+ var browserCloseEventSchema = chatEventBaseSchema.extend({
1241
+ eventType: external_exports.literal("browser.close"),
1242
+ content: external_exports.null()
1243
+ }).strict();
1244
+ var browserStartedEventSchema = chatEventBaseSchema.extend({
1245
+ eventType: external_exports.literal("browser.started"),
1246
+ content: external_exports.null()
1247
+ }).strict();
1248
+ var browserStoppedEventSchema = chatEventBaseSchema.extend({
1249
+ eventType: external_exports.literal("browser.stopped"),
1250
+ content: external_exports.null()
1251
+ }).strict();
1252
+ var goalChangedEventSchema = chatEventBaseSchema.extend({
1253
+ eventType: external_exports.literal("goal.changed"),
1254
+ content: external_exports.null(),
1255
+ goalEvent: zeroGoalEventSchema
1256
+ }).strict();
1257
+ var usageRecordedEventSchema = chatEventBaseSchema.extend({
1258
+ eventType: external_exports.literal("usage.recorded"),
1259
+ runId: external_exports.string(),
1260
+ content: external_exports.null(),
1261
+ usage: chatEventUsagePayloadSchema
1262
+ }).strict();
1263
+ var chatEventSchema = external_exports.discriminatedUnion("eventType", [
1264
+ inputPromptEventSchema,
1265
+ inputAutomationEventSchema,
1266
+ inputGoalEventSchema,
1267
+ inputRejectedEventSchema,
1268
+ outputMessageEventSchema,
1269
+ outputErrorEventSchema,
1270
+ outputThinkingEventSchema,
1271
+ outputFollowupsEventSchema,
1272
+ runQueuedEventSchema,
1273
+ runDequeuedEventSchema,
1274
+ runCompletedEventSchema,
1275
+ runFailedEventSchema,
1276
+ runCancelledEventSchema,
1277
+ controlInterruptEventSchema,
1278
+ controlRevokeEventSchema,
1279
+ browserOpenEventSchema,
1280
+ browserCloseEventSchema,
1281
+ goalChangedEventSchema,
1282
+ usageRecordedEventSchema
1283
+ ]);
1284
+ if (CHAT_EVENT_TYPES.length !== chatEventSchema.options.length) {
1285
+ throw new Error(
1286
+ "ChatEvent schema must cover every registered event catalog leaf"
1287
+ );
1288
+ }
1289
+ var compatibleChatEventSchema = external_exports.discriminatedUnion("eventType", [
1290
+ ...chatEventSchema.options,
1291
+ browserStartedEventSchema,
1292
+ browserStoppedEventSchema
1293
+ ]);
1294
+ var chatThreadDetailSchema = external_exports.object({
1295
+ /**
1296
+ * Read-state watermark. A thread is unread when its latest run-finish marker
1297
+ * is newer than this timestamp.
1298
+ */
1299
+ lastReadAt: external_exports.string().nullable(),
1300
+ /**
1301
+ * A capable cancelled run is still preserving its resumable session before
1302
+ * same-thread continuation can start. Optional during API/Platform rollout.
1303
+ */
1304
+ cancellationRecoveryPending: external_exports.boolean().optional()
1305
+ });
1306
+ var chatThreadMetadataSchema = external_exports.object({
1307
+ id: external_exports.string(),
1308
+ // Optional during API/CLI rollout so a newer CLI can fall back to the
1309
+ // compact thread snapshot when it reaches an older API.
1310
+ agentId: external_exports.string().uuid().optional(),
1311
+ title: external_exports.string().nullable(),
1312
+ selectedModel: external_exports.string().nullable()
1313
+ });
1314
+ var chatThreadDraftSchema = external_exports.object({
1315
+ draftUserMessage: userMessageDocumentSchema.nullable(),
1316
+ draftAttachments: external_exports.array(persistedAttachmentSchema).nullable()
1317
+ }).superRefine(requireUserMessageForDraftAttachments);
1318
+ var selectedModelRequestSchema = supportedRunModelSchema;
1319
+ function isRecord(value) {
1320
+ return typeof value === "object" && value !== null;
1321
+ }
1322
+ function legacyModelSelectionModel(value) {
1323
+ if (value === null) {
1324
+ return null;
1325
+ }
1326
+ if (!isRecord(value)) {
1327
+ return void 0;
1328
+ }
1329
+ const selectedModel = value.selectedModel;
1330
+ return typeof selectedModel === "string" ? selectedModel : void 0;
1331
+ }
1332
+ function normalizeLegacyModelSelectionInput(value, options) {
1333
+ if (!isRecord(value) || "model" in value || !("modelSelection" in value)) {
1334
+ return value;
1335
+ }
1336
+ const legacyModelSelection = legacyModelSelectionModel(value.modelSelection);
1337
+ if (legacyModelSelection === void 0 || legacyModelSelection === null && !options.allowNull) {
1338
+ return value;
1339
+ }
1340
+ return { ...value, model: legacyModelSelection };
1341
+ }
1342
+ var chatThreadCreateBodySchema = external_exports.preprocess(
1343
+ (value) => {
1344
+ return normalizeLegacyModelSelectionInput(value, { allowNull: false });
1345
+ },
1346
+ external_exports.object({
1347
+ agentId: external_exports.string().min(1),
1348
+ clientThreadId: external_exports.string().uuid().optional(),
1349
+ eventId: chatThreadEventIdSchema.optional(),
1350
+ /**
1351
+ * Selected model id. The API resolves the effective model provider from org
1352
+ * policy and available credentials. Omit it to inherit the model of the run
1353
+ * that owns the calling token; callers without a run must send it.
1354
+ */
1355
+ model: selectedModelRequestSchema.optional(),
1356
+ title: external_exports.string().optional()
1357
+ })
1358
+ );
1359
+ var chatThreadModelSelectionUpdateBodySchema = external_exports.preprocess(
1360
+ (value) => {
1361
+ return normalizeLegacyModelSelectionInput(value, { allowNull: true });
1362
+ },
1363
+ external_exports.object({
1364
+ /**
1365
+ * Selected model id, or null to clear the thread's selected model.
1366
+ */
1367
+ model: selectedModelRequestSchema.nullable(),
1368
+ codexServiceTier: codexServiceTierSchema.nullable().optional(),
1369
+ eventId: chatThreadEventIdSchema.optional(),
1370
+ serviceTierEventId: chatThreadEventIdSchema.optional()
1371
+ })
1372
+ );
1373
+ var chatRunOptionsRequestSchema = external_exports.object({
1374
+ codexServiceTier: codexServiceTierSchema.optional()
1375
+ });
1376
+ var chatNormalSendBodyShape = {
1377
+ agentId: external_exports.string().min(1),
1378
+ prompt: external_exports.string().min(1),
1379
+ threadId: external_exports.string().optional(),
1380
+ clientThreadId: external_exports.string().uuid().optional(),
1381
+ chatThreadEventId: chatThreadEventIdSchema.optional(),
1382
+ // Client-generated UUID for the sort touch created by direct user sends.
1383
+ // Lets event-sourced clients reconcile optimistic sidebar recency by id.
1384
+ chatThreadSortEventId: chatThreadEventIdSchema.optional(),
1385
+ /**
1386
+ * Selected model id. The API resolves the effective provider from org
1387
+ * policy and available credentials. Existing threads may omit it to
1388
+ * reuse the thread's persisted model.
1389
+ */
1390
+ model: selectedModelRequestSchema.optional(),
1391
+ runOptions: chatRunOptionsRequestSchema.optional(),
1392
+ userMessage: userMessageDocumentSchema,
1393
+ generationTemplate: generationTemplateRequestSchema.optional(),
1394
+ computerUseHostId: external_exports.string().uuid().nullable().optional(),
1395
+ cloudBrowserEnabled: external_exports.boolean().optional(),
1396
+ // Optional for backward compatibility: older clients that omit this field
1397
+ // still trigger title generation (server guards with !== false, not === true).
1398
+ hasTextContent: external_exports.boolean().optional(),
1399
+ attachFiles: external_exports.array(attachFileSchema).optional(),
1400
+ // Preview evaluation escape hatch: when enabled, the request asks the
1401
+ // runner to bypass preview mock CLIs and use the real agent runtime.
1402
+ realAgentInPreview: external_exports.boolean().optional()
1403
+ };
1404
+ var chatEventNormalSendBodySchema = external_exports.preprocess(
1405
+ (value) => {
1406
+ return normalizeLegacyModelSelectionInput(value, { allowNull: false });
1407
+ },
1408
+ external_exports.object({
1409
+ ...chatNormalSendBodyShape,
1410
+ // Client-generated UUID used as the user event's primary key.
1411
+ clientEventId: external_exports.string().uuid().optional(),
1412
+ revokesEventId: external_exports.string().min(1).optional(),
1413
+ interruptsRunId: external_exports.undefined().optional()
1414
+ }).refine(
1415
+ (body) => {
1416
+ return !(body.cloudBrowserEnabled && body.computerUseHostId);
1417
+ },
1418
+ {
1419
+ message: "Cloud browser and Computer Use cannot both be enabled",
1420
+ path: ["cloudBrowserEnabled"]
1421
+ }
1422
+ )
1423
+ );
1424
+ var chatThreadsContract = c2.router({
1425
+ snapshot: {
1426
+ method: "GET",
1427
+ path: "/api/zero/chat-threads/snapshot",
1428
+ headers: authHeadersSchema,
1429
+ responses: {
1430
+ 200: external_exports.object({
1431
+ chatThreads: external_exports.array(chatThreadSnapshotProjectionSchema),
1432
+ latestEventId: chatThreadEventIdSchema.nullable(),
1433
+ // Remove optionality only after pre-sequence APIs cannot serve a newly
1434
+ // promoted app during rollout or rollback.
1435
+ latestSeqId: external_exports.number().int().positive().nullable().optional()
1436
+ }),
1437
+ 401: apiErrorSchema,
1438
+ 403: apiErrorSchema
1439
+ },
1440
+ summary: "Get the compacted chat thread snapshot for the caller's current organization."
1441
+ },
1442
+ events: {
1443
+ method: "GET",
1444
+ path: "/api/zero/chat-threads/events",
1445
+ headers: authHeadersSchema,
1446
+ query: external_exports.object({
1447
+ sinceSeqId: external_exports.coerce.number().int().positive().optional(),
1448
+ // Previous clients use UUID cursors. The API resolves them to seq_id
1449
+ // until those clients can no longer remain active.
1450
+ sinceEventId: chatThreadEventIdSchema.optional()
1451
+ }),
1452
+ responses: {
1453
+ 200: external_exports.object({
1454
+ events: external_exports.array(chatThreadEventResponseSchema),
1455
+ hasMore: external_exports.boolean()
1456
+ }),
1457
+ 401: apiErrorSchema,
1458
+ 403: apiErrorSchema,
1459
+ 410: apiErrorSchema
1460
+ },
1461
+ summary: "List chat thread lifecycle events after an optional cursor."
1462
+ },
1463
+ activeIds: {
1464
+ method: "GET",
1465
+ path: "/api/zero/chat-threads/active-ids",
1466
+ headers: authHeadersSchema,
1467
+ responses: {
1468
+ 200: external_exports.object({
1469
+ threadIds: external_exports.array(external_exports.string().uuid())
1470
+ }),
1471
+ 401: apiErrorSchema
1472
+ },
1473
+ summary: "List chat thread ids that currently have queued, pending, or running runs."
1474
+ },
1475
+ create: {
1476
+ method: "POST",
1477
+ path: "/api/zero/chat-threads",
1478
+ headers: authHeadersSchema,
1479
+ body: chatThreadCreateBodySchema,
1480
+ responses: {
1481
+ 201: external_exports.object({
1482
+ id: external_exports.string(),
1483
+ title: external_exports.string().nullable(),
1484
+ createdAt: external_exports.string(),
1485
+ // The model the thread was pinned to, echoed so a caller that omitted
1486
+ // `model` learns what it inherited. Remove optionality only after
1487
+ // pre-echo APIs cannot serve a newly released CLI during rollout.
1488
+ selectedModel: external_exports.string().optional()
1489
+ }),
1490
+ 400: apiErrorSchema,
1491
+ 401: apiErrorSchema,
1492
+ 402: apiErrorSchema,
1493
+ 403: apiErrorSchema,
1494
+ 404: apiErrorSchema
1495
+ },
1496
+ summary: "Create a new chat thread"
1497
+ },
1498
+ drafts: {
1499
+ method: "GET",
1500
+ // Sibling path (not nested under /chat-threads/) so it can never
1501
+ // collide with the /chat-threads/:id route pattern.
1502
+ path: "/api/zero/chat-thread-drafts",
1503
+ headers: authHeadersSchema,
1504
+ query: external_exports.object({}),
1505
+ responses: {
1506
+ 200: external_exports.object({
1507
+ /**
1508
+ * Thread ids owned by the caller that currently hold an unsent draft
1509
+ * (a user message with optional `draftAttachments`).
1510
+ */
1511
+ draftThreadIds: external_exports.array(external_exports.string())
1512
+ }),
1513
+ 401: apiErrorSchema
1514
+ },
1515
+ summary: "Report which of the caller's chat threads hold an unsent composer draft. Fetched separately from the thread list so the sidebar draft dots don't gate the list query."
1516
+ },
1517
+ unreads: {
1518
+ method: "GET",
1519
+ path: "/api/zero/chat-thread-unreads",
1520
+ headers: authHeadersSchema,
1521
+ query: external_exports.object({
1522
+ agentId: external_exports.string().min(1)
1523
+ }),
1524
+ responses: {
1525
+ 200: chatThreadUnreadsSchema,
1526
+ 401: apiErrorSchema
1527
+ },
1528
+ summary: "List the caller's unread chat threads under an agent, each with the timestamp of the message that made it unread."
1529
+ },
1530
+ unreadAgents: {
1531
+ method: "GET",
1532
+ path: "/api/zero/chat-thread-unread-agents",
1533
+ headers: authHeadersSchema,
1534
+ responses: {
1535
+ 200: chatThreadUnreadAgentsSchema,
1536
+ 401: apiErrorSchema,
1537
+ 403: apiErrorSchema
1538
+ },
1539
+ summary: "List agent IDs with at least one unread chat thread for the caller."
1540
+ }
1541
+ });
1542
+ var chatThreadIdPathParamsSchema = external_exports.object({ id: external_exports.string().uuid() });
1543
+ var chatThreadThreadIdPathParamsSchema = external_exports.object({
1544
+ threadId: external_exports.string().uuid()
1545
+ });
1546
+ var chatThreadEventPathParamsSchema = chatThreadThreadIdPathParamsSchema.extend({
1547
+ eventId: external_exports.string().uuid()
1548
+ });
1549
+ var chatThreadByIdContract = c2.router({
1550
+ get: {
1551
+ method: "GET",
1552
+ path: "/api/zero/chat-threads/:id",
1553
+ headers: authHeadersSchema,
1554
+ pathParams: chatThreadIdPathParamsSchema,
1555
+ responses: {
1556
+ 200: chatThreadDetailSchema,
1557
+ 400: apiErrorSchema,
1558
+ 401: apiErrorSchema,
1559
+ 404: apiErrorSchema
1560
+ },
1561
+ summary: "Get private chat thread state"
1562
+ },
1563
+ patch: {
1564
+ method: "PATCH",
1565
+ path: "/api/zero/chat-threads/:id",
1566
+ headers: authHeadersSchema,
1567
+ pathParams: chatThreadIdPathParamsSchema,
1568
+ body: external_exports.object({
1569
+ draftUserMessage: userMessageDocumentSchema.nullable(),
1570
+ draftAttachments: external_exports.array(persistedAttachmentSchema).nullable().optional()
1571
+ }).superRefine(requireUserMessageForDraftAttachments),
1572
+ responses: {
1573
+ 204: c2.noBody(),
1574
+ 400: apiErrorSchema,
1575
+ 401: apiErrorSchema,
1576
+ 404: apiErrorSchema
1577
+ },
1578
+ summary: "Update chat thread draft message and attachments"
1579
+ },
1580
+ delete: {
1581
+ method: "DELETE",
1582
+ path: "/api/zero/chat-threads/:id",
1583
+ headers: authHeadersSchema,
1584
+ pathParams: chatThreadIdPathParamsSchema,
1585
+ query: external_exports.object({ eventId: chatThreadEventIdSchema.optional() }).optional(),
1586
+ responses: {
1587
+ 204: c2.noBody(),
1588
+ 400: apiErrorSchema,
1589
+ 401: apiErrorSchema,
1590
+ 402: apiErrorSchema,
1591
+ 404: apiErrorSchema
1592
+ },
1593
+ summary: "Delete a chat thread",
1594
+ body: c2.noBody()
1595
+ }
1596
+ });
1597
+ var chatThreadDraftContract = c2.router({
1598
+ get: {
1599
+ method: "GET",
1600
+ path: "/api/zero/chat-threads/:id/draft",
1601
+ headers: authHeadersSchema,
1602
+ pathParams: chatThreadIdPathParamsSchema,
1603
+ responses: {
1604
+ 200: chatThreadDraftSchema,
1605
+ 400: apiErrorSchema,
1606
+ 401: apiErrorSchema,
1607
+ 404: apiErrorSchema
1608
+ },
1609
+ summary: "Get chat thread draft content and attachments"
1610
+ }
1611
+ });
1612
+ var chatThreadMarkReadContract = c2.router({
1613
+ markRead: {
1614
+ method: "POST",
1615
+ path: "/api/zero/chat-threads/:id/mark-read",
1616
+ headers: authHeadersSchema,
1617
+ pathParams: chatThreadIdPathParamsSchema,
1618
+ body: c2.noBody(),
1619
+ responses: {
1620
+ 200: external_exports.object({
1621
+ lastReadAt: external_exports.string().nullable(),
1622
+ /**
1623
+ * Fresh unread snapshot for the thread's agent (same shape as the
1624
+ * unreads endpoint). Clients should treat
1625
+ * `chatThreadReadCursorUpdated` as read-state invalidation.
1626
+ */
1627
+ unreads: chatThreadUnreadsSchema.shape.unreads
1628
+ }),
1629
+ 400: apiErrorSchema,
1630
+ 401: apiErrorSchema,
1631
+ 404: apiErrorSchema
1632
+ },
1633
+ summary: "Mark a chat thread as read up to the latest run-finish marker"
1634
+ }
1635
+ });
1636
+ var chatThreadMarkAgentReadContract = c2.router({
1637
+ markAgentRead: {
1638
+ method: "POST",
1639
+ path: "/api/zero/chat-thread-unreads/mark-read",
1640
+ headers: authHeadersSchema,
1641
+ body: external_exports.object({
1642
+ agentId: external_exports.string().min(1)
1643
+ }),
1644
+ responses: {
1645
+ 204: c2.noBody(),
1646
+ 400: apiErrorSchema,
1647
+ 401: apiErrorSchema,
1648
+ 403: apiErrorSchema
1649
+ },
1650
+ summary: "Mark all unread chat threads under an agent as read"
1651
+ }
1652
+ });
1653
+ var chatThreadPinContract = c2.router({
1654
+ pin: {
1655
+ method: "POST",
1656
+ path: "/api/zero/chat-threads/:id/pin",
1657
+ headers: authHeadersSchema,
1658
+ pathParams: chatThreadIdPathParamsSchema,
1659
+ query: external_exports.object({ eventId: chatThreadEventIdSchema.optional() }).optional(),
1660
+ body: c2.noBody(),
1661
+ responses: {
1662
+ 204: c2.noBody(),
1663
+ 400: apiErrorSchema,
1664
+ 401: apiErrorSchema,
1665
+ 404: apiErrorSchema
1666
+ },
1667
+ summary: "Pin a chat thread to the top of the sidebar"
1668
+ }
1669
+ });
1670
+ var chatThreadUnpinContract = c2.router({
1671
+ unpin: {
1672
+ method: "POST",
1673
+ path: "/api/zero/chat-threads/:id/unpin",
1674
+ headers: authHeadersSchema,
1675
+ pathParams: chatThreadIdPathParamsSchema,
1676
+ query: external_exports.object({ eventId: chatThreadEventIdSchema.optional() }).optional(),
1677
+ body: c2.noBody(),
1678
+ responses: {
1679
+ 204: c2.noBody(),
1680
+ 400: apiErrorSchema,
1681
+ 401: apiErrorSchema,
1682
+ 404: apiErrorSchema
1683
+ },
1684
+ summary: "Remove the pin from a chat thread"
1685
+ }
1686
+ });
1687
+ var chatThreadRenameContract = c2.router({
1688
+ rename: {
1689
+ method: "POST",
1690
+ path: "/api/zero/chat-threads/:id/rename",
1691
+ headers: authHeadersSchema,
1692
+ pathParams: chatThreadIdPathParamsSchema,
1693
+ body: external_exports.object({
1694
+ title: external_exports.string().min(1),
1695
+ eventId: chatThreadEventIdSchema.optional()
1696
+ }),
1697
+ responses: {
1698
+ 204: c2.noBody(),
1699
+ 400: apiErrorSchema,
1700
+ 401: apiErrorSchema,
1701
+ 403: apiErrorSchema,
1702
+ 404: apiErrorSchema
1703
+ },
1704
+ summary: "Rename a chat thread (suppresses automated title generation)"
1705
+ }
1706
+ });
1707
+ var chatThreadMetadataContract = c2.router({
1708
+ get: {
1709
+ method: "GET",
1710
+ path: "/api/zero/chat-threads/:id/metadata",
1711
+ headers: authHeadersSchema,
1712
+ pathParams: chatThreadIdPathParamsSchema,
1713
+ responses: {
1714
+ 200: chatThreadMetadataSchema,
1715
+ 400: apiErrorSchema,
1716
+ 401: apiErrorSchema,
1717
+ 403: apiErrorSchema,
1718
+ 404: apiErrorSchema
1719
+ },
1720
+ summary: "Get chat thread metadata"
1721
+ }
1722
+ });
1723
+ var chatThreadModelSelectionContract = c2.router({
1724
+ update: {
1725
+ method: "POST",
1726
+ path: "/api/zero/chat-threads/:id/model-selection",
1727
+ headers: authHeadersSchema,
1728
+ pathParams: chatThreadIdPathParamsSchema,
1729
+ body: chatThreadModelSelectionUpdateBodySchema,
1730
+ responses: {
1731
+ 204: c2.noBody(),
1732
+ 400: apiErrorSchema,
1733
+ 401: apiErrorSchema,
1734
+ 402: apiErrorSchema,
1735
+ 403: apiErrorSchema,
1736
+ 404: apiErrorSchema
1737
+ },
1738
+ summary: "Update a chat thread model selection"
1739
+ }
1740
+ });
1741
+ var chatThreadComputerUseHostContract = c2.router({
1742
+ update: {
1743
+ method: "POST",
1744
+ path: "/api/zero/chat-threads/:id/computer-use-host",
1745
+ headers: authHeadersSchema,
1746
+ pathParams: chatThreadIdPathParamsSchema,
1747
+ body: external_exports.object({
1748
+ computerUseHostId: external_exports.string().uuid().nullable(),
1749
+ cloudBrowserEnabled: external_exports.boolean().optional(),
1750
+ eventId: chatThreadEventIdSchema.optional()
1751
+ }).refine(
1752
+ (body) => {
1753
+ return !(body.cloudBrowserEnabled && body.computerUseHostId);
1754
+ },
1755
+ {
1756
+ message: "Cloud browser and Computer Use cannot both be enabled",
1757
+ path: ["cloudBrowserEnabled"]
1758
+ }
1759
+ ),
1760
+ responses: {
1761
+ 204: c2.noBody(),
1762
+ 400: apiErrorSchema,
1763
+ 401: apiErrorSchema,
1764
+ 403: apiErrorSchema,
1765
+ 404: apiErrorSchema
1766
+ },
1767
+ summary: "Update a chat thread Computer Use host binding"
1768
+ }
1769
+ });
1770
+ var chatEventsContract = c2.router({
1771
+ send: {
1772
+ method: "POST",
1773
+ path: "/api/zero/chat/events",
1774
+ headers: authHeadersSchema,
1775
+ body: external_exports.union([
1776
+ chatEventNormalSendBodySchema,
1777
+ external_exports.object({
1778
+ agentId: external_exports.string().min(1),
1779
+ threadId: external_exports.string().min(1),
1780
+ revokesEventId: external_exports.string().min(1),
1781
+ clientEventId: external_exports.string().uuid().optional(),
1782
+ prompt: external_exports.undefined().optional(),
1783
+ clientThreadId: external_exports.undefined().optional(),
1784
+ chatThreadEventId: external_exports.undefined().optional(),
1785
+ chatThreadSortEventId: external_exports.undefined().optional(),
1786
+ model: external_exports.undefined().optional(),
1787
+ runOptions: external_exports.undefined().optional(),
1788
+ userMessage: external_exports.undefined().optional(),
1789
+ generationTemplate: external_exports.undefined().optional(),
1790
+ computerUseHostId: external_exports.undefined().optional(),
1791
+ hasTextContent: external_exports.undefined().optional(),
1792
+ attachFiles: external_exports.undefined().optional(),
1793
+ realAgentInPreview: external_exports.undefined().optional(),
1794
+ interruptsRunId: external_exports.undefined().optional()
1795
+ }),
1796
+ external_exports.object({
1797
+ agentId: external_exports.string().min(1),
1798
+ threadId: external_exports.string().min(1),
1799
+ interruptsRunId: external_exports.string().uuid(),
1800
+ clientEventId: external_exports.string().uuid().optional(),
1801
+ prompt: external_exports.undefined().optional(),
1802
+ clientThreadId: external_exports.undefined().optional(),
1803
+ chatThreadEventId: external_exports.undefined().optional(),
1804
+ chatThreadSortEventId: external_exports.undefined().optional(),
1805
+ model: external_exports.undefined().optional(),
1806
+ runOptions: external_exports.undefined().optional(),
1807
+ userMessage: external_exports.undefined().optional(),
1808
+ generationTemplate: external_exports.undefined().optional(),
1809
+ computerUseHostId: external_exports.undefined().optional(),
1810
+ hasTextContent: external_exports.undefined().optional(),
1811
+ attachFiles: external_exports.undefined().optional(),
1812
+ realAgentInPreview: external_exports.undefined().optional(),
1813
+ revokesEventId: external_exports.undefined().optional()
1814
+ })
1815
+ ]),
1816
+ responses: {
1817
+ 201: external_exports.object({
1818
+ runId: external_exports.string().nullable(),
1819
+ threadId: external_exports.string(),
1820
+ status: runStatusSchema.optional(),
1821
+ createdAt: external_exports.string().optional()
1822
+ }),
1823
+ 400: apiErrorSchema,
1824
+ 401: apiErrorSchema,
1825
+ 402: apiErrorSchema,
1826
+ 403: apiErrorSchema,
1827
+ 404: apiErrorSchema,
1828
+ 409: apiErrorSchema,
1829
+ 422: apiErrorSchema
1830
+ },
1831
+ summary: "Append a chat event and dispatch input when applicable"
1832
+ }
1833
+ });
1834
+ var chatSearchMessageSchema = external_exports.object({
1835
+ messageId: external_exports.string(),
1836
+ chatThreadId: external_exports.string(),
1837
+ role: external_exports.enum(["user", "assistant"]),
1838
+ content: external_exports.string(),
1839
+ createdAt: external_exports.string(),
1840
+ seqId: external_exports.number().int().positive(),
1841
+ sequenceNumber: external_exports.number().nullable(),
1842
+ runId: external_exports.string().nullable()
1843
+ });
1844
+ var chatSearchResultSchema = external_exports.object({
1845
+ chatThreadId: external_exports.string(),
1846
+ agentName: external_exports.string(),
1847
+ matchedMessage: chatSearchMessageSchema,
1848
+ contextBefore: external_exports.array(chatSearchMessageSchema),
1849
+ contextAfter: external_exports.array(chatSearchMessageSchema)
1850
+ });
1851
+ var chatSearchResponseSchema = external_exports.object({
1852
+ results: external_exports.array(chatSearchResultSchema),
1853
+ hasMore: external_exports.boolean()
1854
+ });
1855
+ var chatSearchContract = c2.router({
1856
+ search: {
1857
+ method: "GET",
1858
+ path: "/api/zero/chat/search",
1859
+ headers: authHeadersSchema,
1860
+ query: external_exports.object({
1861
+ keyword: external_exports.string().trim().min(1),
1862
+ agentId: external_exports.string().uuid().optional(),
1863
+ since: external_exports.coerce.number().optional(),
1864
+ limit: external_exports.coerce.number().min(1).max(50).default(20),
1865
+ before: external_exports.coerce.number().min(0).max(10).default(0),
1866
+ after: external_exports.coerce.number().min(0).max(10).default(0)
1867
+ }),
1868
+ responses: {
1869
+ 200: chatSearchResponseSchema,
1870
+ 400: apiErrorSchema,
1871
+ 401: apiErrorSchema,
1872
+ 403: apiErrorSchema
1873
+ },
1874
+ summary: "Search chat messages within caller's org (zero proxy)"
1875
+ }
1876
+ });
1877
+ var chatThreadEventsContract = c2.router({
1878
+ list: {
1879
+ method: "GET",
1880
+ path: "/api/zero/chat-threads/:threadId/events",
1881
+ headers: authHeadersSchema,
1882
+ pathParams: chatThreadThreadIdPathParamsSchema,
1883
+ query: external_exports.object({
1884
+ sinceSeqId: external_exports.coerce.number().int().positive().optional(),
1885
+ beforeSeqId: external_exports.coerce.number().int().positive().optional(),
1886
+ sinceId: external_exports.string().uuid().optional(),
1887
+ beforeId: external_exports.string().uuid().optional(),
1888
+ limit: external_exports.coerce.number().min(1).max(50).default(50)
1889
+ }),
1890
+ responses: {
1891
+ 200: external_exports.object({
1892
+ events: external_exports.array(compatibleChatEventSchema)
1893
+ }),
1894
+ 400: apiErrorSchema,
1895
+ 401: apiErrorSchema,
1896
+ 403: apiErrorSchema,
1897
+ 404: apiErrorSchema
1898
+ },
1899
+ summary: "Get paginated chat events for a thread"
1900
+ },
1901
+ get: {
1902
+ method: "GET",
1903
+ path: "/api/zero/chat-threads/:threadId/events/:eventId",
1904
+ headers: authHeadersSchema,
1905
+ pathParams: chatThreadEventPathParamsSchema,
1906
+ responses: {
1907
+ 200: compatibleChatEventSchema,
1908
+ 401: apiErrorSchema,
1909
+ 404: apiErrorSchema
1910
+ },
1911
+ summary: "Get a chat event by id for a thread"
1912
+ }
1913
+ });
1914
+ var chatThreadArtifactsContract = c2.router({
1915
+ list: {
1916
+ method: "GET",
1917
+ path: "/api/zero/chat-threads/:threadId/artifacts",
1918
+ headers: authHeadersSchema,
1919
+ pathParams: chatThreadThreadIdPathParamsSchema,
1920
+ responses: {
1921
+ 200: external_exports.object({
1922
+ runs: external_exports.array(chatThreadArtifactRunSchema)
1923
+ }),
1924
+ 400: apiErrorSchema,
1925
+ 401: apiErrorSchema,
1926
+ 403: apiErrorSchema,
1927
+ 404: apiErrorSchema
1928
+ },
1929
+ summary: "List uploaded files associated with every run in a chat thread"
1930
+ },
1931
+ syncGoogleDrive: {
1932
+ method: "POST",
1933
+ path: "/api/zero/chat-threads/:threadId/artifacts",
1934
+ headers: authHeadersSchema,
1935
+ pathParams: chatThreadThreadIdPathParamsSchema,
1936
+ body: external_exports.object({
1937
+ runId: external_exports.string(),
1938
+ fileId: external_exports.string()
1939
+ }),
1940
+ responses: {
1941
+ 200: external_exports.object({
1942
+ id: external_exports.string(),
1943
+ name: external_exports.string(),
1944
+ webViewLink: external_exports.string().nullable()
1945
+ }),
1946
+ 400: apiErrorSchema,
1947
+ 401: apiErrorSchema,
1948
+ 403: apiErrorSchema,
1949
+ 404: apiErrorSchema,
1950
+ 503: apiErrorSchema
1951
+ },
1952
+ summary: "Sync a chat artifact file to the user's connected Google Drive"
1953
+ }
1954
+ });
1955
+ var artifactsContract = c2.router({
1956
+ list: {
1957
+ method: "GET",
1958
+ path: "/api/zero/artifacts",
1959
+ headers: authHeadersSchema,
1960
+ query: artifactsListQuerySchema,
1961
+ responses: {
1962
+ 200: artifactsListResponseSchema,
1963
+ 401: apiErrorSchema,
1964
+ 403: apiErrorSchema
1965
+ },
1966
+ summary: "List artifacts for the caller's current organization (keyset-paginated)"
1967
+ },
1968
+ getImageEditSnapshot: {
1969
+ method: "GET",
1970
+ path: "/api/zero/artifacts/image-edit-snapshot",
1971
+ headers: authHeadersSchema,
1972
+ query: imageArtifactEditSnapshotQuerySchema,
1973
+ responses: {
1974
+ 200: external_exports.object({ snapshot: imageArtifactEditSnapshotSchema.nullable() }),
1975
+ 400: apiErrorSchema,
1976
+ 401: apiErrorSchema,
1977
+ 403: apiErrorSchema,
1978
+ 404: apiErrorSchema
1979
+ },
1980
+ summary: "Get a resumable image artifact edit snapshot for the caller"
1981
+ },
1982
+ upsertImageEditSnapshot: {
1983
+ method: "PUT",
1984
+ path: "/api/zero/artifacts/image-edit-snapshot",
1985
+ headers: authHeadersSchema,
1986
+ body: imageArtifactEditSnapshotUpsertSchema,
1987
+ responses: {
1988
+ 200: imageArtifactEditSnapshotSchema,
1989
+ 204: c2.noBody(),
1990
+ 400: apiErrorSchema,
1991
+ 401: apiErrorSchema,
1992
+ 403: apiErrorSchema,
1993
+ 404: apiErrorSchema
1994
+ },
1995
+ summary: "Upsert a resumable image artifact edit snapshot for the caller"
1996
+ },
1997
+ deleteImageEditSnapshot: {
1998
+ method: "DELETE",
1999
+ path: "/api/zero/artifacts/image-edit-snapshot",
2000
+ headers: authHeadersSchema,
2001
+ query: imageArtifactEditSnapshotQuerySchema,
2002
+ responses: {
2003
+ 204: c2.noBody(),
2004
+ 400: apiErrorSchema,
2005
+ 401: apiErrorSchema,
2006
+ 403: apiErrorSchema,
2007
+ 404: apiErrorSchema
2008
+ },
2009
+ summary: "Delete a resumable image artifact edit snapshot for the caller"
2010
+ }
2011
+ });
2012
+ function canonicalChatEvent(event) {
2013
+ if (event.eventType === "browser.started") {
2014
+ return { ...event, eventType: "browser.open" };
2015
+ }
2016
+ if (event.eventType === "browser.stopped") {
2017
+ return { ...event, eventType: "browser.close" };
2018
+ }
2019
+ return event;
2020
+ }
2021
+
2022
+ export {
2023
+ requireUserMessageForDraftAttachments,
2024
+ foldPendingChatQueueEvents,
2025
+ logsListContract,
2026
+ eventSequenceNumberSchema,
2027
+ unifiedRunRequestSchema,
2028
+ createRunResponseSchema,
2029
+ getRunResponseSchema,
2030
+ cancelRunResponseSchema,
2031
+ createLogPaginationQuerySchema,
2032
+ systemLogResponseSchema,
2033
+ metricsResponseSchema,
2034
+ agentEventsResponseSchema,
2035
+ networkLogEntrySchema,
2036
+ networkLogsResponseSchema,
2037
+ logsSearchResponseSchema,
2038
+ logsSearchQuerySchema,
2039
+ queueResponseSchema,
2040
+ persistedAttachmentSchema,
2041
+ chatThreadSnapshotProjectionSchema,
2042
+ chatThreadEventSchema,
2043
+ userMessageDocumentSchema,
2044
+ chatThreadsContract,
2045
+ chatThreadRenameContract,
2046
+ chatThreadMetadataContract,
2047
+ chatThreadModelSelectionContract,
2048
+ chatEventsContract,
2049
+ chatSearchContract,
2050
+ chatThreadEventsContract,
2051
+ canonicalChatEvent
2052
+ };
2053
+ //# sourceMappingURL=chunk-DUA6CF7E.js.map