@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,362 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire as __createRequire } from "node:module";
3
+ const require = __createRequire(import.meta.url);
4
+ import {
5
+ authHeadersSchema
6
+ } from "./chunk-JV6LM2YC.js";
7
+ import {
8
+ apiErrorSchema,
9
+ external_exports,
10
+ getClientConfig,
11
+ handleError,
12
+ initClient,
13
+ initContract
14
+ } from "./chunk-GHKWW4NC.js";
15
+ import {
16
+ init_esm_shims
17
+ } from "./chunk-AUWSMG4F.js";
18
+
19
+ // ../../packages/api-contracts/src/contracts/zero-browser.ts
20
+ init_esm_shims();
21
+ var c = initContract();
22
+ var ZERO_BROWSER_IDLE_LEASE_MINUTES = 10;
23
+ var ZERO_BROWSER_SCREEN_WIDTH = 1440;
24
+ var ZERO_BROWSER_MIN_SCREEN_HEIGHT = 320;
25
+ var ZERO_BROWSER_MAX_SCREEN_HEIGHT = 3456;
26
+ var zeroBrowserStatusSchema = external_exports.enum([
27
+ "creating",
28
+ "active",
29
+ "resuming",
30
+ "stopping",
31
+ "suspended",
32
+ "error"
33
+ ]);
34
+ var zeroBrowserSuspensionReasonSchema = external_exports.enum([
35
+ // Historical reason kept for rows written before the idle lease existed.
36
+ "run_end",
37
+ "idle",
38
+ "timeout",
39
+ "provider",
40
+ "reconcile",
41
+ "user"
42
+ ]);
43
+ var zeroBrowserScreenSchema = external_exports.object({
44
+ width: external_exports.literal(ZERO_BROWSER_SCREEN_WIDTH),
45
+ height: external_exports.number().int().min(ZERO_BROWSER_MIN_SCREEN_HEIGHT).max(ZERO_BROWSER_MAX_SCREEN_HEIGHT),
46
+ resizable: external_exports.boolean()
47
+ });
48
+ var zeroBrowserSessionSchema = external_exports.object({
49
+ threadId: external_exports.uuid(),
50
+ name: external_exports.string().min(1).max(64),
51
+ status: zeroBrowserStatusSchema,
52
+ viewerUrl: external_exports.url(),
53
+ liveUrl: external_exports.url().nullable(),
54
+ // Additive for frontend/backend rollout compatibility. Old API versions
55
+ // omit this field; new versions return the latest captured foreground tab.
56
+ screenshotUrl: external_exports.url().nullable().optional(),
57
+ proxyCountryCode: external_exports.string().length(2).nullable(),
58
+ timeoutMinutes: external_exports.number().int().positive(),
59
+ // Only live provider instances have persisted window dimensions.
60
+ screen: zeroBrowserScreenSchema.optional(),
61
+ // When Zero reclaims the live provider instance unless somebody leases it
62
+ // again. Null once no provider instance is running.
63
+ idleExpiresAt: external_exports.iso.datetime().nullable(),
64
+ suspendedAt: external_exports.iso.datetime().nullable(),
65
+ suspensionReason: zeroBrowserSuspensionReasonSchema.nullable(),
66
+ createdAt: external_exports.iso.datetime(),
67
+ updatedAt: external_exports.iso.datetime()
68
+ }).strict();
69
+ var zeroBrowserCreateRequestSchema = external_exports.object({
70
+ name: external_exports.string().trim().min(1).max(64).default("browser"),
71
+ proxyCountryCode: external_exports.string().trim().length(2).transform((value) => {
72
+ return value.toLowerCase();
73
+ }).nullable().default(null)
74
+ }).strict();
75
+ var browserThreadParamsSchema = external_exports.object({
76
+ threadId: external_exports.uuid()
77
+ });
78
+ var browserResponseSchema = external_exports.object({
79
+ browser: zeroBrowserSessionSchema
80
+ });
81
+ var browserLifecycleRequestSchema = external_exports.object({
82
+ eventId: external_exports.uuid()
83
+ });
84
+ var browserMutationResponseSchema = browserResponseSchema.extend({
85
+ lifecycleEventId: external_exports.uuid().nullable()
86
+ });
87
+ var browserCloseResponseSchema = external_exports.object({
88
+ lifecycleEventId: external_exports.uuid()
89
+ });
90
+ var browserResizeRequestSchema = external_exports.object({
91
+ aspectRatio: external_exports.number().positive().finite()
92
+ });
93
+ var browserAuthorizationRequestTokenPathParamsSchema = external_exports.object({
94
+ requestToken: external_exports.string().min(1)
95
+ });
96
+ var browserAuthorizationRequestCreateResponseSchema = external_exports.object({
97
+ authorizationUrl: external_exports.url(),
98
+ expiresAt: external_exports.iso.datetime()
99
+ });
100
+ var browserAuthorizationRequestResponseSchema = external_exports.object({
101
+ expiresAt: external_exports.iso.datetime(),
102
+ completedAt: external_exports.iso.datetime().nullable(),
103
+ cloudBrowserEnabled: external_exports.boolean()
104
+ });
105
+ var browserAuthorizationRequestApplyResponseSchema = external_exports.object({
106
+ ok: external_exports.literal(true),
107
+ cloudBrowserEnabled: external_exports.literal(true)
108
+ });
109
+ var browserConnectionResponseSchema = browserResponseSchema.extend({
110
+ cdpUrl: external_exports.url(),
111
+ lifecycleEventId: external_exports.uuid().nullable()
112
+ });
113
+ var commonErrorResponses = {
114
+ 400: apiErrorSchema,
115
+ 401: apiErrorSchema,
116
+ 403: apiErrorSchema,
117
+ 404: apiErrorSchema,
118
+ 409: apiErrorSchema,
119
+ 502: apiErrorSchema,
120
+ 503: apiErrorSchema
121
+ };
122
+ var zeroBrowserContract = c.router({
123
+ create: {
124
+ method: "POST",
125
+ path: "/api/zero/browsers",
126
+ headers: authHeadersSchema,
127
+ body: zeroBrowserCreateRequestSchema,
128
+ responses: {
129
+ 201: browserConnectionResponseSchema,
130
+ ...commonErrorResponses
131
+ },
132
+ summary: "Create a new managed browser for the current chat thread using its isolated profile"
133
+ },
134
+ use: {
135
+ method: "POST",
136
+ path: "/api/zero/browsers/use",
137
+ headers: authHeadersSchema,
138
+ body: external_exports.object({}),
139
+ responses: {
140
+ 200: browserConnectionResponseSchema,
141
+ ...commonErrorResponses
142
+ },
143
+ summary: "Create, reuse, or resume the current chat thread's managed browser and extend its idle lease"
144
+ },
145
+ lease: {
146
+ method: "POST",
147
+ path: "/api/zero/browsers/lease",
148
+ headers: authHeadersSchema,
149
+ body: external_exports.object({}),
150
+ responses: {
151
+ 200: browserResponseSchema,
152
+ ...commonErrorResponses
153
+ },
154
+ summary: "Extend the idle lease of the current chat thread's live browser"
155
+ },
156
+ leaseByThread: {
157
+ method: "POST",
158
+ path: "/api/zero/chat-threads/:threadId/browser/lease",
159
+ headers: authHeadersSchema,
160
+ pathParams: browserThreadParamsSchema,
161
+ body: external_exports.object({}),
162
+ responses: {
163
+ 200: browserResponseSchema,
164
+ ...commonErrorResponses
165
+ },
166
+ summary: "Extend the idle lease of a live browser from its viewer"
167
+ },
168
+ open: {
169
+ method: "POST",
170
+ path: "/api/zero/chat-threads/:threadId/browser/open",
171
+ headers: authHeadersSchema,
172
+ pathParams: browserThreadParamsSchema,
173
+ body: browserLifecycleRequestSchema,
174
+ responses: {
175
+ 200: browserMutationResponseSchema,
176
+ ...commonErrorResponses
177
+ },
178
+ summary: "Open a chat thread's managed browser"
179
+ },
180
+ close: {
181
+ method: "POST",
182
+ path: "/api/zero/chat-threads/:threadId/browser/close",
183
+ headers: authHeadersSchema,
184
+ pathParams: browserThreadParamsSchema,
185
+ body: browserLifecycleRequestSchema,
186
+ responses: {
187
+ 200: browserCloseResponseSchema,
188
+ ...commonErrorResponses
189
+ },
190
+ summary: "Record that the managed browser sidebar was closed"
191
+ },
192
+ // Compatibility aliases for browser bundles loaded before open/close.
193
+ // Remove after the stale web-client window has closed.
194
+ start: {
195
+ method: "POST",
196
+ path: "/api/zero/chat-threads/:threadId/browser/start",
197
+ headers: authHeadersSchema,
198
+ pathParams: browserThreadParamsSchema,
199
+ body: browserLifecycleRequestSchema,
200
+ responses: {
201
+ 200: browserMutationResponseSchema,
202
+ ...commonErrorResponses
203
+ },
204
+ summary: "Compatibility alias for opening a managed browser"
205
+ },
206
+ stop: {
207
+ method: "POST",
208
+ path: "/api/zero/chat-threads/:threadId/browser/stop",
209
+ headers: authHeadersSchema,
210
+ pathParams: browserThreadParamsSchema,
211
+ body: browserLifecycleRequestSchema,
212
+ responses: {
213
+ 200: browserMutationResponseSchema,
214
+ ...commonErrorResponses
215
+ },
216
+ summary: "Compatibility endpoint for a stale browser viewer"
217
+ },
218
+ resizeByThread: {
219
+ method: "POST",
220
+ path: "/api/zero/chat-threads/:threadId/browser/resize",
221
+ headers: authHeadersSchema,
222
+ pathParams: browserThreadParamsSchema,
223
+ body: browserResizeRequestSchema,
224
+ responses: {
225
+ 200: browserResponseSchema,
226
+ ...commonErrorResponses
227
+ },
228
+ summary: "Resize a live browser to match a viewer aspect ratio"
229
+ },
230
+ current: {
231
+ method: "GET",
232
+ path: "/api/zero/browsers/current",
233
+ headers: authHeadersSchema,
234
+ responses: {
235
+ 200: browserResponseSchema,
236
+ ...commonErrorResponses
237
+ },
238
+ summary: "Get the current chat thread's managed browser"
239
+ },
240
+ get: {
241
+ method: "GET",
242
+ path: "/api/zero/chat-threads/:threadId/browser",
243
+ headers: authHeadersSchema,
244
+ pathParams: browserThreadParamsSchema,
245
+ responses: {
246
+ 200: browserResponseSchema,
247
+ ...commonErrorResponses
248
+ },
249
+ summary: "Get a chat thread's managed browser"
250
+ }
251
+ });
252
+ var zeroBrowserAuthorizationRequestsContract = c.router({
253
+ create: {
254
+ method: "POST",
255
+ path: "/api/zero/browser/authorization-requests",
256
+ headers: authHeadersSchema,
257
+ body: external_exports.object({}),
258
+ responses: {
259
+ 200: browserAuthorizationRequestCreateResponseSchema,
260
+ 400: apiErrorSchema,
261
+ 401: apiErrorSchema,
262
+ 403: apiErrorSchema,
263
+ 404: apiErrorSchema,
264
+ 409: apiErrorSchema
265
+ },
266
+ summary: "Create a short-lived cloud browser authorization request for the current run"
267
+ },
268
+ get: {
269
+ method: "GET",
270
+ path: "/api/zero/browser/authorization-requests/:requestToken",
271
+ headers: authHeadersSchema,
272
+ pathParams: browserAuthorizationRequestTokenPathParamsSchema,
273
+ responses: {
274
+ 200: browserAuthorizationRequestResponseSchema,
275
+ 401: apiErrorSchema,
276
+ 403: apiErrorSchema,
277
+ 404: apiErrorSchema,
278
+ 410: apiErrorSchema
279
+ },
280
+ summary: "Read a cloud browser authorization request"
281
+ },
282
+ apply: {
283
+ method: "POST",
284
+ path: "/api/zero/browser/authorization-requests/:requestToken/apply",
285
+ headers: authHeadersSchema,
286
+ pathParams: browserAuthorizationRequestTokenPathParamsSchema,
287
+ body: external_exports.object({}),
288
+ responses: {
289
+ 200: browserAuthorizationRequestApplyResponseSchema,
290
+ 400: apiErrorSchema,
291
+ 401: apiErrorSchema,
292
+ 403: apiErrorSchema,
293
+ 404: apiErrorSchema,
294
+ 410: apiErrorSchema
295
+ },
296
+ summary: "Enable the cloud browser for a delegated authorization request"
297
+ }
298
+ });
299
+
300
+ // src/lib/api/domains/zero-browser.ts
301
+ init_esm_shims();
302
+ async function client() {
303
+ return initClient(zeroBrowserContract, await getClientConfig());
304
+ }
305
+ async function authorizationClient() {
306
+ return initClient(
307
+ zeroBrowserAuthorizationRequestsContract,
308
+ await getClientConfig()
309
+ );
310
+ }
311
+ async function createBrowserAuthorizationRequest() {
312
+ const result = await (await authorizationClient()).create({ headers: {}, body: {} });
313
+ if (result.status === 200) {
314
+ return result.body;
315
+ }
316
+ handleError(result, "Failed to create cloud browser authorization request");
317
+ }
318
+ async function createZeroBrowser(body) {
319
+ const result = await (await client()).create({ headers: {}, body });
320
+ if (result.status === 201) {
321
+ return result.body;
322
+ }
323
+ handleError(result, "Failed to create a new managed browser");
324
+ }
325
+ async function useZeroBrowser() {
326
+ const result = await (await client()).use({
327
+ headers: {},
328
+ body: {}
329
+ });
330
+ if (result.status === 200) {
331
+ return result.body;
332
+ }
333
+ handleError(result, "Failed to open the managed browser");
334
+ }
335
+ async function leaseZeroBrowser() {
336
+ const result = await (await client()).lease({
337
+ headers: {},
338
+ body: {}
339
+ });
340
+ if (result.status === 200) {
341
+ return result.body.browser;
342
+ }
343
+ handleError(result, "Failed to extend the managed browser lease");
344
+ }
345
+ async function getCurrentZeroBrowser() {
346
+ const result = await (await client()).current({ headers: {} });
347
+ if (result.status === 200) {
348
+ return result.body.browser;
349
+ }
350
+ handleError(result, "Failed to get the current managed browser");
351
+ }
352
+
353
+ export {
354
+ ZERO_BROWSER_IDLE_LEASE_MINUTES,
355
+ zeroBrowserCreateRequestSchema,
356
+ createBrowserAuthorizationRequest,
357
+ createZeroBrowser,
358
+ useZeroBrowser,
359
+ leaseZeroBrowser,
360
+ getCurrentZeroBrowser
361
+ };
362
+ //# sourceMappingURL=chunk-UIXUGVZB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../packages/api-contracts/src/contracts/zero-browser.ts","../src/lib/api/domains/zero-browser.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\n// Zero always asks Browser Use for its longest provider lifetime and manages\n// reclamation itself through the idle lease below, so a hard provider timeout\n// can never cut a browser short while somebody is still using it.\nexport const ZERO_BROWSER_PROVIDER_TIMEOUT_MINUTES = 240;\nexport const ZERO_BROWSER_IDLE_LEASE_MINUTES = 10;\nexport const ZERO_BROWSER_SCREEN_WIDTH = 1440;\nexport const ZERO_BROWSER_INITIAL_SCREEN_HEIGHT = 900;\nexport const ZERO_BROWSER_MIN_SCREEN_HEIGHT = 320;\nexport const ZERO_BROWSER_MAX_SCREEN_HEIGHT = 3456;\n\nexport const zeroBrowserStatusSchema = z.enum([\n \"creating\",\n \"active\",\n \"resuming\",\n \"stopping\",\n \"suspended\",\n \"error\",\n]);\n\nexport const zeroBrowserSuspensionReasonSchema = z.enum([\n // Historical reason kept for rows written before the idle lease existed.\n \"run_end\",\n \"idle\",\n \"timeout\",\n \"provider\",\n \"reconcile\",\n \"user\",\n]);\n\nconst zeroBrowserScreenSchema = z.object({\n width: z.literal(ZERO_BROWSER_SCREEN_WIDTH),\n height: z\n .number()\n .int()\n .min(ZERO_BROWSER_MIN_SCREEN_HEIGHT)\n .max(ZERO_BROWSER_MAX_SCREEN_HEIGHT),\n resizable: z.boolean(),\n});\n\nexport const zeroBrowserSessionSchema = z\n .object({\n threadId: z.uuid(),\n name: z.string().min(1).max(64),\n status: zeroBrowserStatusSchema,\n viewerUrl: z.url(),\n liveUrl: z.url().nullable(),\n // Additive for frontend/backend rollout compatibility. Old API versions\n // omit this field; new versions return the latest captured foreground tab.\n screenshotUrl: z.url().nullable().optional(),\n proxyCountryCode: z.string().length(2).nullable(),\n timeoutMinutes: z.number().int().positive(),\n // Only live provider instances have persisted window dimensions.\n screen: zeroBrowserScreenSchema.optional(),\n // When Zero reclaims the live provider instance unless somebody leases it\n // again. Null once no provider instance is running.\n idleExpiresAt: z.iso.datetime().nullable(),\n suspendedAt: z.iso.datetime().nullable(),\n suspensionReason: zeroBrowserSuspensionReasonSchema.nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n })\n .strict();\n\nexport type ZeroBrowserStatus = z.infer<typeof zeroBrowserStatusSchema>;\nexport type ZeroBrowserSuspensionReason = z.infer<\n typeof zeroBrowserSuspensionReasonSchema\n>;\nexport type ZeroBrowserSession = z.infer<typeof zeroBrowserSessionSchema>;\n\nexport const zeroBrowserCreateRequestSchema = z\n .object({\n name: z.string().trim().min(1).max(64).default(\"browser\"),\n proxyCountryCode: z\n .string()\n .trim()\n .length(2)\n .transform((value) => {\n return value.toLowerCase();\n })\n .nullable()\n .default(null),\n })\n .strict();\n\nexport type ZeroBrowserCreateRequest = z.infer<\n typeof zeroBrowserCreateRequestSchema\n>;\n\nconst browserThreadParamsSchema = z.object({\n threadId: z.uuid(),\n});\n\nconst browserResponseSchema = z.object({\n browser: zeroBrowserSessionSchema,\n});\n\nconst browserLifecycleRequestSchema = z.object({\n eventId: z.uuid(),\n});\n\nconst browserMutationResponseSchema = browserResponseSchema.extend({\n lifecycleEventId: z.uuid().nullable(),\n});\n\nconst browserCloseResponseSchema = z.object({\n lifecycleEventId: z.uuid(),\n});\n\nconst browserResizeRequestSchema = z.object({\n aspectRatio: z.number().positive().finite(),\n});\n\nconst browserAuthorizationRequestTokenPathParamsSchema = z.object({\n requestToken: z.string().min(1),\n});\n\nconst browserAuthorizationRequestCreateResponseSchema = z.object({\n authorizationUrl: z.url(),\n expiresAt: z.iso.datetime(),\n});\n\nconst browserAuthorizationRequestResponseSchema = z.object({\n expiresAt: z.iso.datetime(),\n completedAt: z.iso.datetime().nullable(),\n cloudBrowserEnabled: z.boolean(),\n});\n\nconst browserAuthorizationRequestApplyResponseSchema = z.object({\n ok: z.literal(true),\n cloudBrowserEnabled: z.literal(true),\n});\n\nconst browserConnectionResponseSchema = browserResponseSchema.extend({\n cdpUrl: z.url(),\n lifecycleEventId: z.uuid().nullable(),\n});\n\nconst commonErrorResponses = {\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n 502: apiErrorSchema,\n 503: apiErrorSchema,\n} as const;\n\nexport const zeroBrowserContract = c.router({\n create: {\n method: \"POST\",\n path: \"/api/zero/browsers\",\n headers: authHeadersSchema,\n body: zeroBrowserCreateRequestSchema,\n responses: {\n 201: browserConnectionResponseSchema,\n ...commonErrorResponses,\n },\n summary:\n \"Create a new managed browser for the current chat thread using its isolated profile\",\n },\n use: {\n method: \"POST\",\n path: \"/api/zero/browsers/use\",\n headers: authHeadersSchema,\n body: z.object({}),\n responses: {\n 200: browserConnectionResponseSchema,\n ...commonErrorResponses,\n },\n summary:\n \"Create, reuse, or resume the current chat thread's managed browser and extend its idle lease\",\n },\n lease: {\n method: \"POST\",\n path: \"/api/zero/browsers/lease\",\n headers: authHeadersSchema,\n body: z.object({}),\n responses: {\n 200: browserResponseSchema,\n ...commonErrorResponses,\n },\n summary: \"Extend the idle lease of the current chat thread's live browser\",\n },\n leaseByThread: {\n method: \"POST\",\n path: \"/api/zero/chat-threads/:threadId/browser/lease\",\n headers: authHeadersSchema,\n pathParams: browserThreadParamsSchema,\n body: z.object({}),\n responses: {\n 200: browserResponseSchema,\n ...commonErrorResponses,\n },\n summary: \"Extend the idle lease of a live browser from its viewer\",\n },\n open: {\n method: \"POST\",\n path: \"/api/zero/chat-threads/:threadId/browser/open\",\n headers: authHeadersSchema,\n pathParams: browserThreadParamsSchema,\n body: browserLifecycleRequestSchema,\n responses: {\n 200: browserMutationResponseSchema,\n ...commonErrorResponses,\n },\n summary: \"Open a chat thread's managed browser\",\n },\n close: {\n method: \"POST\",\n path: \"/api/zero/chat-threads/:threadId/browser/close\",\n headers: authHeadersSchema,\n pathParams: browserThreadParamsSchema,\n body: browserLifecycleRequestSchema,\n responses: {\n 200: browserCloseResponseSchema,\n ...commonErrorResponses,\n },\n summary: \"Record that the managed browser sidebar was closed\",\n },\n // Compatibility aliases for browser bundles loaded before open/close.\n // Remove after the stale web-client window has closed.\n start: {\n method: \"POST\",\n path: \"/api/zero/chat-threads/:threadId/browser/start\",\n headers: authHeadersSchema,\n pathParams: browserThreadParamsSchema,\n body: browserLifecycleRequestSchema,\n responses: {\n 200: browserMutationResponseSchema,\n ...commonErrorResponses,\n },\n summary: \"Compatibility alias for opening a managed browser\",\n },\n stop: {\n method: \"POST\",\n path: \"/api/zero/chat-threads/:threadId/browser/stop\",\n headers: authHeadersSchema,\n pathParams: browserThreadParamsSchema,\n body: browserLifecycleRequestSchema,\n responses: {\n 200: browserMutationResponseSchema,\n ...commonErrorResponses,\n },\n summary: \"Compatibility endpoint for a stale browser viewer\",\n },\n resizeByThread: {\n method: \"POST\",\n path: \"/api/zero/chat-threads/:threadId/browser/resize\",\n headers: authHeadersSchema,\n pathParams: browserThreadParamsSchema,\n body: browserResizeRequestSchema,\n responses: {\n 200: browserResponseSchema,\n ...commonErrorResponses,\n },\n summary: \"Resize a live browser to match a viewer aspect ratio\",\n },\n current: {\n method: \"GET\",\n path: \"/api/zero/browsers/current\",\n headers: authHeadersSchema,\n responses: {\n 200: browserResponseSchema,\n ...commonErrorResponses,\n },\n summary: \"Get the current chat thread's managed browser\",\n },\n get: {\n method: \"GET\",\n path: \"/api/zero/chat-threads/:threadId/browser\",\n headers: authHeadersSchema,\n pathParams: browserThreadParamsSchema,\n responses: {\n 200: browserResponseSchema,\n ...commonErrorResponses,\n } as const,\n summary: \"Get a chat thread's managed browser\",\n },\n});\n\nexport const zeroBrowserAuthorizationRequestsContract = c.router({\n create: {\n method: \"POST\",\n path: \"/api/zero/browser/authorization-requests\",\n headers: authHeadersSchema,\n body: z.object({}),\n responses: {\n 200: browserAuthorizationRequestCreateResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary:\n \"Create a short-lived cloud browser authorization request for the current run\",\n },\n get: {\n method: \"GET\",\n path: \"/api/zero/browser/authorization-requests/:requestToken\",\n headers: authHeadersSchema,\n pathParams: browserAuthorizationRequestTokenPathParamsSchema,\n responses: {\n 200: browserAuthorizationRequestResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 410: apiErrorSchema,\n },\n summary: \"Read a cloud browser authorization request\",\n },\n apply: {\n method: \"POST\",\n path: \"/api/zero/browser/authorization-requests/:requestToken/apply\",\n headers: authHeadersSchema,\n pathParams: browserAuthorizationRequestTokenPathParamsSchema,\n body: z.object({}),\n responses: {\n 200: browserAuthorizationRequestApplyResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 410: apiErrorSchema,\n },\n summary: \"Enable the cloud browser for a delegated authorization request\",\n },\n});\n\nexport type ZeroBrowserContract = typeof zeroBrowserContract;\nexport type ZeroBrowserAuthorizationRequestsContract =\n typeof zeroBrowserAuthorizationRequestsContract;\nexport type BrowserAuthorizationRequestCreateResponse = z.infer<\n typeof browserAuthorizationRequestCreateResponseSchema\n>;\nexport type BrowserAuthorizationRequestResponse = z.infer<\n typeof browserAuthorizationRequestResponseSchema\n>;\nexport type BrowserAuthorizationRequestApplyResponse = z.infer<\n typeof browserAuthorizationRequestApplyResponseSchema\n>;\n","import {\n zeroBrowserAuthorizationRequestsContract,\n zeroBrowserContract,\n type BrowserAuthorizationRequestCreateResponse,\n type ZeroBrowserCreateRequest,\n type ZeroBrowserSession,\n} from \"@vm0/api-contracts/contracts/zero-browser\";\nimport { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\n\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\nasync function client() {\n return initClient(zeroBrowserContract, await getClientConfig());\n}\n\nasync function authorizationClient() {\n return initClient(\n zeroBrowserAuthorizationRequestsContract,\n await getClientConfig(),\n );\n}\n\nexport async function createBrowserAuthorizationRequest(): Promise<BrowserAuthorizationRequestCreateResponse> {\n const result = await (\n await authorizationClient()\n ).create({ headers: {}, body: {} });\n if (result.status === 200) {\n return result.body;\n }\n handleError(result, \"Failed to create cloud browser authorization request\");\n}\n\nexport async function createZeroBrowser(\n body: ZeroBrowserCreateRequest,\n): Promise<{ browser: ZeroBrowserSession; cdpUrl: string }> {\n const result = await (await client()).create({ headers: {}, body });\n if (result.status === 201) {\n return result.body;\n }\n handleError(result, \"Failed to create a new managed browser\");\n}\n\nexport async function useZeroBrowser(): Promise<{\n browser: ZeroBrowserSession;\n cdpUrl: string;\n}> {\n const result = await (\n await client()\n ).use({\n headers: {},\n body: {},\n });\n if (result.status === 200) {\n return result.body;\n }\n handleError(result, \"Failed to open the managed browser\");\n}\n\nexport async function leaseZeroBrowser(): Promise<ZeroBrowserSession> {\n const result = await (\n await client()\n ).lease({\n headers: {},\n body: {},\n });\n if (result.status === 200) {\n return result.body.browser;\n }\n handleError(result, \"Failed to extend the managed browser lease\");\n}\n\nexport async function getCurrentZeroBrowser(): Promise<ZeroBrowserSession> {\n const result = await (await client()).current({ headers: {} });\n if (result.status === 200) {\n return result.body.browser;\n }\n handleError(result, \"Failed to get the current managed browser\");\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire as __createRequire } from "node:module";
3
+ const require = __createRequire(import.meta.url);
4
+ import {
5
+ authHeadersSchema
6
+ } from "./chunk-JV6LM2YC.js";
7
+ import {
8
+ apiErrorSchema,
9
+ external_exports,
10
+ initContract
11
+ } from "./chunk-GHKWW4NC.js";
12
+ import {
13
+ init_esm_shims
14
+ } from "./chunk-AUWSMG4F.js";
15
+
16
+ // ../../packages/api-contracts/src/contracts/zero-developer-support.ts
17
+ init_esm_shims();
18
+ var c = initContract();
19
+ var developerSupportBodySchema = external_exports.object({
20
+ title: external_exports.string().min(1, "Title is required"),
21
+ description: external_exports.string().min(1, "Description is required"),
22
+ consentCode: external_exports.string().optional()
23
+ });
24
+ var consentCodeResponseSchema = external_exports.object({
25
+ consentCode: external_exports.string()
26
+ });
27
+ var submitResponseSchema = external_exports.object({
28
+ reference: external_exports.string()
29
+ });
30
+ var zeroDeveloperSupportContract = c.router({
31
+ submit: {
32
+ method: "POST",
33
+ path: "/api/zero/developer-support",
34
+ headers: authHeadersSchema,
35
+ body: developerSupportBodySchema,
36
+ responses: {
37
+ 200: external_exports.union([consentCodeResponseSchema, submitResponseSchema]),
38
+ 400: apiErrorSchema,
39
+ 401: apiErrorSchema,
40
+ 403: apiErrorSchema
41
+ },
42
+ summary: "Developer support: consent code generation or diagnostic submission"
43
+ }
44
+ });
45
+
46
+ export {
47
+ zeroDeveloperSupportContract
48
+ };
49
+ //# sourceMappingURL=chunk-XRZKJACM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../packages/api-contracts/src/contracts/zero-developer-support.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst developerSupportBodySchema = z.object({\n title: z.string().min(1, \"Title is required\"),\n description: z.string().min(1, \"Description is required\"),\n consentCode: z.string().optional(),\n});\n\nconst consentCodeResponseSchema = z.object({\n consentCode: z.string(),\n});\n\nconst submitResponseSchema = z.object({\n reference: z.string(),\n});\n\nexport const zeroDeveloperSupportContract = c.router({\n submit: {\n method: \"POST\",\n path: \"/api/zero/developer-support\",\n headers: authHeadersSchema,\n body: developerSupportBodySchema,\n responses: {\n 200: z.union([consentCodeResponseSchema, submitResponseSchema]),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary:\n \"Developer support: consent code generation or diagnostic submission\",\n },\n});\n\nexport type ZeroDeveloperSupportContract = typeof zeroDeveloperSupportContract;\nexport {\n developerSupportBodySchema,\n consentCodeResponseSchema,\n submitResponseSchema,\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAIA,IAAM,IAAI,aAAa;AAEvB,IAAM,6BAA6B,iBAAE,OAAO;AAAA,EAC1C,OAAO,iBAAE,OAAO,EAAE,IAAI,GAAG,mBAAmB;AAAA,EAC5C,aAAa,iBAAE,OAAO,EAAE,IAAI,GAAG,yBAAyB;AAAA,EACxD,aAAa,iBAAE,OAAO,EAAE,SAAS;AACnC,CAAC;AAED,IAAM,4BAA4B,iBAAE,OAAO;AAAA,EACzC,aAAa,iBAAE,OAAO;AACxB,CAAC;AAED,IAAM,uBAAuB,iBAAE,OAAO;AAAA,EACpC,WAAW,iBAAE,OAAO;AACtB,CAAC;AAEM,IAAM,+BAA+B,EAAE,OAAO;AAAA,EACnD,QAAQ;AAAA,IACN,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,MAAM;AAAA,IACN,WAAW;AAAA,MACT,KAAK,iBAAE,MAAM,CAAC,2BAA2B,oBAAoB,CAAC;AAAA,MAC9D,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAAA,IACA,SACE;AAAA,EACJ;AACF,CAAC;","names":[]}
@@ -0,0 +1,202 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire as __createRequire } from "node:module";
3
+ const require = __createRequire(import.meta.url);
4
+ import {
5
+ authHeadersSchema
6
+ } from "./chunk-JV6LM2YC.js";
7
+ import {
8
+ apiErrorSchema,
9
+ external_exports,
10
+ initContract
11
+ } from "./chunk-GHKWW4NC.js";
12
+ import {
13
+ init_esm_shims
14
+ } from "./chunk-AUWSMG4F.js";
15
+
16
+ // ../../packages/api-contracts/src/contracts/zero-host.ts
17
+ init_esm_shims();
18
+ var c = initContract();
19
+ var ORG_SLUG_HASH_LENGTH = 8;
20
+ var RANDOM_SLUG_SUFFIX_LENGTH = 8;
21
+ var PUBLIC_SLUG_SEPARATOR_LENGTH = 2;
22
+ var MAX_HOSTED_SITE_PUBLIC_SLUG_LENGTH = 96;
23
+ var hostedArtifactKindSchema = external_exports.enum([
24
+ "hosted-site",
25
+ "presentation-html"
26
+ ]);
27
+ var hostedSiteSlugSchema = external_exports.string().trim().min(3).max(63).regex(
28
+ /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/,
29
+ "Site slug must use lowercase letters, numbers, and hyphens, and must start and end with a letter or number"
30
+ );
31
+ var hostedSiteSlugSuffixSchema = external_exports.string().trim().min(3).max(32).regex(
32
+ /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/,
33
+ "Site slug suffix must use lowercase letters, numbers, and hyphens, and must start and end with a letter or number"
34
+ );
35
+ var hostedSitePublicSlugSchema = external_exports.string().trim().min(3).max(MAX_HOSTED_SITE_PUBLIC_SLUG_LENGTH).regex(
36
+ /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/,
37
+ "Hosted site public slug must use lowercase letters, numbers, and hyphens, and must start and end with a letter or number"
38
+ );
39
+ var hostedSiteFileSchema = external_exports.object({
40
+ path: external_exports.string().min(1).max(1024).regex(/^\//, "File path must start with /"),
41
+ size: external_exports.number().int().nonnegative(),
42
+ sha256: external_exports.string().regex(/^[a-f0-9]{64}$/),
43
+ contentType: external_exports.string().min(1).max(200),
44
+ immutable: external_exports.boolean().optional()
45
+ });
46
+ var hostedSiteDownloadFileSchema = hostedSiteFileSchema.extend({
47
+ downloadUrl: external_exports.string().url()
48
+ });
49
+ var hostedSitePrepareRequestSchema = external_exports.object({
50
+ site: hostedSiteSlugSchema,
51
+ slugSuffix: hostedSiteSlugSuffixSchema.optional(),
52
+ artifactKind: hostedArtifactKindSchema.default("hosted-site"),
53
+ spaFallback: external_exports.boolean().default(false),
54
+ files: external_exports.array(hostedSiteFileSchema).min(1).max(5e3)
55
+ }).superRefine((value, ctx) => {
56
+ const suffixLength = value.slugSuffix?.length ?? RANDOM_SLUG_SUFFIX_LENGTH;
57
+ const publicSlugLength = value.site.length + ORG_SLUG_HASH_LENGTH + suffixLength + PUBLIC_SLUG_SEPARATOR_LENGTH;
58
+ if (publicSlugLength > MAX_HOSTED_SITE_PUBLIC_SLUG_LENGTH) {
59
+ ctx.addIssue({
60
+ code: external_exports.ZodIssueCode.custom,
61
+ path: value.slugSuffix ? ["slugSuffix"] : ["site"],
62
+ message: "Hosted site public slug must be 96 characters or fewer; shorten site or slug suffix"
63
+ });
64
+ }
65
+ });
66
+ var hostedSiteUploadSchema = external_exports.object({
67
+ path: external_exports.string(),
68
+ uploadUrl: external_exports.string().url()
69
+ });
70
+ var hostedSitePrepareResponseSchema = external_exports.object({
71
+ siteId: external_exports.string().uuid(),
72
+ deploymentId: external_exports.string().uuid(),
73
+ publicSlug: external_exports.string(),
74
+ url: external_exports.string().url(),
75
+ deploymentVersion: external_exports.number().int().positive().optional(),
76
+ artifactUrl: external_exports.string().url().optional(),
77
+ aliasUrl: external_exports.string().url().optional(),
78
+ uploads: external_exports.array(hostedSiteUploadSchema)
79
+ });
80
+ var hostedSiteCompleteResponseSchema = external_exports.object({
81
+ siteId: external_exports.string().uuid(),
82
+ deploymentId: external_exports.string().uuid(),
83
+ publicSlug: external_exports.string(),
84
+ url: external_exports.string().url(),
85
+ deploymentVersion: external_exports.number().int().positive().optional(),
86
+ artifactUrl: external_exports.string().url().optional(),
87
+ aliasUrl: external_exports.string().url().optional(),
88
+ isActive: external_exports.boolean().optional(),
89
+ activeDeploymentVersion: external_exports.number().int().positive().optional(),
90
+ status: external_exports.literal("ready")
91
+ });
92
+ var hostedSiteFilesResponseSchema = external_exports.object({
93
+ siteId: external_exports.string().uuid(),
94
+ deploymentId: external_exports.string().uuid(),
95
+ publicSlug: hostedSitePublicSlugSchema,
96
+ url: external_exports.string().url(),
97
+ deploymentVersion: external_exports.number().int().positive().optional(),
98
+ artifactUrl: external_exports.string().url().optional(),
99
+ aliasUrl: external_exports.string().url().optional(),
100
+ fileCount: external_exports.number().int().nonnegative(),
101
+ size: external_exports.number().int().nonnegative(),
102
+ files: external_exports.array(hostedSiteDownloadFileSchema)
103
+ });
104
+ var hostedSiteDeploymentSummarySchema = external_exports.object({
105
+ deploymentId: external_exports.string().uuid(),
106
+ deploymentVersion: external_exports.number().int().positive().nullable(),
107
+ artifactUrl: external_exports.string().url().nullable(),
108
+ status: external_exports.enum(["uploading", "ready", "failed", "deleted"]),
109
+ isActive: external_exports.boolean(),
110
+ createdAt: external_exports.string().datetime(),
111
+ readyAt: external_exports.string().datetime().nullable()
112
+ });
113
+ var hostedSiteDeploymentsResponseSchema = external_exports.object({
114
+ siteId: external_exports.string().uuid(),
115
+ site: hostedSiteSlugSchema,
116
+ publicSlug: hostedSitePublicSlugSchema,
117
+ aliasUrl: external_exports.string().url(),
118
+ activeDeploymentId: external_exports.string().uuid().nullable(),
119
+ activeDeploymentVersion: external_exports.number().int().positive().nullable(),
120
+ deployments: external_exports.array(hostedSiteDeploymentSummarySchema)
121
+ });
122
+ var zeroHostContract = c.router({
123
+ prepare: {
124
+ method: "POST",
125
+ path: "/api/zero/host/deployments/prepare",
126
+ headers: authHeadersSchema,
127
+ body: hostedSitePrepareRequestSchema,
128
+ responses: {
129
+ 200: hostedSitePrepareResponseSchema,
130
+ 400: apiErrorSchema,
131
+ 401: apiErrorSchema,
132
+ 402: apiErrorSchema,
133
+ 403: apiErrorSchema,
134
+ 409: apiErrorSchema,
135
+ 500: apiErrorSchema
136
+ },
137
+ summary: "Prepare a static hosted-site deployment"
138
+ },
139
+ complete: {
140
+ method: "POST",
141
+ path: "/api/zero/host/deployments/:deploymentId/complete",
142
+ pathParams: external_exports.object({
143
+ deploymentId: external_exports.string().uuid()
144
+ }),
145
+ headers: authHeadersSchema,
146
+ body: external_exports.object({}),
147
+ responses: {
148
+ 200: hostedSiteCompleteResponseSchema,
149
+ 400: apiErrorSchema,
150
+ 401: apiErrorSchema,
151
+ 402: apiErrorSchema,
152
+ 403: apiErrorSchema,
153
+ 404: apiErrorSchema,
154
+ 409: apiErrorSchema,
155
+ 500: apiErrorSchema
156
+ },
157
+ summary: "Complete a static hosted-site deployment"
158
+ },
159
+ files: {
160
+ method: "GET",
161
+ path: "/api/zero/host/sites/:publicSlug/files",
162
+ pathParams: external_exports.object({
163
+ publicSlug: hostedSitePublicSlugSchema
164
+ }),
165
+ query: external_exports.object({
166
+ version: external_exports.coerce.number().int().positive().optional()
167
+ }),
168
+ headers: authHeadersSchema,
169
+ responses: {
170
+ 200: hostedSiteFilesResponseSchema,
171
+ 400: apiErrorSchema,
172
+ 401: apiErrorSchema,
173
+ 403: apiErrorSchema,
174
+ 404: apiErrorSchema,
175
+ 409: apiErrorSchema,
176
+ 500: apiErrorSchema
177
+ },
178
+ summary: "List active hosted-site files for an owned site"
179
+ },
180
+ deployments: {
181
+ method: "GET",
182
+ path: "/api/zero/host/sites/:site/deployments",
183
+ pathParams: external_exports.object({
184
+ site: hostedSiteSlugSchema
185
+ }),
186
+ headers: authHeadersSchema,
187
+ responses: {
188
+ 200: hostedSiteDeploymentsResponseSchema,
189
+ 400: apiErrorSchema,
190
+ 401: apiErrorSchema,
191
+ 403: apiErrorSchema,
192
+ 404: apiErrorSchema,
193
+ 500: apiErrorSchema
194
+ },
195
+ summary: "List deployment versions for an owned hosted site"
196
+ }
197
+ });
198
+
199
+ export {
200
+ hostedArtifactKindSchema
201
+ };
202
+ //# sourceMappingURL=chunk-YDS3X7KB.js.map