@dbx-tools/shared-genie 0.6.211 → 0.6.213
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/LICENSE +202 -0
- package/README.md +9 -3
- package/index.ts +4 -1
- package/lib/index.d.ts +4 -1
- package/lib/index.js +4 -2
- package/lib/src/agent-mode.d.ts +122 -0
- package/lib/src/agent-mode.js +200 -0
- package/lib/src/genie-model.d.ts +39 -3
- package/lib/src/genie-model.js +9 -6
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -3
- package/src/agent-mode.ts +238 -0
- package/src/genie-model.ts +30 -5
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser-safe Genie Agent Mode SSE contracts.
|
|
3
|
+
*
|
|
4
|
+
* Schemas validate the stable Responses-style event envelope while preserving
|
|
5
|
+
* additive fields and output-item variants introduced by the beta API.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { json, object } from "@dbx-tools/shared-core";
|
|
11
|
+
import { GenieMessageSchema, } from "./genie-model.js";
|
|
12
|
+
/** Agent Mode output content item with forward-compatible fields. */
|
|
13
|
+
export const GenieAgentContentSchema = z
|
|
14
|
+
.object({
|
|
15
|
+
type: z.string(),
|
|
16
|
+
text: z.string().optional(),
|
|
17
|
+
metadata: z.unknown().optional(),
|
|
18
|
+
})
|
|
19
|
+
.loose();
|
|
20
|
+
/** Agent Mode response output item with known projection fields. */
|
|
21
|
+
export const GenieAgentOutputItemSchema = z
|
|
22
|
+
.object({
|
|
23
|
+
type: z.string(),
|
|
24
|
+
id: z.string().optional(),
|
|
25
|
+
call_id: z.string().optional(),
|
|
26
|
+
name: z.string().optional(),
|
|
27
|
+
arguments: z.string().optional(),
|
|
28
|
+
output: z.string().optional(),
|
|
29
|
+
status: z.string().optional(),
|
|
30
|
+
content: z.array(GenieAgentContentSchema).optional(),
|
|
31
|
+
})
|
|
32
|
+
.loose();
|
|
33
|
+
/** Genie Agent Mode response carried by lifecycle events. */
|
|
34
|
+
export const GenieAgentResponseSchema = z
|
|
35
|
+
.object({
|
|
36
|
+
object: z.string().optional(),
|
|
37
|
+
id: z.string(),
|
|
38
|
+
model: z.string().optional(),
|
|
39
|
+
status: z.string(),
|
|
40
|
+
output: z.array(GenieAgentOutputItemSchema).optional(),
|
|
41
|
+
conversation_id: z.string().optional(),
|
|
42
|
+
created_at: z.number().optional(),
|
|
43
|
+
error: z.unknown().optional(),
|
|
44
|
+
})
|
|
45
|
+
.loose();
|
|
46
|
+
/** One SSE event from the Genie Agent Mode response stream. */
|
|
47
|
+
export const GenieAgentModeEventSchema = z
|
|
48
|
+
.object({
|
|
49
|
+
type: z.string(),
|
|
50
|
+
sequence_number: z.number().optional(),
|
|
51
|
+
output_index: z.number().optional(),
|
|
52
|
+
response: GenieAgentResponseSchema.optional(),
|
|
53
|
+
item: GenieAgentOutputItemSchema.optional(),
|
|
54
|
+
})
|
|
55
|
+
.loose();
|
|
56
|
+
/** Stateful pure reducer from Agent Mode SSE events to Genie message snapshots. */
|
|
57
|
+
export class GenieAgentModeProjection {
|
|
58
|
+
spaceId;
|
|
59
|
+
content;
|
|
60
|
+
items = new Map();
|
|
61
|
+
response;
|
|
62
|
+
constructor(spaceId, content) {
|
|
63
|
+
this.spaceId = spaceId;
|
|
64
|
+
this.content = content;
|
|
65
|
+
}
|
|
66
|
+
/** Apply one validated SSE event and return its projected snapshot. */
|
|
67
|
+
apply(event) {
|
|
68
|
+
if (event.response) {
|
|
69
|
+
this.response = event.response;
|
|
70
|
+
if (event.response.output) {
|
|
71
|
+
this.items.clear();
|
|
72
|
+
event.response.output.forEach((item, index) => {
|
|
73
|
+
this.items.set(agentItemKey(item, index), item);
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (event.item) {
|
|
78
|
+
this.items.set(agentItemKey(event.item, event.output_index), event.item);
|
|
79
|
+
}
|
|
80
|
+
if ((!event.response && !event.item) || !this.response)
|
|
81
|
+
return undefined;
|
|
82
|
+
return projectAgentModeMessage(this.spaceId, this.content, this.response, [
|
|
83
|
+
...this.items.values(),
|
|
84
|
+
]);
|
|
85
|
+
}
|
|
86
|
+
/** Current response id, once `response.created` has arrived. */
|
|
87
|
+
get responseId() {
|
|
88
|
+
return this.response?.id;
|
|
89
|
+
}
|
|
90
|
+
/** Current conversation id, once assigned by Genie. */
|
|
91
|
+
get conversationId() {
|
|
92
|
+
return this.response?.conversation_id;
|
|
93
|
+
}
|
|
94
|
+
/** Whether the latest response status is terminal. */
|
|
95
|
+
get terminal() {
|
|
96
|
+
return this.response ? isTerminalStatus(this.response.status) : false;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function isTerminalStatus(status) {
|
|
100
|
+
return status === "completed" || status === "failed" || status === "cancelled";
|
|
101
|
+
}
|
|
102
|
+
function agentItemKey(item, index) {
|
|
103
|
+
if (typeof item.id === "string")
|
|
104
|
+
return item.id;
|
|
105
|
+
if (typeof item.call_id === "string")
|
|
106
|
+
return item.call_id;
|
|
107
|
+
return String(typeof index === "number" ? index : (item.type ?? "item"));
|
|
108
|
+
}
|
|
109
|
+
/** Project one Agent Mode response snapshot onto the shared Genie message shape. */
|
|
110
|
+
export function projectAgentModeMessage(spaceId, content, response, items) {
|
|
111
|
+
const errorValue = object.isRecord(response.error) ? response.error : undefined;
|
|
112
|
+
const errorMessage = typeof errorValue?.message === "string"
|
|
113
|
+
? errorValue.message
|
|
114
|
+
: typeof response.error === "string"
|
|
115
|
+
? response.error
|
|
116
|
+
: undefined;
|
|
117
|
+
return GenieMessageSchema.parse({
|
|
118
|
+
id: response.id,
|
|
119
|
+
message_id: response.id,
|
|
120
|
+
space_id: spaceId,
|
|
121
|
+
conversation_id: response.conversation_id ?? "",
|
|
122
|
+
content,
|
|
123
|
+
status: agentModeStatus(response.status, items),
|
|
124
|
+
attachments: items.flatMap(itemAttachments),
|
|
125
|
+
...(response.created_at !== undefined ? { created_timestamp: response.created_at } : {}),
|
|
126
|
+
...(errorMessage ? { error: { error: errorMessage } } : {}),
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
function agentModeStatus(value, items) {
|
|
130
|
+
if (value === "completed")
|
|
131
|
+
return "COMPLETED";
|
|
132
|
+
if (value === "failed")
|
|
133
|
+
return "FAILED";
|
|
134
|
+
if (value === "cancelled")
|
|
135
|
+
return "CANCELLED";
|
|
136
|
+
if (items.some((item) => item.type === "function_call"))
|
|
137
|
+
return "EXECUTING_QUERY";
|
|
138
|
+
return "ASKING_AI";
|
|
139
|
+
}
|
|
140
|
+
function itemAttachments(item) {
|
|
141
|
+
const id = item.id ?? item.call_id;
|
|
142
|
+
if (item.type === "reasoning") {
|
|
143
|
+
const thoughts = contentText(item.content, "reasoning_text").map((thoughtContent) => ({
|
|
144
|
+
thought_type: "THOUGHT_TYPE_STEPS",
|
|
145
|
+
content: thoughtContent,
|
|
146
|
+
}));
|
|
147
|
+
return thoughts.length === 0
|
|
148
|
+
? []
|
|
149
|
+
: [{ attachment_id: id, attachment_type: "query", query: { id, thoughts } }];
|
|
150
|
+
}
|
|
151
|
+
if (item.type === "function_call") {
|
|
152
|
+
const argumentsValue = json.parseRecord(item.arguments);
|
|
153
|
+
const query = typeof argumentsValue?.sql === "string"
|
|
154
|
+
? argumentsValue.sql
|
|
155
|
+
: typeof argumentsValue?.query === "string"
|
|
156
|
+
? argumentsValue.query
|
|
157
|
+
: undefined;
|
|
158
|
+
const title = typeof argumentsValue?.title === "string" ? argumentsValue.title : item.name;
|
|
159
|
+
return query
|
|
160
|
+
? [
|
|
161
|
+
{
|
|
162
|
+
attachment_id: id,
|
|
163
|
+
attachment_type: "query",
|
|
164
|
+
query: {
|
|
165
|
+
id,
|
|
166
|
+
query,
|
|
167
|
+
...(title ? { title } : {}),
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
]
|
|
171
|
+
: [];
|
|
172
|
+
}
|
|
173
|
+
if (item.type === "function_call_output" && item.output !== undefined) {
|
|
174
|
+
return [textAttachment(id, item.output)];
|
|
175
|
+
}
|
|
176
|
+
if (item.type === "message") {
|
|
177
|
+
return (item.content ?? []).flatMap((part) => part.type === "output_text" && part.text
|
|
178
|
+
? [textAttachment(id, part.text, part.metadata)]
|
|
179
|
+
: []);
|
|
180
|
+
}
|
|
181
|
+
return [];
|
|
182
|
+
}
|
|
183
|
+
function contentText(value, type) {
|
|
184
|
+
if (!value)
|
|
185
|
+
return [];
|
|
186
|
+
return value.flatMap((part) => (part.type === type && part.text ? [part.text] : []));
|
|
187
|
+
}
|
|
188
|
+
function textAttachment(id, content, metadata) {
|
|
189
|
+
return {
|
|
190
|
+
attachment_id: id,
|
|
191
|
+
attachment_type: "text",
|
|
192
|
+
text: {
|
|
193
|
+
id,
|
|
194
|
+
content,
|
|
195
|
+
purpose: "TEXT_ATTACHMENT_PURPOSE_ANSWER",
|
|
196
|
+
...(metadata !== undefined ? { metadata } : {}),
|
|
197
|
+
},
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtbW9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZ2VudC1tb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdEQsT0FBTyxFQUNMLGtCQUFrQixHQUluQixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLHFFQUFxRTtBQUNyRSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDO0tBQ3JDLE1BQU0sQ0FBQztJQUNOLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNCLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ2pDLENBQUM7S0FDRCxLQUFLLEVBQUUsQ0FBQztBQUVYLG9FQUFvRTtBQUNwRSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxDQUFDO0tBQ3hDLE1BQU0sQ0FBQztJQUNOLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3pCLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzlCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNCLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2hDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzdCLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMs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QUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hELENBQUMsQ0FBQyxFQUFFLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FDbEIsS0FBNEQsRUFDNUQsSUFBWTtJQUVaLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDdEIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZGLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FDckIsRUFBc0IsRUFDdEIsT0FBZSxFQUNmLFFBQWtCO0lBRWxCLE9BQU87UUFDTCxhQUFhLEVBQUUsRUFBRTtRQUNqQixlQUFlLEVBQUUsTUFBTTtRQUN2QixJQUFJLEVBQUU7WUFDSixFQUFFO1lBQ0YsT0FBTztZQUNQLE9BQU8sRUFBRSxnQ0FBZ0M7WUFDekMsR0FBRyxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNoRDtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCcm93c2VyLXNhZmUgR2VuaWUgQWdlbnQgTW9kZSBTU0UgY29udHJhY3RzLlxuICpcbiAqIFNjaGVtYXMgdmFsaWRhdGUgdGhlIHN0YWJsZSBSZXNwb25zZXMtc3R5bGUgZXZlbnQgZW52ZWxvcGUgd2hpbGUgcHJlc2VydmluZ1xuICogYWRkaXRpdmUgZmllbGRzIGFuZCBvdXRwdXQtaXRlbSB2YXJpYW50cyBpbnRyb2R1Y2VkIGJ5IHRoZSBiZXRhIEFQSS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IGpzb24sIG9iamVjdCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5cbmltcG9ydCB7XG4gIEdlbmllTWVzc2FnZVNjaGVtYSxcbiAgdHlwZSBHZW5pZUF0dGFjaG1lbnQsXG4gIHR5cGUgR2VuaWVNZXNzYWdlLFxuICB0eXBlIEdlbmllVGhvdWdodCxcbn0gZnJvbSBcIi4vZ2VuaWUtbW9kZWwudHNcIjtcblxuLyoqIEFnZW50IE1vZGUgb3V0cHV0IGNvbnRlbnQgaXRlbSB3aXRoIGZvcndhcmQtY29tcGF0aWJsZSBmaWVsZHMuICovXG5leHBvcnQgY29uc3QgR2VuaWVBZ2VudENvbnRlbnRTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHR5cGU6IHouc3RyaW5nKCksXG4gICAgdGV4dDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG1ldGFkYXRhOiB6LnVua25vd24oKS5vcHRpb25hbCgpLFxuICB9KVxuICAubG9vc2UoKTtcblxuLyoqIEFnZW50IE1vZGUgcmVzcG9uc2Ugb3V0cHV0IGl0ZW0gd2l0aCBrbm93biBwcm9qZWN0aW9uIGZpZWxkcy4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZUFnZW50T3V0cHV0SXRlbVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgdHlwZTogei5zdHJpbmcoKSxcbiAgICBpZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNhbGxfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBuYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgYXJndW1lbnRzOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgb3V0cHV0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgc3RhdHVzOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgY29udGVudDogei5hcnJheShHZW5pZUFnZW50Q29udGVudFNjaGVtYSkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLmxvb3NlKCk7XG5cbi8qKiBHZW5pZSBBZ2VudCBNb2RlIHJlc3BvbnNlIGNhcnJpZWQgYnkgbGlmZWN5Y2xlIGV2ZW50cy4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZUFnZW50UmVzcG9uc2VTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIG9iamVjdDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlkOiB6LnN0cmluZygpLFxuICAgIG1vZGVsOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgc3RhdHVzOiB6LnN0cmluZygpLFxuICAgIG91dHB1dDogei5hcnJheShHZW5pZUFnZW50T3V0cHV0SXRlbVNjaGVtYSkub3B0aW9uYWwoKSxcbiAgICBjb252ZXJzYXRpb25faWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjcmVhdGVkX2F0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgZXJyb3I6IHoudW5rbm93bigpLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5sb29zZSgpO1xuXG4vKiogT25lIFNTRSBldmVudCBmcm9tIHRoZSBHZW5pZSBBZ2VudCBNb2RlIHJlc3BvbnNlIHN0cmVhbS4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZUFnZW50TW9kZUV2ZW50U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICB0eXBlOiB6LnN0cmluZygpLFxuICAgIHNlcXVlbmNlX251bWJlcjogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIG91dHB1dF9pbmRleDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIHJlc3BvbnNlOiBHZW5pZUFnZW50UmVzcG9uc2VTY2hlbWEub3B0aW9uYWwoKSxcbiAgICBpdGVtOiBHZW5pZUFnZW50T3V0cHV0SXRlbVNjaGVtYS5vcHRpb25hbCgpLFxuICB9KVxuICAubG9vc2UoKTtcblxuLyoqIFZhbGlkYXRlZCBBZ2VudCBNb2RlIHJlc3BvbnNlIG91dHB1dCBpdGVtLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVBZ2VudE91dHB1dEl0ZW0gPSB6LmluZmVyPHR5cGVvZiBHZW5pZUFnZW50T3V0cHV0SXRlbVNjaGVtYT47XG4vKiogVmFsaWRhdGVkIEFnZW50IE1vZGUgcmVzcG9uc2UuICovXG5leHBvcnQgdHlwZSBHZW5pZUFnZW50UmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBHZW5pZUFnZW50UmVzcG9uc2VTY2hlbWE+O1xuLyoqIFZhbGlkYXRlZCBBZ2VudCBNb2RlIFNTRSBldmVudC4gKi9cbmV4cG9ydCB0eXBlIEdlbmllQWdlbnRNb2RlRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBHZW5pZUFnZW50TW9kZUV2ZW50U2NoZW1hPjtcblxuLyoqIFN0YXRlZnVsIHB1cmUgcmVkdWNlciBmcm9tIEFnZW50IE1vZGUgU1NFIGV2ZW50cyB0byBHZW5pZSBtZXNzYWdlIHNuYXBzaG90cy4gKi9cbmV4cG9ydCBjbGFzcyBHZW5pZUFnZW50TW9kZVByb2plY3Rpb24ge1xuICBwcml2YXRlIHJlYWRvbmx5IGl0ZW1zID0gbmV3IE1hcDxzdHJpbmcsIEdlbmllQWdlbnRPdXRwdXRJdGVtPigpO1xuICBwcml2YXRlIHJlc3BvbnNlOiBHZW5pZUFnZW50UmVzcG9uc2UgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzcGFjZUlkOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250ZW50OiBzdHJpbmcsXG4gICkge31cblxuICAvKiogQXBwbHkgb25lIHZhbGlkYXRlZCBTU0UgZXZlbnQgYW5kIHJldHVybiBpdHMgcHJvamVjdGVkIHNuYXBzaG90LiAqL1xuICBhcHBseShldmVudDogR2VuaWVBZ2VudE1vZGVFdmVudCk6IEdlbmllTWVzc2FnZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGV2ZW50LnJlc3BvbnNlKSB7XG4gICAgICB0aGlzLnJlc3BvbnNlID0gZXZlbnQucmVzcG9uc2U7XG4gICAgICBpZiAoZXZlbnQucmVzcG9uc2Uub3V0cHV0KSB7XG4gICAgICAgIHRoaXMuaXRlbXMuY2xlYXIoKTtcbiAgICAgICAgZXZlbnQucmVzcG9uc2Uub3V0cHV0LmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgdGhpcy5pdGVtcy5zZXQoYWdlbnRJdGVtS2V5KGl0ZW0sIGluZGV4KSwgaXRlbSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXZlbnQuaXRlbSkge1xuICAgICAgdGhpcy5pdGVtcy5zZXQoYWdlbnRJdGVtS2V5KGV2ZW50Lml0ZW0sIGV2ZW50Lm91dHB1dF9pbmRleCksIGV2ZW50Lml0ZW0pO1xuICAgIH1cbiAgICBpZiAoKCFldmVudC5yZXNwb25zZSAmJiAhZXZlbnQuaXRlbSkgfHwgIXRoaXMucmVzcG9uc2UpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHByb2plY3RBZ2VudE1vZGVNZXNzYWdlKHRoaXMuc3BhY2VJZCwgdGhpcy5jb250ZW50LCB0aGlzLnJlc3BvbnNlLCBbXG4gICAgICAuLi50aGlzLml0ZW1zLnZhbHVlcygpLFxuICAgIF0pO1xuICB9XG5cbiAgLyoqIEN1cnJlbnQgcmVzcG9uc2UgaWQsIG9uY2UgYHJlc3BvbnNlLmNyZWF0ZWRgIGhhcyBhcnJpdmVkLiAqL1xuICBnZXQgcmVzcG9uc2VJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlc3BvbnNlPy5pZDtcbiAgfVxuXG4gIC8qKiBDdXJyZW50IGNvbnZlcnNhdGlvbiBpZCwgb25jZSBhc3NpZ25lZCBieSBHZW5pZS4gKi9cbiAgZ2V0IGNvbnZlcnNhdGlvbklkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucmVzcG9uc2U/LmNvbnZlcnNhdGlvbl9pZDtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBsYXRlc3QgcmVzcG9uc2Ugc3RhdHVzIGlzIHRlcm1pbmFsLiAqL1xuICBnZXQgdGVybWluYWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVzcG9uc2UgPyBpc1Rlcm1pbmFsU3RhdHVzKHRoaXMucmVzcG9uc2Uuc3RhdHVzKSA6IGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzVGVybWluYWxTdGF0dXMoc3RhdHVzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHN0YXR1cyA9PT0gXCJjb21wbGV0ZWRcIiB8fCBzdGF0dXMgPT09IFwiZmFpbGVkXCIgfHwgc3RhdHVzID09PSBcImNhbmNlbGxlZFwiO1xufVxuXG5mdW5jdGlvbiBhZ2VudEl0ZW1LZXkoaXRlbTogR2VuaWVBZ2VudE91dHB1dEl0ZW0sIGluZGV4OiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBpdGVtLmlkID09PSBcInN0cmluZ1wiKSByZXR1cm4gaXRlbS5pZDtcbiAgaWYgKHR5cGVvZiBpdGVtLmNhbGxfaWQgPT09IFwic3RyaW5nXCIpIHJldHVybiBpdGVtLmNhbGxfaWQ7XG4gIHJldHVybiBTdHJpbmcodHlwZW9mIGluZGV4ID09PSBcIm51bWJlclwiID8gaW5kZXggOiAoaXRlbS50eXBlID8/IFwiaXRlbVwiKSk7XG59XG5cbi8qKiBQcm9qZWN0IG9uZSBBZ2VudCBNb2RlIHJlc3BvbnNlIHNuYXBzaG90IG9udG8gdGhlIHNoYXJlZCBHZW5pZSBtZXNzYWdlIHNoYXBlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3RBZ2VudE1vZGVNZXNzYWdlKFxuICBzcGFjZUlkOiBzdHJpbmcsXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgcmVzcG9uc2U6IEdlbmllQWdlbnRSZXNwb25zZSxcbiAgaXRlbXM6IEdlbmllQWdlbnRPdXRwdXRJdGVtW10sXG4pOiBHZW5pZU1lc3NhZ2Uge1xuICBjb25zdCBlcnJvclZhbHVlID0gb2JqZWN0LmlzUmVjb3JkKHJlc3BvbnNlLmVycm9yKSA/IHJlc3BvbnNlLmVycm9yIDogdW5kZWZpbmVkO1xuICBjb25zdCBlcnJvck1lc3NhZ2UgPVxuICAgIHR5cGVvZiBlcnJvclZhbHVlPy5tZXNzYWdlID09PSBcInN0cmluZ1wiXG4gICAgICA/IGVycm9yVmFsdWUubWVzc2FnZVxuICAgICAgOiB0eXBlb2YgcmVzcG9uc2UuZXJyb3IgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyByZXNwb25zZS5lcnJvclxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEdlbmllTWVzc2FnZVNjaGVtYS5wYXJzZSh7XG4gICAgaWQ6IHJlc3BvbnNlLmlkLFxuICAgIG1lc3NhZ2VfaWQ6IHJlc3BvbnNlLmlkLFxuICAgIHNwYWNlX2lkOiBzcGFjZUlkLFxuICAgIGNvbnZlcnNhdGlvbl9pZDogcmVzcG9uc2UuY29udmVyc2F0aW9uX2lkID8/IFwiXCIsXG4gICAgY29udGVudCxcbiAgICBzdGF0dXM6IGFnZW50TW9kZVN0YXR1cyhyZXNwb25zZS5zdGF0dXMsIGl0ZW1zKSxcbiAgICBhdHRhY2htZW50czogaXRlbXMuZmxhdE1hcChpdGVtQXR0YWNobWVudHMpLFxuICAgIC4uLihyZXNwb25zZS5jcmVhdGVkX2F0ICE9PSB1bmRlZmluZWQgPyB7IGNyZWF0ZWRfdGltZXN0YW1wOiByZXNwb25zZS5jcmVhdGVkX2F0IH0gOiB7fSksXG4gICAgLi4uKGVycm9yTWVzc2FnZSA/IHsgZXJyb3I6IHsgZXJyb3I6IGVycm9yTWVzc2FnZSB9IH0gOiB7fSksXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZ2VudE1vZGVTdGF0dXModmFsdWU6IHN0cmluZywgaXRlbXM6IEdlbmllQWdlbnRPdXRwdXRJdGVtW10pOiBHZW5pZU1lc3NhZ2VbXCJzdGF0dXNcIl0ge1xuICBpZiAodmFsdWUgPT09IFwiY29tcGxldGVkXCIpIHJldHVybiBcIkNPTVBMRVRFRFwiO1xuICBpZiAodmFsdWUgPT09IFwiZmFpbGVkXCIpIHJldHVybiBcIkZBSUxFRFwiO1xuICBpZiAodmFsdWUgPT09IFwiY2FuY2VsbGVkXCIpIHJldHVybiBcIkNBTkNFTExFRFwiO1xuICBpZiAoaXRlbXMuc29tZSgoaXRlbSkgPT4gaXRlbS50eXBlID09PSBcImZ1bmN0aW9uX2NhbGxcIikpIHJldHVybiBcIkVYRUNVVElOR19RVUVSWVwiO1xuICByZXR1cm4gXCJBU0tJTkdfQUlcIjtcbn1cblxuZnVuY3Rpb24gaXRlbUF0dGFjaG1lbnRzKGl0ZW06IEdlbmllQWdlbnRPdXRwdXRJdGVtKTogR2VuaWVBdHRhY2htZW50W10ge1xuICBjb25zdCBpZCA9IGl0ZW0uaWQgPz8gaXRlbS5jYWxsX2lkO1xuICBpZiAoaXRlbS50eXBlID09PSBcInJlYXNvbmluZ1wiKSB7XG4gICAgY29uc3QgdGhvdWdodHMgPSBjb250ZW50VGV4dChpdGVtLmNvbnRlbnQsIFwicmVhc29uaW5nX3RleHRcIikubWFwKFxuICAgICAgKHRob3VnaHRDb250ZW50KTogR2VuaWVUaG91Z2h0ID0+ICh7XG4gICAgICAgIHRob3VnaHRfdHlwZTogXCJUSE9VR0hUX1RZUEVfU1RFUFNcIixcbiAgICAgICAgY29udGVudDogdGhvdWdodENvbnRlbnQsXG4gICAgICB9KSxcbiAgICApO1xuICAgIHJldHVybiB0aG91Z2h0cy5sZW5ndGggPT09IDBcbiAgICAgID8gW11cbiAgICAgIDogW3sgYXR0YWNobWVudF9pZDogaWQsIGF0dGFjaG1lbnRfdHlwZTogXCJxdWVyeVwiLCBxdWVyeTogeyBpZCwgdGhvdWdodHMgfSB9XTtcbiAgfVxuICBpZiAoaXRlbS50eXBlID09PSBcImZ1bmN0aW9uX2NhbGxcIikge1xuICAgIGNvbnN0IGFyZ3VtZW50c1ZhbHVlID0ganNvbi5wYXJzZVJlY29yZChpdGVtLmFyZ3VtZW50cyk7XG4gICAgY29uc3QgcXVlcnkgPVxuICAgICAgdHlwZW9mIGFyZ3VtZW50c1ZhbHVlPy5zcWwgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyBhcmd1bWVudHNWYWx1ZS5zcWxcbiAgICAgICAgOiB0eXBlb2YgYXJndW1lbnRzVmFsdWU/LnF1ZXJ5ID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgPyBhcmd1bWVudHNWYWx1ZS5xdWVyeVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHRpdGxlID0gdHlwZW9mIGFyZ3VtZW50c1ZhbHVlPy50aXRsZSA9PT0gXCJzdHJpbmdcIiA/IGFyZ3VtZW50c1ZhbHVlLnRpdGxlIDogaXRlbS5uYW1lO1xuICAgIHJldHVybiBxdWVyeVxuICAgICAgPyBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYXR0YWNobWVudF9pZDogaWQsXG4gICAgICAgICAgICBhdHRhY2htZW50X3R5cGU6IFwicXVlcnlcIixcbiAgICAgICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICBxdWVyeSxcbiAgICAgICAgICAgICAgLi4uKHRpdGxlID8geyB0aXRsZSB9IDoge30pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgICA6IFtdO1xuICB9XG4gIGlmIChpdGVtLnR5cGUgPT09IFwiZnVuY3Rpb25fY2FsbF9vdXRwdXRcIiAmJiBpdGVtLm91dHB1dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIFt0ZXh0QXR0YWNobWVudChpZCwgaXRlbS5vdXRwdXQpXTtcbiAgfVxuICBpZiAoaXRlbS50eXBlID09PSBcIm1lc3NhZ2VcIikge1xuICAgIHJldHVybiAoaXRlbS5jb250ZW50ID8/IFtdKS5mbGF0TWFwKChwYXJ0KSA9PlxuICAgICAgcGFydC50eXBlID09PSBcIm91dHB1dF90ZXh0XCIgJiYgcGFydC50ZXh0XG4gICAgICAgID8gW3RleHRBdHRhY2htZW50KGlkLCBwYXJ0LnRleHQsIHBhcnQubWV0YWRhdGEpXVxuICAgICAgICA6IFtdLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIFtdO1xufVxuXG5mdW5jdGlvbiBjb250ZW50VGV4dChcbiAgdmFsdWU6IHouaW5mZXI8dHlwZW9mIEdlbmllQWdlbnRDb250ZW50U2NoZW1hPltdIHwgdW5kZWZpbmVkLFxuICB0eXBlOiBzdHJpbmcsXG4pOiBzdHJpbmdbXSB7XG4gIGlmICghdmFsdWUpIHJldHVybiBbXTtcbiAgcmV0dXJuIHZhbHVlLmZsYXRNYXAoKHBhcnQpID0+IChwYXJ0LnR5cGUgPT09IHR5cGUgJiYgcGFydC50ZXh0ID8gW3BhcnQudGV4dF0gOiBbXSkpO1xufVxuXG5mdW5jdGlvbiB0ZXh0QXR0YWNobWVudChcbiAgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgY29udGVudDogc3RyaW5nLFxuICBtZXRhZGF0YT86IHVua25vd24sXG4pOiBHZW5pZUF0dGFjaG1lbnQge1xuICByZXR1cm4ge1xuICAgIGF0dGFjaG1lbnRfaWQ6IGlkLFxuICAgIGF0dGFjaG1lbnRfdHlwZTogXCJ0ZXh0XCIsXG4gICAgdGV4dDoge1xuICAgICAgaWQsXG4gICAgICBjb250ZW50LFxuICAgICAgcHVycG9zZTogXCJURVhUX0FUVEFDSE1FTlRfUFVSUE9TRV9BTlNXRVJcIixcbiAgICAgIC4uLihtZXRhZGF0YSAhPT0gdW5kZWZpbmVkID8geyBtZXRhZGF0YSB9IDoge30pLFxuICAgIH0sXG4gIH07XG59XG4iXX0=
|
package/lib/src/genie-model.d.ts
CHANGED
|
@@ -39,7 +39,6 @@
|
|
|
39
39
|
*/
|
|
40
40
|
import { z } from "zod";
|
|
41
41
|
import * as dashboards from "./dashboards.ts";
|
|
42
|
-
declare const MessageStatusSchema: z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI">, z.ZodLiteral<"CANCELLED">, z.ZodLiteral<"COMPLETED">, z.ZodLiteral<"EXECUTING_QUERY">, z.ZodLiteral<"FAILED">, z.ZodLiteral<"FETCHING_METADATA">, z.ZodLiteral<"FILTERING_CONTEXT">, z.ZodLiteral<"PENDING_WAREHOUSE">, z.ZodLiteral<"QUERY_RESULT_EXPIRED">, z.ZodLiteral<"SUBMITTED">]>;
|
|
43
42
|
/**
|
|
44
43
|
* The SDK's `MessageStatus` type, re-exported so consumers of the
|
|
45
44
|
* Genie contract get the full wire vocabulary from a single import
|
|
@@ -47,7 +46,8 @@ declare const MessageStatusSchema: z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI"
|
|
|
47
46
|
* below.
|
|
48
47
|
*/
|
|
49
48
|
export type MessageStatus = dashboards.MessageStatus;
|
|
50
|
-
|
|
49
|
+
/** Runtime validator for a raw Genie message status from the generated SDK contract. */
|
|
50
|
+
export declare const MessageStatusSchema: z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI">, z.ZodLiteral<"CANCELLED">, z.ZodLiteral<"COMPLETED">, z.ZodLiteral<"EXECUTING_QUERY">, z.ZodLiteral<"FAILED">, z.ZodLiteral<"FETCHING_METADATA">, z.ZodLiteral<"FILTERING_CONTEXT">, z.ZodLiteral<"PENDING_WAREHOUSE">, z.ZodLiteral<"QUERY_RESULT_EXPIRED">, z.ZodLiteral<"SUBMITTED">]>;
|
|
51
51
|
/**
|
|
52
52
|
* Genie's per-query "thoughts" surface. These appear on the
|
|
53
53
|
* `/messages/{id}` wire under `attachments[i].query.thoughts[]` but
|
|
@@ -79,6 +79,7 @@ export declare const GenieThoughtSchema: z.ZodObject<{
|
|
|
79
79
|
thought_type: z.ZodCustom<GenieThoughtType, GenieThoughtType>;
|
|
80
80
|
content: z.ZodString;
|
|
81
81
|
}, z.core.$strip>;
|
|
82
|
+
/** One typed reasoning entry attached to a Genie query. */
|
|
82
83
|
export type GenieThought = z.infer<typeof GenieThoughtSchema>;
|
|
83
84
|
/**
|
|
84
85
|
* Discriminator for what's inside a `GenieAttachment`. Genie only
|
|
@@ -96,7 +97,9 @@ export type GenieThought = z.infer<typeof GenieThoughtSchema>;
|
|
|
96
97
|
* the event-union discriminator key.
|
|
97
98
|
*/
|
|
98
99
|
export declare const ATTACHMENT_TYPES: readonly ["query", "text", "suggested_questions"];
|
|
100
|
+
/** Attachment discriminator values understood by this package version. */
|
|
99
101
|
export type KnownAttachmentType = (typeof ATTACHMENT_TYPES)[number];
|
|
102
|
+
/** Forward-compatible attachment discriminator, including future Genie values. */
|
|
100
103
|
export type AttachmentType = KnownAttachmentType | (string & {});
|
|
101
104
|
/**
|
|
102
105
|
* `GenieQueryAttachment` widened with the `thoughts[]` field the
|
|
@@ -127,6 +130,7 @@ export declare const GenieQueryAttachmentSchema: z.ZodObject<{
|
|
|
127
130
|
content: z.ZodString;
|
|
128
131
|
}, z.core.$strip>>>;
|
|
129
132
|
}, z.core.$strip>;
|
|
133
|
+
/** Query attachment widened with Genie's streamed reasoning thoughts. */
|
|
130
134
|
export type GenieQueryAttachment = z.infer<typeof GenieQueryAttachmentSchema>;
|
|
131
135
|
/**
|
|
132
136
|
* Purpose attached to a Genie text response.
|
|
@@ -138,12 +142,17 @@ export type GenieQueryAttachment = z.infer<typeof GenieQueryAttachmentSchema>;
|
|
|
138
142
|
* server-side enum change cannot invalidate an otherwise complete message.
|
|
139
143
|
*/
|
|
140
144
|
export type GenieTextAttachmentPurpose = "FOLLOW_UP_QUESTION" | "TEXT_ATTACHMENT_PURPOSE_ANSWER" | (string & {});
|
|
141
|
-
/**
|
|
145
|
+
/**
|
|
146
|
+
* Text attachment widened for forward-compatible purpose values and optional
|
|
147
|
+
* Agent Mode table metadata.
|
|
148
|
+
*/
|
|
142
149
|
export declare const GenieTextAttachmentSchema: z.ZodObject<{
|
|
143
150
|
content: z.ZodOptional<z.ZodString>;
|
|
144
151
|
id: z.ZodOptional<z.ZodString>;
|
|
145
152
|
purpose: z.ZodOptional<z.ZodCustom<GenieTextAttachmentPurpose, GenieTextAttachmentPurpose>>;
|
|
153
|
+
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
146
154
|
}, z.core.$strip>;
|
|
155
|
+
/** Narrative text attachment, including its optional semantic purpose. */
|
|
147
156
|
export type GenieTextAttachment = z.infer<typeof GenieTextAttachmentSchema>;
|
|
148
157
|
/**
|
|
149
158
|
* `GenieAttachment` with:
|
|
@@ -195,9 +204,11 @@ export declare const GenieAttachmentSchema: z.ZodObject<{
|
|
|
195
204
|
content: z.ZodOptional<z.ZodString>;
|
|
196
205
|
id: z.ZodOptional<z.ZodString>;
|
|
197
206
|
purpose: z.ZodOptional<z.ZodCustom<GenieTextAttachmentPurpose, GenieTextAttachmentPurpose>>;
|
|
207
|
+
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
198
208
|
}, z.core.$strip>>;
|
|
199
209
|
attachment_type: z.ZodOptional<z.ZodCustom<AttachmentType, AttachmentType>>;
|
|
200
210
|
}, z.core.$strip>;
|
|
211
|
+
/** Genie message attachment with an optional computed discriminator. */
|
|
201
212
|
export type GenieAttachment = z.infer<typeof GenieAttachmentSchema>;
|
|
202
213
|
/**
|
|
203
214
|
* `GenieMessage` widened with:
|
|
@@ -268,11 +279,13 @@ export declare const GenieMessageSchema: z.ZodObject<{
|
|
|
268
279
|
content: z.ZodOptional<z.ZodString>;
|
|
269
280
|
id: z.ZodOptional<z.ZodString>;
|
|
270
281
|
purpose: z.ZodOptional<z.ZodCustom<GenieTextAttachmentPurpose, GenieTextAttachmentPurpose>>;
|
|
282
|
+
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
271
283
|
}, z.core.$strip>>;
|
|
272
284
|
attachment_type: z.ZodOptional<z.ZodCustom<AttachmentType, AttachmentType>>;
|
|
273
285
|
}, z.core.$strip>>>;
|
|
274
286
|
auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
|
|
275
287
|
}, z.core.$strip>;
|
|
288
|
+
/** Genie message snapshot widened with typed attachments and regeneration count. */
|
|
276
289
|
export type GenieMessage = z.infer<typeof GenieMessageSchema>;
|
|
277
290
|
/**
|
|
278
291
|
* Domain projection of {@link GenieMessageSchema} that drops every
|
|
@@ -338,6 +351,7 @@ export declare const GenieResponseSchema: z.ZodPipe<z.ZodObject<{
|
|
|
338
351
|
content: z.ZodOptional<z.ZodString>;
|
|
339
352
|
id: z.ZodOptional<z.ZodString>;
|
|
340
353
|
purpose: z.ZodOptional<z.ZodCustom<GenieTextAttachmentPurpose, GenieTextAttachmentPurpose>>;
|
|
354
|
+
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
341
355
|
}, z.core.$strip>>;
|
|
342
356
|
attachment_type: z.ZodOptional<z.ZodCustom<AttachmentType, AttachmentType>>;
|
|
343
357
|
}, z.core.$strip>>>;
|
|
@@ -372,6 +386,7 @@ export declare const GenieResponseSchema: z.ZodPipe<z.ZodObject<{
|
|
|
372
386
|
content?: string | undefined;
|
|
373
387
|
id?: string | undefined;
|
|
374
388
|
purpose?: GenieTextAttachmentPurpose | undefined;
|
|
389
|
+
metadata?: unknown;
|
|
375
390
|
} | undefined;
|
|
376
391
|
attachment_type?: AttachmentType | undefined;
|
|
377
392
|
}[], {
|
|
@@ -427,11 +442,13 @@ export declare const GenieResponseSchema: z.ZodPipe<z.ZodObject<{
|
|
|
427
442
|
content?: string | undefined;
|
|
428
443
|
id?: string | undefined;
|
|
429
444
|
purpose?: GenieTextAttachmentPurpose | undefined;
|
|
445
|
+
metadata?: unknown;
|
|
430
446
|
} | undefined;
|
|
431
447
|
attachment_type?: AttachmentType | undefined;
|
|
432
448
|
}[] | undefined;
|
|
433
449
|
auto_regenerate_count?: number | undefined;
|
|
434
450
|
}>>;
|
|
451
|
+
/** Normalized attachment array extracted from a Genie message response. */
|
|
435
452
|
export type GenieResponse = z.infer<typeof GenieResponseSchema>;
|
|
436
453
|
/**
|
|
437
454
|
* `GenieSpace` widened with an optional `serialized_space` field
|
|
@@ -452,6 +469,7 @@ export declare const GenieSpaceSchema: z.ZodObject<{
|
|
|
452
469
|
warehouse_id: z.ZodOptional<z.ZodString>;
|
|
453
470
|
serialized_space: z.ZodOptional<z.ZodString>;
|
|
454
471
|
}, z.core.$strip>;
|
|
472
|
+
/** Genie space metadata with the identifiers required by chat consumers. */
|
|
455
473
|
export type GenieSpace = z.infer<typeof GenieSpaceSchema>;
|
|
456
474
|
/**
|
|
457
475
|
* Terminal Genie message statuses. The polling loop in the chat
|
|
@@ -459,6 +477,7 @@ export type GenieSpace = z.infer<typeof GenieSpaceSchema>;
|
|
|
459
477
|
* statuses.
|
|
460
478
|
*/
|
|
461
479
|
export declare const TERMINAL_STATUSES: readonly ["COMPLETED", "FAILED", "CANCELLED"];
|
|
480
|
+
/** Message status that ends a Genie turn and produces a final result event. */
|
|
462
481
|
export type TerminalStatus = (typeof TERMINAL_STATUSES)[number];
|
|
463
482
|
/** Narrow `MessageStatus | undefined` to a {@link TerminalStatus}. */
|
|
464
483
|
export declare function isTerminalStatus(s: MessageStatus | undefined): s is TerminalStatus;
|
|
@@ -505,6 +524,7 @@ export declare const GenieChatLocationSchema: z.ZodObject<{
|
|
|
505
524
|
message_id: z.ZodOptional<z.ZodString>;
|
|
506
525
|
attachment_id: z.ZodOptional<z.ZodString>;
|
|
507
526
|
}, z.core.$strip>;
|
|
527
|
+
/** Conversation, message, and attachment coordinates shared by attachment events. */
|
|
508
528
|
export type GenieChatLocation = z.infer<typeof GenieChatLocationSchema>;
|
|
509
529
|
/**
|
|
510
530
|
* Lifecycle event: the question this turn is asking Genie. Fires
|
|
@@ -532,6 +552,7 @@ export declare const QuestionEventSchema: z.ZodObject<{
|
|
|
532
552
|
type: z.ZodLiteral<"question">;
|
|
533
553
|
content: z.ZodString;
|
|
534
554
|
}, z.core.$strip>;
|
|
555
|
+
/** Initial event carrying the user's question after Genie assigns a message id. */
|
|
535
556
|
export type QuestionEvent = z.infer<typeof QuestionEventSchema>;
|
|
536
557
|
/**
|
|
537
558
|
* Lifecycle event: raw `GenieMessage` snapshot for the active
|
|
@@ -598,12 +619,14 @@ export declare const MessageEventSchema: z.ZodObject<{
|
|
|
598
619
|
content: z.ZodOptional<z.ZodString>;
|
|
599
620
|
id: z.ZodOptional<z.ZodString>;
|
|
600
621
|
purpose: z.ZodOptional<z.ZodCustom<GenieTextAttachmentPurpose, GenieTextAttachmentPurpose>>;
|
|
622
|
+
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
601
623
|
}, z.core.$strip>>;
|
|
602
624
|
attachment_type: z.ZodOptional<z.ZodCustom<AttachmentType, AttachmentType>>;
|
|
603
625
|
}, z.core.$strip>>>;
|
|
604
626
|
auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
|
|
605
627
|
}, z.core.$strip>;
|
|
606
628
|
}, z.core.$strip>;
|
|
629
|
+
/** Raw Genie message snapshot emitted on every poll iteration. */
|
|
607
630
|
export type MessageEvent = z.infer<typeof MessageEventSchema>;
|
|
608
631
|
/**
|
|
609
632
|
* Top-level `message.status` transitioned. Fires for every
|
|
@@ -619,6 +642,7 @@ export declare const StatusEventSchema: z.ZodObject<{
|
|
|
619
642
|
status: z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI">, z.ZodLiteral<"CANCELLED">, z.ZodLiteral<"COMPLETED">, z.ZodLiteral<"EXECUTING_QUERY">, z.ZodLiteral<"FAILED">, z.ZodLiteral<"FETCHING_METADATA">, z.ZodLiteral<"FILTERING_CONTEXT">, z.ZodLiteral<"PENDING_WAREHOUSE">, z.ZodLiteral<"QUERY_RESULT_EXPIRED">, z.ZodLiteral<"SUBMITTED">]>;
|
|
620
643
|
previous_status: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI">, z.ZodLiteral<"CANCELLED">, z.ZodLiteral<"COMPLETED">, z.ZodLiteral<"EXECUTING_QUERY">, z.ZodLiteral<"FAILED">, z.ZodLiteral<"FETCHING_METADATA">, z.ZodLiteral<"FILTERING_CONTEXT">, z.ZodLiteral<"PENDING_WAREHOUSE">, z.ZodLiteral<"QUERY_RESULT_EXPIRED">, z.ZodLiteral<"SUBMITTED">]>>;
|
|
621
644
|
}, z.core.$strip>;
|
|
645
|
+
/** Message-status transition, including the previous status when available. */
|
|
622
646
|
export type StatusEvent = z.infer<typeof StatusEventSchema>;
|
|
623
647
|
/**
|
|
624
648
|
* A new attachment slot appeared in `message.attachments[]`.
|
|
@@ -636,6 +660,7 @@ export declare const AttachmentEventSchema: z.ZodObject<{
|
|
|
636
660
|
index: z.ZodNumber;
|
|
637
661
|
attachment_type: z.ZodCustom<AttachmentType, AttachmentType>;
|
|
638
662
|
}, z.core.$strip>;
|
|
663
|
+
/** Event emitted when a new typed attachment appears on the message. */
|
|
639
664
|
export type AttachmentEvent = z.infer<typeof AttachmentEventSchema>;
|
|
640
665
|
/**
|
|
641
666
|
* A new reasoning step appeared on a query attachment
|
|
@@ -654,6 +679,7 @@ export declare const ThinkingEventSchema: z.ZodObject<{
|
|
|
654
679
|
text: z.ZodString;
|
|
655
680
|
thought_type: z.ZodCustom<GenieThoughtType, GenieThoughtType>;
|
|
656
681
|
}, z.core.$strip>;
|
|
682
|
+
/** Incremental Genie reasoning event derived from query thoughts. */
|
|
657
683
|
export type ThinkingEvent = z.infer<typeof ThinkingEventSchema>;
|
|
658
684
|
/**
|
|
659
685
|
* A text-attachment `content` field appeared or changed
|
|
@@ -668,6 +694,7 @@ export declare const TextEventSchema: z.ZodObject<{
|
|
|
668
694
|
type: z.ZodLiteral<"text">;
|
|
669
695
|
text: z.ZodString;
|
|
670
696
|
}, z.core.$strip>;
|
|
697
|
+
/** Narrative answer fragment emitted from a Genie text attachment. */
|
|
671
698
|
export type TextEvent = z.infer<typeof TextEventSchema>;
|
|
672
699
|
/**
|
|
673
700
|
* SQL was finalized on a query attachment
|
|
@@ -687,6 +714,7 @@ export declare const QueryEventSchema: z.ZodObject<{
|
|
|
687
714
|
title: z.ZodOptional<z.ZodString>;
|
|
688
715
|
description: z.ZodOptional<z.ZodString>;
|
|
689
716
|
}, z.core.$strip>;
|
|
717
|
+
/** Finalized or rewritten SQL emitted for a Genie query attachment. */
|
|
690
718
|
export type QueryEvent = z.infer<typeof QueryEventSchema>;
|
|
691
719
|
/**
|
|
692
720
|
* SQL was submitted to a SQL warehouse and a statement id was
|
|
@@ -703,6 +731,7 @@ export declare const StatementEventSchema: z.ZodObject<{
|
|
|
703
731
|
type: z.ZodLiteral<"statement">;
|
|
704
732
|
statement_id: z.ZodString;
|
|
705
733
|
}, z.core.$strip>;
|
|
734
|
+
/** Event indicating that a query received an executable statement id. */
|
|
706
735
|
export type StatementEvent = z.infer<typeof StatementEventSchema>;
|
|
707
736
|
/**
|
|
708
737
|
* Row count for a query attachment's result changed
|
|
@@ -720,6 +749,7 @@ export declare const RowsEventSchema: z.ZodObject<{
|
|
|
720
749
|
previous_row_count: z.ZodOptional<z.ZodNumber>;
|
|
721
750
|
statement_id: z.ZodOptional<z.ZodString>;
|
|
722
751
|
}, z.core.$strip>;
|
|
752
|
+
/** Row-count transition for a Genie query result. */
|
|
723
753
|
export type RowsEvent = z.infer<typeof RowsEventSchema>;
|
|
724
754
|
/**
|
|
725
755
|
* Genie produced a follow-up suggested-questions list
|
|
@@ -734,6 +764,7 @@ export declare const SuggestedQuestionsEventSchema: z.ZodObject<{
|
|
|
734
764
|
type: z.ZodLiteral<"suggested_questions">;
|
|
735
765
|
questions: z.ZodArray<z.ZodString>;
|
|
736
766
|
}, z.core.$strip>;
|
|
767
|
+
/** Follow-up question list emitted when Genie adds or rewrites suggestions. */
|
|
737
768
|
export type SuggestedQuestionsEvent = z.infer<typeof SuggestedQuestionsEventSchema>;
|
|
738
769
|
/**
|
|
739
770
|
* The active turn reached a terminal status. Always fires once
|
|
@@ -804,12 +835,14 @@ export declare const ResultEventSchema: z.ZodObject<{
|
|
|
804
835
|
content: z.ZodOptional<z.ZodString>;
|
|
805
836
|
id: z.ZodOptional<z.ZodString>;
|
|
806
837
|
purpose: z.ZodOptional<z.ZodCustom<GenieTextAttachmentPurpose, GenieTextAttachmentPurpose>>;
|
|
838
|
+
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
807
839
|
}, z.core.$strip>>;
|
|
808
840
|
attachment_type: z.ZodOptional<z.ZodCustom<AttachmentType, AttachmentType>>;
|
|
809
841
|
}, z.core.$strip>>>;
|
|
810
842
|
auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
|
|
811
843
|
}, z.core.$strip>;
|
|
812
844
|
}, z.core.$strip>;
|
|
845
|
+
/** Final event for a Genie turn, carrying its terminal status and message snapshot. */
|
|
813
846
|
export type ResultEvent = z.infer<typeof ResultEventSchema>;
|
|
814
847
|
/**
|
|
815
848
|
* Discriminated union yielded by `genieEventChat`. Each variant
|
|
@@ -909,6 +942,7 @@ export declare const GenieChatEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
|
|
|
909
942
|
content: z.ZodOptional<z.ZodString>;
|
|
910
943
|
id: z.ZodOptional<z.ZodString>;
|
|
911
944
|
purpose: z.ZodOptional<z.ZodCustom<GenieTextAttachmentPurpose, GenieTextAttachmentPurpose>>;
|
|
945
|
+
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
912
946
|
}, z.core.$strip>>;
|
|
913
947
|
attachment_type: z.ZodOptional<z.ZodCustom<AttachmentType, AttachmentType>>;
|
|
914
948
|
}, z.core.$strip>>>;
|
|
@@ -1039,12 +1073,14 @@ export declare const GenieChatEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
|
|
|
1039
1073
|
content: z.ZodOptional<z.ZodString>;
|
|
1040
1074
|
id: z.ZodOptional<z.ZodString>;
|
|
1041
1075
|
purpose: z.ZodOptional<z.ZodCustom<GenieTextAttachmentPurpose, GenieTextAttachmentPurpose>>;
|
|
1076
|
+
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
1042
1077
|
}, z.core.$strip>>;
|
|
1043
1078
|
attachment_type: z.ZodOptional<z.ZodCustom<AttachmentType, AttachmentType>>;
|
|
1044
1079
|
}, z.core.$strip>>>;
|
|
1045
1080
|
auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
|
|
1046
1081
|
}, z.core.$strip>;
|
|
1047
1082
|
}, z.core.$strip>], "type">;
|
|
1083
|
+
/** Ordered event union yielded by `genieEventChat`; failures are thrown, not emitted. */
|
|
1048
1084
|
export type GenieChatEvent = z.infer<typeof GenieChatEventSchema>;
|
|
1049
1085
|
/** Discriminator type for {@link GenieChatEvent}. */
|
|
1050
1086
|
export type GenieChatEventType = GenieChatEvent["type"];
|