@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 @@
1
+ {"version":3,"sources":["../../../packages/api-contracts/src/contracts/chat-events.ts","../../../packages/api-contracts/src/contracts/chat-threads.ts","../../../packages/api-contracts/src/contracts/draft-user-message.ts","../../../packages/api-contracts/src/contracts/runs.ts","../../../packages/api-contracts/src/contracts/logs.ts"],"sourcesContent":["import { z } from \"zod\";\nimport type { ZeroGoalEvent } from \"./zero-goals\";\n\nexport const CHAT_EVENT_TYPES = [\n \"input.prompt\",\n \"input.automation\",\n \"input.goal\",\n \"input.rejected\",\n \"output.message\",\n \"output.error\",\n \"output.thinking\",\n \"output.followups\",\n \"run.queued\",\n \"run.dequeued\",\n \"run.completed\",\n \"run.failed\",\n \"run.cancelled\",\n \"control.interrupt\",\n \"control.revoke\",\n \"browser.open\",\n \"browser.close\",\n \"goal.changed\",\n \"usage.recorded\",\n] as const;\n\nexport const chatEventTypeSchema = z.enum(CHAT_EVENT_TYPES);\n\nexport type ChatEventType = z.infer<typeof chatEventTypeSchema>;\nexport type ChatEventCompatibilityRole = \"user\" | \"assistant\";\nexport type ChatEventRunLifecycle = \"completed\" | \"failed\" | \"cancelled\";\nexport type ChatRunFoldState = \"queued\" | \"dequeued\" | ChatEventRunLifecycle;\n\nconst VALID_CHAT_EVENT_REVOCATION_TARGETS = {\n \"input.prompt\": [\n \"input.prompt\",\n \"input.automation\",\n \"input.goal\",\n \"output.followups\",\n ],\n \"input.automation\": [],\n \"input.goal\": [],\n \"input.rejected\": [\n \"input.prompt\",\n \"input.automation\",\n \"input.goal\",\n \"output.followups\",\n ],\n \"output.message\": [],\n \"output.error\": [],\n \"output.thinking\": [],\n \"output.followups\": [],\n \"run.queued\": [],\n \"run.dequeued\": [\"run.queued\"],\n \"run.completed\": [],\n \"run.failed\": [],\n \"run.cancelled\": [],\n \"control.interrupt\": [],\n \"control.revoke\": [\n \"input.prompt\",\n \"input.automation\",\n \"input.goal\",\n \"input.rejected\",\n ],\n \"browser.open\": [],\n \"browser.close\": [],\n \"goal.changed\": [],\n \"usage.recorded\": [],\n} satisfies Record<ChatEventType, readonly ChatEventType[]>;\n\nconst CHAT_RUN_FOLD_STATES = {\n \"input.prompt\": null,\n \"input.automation\": null,\n \"input.goal\": null,\n \"input.rejected\": null,\n \"output.message\": null,\n \"output.error\": null,\n \"output.thinking\": null,\n \"output.followups\": null,\n \"run.queued\": \"queued\",\n \"run.dequeued\": \"dequeued\",\n \"run.completed\": \"completed\",\n \"run.failed\": \"failed\",\n \"run.cancelled\": \"cancelled\",\n \"control.interrupt\": null,\n \"control.revoke\": null,\n \"browser.open\": null,\n \"browser.close\": null,\n \"goal.changed\": null,\n \"usage.recorded\": null,\n} satisfies Record<ChatEventType, ChatRunFoldState | null>;\n\ninterface ChatEventFoldInput {\n readonly id?: string;\n readonly eventType: ChatEventType;\n readonly runId?: string | null;\n readonly interruptsRunId?: string;\n readonly revokesEventId?: string | null;\n readonly goalEvent?: ZeroGoalEvent;\n}\n\nexport interface ChatQueueFoldInput extends ChatEventFoldInput {\n readonly id: string;\n readonly createdAt: string;\n}\n\ninterface ChatUsageFoldInput extends ChatEventFoldInput {\n readonly usage?: {\n readonly settledAt: string;\n };\n}\n\nexport function chatEventCompatibilityRole(\n eventType: ChatEventType,\n): ChatEventCompatibilityRole {\n switch (eventType) {\n case \"input.prompt\":\n case \"input.automation\":\n case \"input.goal\":\n case \"input.rejected\":\n case \"control.interrupt\":\n case \"control.revoke\":\n return \"user\";\n case \"output.message\":\n case \"output.error\":\n case \"output.thinking\":\n case \"output.followups\":\n case \"run.queued\":\n case \"run.dequeued\":\n case \"run.completed\":\n case \"run.failed\":\n case \"run.cancelled\":\n case \"browser.open\":\n case \"browser.close\":\n case \"goal.changed\":\n case \"usage.recorded\":\n return \"assistant\";\n }\n}\n\nexport function isChatRunTerminalEventType(\n eventType: ChatEventType,\n): eventType is \"run.completed\" | \"run.failed\" | \"run.cancelled\" {\n return (\n eventType === \"run.completed\" ||\n eventType === \"run.failed\" ||\n eventType === \"run.cancelled\"\n );\n}\n\nexport function isChatInputEventType(\n eventType: ChatEventType,\n): eventType is\n | \"input.prompt\"\n | \"input.automation\"\n | \"input.goal\"\n | \"input.rejected\" {\n return (\n eventType === \"input.prompt\" ||\n eventType === \"input.automation\" ||\n eventType === \"input.goal\" ||\n eventType === \"input.rejected\"\n );\n}\n\nexport function isChatUserMessageEventType(\n eventType: ChatEventType,\n): eventType is \"input.prompt\" | \"input.rejected\" {\n return eventType === \"input.prompt\" || eventType === \"input.rejected\";\n}\n\nexport function isChatOutputEventType(\n eventType: ChatEventType,\n): eventType is\n | \"output.message\"\n | \"output.error\"\n | \"output.thinking\"\n | \"output.followups\" {\n return eventType.startsWith(\"output.\");\n}\n\nexport function isBrowserLifecycleEventType(\n eventType: ChatEventType,\n): eventType is \"browser.open\" | \"browser.close\" {\n return eventType === \"browser.open\" || eventType === \"browser.close\";\n}\n\nexport function isValidChatEventRevocation(\n sourceType: ChatEventType,\n targetType: ChatEventType,\n): boolean {\n const targets: readonly ChatEventType[] =\n VALID_CHAT_EVENT_REVOCATION_TARGETS[sourceType];\n return targets.includes(targetType);\n}\n\nexport function revokedChatEventIds(\n events: readonly ChatEventFoldInput[],\n): Set<string> {\n return new Set(\n events.flatMap((event) => {\n return event.revokesEventId === undefined || event.revokesEventId === null\n ? []\n : [event.revokesEventId];\n }),\n );\n}\n\nexport function terminatedChatRunIds(\n events: readonly ChatEventFoldInput[],\n): Set<string> {\n const runIds = new Set<string>();\n for (const event of events) {\n if (event.eventType === \"control.interrupt\") {\n if (event.interruptsRunId !== undefined) {\n runIds.add(event.interruptsRunId);\n }\n continue;\n }\n if (\n event.runId !== undefined &&\n event.runId !== null &&\n isChatRunTerminalEventType(event.eventType)\n ) {\n runIds.add(event.runId);\n }\n }\n return runIds;\n}\n\nexport function foldChatRunStates(\n events: readonly ChatEventFoldInput[],\n): Map<string, ChatRunFoldState> {\n const states = new Map<string, ChatRunFoldState>();\n for (const event of events) {\n if (event.runId === undefined || event.runId === null) {\n continue;\n }\n const state = CHAT_RUN_FOLD_STATES[event.eventType];\n if (state !== null) {\n states.set(event.runId, state);\n }\n }\n return states;\n}\n\nexport function isPendingChatQueueEvent(\n event: ChatQueueFoldInput,\n revokedEventIds: ReadonlySet<string>,\n): boolean {\n return (\n (event.eventType === \"input.prompt\" ||\n event.eventType === \"input.automation\" ||\n event.eventType === \"input.goal\") &&\n (event.runId === undefined || event.runId === null) &&\n !revokedEventIds.has(event.id)\n );\n}\n\nfunction compareChatQueueEvents(\n left: ChatQueueFoldInput,\n right: ChatQueueFoldInput,\n): number {\n const priority = (eventType: ChatEventType): number => {\n if (eventType === \"input.prompt\") {\n return 0;\n }\n if (eventType === \"input.goal\") {\n return 1;\n }\n return 2;\n };\n const leftPriority = priority(left.eventType);\n const rightPriority = priority(right.eventType);\n if (leftPriority !== rightPriority) {\n return leftPriority - rightPriority;\n }\n if (left.createdAt !== right.createdAt) {\n return left.createdAt < right.createdAt ? -1 : 1;\n }\n if (left.id === right.id) {\n return 0;\n }\n return left.id < right.id ? -1 : 1;\n}\n\nexport function foldPendingChatQueueEvents<TEvent extends ChatQueueFoldInput>(\n events: readonly TEvent[],\n): TEvent[] {\n const revokedEventIds = revokedChatEventIds(events);\n return events\n .filter((event) => {\n return isPendingChatQueueEvent(event, revokedEventIds);\n })\n .sort(compareChatQueueEvents);\n}\n\nexport function foldRunnableChatQueueEvents<TEvent extends ChatQueueFoldInput>(\n events: readonly TEvent[],\n): TEvent[] {\n return foldPendingChatQueueEvents(events);\n}\n\nexport function foldActiveChatGoalObjective(\n events: readonly ChatEventFoldInput[],\n): string | null {\n let objective: string | null = null;\n for (const event of events) {\n if (event.eventType !== \"goal.changed\" || event.goalEvent === undefined) {\n continue;\n }\n if (event.goalEvent.type === \"cleared\") {\n objective = null;\n } else if (event.goalEvent.status === \"active\") {\n objective = event.goalEvent.objectiveBrief;\n } else {\n objective = null;\n }\n }\n const trimmed = objective?.trim();\n return trimmed || null;\n}\n\nexport function foldLatestChatUsageByRunId<\n TUsage extends { readonly settledAt: string },\n>(\n events: readonly (ChatUsageFoldInput & { readonly usage?: TUsage })[],\n): Map<string, TUsage> {\n const usageByRunId = new Map<string, TUsage>();\n for (const event of events) {\n if (\n event.eventType !== \"usage.recorded\" ||\n event.runId === undefined ||\n event.runId === null ||\n event.usage === undefined\n ) {\n continue;\n }\n const existing = usageByRunId.get(event.runId);\n if (\n existing === undefined ||\n chatUsageSettledAtMs(event.usage) >= chatUsageSettledAtMs(existing)\n ) {\n usageByRunId.set(event.runId, event.usage);\n }\n }\n return usageByRunId;\n}\n\nfunction chatUsageSettledAtMs(usage: { readonly settledAt: string }): number {\n const timestamp = Date.parse(usage.settledAt);\n return Number.isNaN(timestamp) ? 0 : timestamp;\n}\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { CHAT_EVENT_TYPES } from \"./chat-events\";\nimport { apiErrorSchema } from \"./errors\";\nimport { requireUserMessageForDraftAttachments } from \"./draft-user-message\";\nimport { hostedArtifactKindSchema } from \"./zero-host\";\nimport { runStatusSchema } from \"./runs\";\nimport { zeroGoalEventSchema } from \"./zero-goals\";\nimport { triggerSourceSchema } from \"./logs\";\nimport { supportedRunModelSchema } from \"./model-providers\";\nimport {\n avatarVideoAspectRatioSchema,\n avatarVideoVoiceIdSchema,\n} from \"./zero-avatar-video\";\n\nconst c = initContract();\nexport const MODEL_FIRST_SELECTION_PROVIDER_ID =\n \"00000000-0000-4000-8000-000000000000\";\n\n/**\n * File attachment metadata stored alongside user messages.\n * The `id` is the attachment id — URLs are resolved at query time.\n */\nconst attachFileSchema = z.object({\n id: z.string(),\n filename: z.string(),\n contentType: z.string(),\n size: z.number(),\n});\n\nconst assetMaterializationSchema = z.discriminatedUnion(\"status\", [\n z.object({ status: z.literal(\"ready\") }),\n z.object({ status: z.literal(\"pending\") }),\n z.object({\n status: z.literal(\"failed\"),\n error: z.object({\n code: z.string(),\n message: z.string(),\n retryable: z.boolean(),\n }),\n }),\n]);\n\nconst assetRefSchema = z.object({\n id: z.string().uuid(),\n classification: z.enum([\"input\", \"published-output\"]),\n access: z.enum([\"private\", \"published\"]),\n materialization: assetMaterializationSchema,\n provenance: z\n .object({\n provider: z.string(),\n })\n .optional(),\n});\n\n/**\n * Attach file returned to the frontend with a resolved URL.\n * Legacy attachments expose a public artifact URL. Canonical input assets use\n * an authenticated same-origin URL and identify their durable asset through\n * `assetRef`.\n */\nconst resolvedAttachFileSchema = attachFileSchema.extend({\n url: z.string(),\n assetRef: assetRefSchema.optional(),\n});\n\nconst chatThreadArtifactGoogleDriveSyncSchema = z.discriminatedUnion(\"status\", [\n z.object({\n status: z.literal(\"synced\"),\n id: z.string(),\n name: z.string(),\n webViewLink: z.string().nullable(),\n }),\n z.object({ status: z.literal(\"not_synced\") }),\n z.object({ status: z.literal(\"disconnected\") }),\n z.object({ status: z.literal(\"unknown\") }),\n]);\n\nconst chatThreadArtifactFileSchema = resolvedAttachFileSchema.extend({\n createdAt: z.string(),\n artifactKind: hostedArtifactKindSchema.optional(),\n previewImageUrl: z.string().optional(),\n aliasUrl: z.string().optional(),\n googleDriveSync: chatThreadArtifactGoogleDriveSyncSchema.optional(),\n});\n\nconst chatThreadArtifactRunSchema = z.object({\n runId: z.string(),\n files: z.array(chatThreadArtifactFileSchema),\n});\n\nconst artifactItemSchema = z.object({\n artifactItemId: z.string(),\n threadId: z.string(),\n runId: z.string(),\n fileId: z.string(),\n agentId: z.string(),\n agentName: z.string().nullable().optional(),\n agentAvatarUrl: z.string().nullable().optional(),\n threadTitle: z.string().nullable().optional(),\n filename: z.string(),\n contentType: z.string(),\n size: z.number().default(0),\n url: z.string(),\n assetRef: assetRefSchema.optional(),\n previewImageUrl: z.string().optional(),\n createdAt: z.string(),\n updatedAt: z.string(),\n artifactKind: hostedArtifactKindSchema.optional(),\n googleDriveSync: chatThreadArtifactGoogleDriveSyncSchema.optional(),\n});\n\n/**\n * Keyset pagination for the artifacts list. Both fields are optional so\n * un-paginated callers (older frontend bundles) still get a valid first page.\n * `cursor` is an opaque token returned as `nextCursor` from a previous page.\n */\nconst artifactsListQuerySchema = z.object({\n limit: z.coerce.number().int().positive().max(10_000).optional(),\n cursor: z.string().optional(),\n updatedAfter: z.string().datetime().optional(),\n});\n\nconst artifactsListResponseSchema = z.object({\n artifacts: z.array(artifactItemSchema),\n /**\n * True when more artifacts exist beyond this page. Retained for backward\n * compatibility with older frontend bundles that read it; new clients follow\n * `nextCursor` instead.\n */\n truncated: z.boolean(),\n /**\n * Opaque cursor for the next page, or null when this is the last page.\n */\n nextCursor: z.string().nullable(),\n /**\n * Database time captured before the first page was read. Incremental clients\n * persist it only after the complete page chain has been cached.\n */\n syncUntil: z.string().datetime().optional(),\n});\n\nconst imageArtifactEditSnapshotItemSchema = z.object({\n url: z.string().url(),\n x: z.number(),\n y: z.number(),\n zIndex: z.number().int(),\n});\n\nconst imageArtifactEditSnapshotStateSchema = z.object({\n items: z.array(imageArtifactEditSnapshotItemSchema),\n version: z.literal(1),\n});\n\nconst imageArtifactEditSnapshotQuerySchema = z.object({\n url: z.string().url(),\n});\n\nconst imageArtifactEditSnapshotUpsertSchema = z.object({\n snapshot: imageArtifactEditSnapshotStateSchema,\n url: z.string().url(),\n});\n\nconst imageArtifactEditSnapshotSchema = z.object({\n artifactUrl: z.string().url(),\n snapshot: imageArtifactEditSnapshotStateSchema,\n updatedAt: z.string(),\n});\n\n/**\n * Attachment metadata persisted in chat_threads.draft_attachments.\n *\n * `url` is the public artifact CDN URL.\n * Historically this stored a 7-day presigned URL that could silently expire\n * while drafts sat in the DB; the public artifact URL removes that footgun.\n */\nconst persistedAttachmentSchema = z.object({\n id: z.string(),\n url: z.string(),\n filename: z.string(),\n contentType: z.string(),\n size: z.number(),\n});\n\n/**\n * Per-agent unread snapshot. `unreadAt` is the creation time of the latest\n * run-finish marker — the one that made the thread unread.\n */\nconst chatThreadUnreadsSchema = z.object({\n unreads: z.array(\n z.object({\n threadId: z.string(),\n unreadAt: z.string(),\n }),\n ),\n});\n\nconst chatThreadUnreadAgentsSchema = z.object({\n agentIds: z.array(z.string()),\n});\n\nconst chatThreadEventIdSchema = z.string().uuid();\nconst codexServiceTierSchema = z.enum([\"fast\"]);\nconst chatThreadServiceTierSchema = z.enum([\"priority\"]);\n\nconst chatThreadSnapshotProjectionSchema = z.object({\n id: z.string().uuid(),\n agentId: z.string().uuid(),\n title: z.string().nullable(),\n sortAt: z.string(),\n createdAt: z.string(),\n updatedAt: z.string(),\n pinnedAt: z.string().nullable(),\n renamedAt: z.string().nullable(),\n selectedModel: z.string().nullable().default(null),\n serviceTier: chatThreadServiceTierSchema.nullable().default(null),\n computerUseHostId: z.string().uuid().nullable().default(null),\n cloudBrowserEnabled: z.boolean().optional(),\n});\n\nconst chatThreadEventSchema = z.object({\n id: chatThreadEventIdSchema,\n /** Server-assigned strict position within the user/org event stream. */\n seqId: z.number().int().positive(),\n kind: z.enum([\n \"created\",\n \"renamed\",\n \"deleted\",\n \"pinned\",\n \"unpinned\",\n \"model_selection_updated\",\n \"service_tier_updated\",\n \"computer_use_host_updated\",\n \"sort_touched\",\n ]),\n chatThreadId: z.string().uuid(),\n agentId: z.string().uuid(),\n title: z.string().nullable(),\n selectedModel: z.string().nullable().default(null),\n serviceTier: chatThreadServiceTierSchema.nullable().default(null),\n computerUseHostId: z.string().uuid().nullable().default(null),\n cloudBrowserEnabled: z.boolean().optional(),\n createdAt: z.string(),\n});\n\n// App promotion is independent from API promotion. Keep response validation\n// tolerant of the previous API until every pre-sequence API can no longer\n// serve traffic; new API writers still use chatThreadEventSchema above.\nconst chatThreadEventResponseSchema = chatThreadEventSchema.extend({\n seqId: chatThreadEventSchema.shape.seqId.optional(),\n});\n\nconst chatEventUsageProviderBreakdownSchema = z.object({\n provider: z.string(),\n credits: z.number().int().nonnegative(),\n});\n\nconst chatEventUsageKindBreakdownSchema = z.object({\n kind: z.string(),\n credits: z.number().int().nonnegative(),\n providers: z.array(chatEventUsageProviderBreakdownSchema),\n});\n\nconst chatEventUsagePayloadSchema = z.object({\n version: z.literal(1),\n totalCredits: z.number().int().nonnegative(),\n settledAt: z.string(),\n breakdown: z.array(chatEventUsageKindBreakdownSchema),\n});\n\nconst toolSummaryEntrySchema = z.object({\n kind: z.literal(\"tool\"),\n name: z.string(),\n input: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst textSummaryEntrySchema = z.object({\n kind: z.literal(\"text\"),\n text: z.string(),\n});\n\nconst summaryEntrySchema = z.union([\n z.string(),\n toolSummaryEntrySchema,\n textSummaryEntrySchema,\n]);\n\nconst presentationGenerationTemplateRequestSchema = z.object({\n type: z.literal(\"presentation\"),\n selection: z\n .object({\n templateId: z.string().min(1),\n colorSystemId: z.string().min(1).optional(),\n previewUrl: z.string().url().optional(),\n })\n .strict(),\n});\n\nconst videoGenerationTemplateRequestSchema = z.object({\n type: z.literal(\"video\"),\n selection: z.object({\n stylePresetId: z.string().min(1),\n /** User-visible snapshot for API-backed avatar templates. */\n titleSnapshot: z.string().trim().min(1).optional(),\n /** User-visible preview snapshot for API-backed avatar templates. */\n previewUrl: z.url().optional(),\n /** Provider voice selected for API-backed avatar templates. */\n voiceId: avatarVideoVoiceIdSchema.optional(),\n /** Output frame selected for API-backed avatar templates. */\n aspectRatio: avatarVideoAspectRatioSchema.optional(),\n }),\n});\n\nconst illustrationGenerationTemplateRequestSchema = z.object({\n type: z.literal(\"illustration\"),\n selection: z.object({\n illustrationStyleId: z.string().min(1),\n }),\n});\n\nconst workflowGenerationTemplateRequestSchema = z.object({\n type: z.literal(\"workflow\"),\n selection: z.object({\n workflowTemplateId: z.string().min(1),\n }),\n});\n\nconst websiteGenerationTemplateRequestSchema = z.object({\n type: z.literal(\"website\"),\n selection: z\n .object({\n websiteTemplateId: z.string().min(1),\n })\n .strict(),\n});\n\nconst generationTemplateRequestSchema = z.discriminatedUnion(\"type\", [\n presentationGenerationTemplateRequestSchema,\n videoGenerationTemplateRequestSchema,\n illustrationGenerationTemplateRequestSchema,\n workflowGenerationTemplateRequestSchema,\n websiteGenerationTemplateRequestSchema,\n]);\n\nconst userMessageTextPartSchema = z\n .object({\n type: z.literal(\"text\"),\n text: z.string().min(1),\n })\n .strict();\n\nconst userMessageChatThreadPartSchema = z\n .object({\n type: z.literal(\"chat_thread\"),\n threadId: z.string().uuid(),\n titleSnapshot: z.string().min(1),\n })\n .strict();\n\nconst userMessageAgentPartSchema = z\n .object({\n type: z.literal(\"agent\"),\n agentId: z.string().uuid(),\n nameSnapshot: z.string().min(1),\n })\n .strict();\n\nconst userMessageTemplatePartSchema = z\n .object({\n type: z.literal(\"template\"),\n titleSnapshot: z.string().min(1),\n template: generationTemplateRequestSchema,\n })\n .strict();\n\nconst feedbackNotePartSchema = z.discriminatedUnion(\"type\", [\n userMessageTextPartSchema,\n userMessageChatThreadPartSchema,\n userMessageAgentPartSchema,\n userMessageTemplatePartSchema,\n]);\n\nconst userMessageExternalSourcePartSchema = z\n .object({\n type: z.literal(\"source\"),\n kind: z.enum([\n \"slack\",\n \"feishu\",\n \"teams\",\n \"telegram\",\n \"github\",\n \"agentphone\",\n ]),\n href: z.string().url().optional(),\n })\n .strict();\n\nconst userMessageAgentSourcePartSchema = z\n .object({\n type: z.literal(\"source\"),\n kind: z.literal(\"agent\"),\n runId: z.string().uuid(),\n threadId: z.string().uuid(),\n agentId: z.string().uuid(),\n titleSnapshot: z.string().min(1),\n href: z.string().min(1),\n })\n .strict();\n\nconst userMessageSourcePartSchema = z.discriminatedUnion(\"kind\", [\n userMessageExternalSourcePartSchema,\n userMessageAgentSourcePartSchema,\n]);\n\nconst userMessagePartSchema = z.discriminatedUnion(\"type\", [\n userMessageTextPartSchema,\n userMessageChatThreadPartSchema,\n userMessageAgentPartSchema,\n userMessageTemplatePartSchema,\n userMessageSourcePartSchema,\n z\n .object({\n type: z.literal(\"automation\"),\n workflowName: z.string().min(1),\n workflowId: z.string().uuid().optional(),\n automationBrief: z.string().optional(),\n })\n .strict(),\n z\n .object({\n type: z.literal(\"goal\"),\n goalBrief: z.string().min(1),\n })\n .strict(),\n z\n .object({\n type: z.literal(\"file\"),\n fileId: z.string().min(1),\n filenameSnapshot: z.string().min(1),\n contentType: z.string().min(1),\n })\n .strict(),\n z\n .object({\n type: z.literal(\"feedback\"),\n quote: z.string().min(1),\n note: z.array(feedbackNotePartSchema).min(1),\n source: z\n .object({\n type: z.literal(\"mail\"),\n id: z.string().min(1),\n status: z.enum([\"draft\", \"sent\"]),\n sentId: z.string().min(1).optional(),\n })\n .strict()\n .optional(),\n })\n .strict(),\n]);\n\nconst userMessageDocumentSchema = z\n .object({\n version: z.literal(1),\n parts: z\n .array(userMessagePartSchema)\n .min(1)\n .refine(\n (parts) => {\n return (\n parts.filter((part) => {\n return (\n part.type === \"source\" ||\n part.type === \"automation\" ||\n part.type === \"goal\"\n );\n }).length <= 1\n );\n },\n { message: \"A user message may contain at most one non-content part\" },\n ),\n })\n .strict();\n\nconst chatEventBaseSchema = z.object({\n id: z.string(),\n threadId: z.string(),\n content: z.string().nullable(),\n runId: z.string().optional(),\n runGroupId: z.string().optional(),\n triggerSource: triggerSourceSchema.optional(),\n isGoalRun: z.boolean().optional(),\n runEventId: z.string().optional(),\n revokesEventId: z.string().optional(),\n /** Server-assigned strict position within the chat thread. */\n seqId: z.number().int().positive(),\n sequenceNumber: z.number().nullable().optional(),\n createdAt: z.string(),\n});\n\nconst chatEventRecommendedFollowupSchema = z.object({\n prompt: z.string(),\n kind: z.enum([\"talk\", \"generate\"]),\n generationType: z\n .enum([\"image\", \"video\", \"presentation\", \"website\"])\n .optional(),\n});\n\nconst chatEventRecommendedFollowupsSchema = z.preprocess((value) => {\n if (!Array.isArray(value)) {\n return [];\n }\n return value.flatMap((item) => {\n const parsed = chatEventRecommendedFollowupSchema.safeParse(item);\n return parsed.success ? [parsed.data] : [];\n });\n}, z.array(chatEventRecommendedFollowupSchema));\n\nconst inputPromptEventSchema = chatEventBaseSchema\n .extend({\n eventType: z.literal(\"input.prompt\"),\n content: z.null(),\n userMessage: userMessageDocumentSchema,\n attachFiles: z.array(resolvedAttachFileSchema).optional(),\n generationTemplate: generationTemplateRequestSchema.optional(),\n })\n .strict();\n\nconst inputAutomationEventSchema = chatEventBaseSchema\n .extend({\n eventType: z.literal(\"input.automation\"),\n content: z.null(),\n userMessage: userMessageDocumentSchema.optional(),\n triggerSource: triggerSourceSchema,\n })\n .strict();\n\nconst inputGoalEventSchema = chatEventBaseSchema\n .extend({\n eventType: z.literal(\"input.goal\"),\n content: z.null(),\n userMessage: userMessageDocumentSchema,\n // Queue association stays server-side; the public event preserves only\n // the user-facing document and stream ordering contract.\n runId: z.never().optional(),\n runGroupId: z.never().optional(),\n triggerSource: z.never().optional(),\n isGoalRun: z.never().optional(),\n runEventId: z.never().optional(),\n revokesEventId: z.never().optional(),\n sequenceNumber: z.never().optional(),\n })\n .strict();\n\nconst inputRejectedEventSchema = chatEventBaseSchema\n .extend({\n eventType: z.literal(\"input.rejected\"),\n content: z.null(),\n userMessage: userMessageDocumentSchema,\n error: z.string(),\n attachFiles: z.array(resolvedAttachFileSchema).optional(),\n generationTemplate: generationTemplateRequestSchema.optional(),\n })\n .strict();\n\nconst outputMessageEventSchema = chatEventBaseSchema\n .extend({\n eventType: z.literal(\"output.message\"),\n content: z.string(),\n })\n .strict();\n\nconst outputErrorEventSchema = chatEventBaseSchema\n .extend({\n eventType: z.literal(\"output.error\"),\n error: z.string(),\n })\n .strict();\n\nconst outputThinkingEventSchema = chatEventBaseSchema\n .extend({\n eventType: z.literal(\"output.thinking\"),\n content: z.null(),\n thinking: z.string(),\n })\n .strict();\n\nconst outputFollowupsEventSchema = chatEventBaseSchema\n .extend({\n eventType: z.literal(\"output.followups\"),\n content: z.null(),\n recommendedFollowups: chatEventRecommendedFollowupsSchema,\n })\n .strict();\n\nconst runQueuedEventSchema = chatEventBaseSchema\n .extend({\n eventType: z.literal(\"run.queued\"),\n runId: z.string(),\n content: z.string(),\n })\n .strict();\n\nconst runDequeuedEventSchema = chatEventBaseSchema\n .extend({\n eventType: z.literal(\"run.dequeued\"),\n runId: z.string(),\n content: z.null(),\n revokesEventId: z.string(),\n })\n .strict();\n\nconst runCompletedEventSchema = chatEventBaseSchema\n .extend({\n eventType: z.literal(\"run.completed\"),\n runId: z.string(),\n attachFiles: z.array(resolvedAttachFileSchema).optional(),\n runLifecycleEvent: z.literal(\"completed\"),\n })\n .strict();\n\nconst runFailedEventSchema = chatEventBaseSchema\n .extend({\n eventType: z.literal(\"run.failed\"),\n runId: z.string(),\n error: z.string().optional(),\n runLifecycleEvent: z.literal(\"failed\"),\n })\n .strict();\n\nconst runCancelledEventSchema = chatEventBaseSchema\n .extend({\n eventType: z.literal(\"run.cancelled\"),\n runId: z.string(),\n error: z.string().optional(),\n runLifecycleEvent: z.literal(\"cancelled\"),\n })\n .strict();\n\nconst controlInterruptEventSchema = chatEventBaseSchema\n .extend({\n eventType: z.literal(\"control.interrupt\"),\n content: z.null(),\n interruptsRunId: z.string(),\n })\n .strict();\n\nconst controlRevokeEventSchema = chatEventBaseSchema\n .extend({\n eventType: z.literal(\"control.revoke\"),\n content: z.null(),\n revokesEventId: z.string(),\n })\n .strict();\n\nconst browserOpenEventSchema = chatEventBaseSchema\n .extend({\n eventType: z.literal(\"browser.open\"),\n content: z.null(),\n })\n .strict();\n\nconst browserCloseEventSchema = chatEventBaseSchema\n .extend({\n eventType: z.literal(\"browser.close\"),\n content: z.null(),\n })\n .strict();\n\nconst browserStartedEventSchema = chatEventBaseSchema\n .extend({\n eventType: z.literal(\"browser.started\"),\n content: z.null(),\n })\n .strict();\n\nconst browserStoppedEventSchema = chatEventBaseSchema\n .extend({\n eventType: z.literal(\"browser.stopped\"),\n content: z.null(),\n })\n .strict();\n\nconst goalChangedEventSchema = chatEventBaseSchema\n .extend({\n eventType: z.literal(\"goal.changed\"),\n content: z.null(),\n goalEvent: zeroGoalEventSchema,\n })\n .strict();\n\nconst usageRecordedEventSchema = chatEventBaseSchema\n .extend({\n eventType: z.literal(\"usage.recorded\"),\n runId: z.string(),\n content: z.null(),\n usage: chatEventUsagePayloadSchema,\n })\n .strict();\n\n/**\n * Redacted public projection of the canonical thread stream.\n * Server-only payload fields are not accepted.\n */\nconst chatEventSchema = z.discriminatedUnion(\"eventType\", [\n inputPromptEventSchema,\n inputAutomationEventSchema,\n inputGoalEventSchema,\n inputRejectedEventSchema,\n outputMessageEventSchema,\n outputErrorEventSchema,\n outputThinkingEventSchema,\n outputFollowupsEventSchema,\n runQueuedEventSchema,\n runDequeuedEventSchema,\n runCompletedEventSchema,\n runFailedEventSchema,\n runCancelledEventSchema,\n controlInterruptEventSchema,\n controlRevokeEventSchema,\n browserOpenEventSchema,\n browserCloseEventSchema,\n goalChangedEventSchema,\n usageRecordedEventSchema,\n]);\n\nif (CHAT_EVENT_TYPES.length !== chatEventSchema.options.length) {\n throw new Error(\n \"ChatEvent schema must cover every registered event catalog leaf\",\n );\n}\n\n// The previous browser bundle only understands started/stopped. Keep those\n// response leaves while it can remain open; canonical application state is\n// normalized at the client persistence boundary.\nconst compatibleChatEventSchema = z.discriminatedUnion(\"eventType\", [\n ...chatEventSchema.options,\n browserStartedEventSchema,\n browserStoppedEventSchema,\n]);\n\nconst chatThreadDetailSchema = z.object({\n /**\n * Read-state watermark. A thread is unread when its latest run-finish marker\n * is newer than this timestamp.\n */\n lastReadAt: z.string().nullable(),\n /**\n * A capable cancelled run is still preserving its resumable session before\n * same-thread continuation can start. Optional during API/Platform rollout.\n */\n cancellationRecoveryPending: z.boolean().optional(),\n});\n\nconst chatThreadMetadataSchema = z.object({\n id: z.string(),\n // Optional during API/CLI rollout so a newer CLI can fall back to the\n // compact thread snapshot when it reaches an older API.\n agentId: z.string().uuid().optional(),\n title: z.string().nullable(),\n selectedModel: z.string().nullable(),\n});\n\nconst chatThreadDraftSchema = z\n .object({\n draftUserMessage: userMessageDocumentSchema.nullable(),\n draftAttachments: z.array(persistedAttachmentSchema).nullable(),\n })\n .superRefine(requireUserMessageForDraftAttachments);\n\nconst selectedModelRequestSchema = supportedRunModelSchema;\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction legacyModelSelectionModel(value: unknown): string | null | undefined {\n if (value === null) {\n return null;\n }\n if (!isRecord(value)) {\n return undefined;\n }\n const selectedModel = value.selectedModel;\n return typeof selectedModel === \"string\" ? selectedModel : undefined;\n}\n\nfunction normalizeLegacyModelSelectionInput(\n value: unknown,\n options: { readonly allowNull: boolean },\n): unknown {\n if (!isRecord(value) || \"model\" in value || !(\"modelSelection\" in value)) {\n return value;\n }\n const legacyModelSelection = legacyModelSelectionModel(value.modelSelection);\n if (\n legacyModelSelection === undefined ||\n (legacyModelSelection === null && !options.allowNull)\n ) {\n return value;\n }\n return { ...value, model: legacyModelSelection };\n}\n\nconst chatThreadCreateBodySchema = z.preprocess(\n (value) => {\n return normalizeLegacyModelSelectionInput(value, { allowNull: false });\n },\n z.object({\n agentId: z.string().min(1),\n clientThreadId: z.string().uuid().optional(),\n eventId: chatThreadEventIdSchema.optional(),\n /**\n * Selected model id. The API resolves the effective model provider from org\n * policy and available credentials. Omit it to inherit the model of the run\n * that owns the calling token; callers without a run must send it.\n */\n model: selectedModelRequestSchema.optional(),\n title: z.string().optional(),\n }),\n);\n\nconst chatThreadModelSelectionUpdateBodySchema = z.preprocess(\n (value) => {\n return normalizeLegacyModelSelectionInput(value, { allowNull: true });\n },\n z.object({\n /**\n * Selected model id, or null to clear the thread's selected model.\n */\n model: selectedModelRequestSchema.nullable(),\n codexServiceTier: codexServiceTierSchema.nullable().optional(),\n eventId: chatThreadEventIdSchema.optional(),\n serviceTierEventId: chatThreadEventIdSchema.optional(),\n }),\n);\n\nconst chatRunOptionsRequestSchema = z.object({\n codexServiceTier: codexServiceTierSchema.optional(),\n});\n\nconst chatNormalSendBodyShape = {\n agentId: z.string().min(1),\n prompt: z.string().min(1),\n threadId: z.string().optional(),\n clientThreadId: z.string().uuid().optional(),\n chatThreadEventId: chatThreadEventIdSchema.optional(),\n // Client-generated UUID for the sort touch created by direct user sends.\n // Lets event-sourced clients reconcile optimistic sidebar recency by id.\n chatThreadSortEventId: chatThreadEventIdSchema.optional(),\n /**\n * Selected model id. The API resolves the effective provider from org\n * policy and available credentials. Existing threads may omit it to\n * reuse the thread's persisted model.\n */\n model: selectedModelRequestSchema.optional(),\n runOptions: chatRunOptionsRequestSchema.optional(),\n userMessage: userMessageDocumentSchema,\n generationTemplate: generationTemplateRequestSchema.optional(),\n computerUseHostId: z.string().uuid().nullable().optional(),\n cloudBrowserEnabled: z.boolean().optional(),\n // Optional for backward compatibility: older clients that omit this field\n // still trigger title generation (server guards with !== false, not === true).\n hasTextContent: z.boolean().optional(),\n attachFiles: z.array(attachFileSchema).optional(),\n // Preview evaluation escape hatch: when enabled, the request asks the\n // runner to bypass preview mock CLIs and use the real agent runtime.\n realAgentInPreview: z.boolean().optional(),\n} as const;\n\nconst chatEventNormalSendBodySchema = z.preprocess(\n (value) => {\n return normalizeLegacyModelSelectionInput(value, { allowNull: false });\n },\n z\n .object({\n ...chatNormalSendBodyShape,\n // Client-generated UUID used as the user event's primary key.\n clientEventId: z.string().uuid().optional(),\n revokesEventId: z.string().min(1).optional(),\n interruptsRunId: z.undefined().optional(),\n })\n .refine(\n (body) => {\n return !(body.cloudBrowserEnabled && body.computerUseHostId);\n },\n {\n message: \"Cloud browser and Computer Use cannot both be enabled\",\n path: [\"cloudBrowserEnabled\"],\n },\n ),\n);\n\n/**\n * Chat thread collection route contract.\n */\nexport const chatThreadsContract = c.router({\n snapshot: {\n method: \"GET\",\n path: \"/api/zero/chat-threads/snapshot\",\n headers: authHeadersSchema,\n responses: {\n 200: z.object({\n chatThreads: z.array(chatThreadSnapshotProjectionSchema),\n latestEventId: chatThreadEventIdSchema.nullable(),\n // Remove optionality only after pre-sequence APIs cannot serve a newly\n // promoted app during rollout or rollback.\n latestSeqId: z.number().int().positive().nullable().optional(),\n }),\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary:\n \"Get the compacted chat thread snapshot for the caller's current organization.\",\n },\n events: {\n method: \"GET\",\n path: \"/api/zero/chat-threads/events\",\n headers: authHeadersSchema,\n query: z.object({\n sinceSeqId: z.coerce.number().int().positive().optional(),\n // Previous clients use UUID cursors. The API resolves them to seq_id\n // until those clients can no longer remain active.\n sinceEventId: chatThreadEventIdSchema.optional(),\n }),\n responses: {\n 200: z.object({\n events: z.array(chatThreadEventResponseSchema),\n hasMore: z.boolean(),\n }),\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 410: apiErrorSchema,\n },\n summary: \"List chat thread lifecycle events after an optional cursor.\",\n },\n activeIds: {\n method: \"GET\",\n path: \"/api/zero/chat-threads/active-ids\",\n headers: authHeadersSchema,\n responses: {\n 200: z.object({\n threadIds: z.array(z.string().uuid()),\n }),\n 401: apiErrorSchema,\n },\n summary:\n \"List chat thread ids that currently have queued, pending, or running runs.\",\n },\n create: {\n method: \"POST\",\n path: \"/api/zero/chat-threads\",\n headers: authHeadersSchema,\n body: chatThreadCreateBodySchema,\n responses: {\n 201: z.object({\n id: z.string(),\n title: z.string().nullable(),\n createdAt: z.string(),\n // The model the thread was pinned to, echoed so a caller that omitted\n // `model` learns what it inherited. Remove optionality only after\n // pre-echo APIs cannot serve a newly released CLI during rollout.\n selectedModel: z.string().optional(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Create a new chat thread\",\n },\n drafts: {\n method: \"GET\",\n // Sibling path (not nested under /chat-threads/) so it can never\n // collide with the /chat-threads/:id route pattern.\n path: \"/api/zero/chat-thread-drafts\",\n headers: authHeadersSchema,\n query: z.object({}),\n responses: {\n 200: z.object({\n /**\n * Thread ids owned by the caller that currently hold an unsent draft\n * (a user message with optional `draftAttachments`).\n */\n draftThreadIds: z.array(z.string()),\n }),\n 401: apiErrorSchema,\n },\n summary:\n \"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.\",\n },\n unreads: {\n method: \"GET\",\n path: \"/api/zero/chat-thread-unreads\",\n headers: authHeadersSchema,\n query: z.object({\n agentId: z.string().min(1),\n }),\n responses: {\n 200: chatThreadUnreadsSchema,\n 401: apiErrorSchema,\n },\n summary:\n \"List the caller's unread chat threads under an agent, each with the timestamp of the message that made it unread.\",\n },\n unreadAgents: {\n method: \"GET\",\n path: \"/api/zero/chat-thread-unread-agents\",\n headers: authHeadersSchema,\n responses: {\n 200: chatThreadUnreadAgentsSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary:\n \"List agent IDs with at least one unread chat thread for the caller.\",\n },\n});\n\n/**\n * Chat thread by ID route contract (/api/chat-threads/[id])\n */\nconst chatThreadIdPathParamsSchema = z.object({ id: z.string().uuid() });\nconst chatThreadThreadIdPathParamsSchema = z.object({\n threadId: z.string().uuid(),\n});\nconst chatThreadEventPathParamsSchema =\n chatThreadThreadIdPathParamsSchema.extend({\n eventId: z.string().uuid(),\n });\n\nexport const chatThreadByIdContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/chat-threads/:id\",\n headers: authHeadersSchema,\n pathParams: chatThreadIdPathParamsSchema,\n responses: {\n 200: chatThreadDetailSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get private chat thread state\",\n },\n patch: {\n method: \"PATCH\",\n path: \"/api/zero/chat-threads/:id\",\n headers: authHeadersSchema,\n pathParams: chatThreadIdPathParamsSchema,\n body: z\n .object({\n draftUserMessage: userMessageDocumentSchema.nullable(),\n draftAttachments: z\n .array(persistedAttachmentSchema)\n .nullable()\n .optional(),\n })\n .superRefine(requireUserMessageForDraftAttachments),\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Update chat thread draft message and attachments\",\n },\n delete: {\n method: \"DELETE\",\n path: \"/api/zero/chat-threads/:id\",\n headers: authHeadersSchema,\n pathParams: chatThreadIdPathParamsSchema,\n query: z.object({ eventId: chatThreadEventIdSchema.optional() }).optional(),\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Delete a chat thread\",\n body: c.noBody(),\n },\n});\n\n/**\n * Thread-scoped composer draft endpoint. Kept separate from thread detail so\n * draft hydration does not require the larger current-thread detail payload.\n */\nexport const chatThreadDraftContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/chat-threads/:id/draft\",\n headers: authHeadersSchema,\n pathParams: chatThreadIdPathParamsSchema,\n responses: {\n 200: chatThreadDraftSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get chat thread draft content and attachments\",\n },\n});\n\n/**\n * Mark a chat thread as read up to its current latest run-finish marker.\n * Separate contract so it can be served by its own route file.\n */\nexport const chatThreadMarkReadContract = c.router({\n markRead: {\n method: \"POST\",\n path: \"/api/zero/chat-threads/:id/mark-read\",\n headers: authHeadersSchema,\n pathParams: chatThreadIdPathParamsSchema,\n body: c.noBody(),\n responses: {\n 200: z.object({\n lastReadAt: z.string().nullable(),\n /**\n * Fresh unread snapshot for the thread's agent (same shape as the\n * unreads endpoint). Clients should treat\n * `chatThreadReadCursorUpdated` as read-state invalidation.\n */\n unreads: chatThreadUnreadsSchema.shape.unreads,\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Mark a chat thread as read up to the latest run-finish marker\",\n },\n});\n\n/**\n * Mark every unread chat thread under an agent as read.\n * Separate sibling route so it cannot collide with the `:id` thread routes.\n */\nexport const chatThreadMarkAgentReadContract = c.router({\n markAgentRead: {\n method: \"POST\",\n path: \"/api/zero/chat-thread-unreads/mark-read\",\n headers: authHeadersSchema,\n body: z.object({\n agentId: z.string().min(1),\n }),\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"Mark all unread chat threads under an agent as read\",\n },\n});\n\n/**\n * Pin / unpin a chat thread. Two separate POST endpoints (no body) instead\n * of widening `chatThreadByIdContract.patch`, which is intentionally narrow\n * (draft fields only). Mirrors the `mark-read` precedent.\n *\n * Split into two contracts because each lives in its own Next.js route\n * folder; `tsr.router` requires every action in a contract to be handled\n * by the same router file.\n */\nexport const chatThreadPinContract = c.router({\n pin: {\n method: \"POST\",\n path: \"/api/zero/chat-threads/:id/pin\",\n headers: authHeadersSchema,\n pathParams: chatThreadIdPathParamsSchema,\n query: z.object({ eventId: chatThreadEventIdSchema.optional() }).optional(),\n body: c.noBody(),\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Pin a chat thread to the top of the sidebar\",\n },\n});\n\nexport const chatThreadUnpinContract = c.router({\n unpin: {\n method: \"POST\",\n path: \"/api/zero/chat-threads/:id/unpin\",\n headers: authHeadersSchema,\n pathParams: chatThreadIdPathParamsSchema,\n query: z.object({ eventId: chatThreadEventIdSchema.optional() }).optional(),\n body: c.noBody(),\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Remove the pin from a chat thread\",\n },\n});\n\n/**\n * Rename a chat thread POST endpoint. Sets both the title and the\n * `renamed_at` timestamp, which suppresses future automated title\n * generation for this thread.\n *\n * Split into a dedicated contract/route so any POST body widening\n * (e.g. future `{ icon, folder }` fields) stays invisible to the\n * unrelated draft PATCH on chatThreadByIdContract.\n */\nexport const chatThreadRenameContract = c.router({\n rename: {\n method: \"POST\",\n path: \"/api/zero/chat-threads/:id/rename\",\n headers: authHeadersSchema,\n pathParams: chatThreadIdPathParamsSchema,\n body: z.object({\n title: z.string().min(1),\n eventId: chatThreadEventIdSchema.optional(),\n }),\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Rename a chat thread (suppresses automated title generation)\",\n },\n});\n\n/**\n * Narrow metadata endpoint for the current chat thread. This intentionally\n * does not expose messages or detail fields needed by the web UI.\n */\nexport const chatThreadMetadataContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/chat-threads/:id/metadata\",\n headers: authHeadersSchema,\n pathParams: chatThreadIdPathParamsSchema,\n responses: {\n 200: chatThreadMetadataSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get chat thread metadata\",\n },\n});\n\n/**\n * Update a chat thread's model pin. Kept separate from\n * `chatThreadByIdContract.patch`, which intentionally remains draft-only.\n */\nexport const chatThreadModelSelectionContract = c.router({\n update: {\n method: \"POST\",\n path: \"/api/zero/chat-threads/:id/model-selection\",\n headers: authHeadersSchema,\n pathParams: chatThreadIdPathParamsSchema,\n body: chatThreadModelSelectionUpdateBodySchema,\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Update a chat thread model selection\",\n },\n});\n\n/**\n * Update a chat thread's Computer Use host binding. Kept separate from\n * `chatThreadByIdContract.patch`, which intentionally remains draft-only.\n */\nexport const chatThreadComputerUseHostContract = c.router({\n update: {\n method: \"POST\",\n path: \"/api/zero/chat-threads/:id/computer-use-host\",\n headers: authHeadersSchema,\n pathParams: chatThreadIdPathParamsSchema,\n body: z\n .object({\n computerUseHostId: z.string().uuid().nullable(),\n cloudBrowserEnabled: z.boolean().optional(),\n eventId: chatThreadEventIdSchema.optional(),\n })\n .refine(\n (body) => {\n return !(body.cloudBrowserEnabled && body.computerUseHostId);\n },\n {\n message: \"Cloud browser and Computer Use cannot both be enabled\",\n path: [\"cloudBrowserEnabled\"],\n },\n ),\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Update a chat thread Computer Use host binding\",\n },\n});\n\n/** Canonical ChatEvent write contract. */\nexport const chatEventsContract = c.router({\n send: {\n method: \"POST\",\n path: \"/api/zero/chat/events\",\n headers: authHeadersSchema,\n body: z.union([\n chatEventNormalSendBodySchema,\n z.object({\n agentId: z.string().min(1),\n threadId: z.string().min(1),\n revokesEventId: z.string().min(1),\n clientEventId: z.string().uuid().optional(),\n prompt: z.undefined().optional(),\n clientThreadId: z.undefined().optional(),\n chatThreadEventId: z.undefined().optional(),\n chatThreadSortEventId: z.undefined().optional(),\n model: z.undefined().optional(),\n runOptions: z.undefined().optional(),\n userMessage: z.undefined().optional(),\n generationTemplate: z.undefined().optional(),\n computerUseHostId: z.undefined().optional(),\n hasTextContent: z.undefined().optional(),\n attachFiles: z.undefined().optional(),\n realAgentInPreview: z.undefined().optional(),\n interruptsRunId: z.undefined().optional(),\n }),\n z.object({\n agentId: z.string().min(1),\n threadId: z.string().min(1),\n interruptsRunId: z.string().uuid(),\n clientEventId: z.string().uuid().optional(),\n prompt: z.undefined().optional(),\n clientThreadId: z.undefined().optional(),\n chatThreadEventId: z.undefined().optional(),\n chatThreadSortEventId: z.undefined().optional(),\n model: z.undefined().optional(),\n runOptions: z.undefined().optional(),\n userMessage: z.undefined().optional(),\n generationTemplate: z.undefined().optional(),\n computerUseHostId: z.undefined().optional(),\n hasTextContent: z.undefined().optional(),\n attachFiles: z.undefined().optional(),\n realAgentInPreview: z.undefined().optional(),\n revokesEventId: z.undefined().optional(),\n }),\n ]),\n responses: {\n 201: z.object({\n runId: z.string().nullable(),\n threadId: z.string(),\n status: runStatusSchema.optional(),\n createdAt: z.string().optional(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n 422: apiErrorSchema,\n },\n summary: \"Append a chat event and dispatch input when applicable\",\n },\n});\n\n/**\n * Single chat message in a search result.\n * `content` is guaranteed non-null because the search route filters out\n * placeholder rows where content is NULL.\n */\nconst chatSearchMessageSchema = z.object({\n messageId: z.string(),\n chatThreadId: z.string(),\n role: z.enum([\"user\", \"assistant\"]),\n content: z.string(),\n createdAt: z.string(),\n seqId: z.number().int().positive(),\n sequenceNumber: z.number().nullable(),\n runId: z.string().nullable(),\n});\n\nconst chatSearchResultSchema = z.object({\n chatThreadId: z.string(),\n agentName: z.string(),\n matchedMessage: chatSearchMessageSchema,\n contextBefore: z.array(chatSearchMessageSchema),\n contextAfter: z.array(chatSearchMessageSchema),\n});\n\n/**\n * `hasMore` indicates that the server truncated the result set at `limit`.\n * There is intentionally no cursor/offset: `limit` is capped at 50 (see the\n * query schema below) and chat-message search is a lookup tool, not a bulk\n * export. Callers that hit `hasMore=true` should narrow the query (add\n * `agentId`, `since`, or a more specific `keyword`) rather than paginate. If\n * genuine pagination is ever needed, introduce `nextCursor` here — the\n * contract has no external consumers yet, so adding it later is safe.\n */\nconst chatSearchResponseSchema = z.object({\n results: z.array(chatSearchResultSchema),\n hasMore: z.boolean(),\n});\n\n/**\n * Chat search contract (GET /api/zero/chat/search)\n * Searches chat messages within the caller's own threads in the caller's org.\n * Authorization is enforced at the DB query level via userId + orgId filters.\n */\nexport const chatSearchContract = c.router({\n search: {\n method: \"GET\",\n path: \"/api/zero/chat/search\",\n headers: authHeadersSchema,\n query: z.object({\n keyword: z.string().trim().min(1),\n agentId: z.string().uuid().optional(),\n since: z.coerce.number().optional(),\n limit: z.coerce.number().min(1).max(50).default(20),\n before: z.coerce.number().min(0).max(10).default(0),\n after: z.coerce.number().min(0).max(10).default(0),\n }),\n responses: {\n 200: chatSearchResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"Search chat messages within caller's org (zero proxy)\",\n },\n});\n\n/** Canonical ChatEvent read contract. */\nexport const chatThreadEventsContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/chat-threads/:threadId/events\",\n headers: authHeadersSchema,\n pathParams: chatThreadThreadIdPathParamsSchema,\n query: z.object({\n sinceSeqId: z.coerce.number().int().positive().optional(),\n beforeSeqId: z.coerce.number().int().positive().optional(),\n sinceId: z.string().uuid().optional(),\n beforeId: z.string().uuid().optional(),\n limit: z.coerce.number().min(1).max(50).default(50),\n }),\n responses: {\n 200: z.object({\n events: z.array(compatibleChatEventSchema),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get paginated chat events for a thread\",\n },\n get: {\n method: \"GET\",\n path: \"/api/zero/chat-threads/:threadId/events/:eventId\",\n headers: authHeadersSchema,\n pathParams: chatThreadEventPathParamsSchema,\n responses: {\n 200: compatibleChatEventSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get a chat event by id for a thread\",\n },\n});\n\nexport const chatThreadArtifactsContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/chat-threads/:threadId/artifacts\",\n headers: authHeadersSchema,\n pathParams: chatThreadThreadIdPathParamsSchema,\n responses: {\n 200: z.object({\n runs: z.array(chatThreadArtifactRunSchema),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"List uploaded files associated with every run in a chat thread\",\n },\n syncGoogleDrive: {\n method: \"POST\",\n path: \"/api/zero/chat-threads/:threadId/artifacts\",\n headers: authHeadersSchema,\n pathParams: chatThreadThreadIdPathParamsSchema,\n body: z.object({\n runId: z.string(),\n fileId: z.string(),\n }),\n responses: {\n 200: z.object({\n id: z.string(),\n name: z.string(),\n webViewLink: z.string().nullable(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Sync a chat artifact file to the user's connected Google Drive\",\n },\n});\n\nexport const artifactsContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/artifacts\",\n headers: authHeadersSchema,\n query: artifactsListQuerySchema,\n responses: {\n 200: artifactsListResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary:\n \"List artifacts for the caller's current organization (keyset-paginated)\",\n },\n getImageEditSnapshot: {\n method: \"GET\",\n path: \"/api/zero/artifacts/image-edit-snapshot\",\n headers: authHeadersSchema,\n query: imageArtifactEditSnapshotQuerySchema,\n responses: {\n 200: z.object({ snapshot: imageArtifactEditSnapshotSchema.nullable() }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get a resumable image artifact edit snapshot for the caller\",\n },\n upsertImageEditSnapshot: {\n method: \"PUT\",\n path: \"/api/zero/artifacts/image-edit-snapshot\",\n headers: authHeadersSchema,\n body: imageArtifactEditSnapshotUpsertSchema,\n responses: {\n 200: imageArtifactEditSnapshotSchema,\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Upsert a resumable image artifact edit snapshot for the caller\",\n },\n deleteImageEditSnapshot: {\n method: \"DELETE\",\n path: \"/api/zero/artifacts/image-edit-snapshot\",\n headers: authHeadersSchema,\n query: imageArtifactEditSnapshotQuerySchema,\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Delete a resumable image artifact edit snapshot for the caller\",\n },\n});\n\nexport type ChatThreadsContract = typeof chatThreadsContract;\nexport type ChatThreadByIdContract = typeof chatThreadByIdContract;\nexport type ChatThreadDraftContract = typeof chatThreadDraftContract;\nexport type ChatThreadMarkReadContract = typeof chatThreadMarkReadContract;\nexport type ChatThreadMarkAgentReadContract =\n typeof chatThreadMarkAgentReadContract;\nexport type ChatThreadPinContract = typeof chatThreadPinContract;\nexport type ChatThreadUnpinContract = typeof chatThreadUnpinContract;\nexport type ChatThreadRenameContract = typeof chatThreadRenameContract;\nexport type ChatThreadMetadataContract = typeof chatThreadMetadataContract;\nexport type ChatThreadModelSelectionContract =\n typeof chatThreadModelSelectionContract;\nexport type ChatThreadComputerUseHostContract =\n typeof chatThreadComputerUseHostContract;\nexport type ChatEventsContract = typeof chatEventsContract;\nexport type ChatThreadEventsContract = typeof chatThreadEventsContract;\nexport type ChatThreadArtifactsContract = typeof chatThreadArtifactsContract;\nexport type ArtifactsContract = typeof artifactsContract;\nexport type ChatSearchContract = typeof chatSearchContract;\nexport type ChatSearchResponse = z.infer<typeof chatSearchResponseSchema>;\nexport type ChatSearchResult = z.infer<typeof chatSearchResultSchema>;\nexport type ChatSearchMessage = z.infer<typeof chatSearchMessageSchema>;\n\nexport {\n chatThreadSnapshotProjectionSchema,\n chatThreadEventSchema,\n chatThreadDetailSchema,\n chatThreadMetadataSchema,\n chatThreadDraftSchema,\n chatRunOptionsRequestSchema,\n generationTemplateRequestSchema,\n userMessagePartSchema,\n userMessageDocumentSchema,\n presentationGenerationTemplateRequestSchema,\n videoGenerationTemplateRequestSchema,\n illustrationGenerationTemplateRequestSchema,\n websiteGenerationTemplateRequestSchema,\n chatEventSchema,\n compatibleChatEventSchema,\n chatEventUsagePayloadSchema,\n summaryEntrySchema,\n persistedAttachmentSchema,\n attachFileSchema,\n resolvedAttachFileSchema,\n artifactItemSchema,\n artifactsListResponseSchema,\n imageArtifactEditSnapshotSchema,\n imageArtifactEditSnapshotStateSchema,\n chatThreadArtifactFileSchema,\n chatThreadArtifactGoogleDriveSyncSchema,\n chatThreadArtifactRunSchema,\n};\n\nexport type CodexServiceTier = z.infer<typeof codexServiceTierSchema>;\nexport type ChatThreadServiceTier = z.infer<typeof chatThreadServiceTierSchema>;\nexport type ChatRunOptionsRequest = z.infer<typeof chatRunOptionsRequestSchema>;\nexport type GenerationTemplateRequest = z.infer<\n typeof generationTemplateRequestSchema\n>;\nexport type GenerationTemplateType = GenerationTemplateRequest[\"type\"];\nexport type FeedbackNotePart = z.infer<typeof feedbackNotePartSchema>;\nexport type UserMessagePart = z.infer<typeof userMessagePartSchema>;\nexport type UserMessageDocument = z.infer<typeof userMessageDocumentSchema>;\nexport type LegacyThreadGenerationTemplateType = Exclude<\n GenerationTemplateType,\n \"workflow\" | \"website\"\n>;\n/**\n * Legacy generation template shape retained for older thread-level storage.\n * Current prompt injection uses the generation template attached to the current\n * message only.\n */\nexport type ThreadGenerationTemplates = Partial<\n Record<\n LegacyThreadGenerationTemplateType,\n Extract<\n GenerationTemplateRequest,\n { type: LegacyThreadGenerationTemplateType }\n >\n >\n>;\nexport type PresentationGenerationTemplateRequest = z.infer<\n typeof presentationGenerationTemplateRequestSchema\n>;\nexport type VideoGenerationTemplateRequest = z.infer<\n typeof videoGenerationTemplateRequestSchema\n>;\nexport type IllustrationGenerationTemplateRequest = z.infer<\n typeof illustrationGenerationTemplateRequestSchema\n>;\nexport type WorkflowGenerationTemplateRequest = z.infer<\n typeof workflowGenerationTemplateRequestSchema\n>;\nexport type WebsiteGenerationTemplateRequest = z.infer<\n typeof websiteGenerationTemplateRequestSchema\n>;\n\nexport type SummaryEntry = z.infer<typeof summaryEntrySchema>;\nexport type ChatThreadSnapshotProjection = z.infer<\n typeof chatThreadSnapshotProjectionSchema\n>;\nexport type ChatThreadEvent = z.infer<typeof chatThreadEventSchema>;\nexport type ChatThreadDetail = z.infer<typeof chatThreadDetailSchema>;\nexport type ChatThreadMetadata = z.infer<typeof chatThreadMetadataSchema>;\nexport type ChatThreadDraft = z.infer<typeof chatThreadDraftSchema>;\nexport type ChatEvent = z.infer<typeof chatEventSchema>;\nexport type CompatibleChatEvent = z.infer<typeof compatibleChatEventSchema>;\nexport type ChatEventSendBody = z.infer<typeof chatEventsContract.send.body>;\n\nexport function chatEventResponse(event: ChatEvent): ChatEvent {\n return chatEventSchema.parse(event);\n}\n\nexport function canonicalChatEvent(event: CompatibleChatEvent): ChatEvent {\n if (event.eventType === \"browser.started\") {\n return { ...event, eventType: \"browser.open\" };\n }\n if (event.eventType === \"browser.stopped\") {\n return { ...event, eventType: \"browser.close\" };\n }\n return event;\n}\n\nexport type ChatInputEvent = Extract<\n ChatEvent,\n {\n eventType:\n | \"input.prompt\"\n | \"input.automation\"\n | \"input.goal\"\n | \"input.rejected\";\n }\n>;\nexport type ChatUserMessageEvent = Extract<\n ChatEvent,\n { eventType: \"input.prompt\" | \"input.rejected\" }\n>;\nexport type ChatAutomationEvent = Extract<\n ChatEvent,\n { eventType: \"input.automation\" }\n>;\nexport type ChatPromptEvent = Extract<ChatEvent, { eventType: \"input.prompt\" }>;\nexport type ChatFollowupsEvent = Extract<\n ChatEvent,\n { eventType: \"output.followups\" }\n>;\nexport type ChatUsageEvent = Extract<\n ChatEvent,\n { eventType: \"usage.recorded\" }\n>;\nexport type ChatEventUsagePayload = z.infer<typeof chatEventUsagePayloadSchema>;\nexport type PersistedAttachment = z.infer<typeof persistedAttachmentSchema>;\nexport type AttachFile = z.infer<typeof attachFileSchema>;\nexport type AssetRef = z.infer<typeof assetRefSchema>;\nexport type ResolvedAttachFile = z.infer<typeof resolvedAttachFileSchema>;\nexport type ChatThreadArtifactFile = z.infer<\n typeof chatThreadArtifactFileSchema\n>;\nexport type ChatThreadArtifactGoogleDriveSync = z.infer<\n typeof chatThreadArtifactGoogleDriveSyncSchema\n>;\nexport type ChatThreadArtifactRun = z.infer<typeof chatThreadArtifactRunSchema>;\nexport type ArtifactItem = z.infer<typeof artifactItemSchema>;\nexport type ArtifactsListResponse = z.infer<typeof artifactsListResponseSchema>;\nexport type ImageArtifactEditSnapshot = z.infer<\n typeof imageArtifactEditSnapshotSchema\n>;\nexport type ImageArtifactEditSnapshotState = z.infer<\n typeof imageArtifactEditSnapshotStateSchema\n>;\n","import type { z } from \"zod\";\n\nexport function requireUserMessageForDraftAttachments(\n draft: {\n readonly draftUserMessage: unknown;\n readonly draftAttachments?: readonly unknown[] | null;\n },\n context: z.RefinementCtx,\n): void {\n if (\n (draft.draftAttachments?.length ?? 0) > 0 &&\n draft.draftUserMessage === null\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"draftUserMessage is required for draft attachments\",\n path: [\"draftUserMessage\"],\n });\n }\n}\n","import { z } from \"zod\";\nimport { timestampQueryNumberSchema } from \"./base\";\nimport { firewallPoliciesSchema } from \"@vm0/connectors/firewall-types\";\nimport {\n modelProviderTypeSchema,\n type ModelProviderType,\n} from \"./model-providers\";\nimport { triggerSourceSchema } from \"./logs\";\nimport { orgTierSchema } from \"./orgs\";\n\nexport type DirectRunModelProviderType = Exclude<ModelProviderType, \"vm0\">;\n\nconst directRunModelProviderTypeSchema = modelProviderTypeSchema.refine(\n (type) => {\n return type !== \"vm0\";\n },\n { message: \"vm0 model provider is only supported by zero runs\" },\n);\n\nexport const claudeToolEntrySchema = z\n .string()\n .refine(\n (tool) => {\n return tool.trim().length > 0;\n },\n {\n message: \"Claude tool name must not be empty\",\n },\n )\n .refine(\n (tool) => {\n return !tool.includes(\",\");\n },\n {\n message: \"Claude tool name must not contain commas\",\n },\n )\n .refine(\n (tool) => {\n return !tool.trimStart().startsWith(\"-\");\n },\n {\n message: \"Claude tool name must not start with a hyphen\",\n },\n );\n\n// Stored in Postgres `integer` columns. Keep request validation aligned with\n// the DB range so malformed sandbox payloads fail as 400s instead of DB errors.\nexport const MAX_EVENT_SEQUENCE_NUMBER = 2_147_483_647;\nexport const eventSequenceNumberSchema = z\n .number()\n .int()\n .nonnegative()\n .max(MAX_EVENT_SEQUENCE_NUMBER);\n\n/**\n * All valid run status values\n */\nexport const ALL_RUN_STATUSES = [\n \"queued\",\n \"pending\",\n \"running\",\n \"completed\",\n \"failed\",\n \"timeout\",\n \"cancelled\",\n] as const;\n\n/**\n * Run status enum\n */\nconst runStatusSchema = z.enum(ALL_RUN_STATUSES);\n\n/**\n * Unified run request schema - supports all run modes via optional parameters\n */\nconst unifiedRunRequestSchema = z\n .object({\n // High-level shortcut for continuing an existing session.\n sessionId: z.string().optional(),\n\n // Base parameters (can be used directly or overridden after shortcut expansion)\n agentComposeId: z.string().optional(),\n agentComposeVersionId: z.string().optional(),\n conversationId: z.string().optional(),\n // Multi-mount artifacts, each with its own mountPath.\n artifacts: z\n .array(\n z.object({\n name: z.string(),\n version: z.string().optional(),\n mountPath: z.string(),\n }),\n )\n .optional(),\n vars: z.record(z.string(), z.string()).optional(),\n secrets: z.record(z.string(), z.string()).optional(),\n volumeVersions: z.record(z.string(), z.string()).optional(),\n\n // Additional volumes passed directly at run time (bypass compose)\n additionalVolumes: z\n .array(\n z.object({\n name: z.string(),\n version: z.string().optional(),\n mountPath: z.string(),\n }),\n )\n .optional(),\n\n // Preview evaluation escape hatch: bypass preview mock CLIs and use the\n // real agent runtime.\n realAgentInPreview: z.boolean().optional(),\n\n // Capture HTTP header names, selected safe header values, request bodies, and response bodies\n // in network logs\n captureNetworkBodies: z.boolean().optional(),\n\n // Required\n prompt: z.string().min(1, \"Missing prompt\"),\n\n // Optional system prompt to append to the agent's system prompt\n appendSystemPrompt: z.string().optional(),\n\n // Optional list of tools to disable in Claude CLI (passed as --disallowed-tools)\n disallowedTools: z.array(claudeToolEntrySchema).optional(),\n\n // Optional list of tools to make available in Claude CLI (passed as --tools)\n tools: z.array(claudeToolEntrySchema).optional(),\n\n // Settings JSON to pass to Claude CLI (passed as --settings)\n settings: z.string().optional(),\n\n // How the run was triggered (defaults to \"web\" on the server if not provided)\n triggerSource: triggerSourceSchema.optional(),\n\n // Per-permission policies (e.g., { \"github\": { \"actions:read\": \"allow\" } })\n permissionPolicies: firewallPoliciesSchema.optional(),\n\n // Internal: pin provider type for direct CLI runs used by E2E.\n // vm0 is intentionally excluded here because only zero runs enforce\n // vm0-managed-provider credits.\n modelProviderType: directRunModelProviderTypeSchema.optional(),\n })\n .strict();\n\n/**\n * Create run response schema\n */\nconst createRunResponseSchema = z.object({\n runId: z.string(),\n status: runStatusSchema,\n sandboxId: z.string().optional(),\n // Agent session id — eagerly created at run insertion, always present.\n sessionId: z.string().uuid(),\n output: z.string().optional(),\n error: z.string().optional(),\n executionTimeMs: z.number().optional(),\n createdAt: z.string().optional(),\n});\n\n/**\n * Get run response schema\n */\nconst getRunResponseSchema = z.object({\n runId: z.string(),\n agentComposeVersionId: z.string().nullable(),\n status: runStatusSchema,\n prompt: z.string(),\n appendSystemPrompt: z.string().nullable(),\n vars: z.record(z.string(), z.string()).optional(),\n sandboxId: z.string().optional(),\n result: z\n .object({\n output: z.string().optional(),\n executionTimeMs: z.number().optional(),\n agentSessionId: z.string().optional(),\n checkpointId: z.string().optional(),\n conversationId: z.string().optional(),\n })\n .passthrough()\n .optional(),\n error: z.string().optional(),\n createdAt: z.string(),\n startedAt: z.string().optional(),\n completedAt: z.string().optional(),\n});\n\n/**\n * Run event schema\n */\nconst runEventSchema = z.object({\n sequenceNumber: eventSequenceNumberSchema,\n eventType: z.string(),\n eventData: z.unknown(),\n createdAt: z.string(),\n});\n\n/**\n * Run result schema (present when status = 'completed')\n */\nconst runResultSchema = z.object({\n checkpointId: z.string(),\n agentSessionId: z.string(),\n conversationId: z.string(),\n artifact: z.record(z.string(), z.string()).optional(), // optional when run has no artifact\n volumes: z.record(z.string(), z.string()).optional(),\n});\n\n/**\n * Run state schema (replaces vm0_start/vm0_result/vm0_error events)\n */\nconst runStateSchema = z.object({\n status: runStatusSchema,\n result: runResultSchema.optional(),\n error: z.string().optional(),\n lastEventSequence: eventSequenceNumberSchema.optional(),\n});\n\n/**\n * Run list item schema\n */\nconst runListItemSchema = z.object({\n id: z.string(),\n agentName: z.string(),\n status: runStatusSchema,\n prompt: z.string(),\n appendSystemPrompt: z.string().nullable(),\n createdAt: z.string(),\n startedAt: z.string().nullable(),\n});\n\n/**\n * Runs list response schema\n */\nconst runsListResponseSchema = z.object({\n runs: z.array(runListItemSchema),\n});\n\n/**\n * Cancel run response schema\n */\nconst cancelRunResponseSchema = z.object({\n id: z.string(),\n status: z.literal(\"cancelled\"),\n message: z.string(),\n});\n\n/**\n * Telemetry metric schema\n */\nconst telemetryMetricSchema = z.object({\n ts: z.string(),\n cpu: z.number(),\n mem_used: z.number(),\n mem_total: z.number(),\n disk_used: z.number(),\n disk_total: z.number(),\n});\n\ntype LogPaginationCursorKind = \"sequence\" | \"time\";\ntype LogPaginationOrder = \"asc\" | \"desc\";\n\ninterface LogPaginationQueryOptions {\n readonly cursorKind: LogPaginationCursorKind;\n readonly maxLimit?: number;\n readonly defaultLimit?: number;\n readonly defaultOrder?: LogPaginationOrder;\n}\n\nconst ISO_UTC_TIMESTAMP_PATTERN =\n /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(?:\\.\\d{1,9})?Z$/;\n\nfunction rejectBlankQueryNumber(value: unknown): unknown {\n if (typeof value === \"string\" && value.trim().length === 0) {\n return Number.NaN;\n }\n\n return value;\n}\n\nconst safeIntegerQueryNumberSchema = z.preprocess(\n rejectBlankQueryNumber,\n z.coerce.number().refine(Number.isSafeInteger, {\n message: \"Value must be a safe integer\",\n }),\n);\n\nconst sequenceQueryNumberSchema = safeIntegerQueryNumberSchema\n .refine(\n (value) => {\n return value >= -1;\n },\n { message: \"Sequence cursor must be at least -1\" },\n )\n .refine(\n (value) => {\n return value <= MAX_EVENT_SEQUENCE_NUMBER;\n },\n { message: \"Sequence cursor is out of range\" },\n );\n\nfunction boundedIntegerQueryNumberSchema(min: number, max: number) {\n return z.preprocess(\n rejectBlankQueryNumber,\n z.coerce.number().int().min(min).max(max),\n );\n}\n\nfunction logSinceQuerySchema(cursorKind: LogPaginationCursorKind) {\n return cursorKind === \"time\"\n ? timestampQueryNumberSchema\n : sequenceQueryNumberSchema;\n}\n\nfunction exactUtcTimestamp(value: string): string | null {\n const match = ISO_UTC_TIMESTAMP_PATTERN.exec(value);\n if (!match) {\n return null;\n }\n\n const [, yearPart, monthPart, dayPart, hourPart, minutePart, secondPart] =\n match;\n if (\n yearPart === undefined ||\n monthPart === undefined ||\n dayPart === undefined ||\n hourPart === undefined ||\n minutePart === undefined ||\n secondPart === undefined\n ) {\n return null;\n }\n\n const year = Number(yearPart);\n const month = Number(monthPart);\n const day = Number(dayPart);\n const hour = Number(hourPart);\n const minute = Number(minutePart);\n const second = Number(secondPart);\n const date = new Date(0);\n date.setUTCFullYear(year, month - 1, day);\n date.setUTCHours(hour, minute, second, 0);\n\n return date.getUTCFullYear() === year &&\n date.getUTCMonth() === month - 1 &&\n date.getUTCDate() === day &&\n date.getUTCHours() === hour &&\n date.getUTCMinutes() === minute &&\n date.getUTCSeconds() === second\n ? value\n : null;\n}\n\nfunction timeCursorTimestampValue(rawValue: string): string | null {\n let decoded: string;\n try {\n decoded = decodeURIComponent(rawValue);\n } catch {\n return null;\n }\n return exactUtcTimestamp(decoded);\n}\n\nfunction hasControlCharacter(value: string): boolean {\n for (let index = 0; index < value.length; index++) {\n const code = value.charCodeAt(index);\n if (code <= 31 || code === 127) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction timeCursorTieBreakerValue(rawValue: string): string | null {\n let decoded: string;\n try {\n decoded = decodeURIComponent(rawValue);\n } catch {\n return null;\n }\n\n if (decoded.length === 0 || decoded.length > 2048) {\n return null;\n }\n\n return hasControlCharacter(decoded) ? null : decoded;\n}\n\ntype ParsedLogCursor =\n | {\n readonly kind: \"sequence\";\n readonly order: LogPaginationOrder;\n readonly value: number;\n }\n | {\n readonly kind: \"time\";\n readonly order: LogPaginationOrder;\n readonly timestamp: string;\n readonly tieBreaker: string;\n };\n\nfunction parseLogCursor(cursor: string): ParsedLogCursor | null {\n const timeMatch = /^time:(asc|desc):([^:]+):(.+)$/.exec(cursor);\n if (timeMatch) {\n const order = timeMatch[1];\n const rawTimestamp = timeMatch[2];\n const rawTieBreaker = timeMatch[3];\n if (\n (order !== \"asc\" && order !== \"desc\") ||\n rawTimestamp === undefined ||\n rawTieBreaker === undefined\n ) {\n return null;\n }\n\n const timestamp = timeCursorTimestampValue(rawTimestamp);\n const tieBreaker = timeCursorTieBreakerValue(rawTieBreaker);\n return timestamp === null || tieBreaker === null\n ? null\n : { kind: \"time\", order, timestamp, tieBreaker };\n }\n\n const sequenceMatch = /^sequence:(asc|desc):(-?\\d+)$/.exec(cursor);\n if (!sequenceMatch) {\n return null;\n }\n\n const order = sequenceMatch[1];\n const rawValue = sequenceMatch[2];\n if ((order !== \"asc\" && order !== \"desc\") || rawValue === undefined) {\n return null;\n }\n\n if (!/^-?\\d+$/.test(rawValue)) {\n return null;\n }\n\n const value = Number(rawValue);\n if (!Number.isSafeInteger(value)) {\n return null;\n }\n\n return { kind: \"sequence\", order, value };\n}\n\nfunction sequenceCursorOutOfRange(cursor: ParsedLogCursor): boolean {\n return (\n cursor.kind === \"sequence\" &&\n (cursor.value < -1 || cursor.value > MAX_EVENT_SEQUENCE_NUMBER)\n );\n}\n\nexport function createLogPaginationQuerySchema(\n options: LogPaginationQueryOptions,\n) {\n return z\n .object({\n since: logSinceQuerySchema(options.cursorKind).optional(),\n sinceTime: timestampQueryNumberSchema.optional(),\n cursor: z.string().min(1).optional(),\n limit: z\n .preprocess(\n rejectBlankQueryNumber,\n z.coerce\n .number()\n .int()\n .min(1)\n .max(options.maxLimit ?? 100),\n )\n .default(options.defaultLimit ?? 5),\n order: z.enum([\"asc\", \"desc\"]).default(options.defaultOrder ?? \"desc\"),\n })\n .superRefine((query, ctx) => {\n if (!query.cursor) {\n return;\n }\n\n const cursor = parseLogCursor(query.cursor);\n if (!cursor) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"cursor\"],\n message: \"Cursor is malformed\",\n });\n return;\n }\n\n if (cursor.kind !== options.cursorKind) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"cursor\"],\n message: `Cursor must be a ${options.cursorKind} cursor`,\n });\n }\n\n if (cursor.order !== query.order) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"cursor\"],\n message: \"Cursor order must match query order\",\n });\n }\n\n if (sequenceCursorOutOfRange(cursor)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"cursor\"],\n message: \"Sequence cursor is out of range\",\n });\n }\n });\n}\n\n/**\n * System log response schema\n */\nconst systemLogResponseSchema = z.object({\n systemLog: z.string(),\n hasMore: z.boolean(),\n nextCursor: z.string().nullable().optional(),\n});\n\n/**\n * Metrics response schema\n */\nconst metricsResponseSchema = z.object({\n metrics: z.array(telemetryMetricSchema),\n hasMore: z.boolean(),\n nextCursor: z.string().nullable().optional(),\n});\n\n/**\n * Agent events response schema (for logs command)\n */\nconst agentEventsResponseSchema = z.object({\n events: z.array(runEventSchema),\n hasMore: z.boolean(),\n nextCursor: z.string().nullable().optional(),\n framework: z.string(),\n});\n\n/**\n * Network log action semantics:\n * ALLOW means the request was allowed to continue.\n * DENY means network policy denied the request.\n * BLOCK means vm0/proxy/auth/preconditions blocked the request locally.\n */\nconst networkLogActionSchema = z.enum([\"ALLOW\", \"DENY\", \"BLOCK\"]);\n\nconst modelCatalogCacheStatusSchema = z.enum([\n \"model_catalog_bypass\",\n \"model_catalog_fresh_hit\",\n \"model_catalog_cold_stored\",\n \"model_catalog_cold_not_stored\",\n \"model_catalog_revalidated_304\",\n \"model_catalog_revalidated_200_same\",\n \"model_catalog_revalidated_200_changed\",\n \"model_catalog_revalidation_not_stored\",\n \"model_catalog_etag_confirmed\",\n \"model_catalog_etag_invalidated\",\n]);\n\nconst modelCatalogCacheBypassReasonSchema = z.enum([\n \"request_url\",\n \"request_method\",\n \"request_framing\",\n \"request_body\",\n \"request_streaming\",\n \"request_conditions\",\n \"request_cache_control\",\n \"request_encoding\",\n \"request_identity\",\n \"request_capacity\",\n \"response_status\",\n \"response_encoding\",\n \"response_content_type\",\n \"response_cache_control\",\n \"response_vary\",\n \"response_etag\",\n \"response_size\",\n \"response_stream\",\n \"response_body\",\n \"response_json\",\n \"response_shape\",\n \"response_missing\",\n \"concurrent_change\",\n \"transport_error\",\n]);\n\nconst modelCatalogCacheUpstreamEncodingSchema = z.enum([\"identity\", \"br\"]);\n\nconst modelCatalogPrefetchRoleSchema = z.enum([\n \"producer\",\n \"completed_consumer\",\n \"inflight_consumer\",\n]);\n\nconst modelCatalogCacheMillisecondsSchema = z\n .number()\n .int()\n .min(0)\n .max(2_147_483_647);\n\nconst modelCatalogCacheEvictionCountSchema = z.number().int().min(0).max(32);\n\n/**\n * Network log entry schema.\n * [NETWORK_LOG_FIELDS] — keep in sync with all network log schemas\n */\nconst networkLogEntrySchema = z.object({\n timestamp: z.string(),\n type: z.string().optional(),\n action: networkLogActionSchema.optional(),\n host: z.string().optional(),\n port: z.number().optional(),\n method: z.string().optional(),\n url: z.string().optional(),\n status: z.number().optional(),\n latency_ms: z.number().optional(),\n request_size: z.number().optional(),\n response_size: z.number().optional(),\n browser_user_agent: z.boolean().optional(),\n model_catalog_cache_status: modelCatalogCacheStatusSchema.optional(),\n model_catalog_cache_upstream_encoding:\n modelCatalogCacheUpstreamEncodingSchema.optional(),\n model_catalog_cache_bypass_reason:\n modelCatalogCacheBypassReasonSchema.optional(),\n model_catalog_cache_entry_age_ms:\n modelCatalogCacheMillisecondsSchema.optional(),\n model_catalog_cache_validation_latency_ms:\n modelCatalogCacheMillisecondsSchema.optional(),\n model_catalog_cache_eviction_count:\n modelCatalogCacheEvictionCountSchema.optional(),\n model_catalog_prefetch_role: modelCatalogPrefetchRoleSchema.optional(),\n dns_event: z.string().optional(),\n dns_query_type: z.string().optional(),\n dns_result: z.string().optional(),\n dns_serial: z.string().optional(),\n firewall_base: z.string().optional(),\n firewall_name: z.string().optional(),\n firewall_permission: z.string().optional(),\n firewall_rule_match: z.string().optional(),\n firewall_params: z.record(z.string(), z.string()).optional(),\n firewall_billable: z.boolean().optional(),\n firewall_error: z.string().optional(),\n upstream_binding_reason: z.string().optional(),\n upstream_binding_trusted_host: z.string().optional(),\n upstream_binding_request_host: z.string().optional(),\n upstream_binding_request_port: z.number().optional(),\n upstream_binding_server_connected: z.boolean().optional(),\n upstream_binding_server_address: z.string().optional(),\n upstream_binding_server_peername: z.string().optional(),\n upstream_binding_server_sockname: z.string().optional(),\n upstream_binding_client_sockname: z.string().optional(),\n upstream_binding_server_id: z.string().optional(),\n upstream_binding_client_id: z.string().optional(),\n upstream_binding_direct_binding_present: z.boolean().optional(),\n upstream_binding_direct_binding_host: z.string().optional(),\n upstream_binding_direct_binding_port: z.number().optional(),\n upstream_binding_direct_binding_kinds: z.string().optional(),\n upstream_binding_client_binding_count: z.number().optional(),\n upstream_binding_client_binding_match: z.boolean().optional(),\n upstream_binding_client_binding_endpoint_match: z.boolean().optional(),\n upstream_binding_client_binding_hosts: z.string().optional(),\n connector_diagnostic_slug: z.string().optional(),\n connector_diagnostic_reason: z.string().optional(),\n connector_diagnostic_env_names: z.array(z.string()).optional(),\n connector_diagnostic_base: z.string().optional(),\n connector_route_reason: z.string().optional(),\n connector_route_candidates: z.array(z.string()).optional(),\n auth_resolved_secrets: z.array(z.string()).optional(),\n auth_refreshed_connectors: z.array(z.string()).optional(),\n auth_refreshed_secrets: z.array(z.string()).optional(),\n auth_cache_hit: z.boolean().optional(),\n auth_url_rewrite: z.boolean().optional(),\n error: z.string().optional(),\n // Capture-only fields (opt-in via captureNetworkBodies)\n request_headers: z.record(z.string(), z.string()).optional(),\n request_body: z.string().optional(),\n request_body_encoding: z.enum([\"utf-8\", \"base64\", \"binary\"]).optional(),\n request_body_truncated: z.boolean().optional(),\n response_headers: z.record(z.string(), z.string()).optional(),\n response_body: z.string().optional(),\n response_body_encoding: z.enum([\"utf-8\", \"base64\", \"binary\"]).optional(),\n response_body_truncated: z.boolean().optional(),\n});\n\n/**\n * Network logs response schema\n */\nconst networkLogsResponseSchema = z.object({\n networkLogs: z.array(networkLogEntrySchema),\n hasMore: z.boolean(),\n nextCursor: z.string().nullable().optional(),\n});\n\n/**\n * Logs search result schema\n */\nconst searchResultSchema = z.object({\n runId: z.string(),\n agentName: z.string(),\n framework: z.string().nullable().optional(),\n matchedEvent: runEventSchema,\n contextBefore: z.array(runEventSchema),\n contextAfter: z.array(runEventSchema),\n});\n\n/**\n * Logs search response schema\n */\nconst logsSearchResponseSchema = z.object({\n results: z.array(searchResultSchema),\n hasMore: z.boolean(),\n});\n\nconst logsSearchQuerySchema = z.object({\n keyword: z.string().trim().min(1),\n agentId: z.string().uuid().optional(),\n runId: z.string().uuid().optional(),\n since: timestampQueryNumberSchema.optional(),\n limit: boundedIntegerQueryNumberSchema(1, 50).default(20),\n before: boundedIntegerQueryNumberSchema(0, 10).default(0),\n after: boundedIntegerQueryNumberSchema(0, 10).default(0),\n});\n\n/**\n * Queue entry schema — own entries have real data, others have null for private fields\n * Ownership is detected via runId: non-null = own entry, null = other user's entry\n */\nconst queueEntrySchema = z.object({\n position: z.number(),\n agentName: z.string().nullable(),\n agentDisplayName: z.string().nullable(),\n userEmail: z.string().nullable(),\n createdAt: z.string(),\n isOwner: z.boolean(),\n runId: z.string().nullable(),\n prompt: z.string().nullable(),\n triggerSource: triggerSourceSchema.nullable(),\n sessionLink: z.string().nullable(),\n});\n\n/**\n * Running task schema — shows currently executing runs\n */\nconst runningTaskSchema = z.object({\n runId: z.string().nullable(),\n agentName: z.string(),\n agentDisplayName: z.string().nullable(),\n userEmail: z.string(),\n startedAt: z.string().nullable(),\n isOwner: z.boolean(),\n});\n\n/**\n * Concurrency info schema\n */\nconst concurrencyInfoSchema = z.object({\n tier: orgTierSchema,\n limit: z.number(),\n active: z.number(),\n available: z.number(),\n});\n\n/**\n * Queue response schema\n */\nconst queueResponseSchema = z.object({\n concurrency: concurrencyInfoSchema,\n queue: z.array(queueEntrySchema),\n runningTasks: z.array(runningTaskSchema),\n estimatedTimePerRun: z.number().nullable(),\n});\n\n// Export schemas for reuse\nexport {\n runStatusSchema,\n directRunModelProviderTypeSchema,\n unifiedRunRequestSchema,\n createRunResponseSchema,\n getRunResponseSchema,\n runListItemSchema,\n runsListResponseSchema,\n cancelRunResponseSchema,\n runEventSchema,\n runResultSchema,\n runStateSchema,\n telemetryMetricSchema,\n systemLogResponseSchema,\n metricsResponseSchema,\n agentEventsResponseSchema,\n networkLogActionSchema,\n modelCatalogCacheStatusSchema,\n modelCatalogCacheBypassReasonSchema,\n modelCatalogCacheUpstreamEncodingSchema,\n modelCatalogPrefetchRoleSchema,\n modelCatalogCacheMillisecondsSchema,\n modelCatalogCacheEvictionCountSchema,\n networkLogEntrySchema,\n networkLogsResponseSchema,\n searchResultSchema,\n logsSearchQuerySchema,\n logsSearchResponseSchema,\n queueEntrySchema,\n runningTaskSchema,\n concurrencyInfoSchema,\n queueResponseSchema,\n};\n\n// Export inferred types for consumers\nexport type RunStatus = z.infer<typeof runStatusSchema>;\nexport type RunResult = z.infer<typeof runResultSchema>;\nexport type RunState = z.infer<typeof runStateSchema>;\nexport type RunEvent = z.infer<typeof runEventSchema>;\nexport type CreateRunResponse = z.infer<typeof createRunResponseSchema>;\nexport type GetRunResponse = z.infer<typeof getRunResponseSchema>;\nexport type RunListItem = z.infer<typeof runListItemSchema>;\nexport type RunsListResponse = z.infer<typeof runsListResponseSchema>;\nexport type CancelRunResponse = z.infer<typeof cancelRunResponseSchema>;\nexport type TelemetryMetric = z.infer<typeof telemetryMetricSchema>;\nexport type SystemLogResponse = z.infer<typeof systemLogResponseSchema>;\nexport type MetricsResponse = z.infer<typeof metricsResponseSchema>;\nexport type AgentEventsResponse = z.infer<typeof agentEventsResponseSchema>;\nexport type NetworkLogAction = z.infer<typeof networkLogActionSchema>;\nexport type NetworkLogEntry = z.infer<typeof networkLogEntrySchema>;\nexport type NetworkLogsResponse = z.infer<typeof networkLogsResponseSchema>;\n/**\n * Axiom raw network event — the shape returned by `queryAxiom` for network logs.\n * Uses `_time` (Axiom's timestamp field) instead of `timestamp`, and includes\n * `runId`/`userId` used for Axiom filtering.\n */\nexport type AxiomNetworkEvent = Omit<NetworkLogEntry, \"timestamp\"> & {\n _time: string;\n runId: string;\n userId: string;\n};\nexport type SearchResult = z.infer<typeof searchResultSchema>;\nexport type LogsSearchResponse = z.infer<typeof logsSearchResponseSchema>;\nexport type QueueEntry = z.infer<typeof queueEntrySchema>;\nexport type RunningTask = z.infer<typeof runningTaskSchema>;\nexport type ConcurrencyInfo = z.infer<typeof concurrencyInfoSchema>;\nexport type QueueResponse = z.infer<typeof queueResponseSchema>;\n","import { z } from \"zod\";\nimport {\n initContract,\n authHeadersSchema,\n timestampQueryNumberSchema,\n} from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\n/**\n * Cursor-based pagination schema with total pages\n */\nexport const paginationSchema = z.object({\n hasMore: z.boolean(),\n nextCursor: z.string().nullable(),\n totalPages: z.number(),\n});\n\nexport type Pagination = z.infer<typeof paginationSchema>;\n\n/**\n * Common query parameters for list endpoints\n */\nconst listQuerySchema = z.object({\n cursor: z.string().optional(),\n limit: z.coerce.number().int().min(1).max(100).default(20),\n});\n\nconst c = initContract();\n\n/**\n * Run status enum for logs\n */\nconst logStatusSchema = z.enum([\n \"queued\",\n \"pending\",\n \"running\",\n \"completed\",\n \"failed\",\n \"timeout\",\n \"cancelled\",\n]);\n\n/**\n * Trigger source enum — how the run was initiated\n */\nexport const triggerSourceSchema = z.enum([\n \"web\",\n \"slack\",\n \"teams\",\n \"feishu\",\n \"email\",\n \"telegram\",\n \"agentphone\",\n \"github\",\n \"test\",\n \"agent\",\n \"webhook\",\n \"workflow-schedule\",\n \"workflow-event\",\n]);\n\nexport type TriggerSource = z.infer<typeof triggerSourceSchema>;\n\n/**\n * Log entry in list response - includes basic fields for list display\n */\nconst logEntrySchema = z.object({\n id: z.uuid(),\n sessionId: z.string().nullable(),\n agentId: z.string().nullable(),\n displayName: z.string().nullable(),\n framework: z.string().nullable(),\n triggerSource: triggerSourceSchema.nullable(),\n status: logStatusSchema,\n /** Prompt text the run was launched with. Used as a row description. */\n prompt: z.string(),\n createdAt: z.string(),\n startedAt: z.string().nullable(),\n completedAt: z.string().nullable(),\n});\n\n/**\n * Available filter values returned by the list endpoint.\n * agents contains canonical Zero agent IDs.\n */\nconst logsFiltersSchema = z.object({\n statuses: z.array(logStatusSchema),\n sources: z.array(triggerSourceSchema),\n agents: z.array(z.string()),\n});\n\nexport type LogsFilters = z.infer<typeof logsFiltersSchema>;\n\n/**\n * Logs list response schema with pagination\n */\nconst logsListResponseSchema = z.object({\n data: z.array(logEntrySchema),\n pagination: paginationSchema,\n filters: logsFiltersSchema,\n});\n\n/**\n * Artifact information schema\n */\nconst artifactSchema = z.object({\n name: z.string().nullable(),\n version: z.string().nullable(),\n});\n\n/**\n * Log detail response schema\n */\nconst logDetailSchema = z.object({\n id: z.uuid(),\n sessionId: z.string().nullable(),\n agentId: z.string().nullable(),\n displayName: z.string().nullable(),\n framework: z.string().nullable(),\n modelProvider: z.string().nullable(),\n selectedModel: z.string().nullable(),\n triggerSource: triggerSourceSchema.nullable(),\n status: logStatusSchema,\n prompt: z.string(),\n appendSystemPrompt: z.string().nullable(),\n error: z.string().nullable(),\n createdAt: z.string(),\n startedAt: z.string().nullable(),\n completedAt: z.string().nullable(),\n artifact: artifactSchema,\n});\n\n/**\n * Logs list contract\n * GET /api/zero/logs\n */\nexport const logsListContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/logs\",\n headers: authHeadersSchema,\n query: listQuerySchema.extend({\n search: z.string().optional(),\n agentId: z.string().uuid().optional(),\n name: z.string().optional(),\n since: timestampQueryNumberSchema.optional(),\n\n status: logStatusSchema.optional(),\n triggerSource: triggerSourceSchema.optional(),\n }),\n responses: {\n 200: logsListResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"List agent run logs with pagination\",\n },\n});\n\n/**\n * Logs by ID contract\n * GET /api/zero/logs/:id\n */\nexport const logsByIdContract = c.router({\n getById: {\n method: \"GET\",\n path: \"/api/zero/logs/:id\",\n headers: authHeadersSchema,\n pathParams: z.object({\n id: z.string().uuid(\"Invalid log ID\"),\n }),\n responses: {\n 200: logDetailSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get agent run log details by ID\",\n },\n});\n\n// Contract type exports\nexport type LogsListContract = typeof logsListContract;\nexport type LogsByIdContract = typeof logsByIdContract;\n\n// Schema exports for reuse\nexport {\n logStatusSchema,\n logEntrySchema,\n logsListResponseSchema,\n artifactSchema,\n logDetailSchema,\n};\n\n// Inferred type exports\nexport type LogStatus = z.infer<typeof logStatusSchema>;\nexport type LogEntry = z.infer<typeof logEntrySchema>;\nexport type LogsListResponse = z.infer<typeof logsListResponseSchema>;\nexport type Artifact = z.infer<typeof artifactSchema>;\nexport type LogDetail = z.infer<typeof logDetailSchema>;\n"],"mappings":"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","names":["order","c","c"]}