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