@case-framework/survey-assistant 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/dist/{authoring-references-DbuOKerg.mjs → authoring-references-CmwLc_C8.mjs} +40 -32
  2. package/dist/authoring-references-CmwLc_C8.mjs.map +1 -0
  3. package/dist/capabilities-D55dq-fO.mjs +582 -0
  4. package/dist/capabilities-D55dq-fO.mjs.map +1 -0
  5. package/dist/capabilities-default.d.mts +4 -12
  6. package/dist/capabilities-default.d.mts.map +1 -1
  7. package/dist/capabilities-default.mjs +2 -2
  8. package/dist/capabilities-z95e1mti.d.mts +117 -0
  9. package/dist/capabilities-z95e1mti.d.mts.map +1 -0
  10. package/dist/{constants-B6HzpEsx.d.mts → constants-HL_klgJl.d.mts} +4 -4
  11. package/dist/{constants-B6HzpEsx.d.mts.map → constants-HL_klgJl.d.mts.map} +1 -1
  12. package/dist/{controller-proxy-DEeFl9IA.mjs → controller-proxy-BQ1YsVxJ.mjs} +4 -3
  13. package/dist/controller-proxy-BQ1YsVxJ.mjs.map +1 -0
  14. package/dist/{controller-proxy-D7uQfm5f.d.mts → controller-proxy-Cmzdr9tV.d.mts} +4 -4
  15. package/dist/{controller-proxy-D7uQfm5f.d.mts.map → controller-proxy-Cmzdr9tV.d.mts.map} +1 -1
  16. package/dist/default-D22AKTqE.mjs +233 -0
  17. package/dist/default-D22AKTqE.mjs.map +1 -0
  18. package/dist/{digest-C39WyAWG.d.mts → digest-FnTTDBq2.d.mts} +2 -2
  19. package/dist/digest-FnTTDBq2.d.mts.map +1 -0
  20. package/dist/digest.d.mts +1 -1
  21. package/dist/engine-D950TfvC.mjs +3098 -0
  22. package/dist/engine-D950TfvC.mjs.map +1 -0
  23. package/dist/engine.d.mts +4 -3
  24. package/dist/engine.mjs +3 -3
  25. package/dist/{index-WB5kfnz0.d.mts → index-B8TLBd1G.d.mts} +8 -6
  26. package/dist/index-B8TLBd1G.d.mts.map +1 -0
  27. package/dist/index-CaX3hZmr.d.mts +23813 -0
  28. package/dist/index-CaX3hZmr.d.mts.map +1 -0
  29. package/dist/{index-r5riv4md.d.mts → index-CeUlGkoU.d.mts} +27 -6
  30. package/dist/index-CeUlGkoU.d.mts.map +1 -0
  31. package/dist/{index-D7wT6P3t.d.mts → index-DYHdvSE8.d.mts} +83 -41
  32. package/dist/index-DYHdvSE8.d.mts.map +1 -0
  33. package/dist/lifecycle-DFzxVxpq.d.mts +54346 -0
  34. package/dist/lifecycle-DFzxVxpq.d.mts.map +1 -0
  35. package/dist/{memory-thread-repository-DAnOGIB3.mjs → memory-thread-repository-DmLadygY.mjs} +15 -9
  36. package/dist/{memory-thread-repository-DAnOGIB3.mjs.map → memory-thread-repository-DmLadygY.mjs.map} +1 -1
  37. package/dist/protocol-BQ7uIDYT.mjs +569 -0
  38. package/dist/protocol-BQ7uIDYT.mjs.map +1 -0
  39. package/dist/protocol.d.mts +4 -4
  40. package/dist/protocol.mjs +3 -2
  41. package/dist/{react-C_GY-Fsc.mjs → react-DybJ5pWw.mjs} +17 -11
  42. package/dist/react-DybJ5pWw.mjs.map +1 -0
  43. package/dist/react-integration.d.mts +1 -1
  44. package/dist/react-integration.mjs +1 -1
  45. package/dist/react.d.mts +2 -2
  46. package/dist/react.mjs +2 -2
  47. package/dist/references/assistant-operations.md +190 -215
  48. package/dist/references/core-rules.md +2 -2
  49. package/dist/references/element-types.md +189 -0
  50. package/dist/references/expressions.md +215 -238
  51. package/dist/references/follow-ups.md +151 -0
  52. package/dist/references/localization.md +26 -12
  53. package/dist/references/response-variables.md +3 -3
  54. package/dist/references/rich-text-content.md +22 -43
  55. package/dist/references/source-material-surveys.md +20 -25
  56. package/dist/references/survey-data-model.md +36 -117
  57. package/dist/{request-context-Dg4jSwN1.mjs → request-context-KVh8VjgH.mjs} +4 -4
  58. package/dist/request-context-KVh8VjgH.mjs.map +1 -0
  59. package/dist/server-agent.d.mts +28 -7
  60. package/dist/server-agent.d.mts.map +1 -1
  61. package/dist/server-agent.mjs +33 -25
  62. package/dist/server-agent.mjs.map +1 -1
  63. package/dist/server-runtime.d.mts +6 -5
  64. package/dist/server-runtime.d.mts.map +1 -1
  65. package/dist/server-runtime.mjs +3 -3
  66. package/dist/server-tasks.d.mts +1 -1
  67. package/dist/server-tasks.mjs +1 -1
  68. package/dist/server-tools.d.mts +1 -1
  69. package/dist/server-tools.mjs +1 -1
  70. package/dist/server.d.mts +7 -6
  71. package/dist/server.d.mts.map +1 -1
  72. package/dist/server.mjs +3 -3
  73. package/dist/{tasks-BZEiwgxA.mjs → tasks-Coh5N027.mjs} +16 -15
  74. package/dist/tasks-Coh5N027.mjs.map +1 -0
  75. package/dist/{tasks-B9h3LPam.d.mts → tasks-wb9M-bak.d.mts} +11 -11
  76. package/dist/{tasks-B9h3LPam.d.mts.map → tasks-wb9M-bak.d.mts.map} +1 -1
  77. package/dist/{thread-handlers-Bef0td9N.d.mts → thread-handlers-C3Iya92v.d.mts} +6 -5
  78. package/dist/thread-handlers-C3Iya92v.d.mts.map +1 -0
  79. package/dist/{tools-CEsv-WoO.mjs → tools-D0KBDolR.mjs} +435 -408
  80. package/dist/tools-D0KBDolR.mjs.map +1 -0
  81. package/dist/turn-survey-draft-B34lggSG.d.mts +185 -0
  82. package/dist/turn-survey-draft-B34lggSG.d.mts.map +1 -0
  83. package/dist/ui.d.mts +3 -3
  84. package/dist/ui.d.mts.map +1 -1
  85. package/dist/ui.mjs +35 -23
  86. package/dist/ui.mjs.map +1 -1
  87. package/package.json +7 -7
  88. package/dist/authoring-references-DbuOKerg.mjs.map +0 -1
  89. package/dist/capabilities-CmeeAjEc.d.mts +0 -192
  90. package/dist/capabilities-CmeeAjEc.d.mts.map +0 -1
  91. package/dist/capabilities-DCMA71PP.mjs +0 -58
  92. package/dist/capabilities-DCMA71PP.mjs.map +0 -1
  93. package/dist/controller-proxy-DEeFl9IA.mjs.map +0 -1
  94. package/dist/default-fhSon2RM.mjs +0 -760
  95. package/dist/default-fhSon2RM.mjs.map +0 -1
  96. package/dist/digest-C39WyAWG.d.mts.map +0 -1
  97. package/dist/engine-nXoCWYpQ.mjs +0 -6888
  98. package/dist/engine-nXoCWYpQ.mjs.map +0 -1
  99. package/dist/index-Ciq7vHIs.d.mts +0 -716
  100. package/dist/index-Ciq7vHIs.d.mts.map +0 -1
  101. package/dist/index-D7wT6P3t.d.mts.map +0 -1
  102. package/dist/index-WB5kfnz0.d.mts.map +0 -1
  103. package/dist/index-r5riv4md.d.mts.map +0 -1
  104. package/dist/lifecycle-Dm8u7QFh.d.mts +0 -545
  105. package/dist/lifecycle-Dm8u7QFh.d.mts.map +0 -1
  106. package/dist/protocol-CF4Bh_Ch.mjs +0 -1255
  107. package/dist/protocol-CF4Bh_Ch.mjs.map +0 -1
  108. package/dist/react-C_GY-Fsc.mjs.map +0 -1
  109. package/dist/references/embedded-forms.md +0 -146
  110. package/dist/references/item-types.md +0 -641
  111. package/dist/request-context-Dg4jSwN1.mjs.map +0 -1
  112. package/dist/tasks-BZEiwgxA.mjs.map +0 -1
  113. package/dist/thread-handlers-Bef0td9N.d.mts.map +0 -1
  114. package/dist/tools-CEsv-WoO.mjs.map +0 -1
@@ -1,1255 +0,0 @@
1
- import { z } from "zod";
2
- import { SURVEY_EDITOR_ITEM_COLORS } from "@case-framework/survey-core/editor/colors";
3
- //#region src/protocol/sanitization.ts
4
- const MAX_USER_ERROR_MESSAGE_LENGTH = 700;
5
- const CONTROL_CHARACTERS = /[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/g;
6
- const DATA_URL = /data:[^;,\s]+;base64,[a-z0-9+/=_-]+/gi;
7
- const BEARER_TOKEN = /\bbearer\s+[a-z0-9._~+/-]{8,}/gi;
8
- const OPENAI_KEY = /\bsk-(?:proj-)?[a-z0-9_-]{8,}/gi;
9
- const AUTHORIZATION_VALUE = /(authorization\s*[:=]\s*)[^\s,;]+/gi;
10
- const API_KEY_VALUE = /((?:api[-_ ]?key|token|secret)\s*[:=]\s*)[^\s,;]+/gi;
11
- const redactSurveyAssistantDiagnosticSecrets = (value) => value.replace(CONTROL_CHARACTERS, "").replace(DATA_URL, "[data URL omitted]").replace(BEARER_TOKEN, "Bearer [credential omitted]").replace(OPENAI_KEY, "[credential omitted]").replace(AUTHORIZATION_VALUE, "$1[credential omitted]").replace(API_KEY_VALUE, "$1[credential omitted]");
12
- const sanitizeSurveyAssistantDiagnosticText = (value, maximum = 700) => {
13
- const normalized = redactSurveyAssistantDiagnosticSecrets(value).replace(/\s+/g, " ").trim();
14
- if (normalized.length <= maximum) return normalized;
15
- return `${normalized.slice(0, Math.max(0, maximum - 1))}…`;
16
- };
17
- const isSurveyAssistantSensitiveMetadataKey = (key) => {
18
- const normalized = key.toLocaleLowerCase();
19
- return normalized.includes("authorization") || normalized.includes("credential") || normalized.includes("encrypted") || normalized.includes("password") || normalized.includes("redacted") || normalized.includes("secret") || normalized.includes("signature") || normalized === "token" || normalized.endsWith("token") || normalized.includes("api_key") || normalized.includes("apikey");
20
- };
21
- const getSurveyAssistantEmbeddedBinaryMarker = (value, parent, key) => {
22
- if (typeof value !== "string") return void 0;
23
- if (key === "data" && parent?.type === "embedded" && parent.encoding === "base64") return {
24
- characters: value.length,
25
- redacted: "base64"
26
- };
27
- if (value.length > 512 && /^data:[^;,]+;base64,/.test(value)) return {
28
- characters: value.length,
29
- redacted: "data-url"
30
- };
31
- };
32
- //#endregion
33
- //#region src/protocol/errors.ts
34
- const surveyAssistantErrorCodeSchema = z.enum([
35
- "attachment_unavailable",
36
- "authorization_failed",
37
- "model_unavailable",
38
- "rate_limited",
39
- "request_failed"
40
- ]);
41
- const surveyAssistantErrorInfoSchema = z.object({
42
- code: surveyAssistantErrorCodeSchema,
43
- detail: z.string().optional(),
44
- retryable: z.boolean().optional(),
45
- upstreamStatus: z.number().int().min(100).max(599).optional(),
46
- providerRequestId: z.string().trim().min(1).max(240).optional(),
47
- providerMessage: z.string().max(700).optional()
48
- });
49
- const isSurveyAssistantErrorRetryable = (error, httpStatus) => {
50
- if (error.retryable !== void 0) return error.retryable;
51
- if (error.code === "rate_limited") return true;
52
- const status = httpStatus ?? error.upstreamStatus;
53
- if (error.code === "request_failed") return status === void 0 || status >= 500;
54
- return error.code === "attachment_unavailable" && status !== void 0 && status >= 500;
55
- };
56
- const ERROR_PREFIX = "case-survey-assistant-error:";
57
- const serializeSurveyAssistantError = (error) => `${ERROR_PREFIX}${JSON.stringify(surveyAssistantErrorInfoSchema.parse(error))}`;
58
- const parseSurveyAssistantError = (value) => {
59
- if (typeof value === "object" && value !== null && "code" in value) {
60
- const detail = "detail" in value && typeof value.detail === "string" ? value.detail : "message" in value && typeof value.message === "string" ? value.message : void 0;
61
- const parsed = surveyAssistantErrorInfoSchema.safeParse({
62
- code: value.code,
63
- detail: detail ? sanitizeSurveyAssistantDiagnosticText(detail, 700) : void 0,
64
- retryable: "retryable" in value && typeof value.retryable === "boolean" ? value.retryable : void 0,
65
- upstreamStatus: "upstreamStatus" in value && typeof value.upstreamStatus === "number" ? value.upstreamStatus : void 0,
66
- providerRequestId: "providerRequestId" in value && typeof value.providerRequestId === "string" ? sanitizeSurveyAssistantDiagnosticText(value.providerRequestId, 240) : void 0,
67
- providerMessage: "providerMessage" in value && typeof value.providerMessage === "string" ? sanitizeSurveyAssistantDiagnosticText(value.providerMessage, 700) : void 0
68
- });
69
- if (parsed.success) return parsed.data;
70
- }
71
- const message = value instanceof Error ? value.message : typeof value === "string" ? value : typeof value === "object" && value !== null && "message" in value ? String(value.message) : "";
72
- if (message.startsWith(ERROR_PREFIX)) try {
73
- const parsed = surveyAssistantErrorInfoSchema.safeParse(JSON.parse(message.slice(28)));
74
- if (parsed.success) return parsed.data;
75
- } catch {}
76
- return {
77
- code: "request_failed",
78
- ...message.trim() ? { detail: sanitizeSurveyAssistantDiagnosticText(message, 700) } : {}
79
- };
80
- };
81
- //#endregion
82
- //#region src/protocol/response-settings.ts
83
- const variableName = z.string().regex(/^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$/).max(32);
84
- const responseNamingEditSchema = z.union([z.object({
85
- slotId: z.string().min(1),
86
- variableName
87
- }).strict(), z.object({
88
- primitiveId: z.string().min(1),
89
- prefix: variableName.optional(),
90
- rows: z.record(z.string(), variableName).optional(),
91
- columns: z.record(z.string(), variableName).optional()
92
- }).strict()]);
93
- const responseExportSettingsSchema = z.object({
94
- mode: z.string().min(1),
95
- include: z.boolean().optional(),
96
- categorical: z.enum([
97
- "codes",
98
- "labels",
99
- "ids"
100
- ]).optional(),
101
- multiple: z.enum([
102
- "json",
103
- "delimited",
104
- "indicators"
105
- ]).optional(),
106
- delimiter: z.string().optional(),
107
- locale: z.string().optional(),
108
- optionCodes: z.record(z.string(), z.string()).optional(),
109
- optionLabels: z.record(z.string(), z.string()).optional(),
110
- booleanValues: z.object({
111
- true: z.string(),
112
- false: z.string()
113
- }).optional(),
114
- precision: z.number().int().nonnegative().optional(),
115
- durationUnit: z.enum([
116
- "seconds",
117
- "minutes",
118
- "hours",
119
- "days",
120
- "weeks",
121
- "months",
122
- "years"
123
- ]).optional(),
124
- dateFormat: z.object({ pattern: z.string().min(1) }).optional(),
125
- maskChar: z.string().optional()
126
- }).strict();
127
- const responseSettingsEditSchema = z.object({
128
- slotId: z.string().min(1),
129
- optionCodes: z.record(z.string(), z.string().min(1)).optional(),
130
- exportSettings: responseExportSettingsSchema.optional()
131
- }).strict();
132
- const responseSettingsChangesSchema = z.object({
133
- naming: z.array(responseNamingEditSchema).max(200),
134
- settings: z.array(responseSettingsEditSchema).max(200)
135
- });
136
- //#endregion
137
- //#region src/protocol/content.ts
138
- const jsonValueSchema = z.lazy(() => z.union([
139
- z.string(),
140
- z.number(),
141
- z.boolean(),
142
- z.null(),
143
- z.array(jsonValueSchema),
144
- z.record(z.string(), jsonValueSchema)
145
- ]));
146
- const contentAttributesSchema = z.record(z.string(), jsonValueSchema);
147
- const richTextStyleSchema = z.object({
148
- weight: z.enum(["strong", "normal"]).optional(),
149
- italic: z.enum(["italic", "normal"]).optional(),
150
- underline: z.enum(["underline", "none"]).optional(),
151
- color: z.enum([
152
- "primary",
153
- "accent",
154
- "default"
155
- ]).optional()
156
- });
157
- const richTextTextInlineSchema = z.object({
158
- type: z.literal("text"),
159
- text: z.string().max(2e4),
160
- style: richTextStyleSchema.optional(),
161
- attrs: contentAttributesSchema.optional()
162
- });
163
- const richTextTemplateInlineSchema = z.object({
164
- type: z.literal("template"),
165
- key: z.string().min(1).max(240),
166
- style: richTextStyleSchema.optional(),
167
- attrs: contentAttributesSchema.optional()
168
- });
169
- const richTextLineBreakInlineSchema = z.object({
170
- type: z.literal("lineBreak"),
171
- attrs: contentAttributesSchema.optional()
172
- });
173
- const richTextLinkChildInlineSchema = z.discriminatedUnion("type", [
174
- richTextTextInlineSchema,
175
- richTextTemplateInlineSchema,
176
- richTextLineBreakInlineSchema
177
- ]);
178
- const richTextLinkInlineSchema = z.object({
179
- type: z.literal("link"),
180
- href: z.string().min(1).max(2e3),
181
- target: z.string().max(120).nullable().optional(),
182
- rel: z.string().max(240).nullable().optional(),
183
- title: z.string().max(1e3).nullable().optional(),
184
- attrs: contentAttributesSchema.optional(),
185
- children: z.array(richTextLinkChildInlineSchema).max(200)
186
- });
187
- const richTextInlineExtensionSchema = z.object({
188
- type: z.literal("inlineExtension"),
189
- name: z.string().min(1).max(120),
190
- attrs: contentAttributesSchema.optional()
191
- });
192
- const richTextInlineSchema = z.discriminatedUnion("type", [
193
- richTextTextInlineSchema,
194
- richTextTemplateInlineSchema,
195
- richTextLinkInlineSchema,
196
- richTextLineBreakInlineSchema,
197
- richTextInlineExtensionSchema
198
- ]);
199
- const textAlignmentSchema = z.enum([
200
- "left",
201
- "center",
202
- "right",
203
- "justify"
204
- ]);
205
- const richTextParagraphBlockSchema = z.object({
206
- type: z.literal("paragraph"),
207
- children: z.array(richTextInlineSchema).max(500),
208
- alignment: textAlignmentSchema.optional(),
209
- attrs: contentAttributesSchema.optional()
210
- });
211
- const richTextHeadingBlockSchema = z.object({
212
- type: z.literal("heading"),
213
- level: z.union([z.literal(1), z.literal(2)]),
214
- children: z.array(richTextInlineSchema).max(500),
215
- alignment: textAlignmentSchema.optional(),
216
- attrs: contentAttributesSchema.optional()
217
- });
218
- const richTextListItemBlockSchema = z.object({
219
- type: z.literal("listItem"),
220
- children: z.array(richTextParagraphBlockSchema).max(100),
221
- attrs: contentAttributesSchema.optional()
222
- });
223
- const richTextBulletListBlockSchema = z.object({
224
- type: z.literal("bulletList"),
225
- items: z.array(richTextListItemBlockSchema).max(100),
226
- attrs: contentAttributesSchema.optional()
227
- });
228
- const richTextImageDimensionSchema = z.union([z.object({
229
- unit: z.literal("px"),
230
- value: z.number().finite().nonnegative()
231
- }), z.object({
232
- unit: z.literal("%"),
233
- value: z.number().finite().nonnegative()
234
- })]);
235
- const richTextImageSourceSchema = z.discriminatedUnion("type", [z.object({
236
- type: z.literal("asset"),
237
- assetId: z.string().min(1).max(240)
238
- }), z.object({
239
- type: z.literal("external"),
240
- url: z.string().min(1).max(2e3)
241
- })]);
242
- const richTextImageBlockSchema = z.object({
243
- type: z.literal("image"),
244
- source: richTextImageSourceSchema,
245
- alt: z.string().max(2e3).optional(),
246
- caption: z.array(richTextParagraphBlockSchema).max(20).optional(),
247
- size: z.object({
248
- width: richTextImageDimensionSchema.optional(),
249
- height: richTextImageDimensionSchema.optional(),
250
- maxWidth: richTextImageDimensionSchema.optional(),
251
- maxHeight: richTextImageDimensionSchema.optional()
252
- }).optional(),
253
- alignment: textAlignmentSchema.optional(),
254
- attrs: contentAttributesSchema.optional()
255
- });
256
- const richTextInfoBoxBlockSchema = z.object({
257
- type: z.literal("infoBox"),
258
- tone: z.enum(["info", "warning"]).optional(),
259
- title: z.array(richTextInlineSchema).max(100).optional(),
260
- collapsible: z.boolean().optional(),
261
- defaultOpen: z.boolean().optional(),
262
- children: z.array(richTextParagraphBlockSchema).max(100),
263
- attrs: contentAttributesSchema.optional()
264
- });
265
- const richTextSeparatorBlockSchema = z.object({
266
- type: z.literal("separator"),
267
- attrs: contentAttributesSchema.optional()
268
- });
269
- const richTextBlockExtensionSchema = z.object({
270
- type: z.literal("blockExtension"),
271
- name: z.string().min(1).max(120),
272
- attrs: contentAttributesSchema.optional()
273
- });
274
- const richTextBlockSchema = z.discriminatedUnion("type", [
275
- richTextParagraphBlockSchema,
276
- richTextHeadingBlockSchema,
277
- richTextBulletListBlockSchema,
278
- richTextImageBlockSchema,
279
- richTextInfoBoxBlockSchema,
280
- richTextSeparatorBlockSchema,
281
- richTextBlockExtensionSchema
282
- ]);
283
- const surveyContentSchema = z.discriminatedUnion("type", [
284
- z.object({
285
- type: z.literal("md"),
286
- content: z.string().max(2e4)
287
- }),
288
- z.object({
289
- type: z.literal("plain"),
290
- content: z.string().max(2e4)
291
- }),
292
- z.object({
293
- type: z.literal("richText"),
294
- version: z.literal(1),
295
- doc: z.object({
296
- type: z.literal("doc"),
297
- blocks: z.array(richTextBlockSchema).max(200)
298
- })
299
- })
300
- ]);
301
- //#endregion
302
- //#region src/protocol/operations.ts
303
- const operationIdSchema = z.string().min(1).max(120).optional().describe("Optional client/model supplied id for correlating validation issues.");
304
- const itemIdentifierSchema = z.string().min(1).max(240).describe("Exact stable survey item ID. Inspect editor names and breadcrumbs to discover the ID.");
305
- const itemTranslationSchema = z.object({
306
- locale: z.string().min(1).max(40),
307
- contentKey: z.string().min(1).max(240).describe("Item translation content key, for example \"label\" or \"content\"."),
308
- plainText: z.string().max(2e4).optional().describe("Simple text content to persist for the translation key."),
309
- content: surveyContentSchema.optional().describe("Canonical structured survey content to persist for the translation key. Use { \"type\": \"richText\", \"version\": 1, \"doc\": ... } for formatted text. The survey_change model interface also accepts documented richTextBlocks shorthand at this translation level and normalizes it to this field before canonical validation.")
310
- }).refine((translation) => translation.plainText !== void 0 !== (translation.content !== void 0), { message: "Provide exactly one of plainText or content for a translation." });
311
- const choiceOptionInputSchema = z.object({
312
- id: z.string().min(1).max(120).optional().describe("Optional stable option id. If omitted, the validator derives a unique id."),
313
- code: z.string().min(1).max(120).optional().describe("Optional export code. If omitted, the validator derives a unique code."),
314
- label: z.string().min(1).max(1e3).describe("Respondent-visible option label as a plain string. Do not pass a translation object here; add-choice-option creates the matching translation in its locale.")
315
- });
316
- const rawSurveyItemForCreateSchema = z.object({
317
- id: z.string().min(1).max(120).optional(),
318
- itemType: z.string().min(1).max(120),
319
- metadata: z.record(z.string(), z.string()).optional(),
320
- config: z.unknown().optional().describe("Optional item-type config. For choiceItem, provide response options as config.options, for example [{ \"label\": \"Fuji\" }, { \"label\": \"Gala\" }]. Use config.maxSelection: 1 for single choice, null for unlimited multiple choice / select-all-that-apply, or a number greater than 1 for capped multiple choice. Put an inline embeddedForm directly on a new choice option; default an eligible one-field embeddedForm to authoringMode \"simple\" and use \"custom\" for blank or structured follow-ups. For formItem, use authoringMode \"simple\" only with one field group containing one field; use \"custom\" for blank or multi-field forms. The validator converts option labels into options.<optionId>.label translations."),
321
- validations: z.record(z.string(), z.any()).optional(),
322
- displayConditions: z.any().optional(),
323
- disabledConditions: z.any().optional(),
324
- prefills: z.array(z.any()).optional()
325
- }).passthrough();
326
- const jsonPointerPathSchema = z.string().max(500).describe("Survey-root JSON Pointer obtained from current raw inspection. Escape \"~\" as \"~0\" and \"/\" within one path segment as \"~1\". Use \"/-\" only as the final destination segment of an add, move, or copy that appends to an array.");
327
- const jsonPatchOperationSchema = z.discriminatedUnion("op", [
328
- z.object({
329
- op: z.literal("add"),
330
- path: jsonPointerPathSchema,
331
- value: jsonValueSchema
332
- }),
333
- z.object({
334
- op: z.literal("replace"),
335
- path: jsonPointerPathSchema,
336
- value: jsonValueSchema
337
- }),
338
- z.object({
339
- op: z.literal("test"),
340
- path: jsonPointerPathSchema,
341
- value: jsonValueSchema
342
- }),
343
- z.object({
344
- op: z.literal("remove"),
345
- path: jsonPointerPathSchema
346
- }),
347
- z.object({
348
- op: z.literal("move"),
349
- from: jsonPointerPathSchema,
350
- path: jsonPointerPathSchema
351
- }),
352
- z.object({
353
- op: z.literal("copy"),
354
- from: jsonPointerPathSchema,
355
- path: jsonPointerPathSchema
356
- })
357
- ]);
358
- const createItemOperationSchema = z.object({
359
- id: operationIdSchema,
360
- kind: z.literal("create-item"),
361
- target: z.object({
362
- parentItemId: z.string().max(240).describe("Exact parent group item ID. Use the inspected root group ID for top-level items."),
363
- index: z.number().int().min(0).optional().describe("Zero-based insertion index in the parent group. Omit to append; use 0 to insert first.")
364
- }),
365
- item: rawSurveyItemForCreateSchema,
366
- presetId: z.string().min(1).max(120).optional().describe("Server-supported toolbox preset ID declared by the item capability. Materializes its configuration and translations; explicit item.config fields override defaults. Supply the remaining required content specified by the capability."),
367
- translations: z.array(itemTranslationSchema).optional().describe("Operation-level item translations for visible content, for example [{ \"locale\": \"en\", \"contentKey\": \"title\", \"plainText\": \"Question text\" }]. Put this property inside the create-item operation beside target and item, never beside the survey_change operations array. For formatted content, the model interface accepts documented richTextBlocks shorthand and normalizes it to canonical content before validation. Form select/dropdown option labels must be translations at fields.<fieldId>.options.<optionId>.label.")
368
- });
369
- const updateItemLabelOperationSchema = z.object({
370
- id: operationIdSchema,
371
- kind: z.literal("update-item-label"),
372
- itemId: itemIdentifierSchema,
373
- itemLabel: z.string().max(200)
374
- });
375
- const updateItemColorOperationSchema = z.object({
376
- id: operationIdSchema,
377
- kind: z.literal("update-item-color"),
378
- itemId: itemIdentifierSchema,
379
- color: z.enum(SURVEY_EDITOR_ITEM_COLORS).describe("One of the Survey Editor's supported item-color swatches.")
380
- });
381
- const updateItemTranslationOperationSchema = z.object({
382
- id: operationIdSchema,
383
- kind: z.literal("update-item-translation"),
384
- itemId: itemIdentifierSchema,
385
- locale: z.string().min(1).max(40),
386
- contentKey: z.string().min(1).max(240).describe("Item translation content key, for example \"label\"."),
387
- plainText: z.string().max(2e4).optional().describe("Simple text content to persist for the translation key."),
388
- content: surveyContentSchema.optional().describe("Canonical structured survey content to persist for the translation key. Use { \"type\": \"richText\", \"version\": 1, \"doc\": ... } for formatted text. The survey_change model interface also accepts documented top-level richTextBlocks shorthand and normalizes it to this field before canonical validation.")
389
- }).refine((operation) => operation.plainText !== void 0 !== (operation.content !== void 0), { message: "Provide exactly one of plainText or content for update-item-translation." });
390
- const placedImageDimensionSchema = z.union([z.object({
391
- unit: z.literal("px"),
392
- value: z.number().finite().nonnegative()
393
- }), z.object({
394
- unit: z.literal("%"),
395
- value: z.number().finite().nonnegative().max(100)
396
- })]);
397
- const placedImageSourceSchema = z.discriminatedUnion("type", [z.object({
398
- type: z.literal("asset"),
399
- assetId: z.string().min(1).max(240)
400
- }), z.object({
401
- type: z.literal("external"),
402
- url: z.string().min(1).max(2e3)
403
- })]);
404
- const updatePlacedImageOperationSchema = z.object({
405
- id: operationIdSchema,
406
- kind: z.literal("update-placed-image"),
407
- itemId: itemIdentifierSchema,
408
- locale: z.string().min(1).max(40),
409
- contentKey: z.string().min(1).max(240),
410
- imageIndex: z.number().int().nonnegative().describe("Zero-based index among image blocks in the selected rich-text content value."),
411
- expectedAssetId: z.string().min(1).max(240).optional(),
412
- changes: z.object({
413
- source: placedImageSourceSchema.optional(),
414
- alt: z.string().max(2e3).nullable().optional(),
415
- caption: z.string().max(2e4).nullable().optional(),
416
- width: placedImageDimensionSchema.nullable().optional(),
417
- height: placedImageDimensionSchema.nullable().optional(),
418
- maxWidth: placedImageDimensionSchema.nullable().optional(),
419
- maxHeight: placedImageDimensionSchema.nullable().optional(),
420
- alignment: z.enum([
421
- "left",
422
- "center",
423
- "right"
424
- ]).nullable().optional()
425
- }).refine((changes) => Object.values(changes).some((value) => value !== void 0), { message: "Provide at least one placed-image property to change." })
426
- });
427
- const patchItemConfigOperationSchema = z.object({
428
- id: operationIdSchema,
429
- kind: z.literal("patch-item-config"),
430
- itemId: itemIdentifierSchema,
431
- translations: z.array(itemTranslationSchema).max(200).optional().describe("Translations belonging to this configuration edit, applied atomically with it. Use the content keys declared by the item capability."),
432
- patches: z.array(jsonPatchOperationSchema).min(1).max(100).describe("JSON Patch operations relative to this item's config root, for example [{ \"op\": \"replace\", \"path\": \"/max\", \"value\": 7 }]. Inspect the item first and do not include /surveyItems/<index>/config in these paths.")
433
- });
434
- const formTargetSchema = z.object({
435
- itemId: itemIdentifierSchema,
436
- optionId: z.string().min(1).max(240).optional().describe("Choice option id when targeting an inline embedded form.")
437
- });
438
- const formTranslationsSchema = z.array(itemTranslationSchema).max(100).optional().describe("Translations written atomically with this form structure change. Put this property inside the form operation object, never beside the survey_change operations array. Content keys are relative to the form; embedded-form prefixes are added automatically.");
439
- const formFieldInputSchema = z.object({
440
- id: z.string().min(1).max(120),
441
- variableName: z.string().min(1).max(32),
442
- type: z.enum([
443
- "input",
444
- "textarea",
445
- "number",
446
- "datepicker",
447
- "switch",
448
- "select",
449
- "slider"
450
- ]),
451
- controller: z.record(z.string(), z.unknown()),
452
- required: z.boolean().optional(),
453
- validations: z.array(z.record(z.string(), z.unknown())).optional()
454
- }).passthrough();
455
- const formFieldGroupInputSchema = z.object({
456
- id: z.string().min(1).max(120),
457
- layout: z.object({
458
- base: z.number().int().min(1).max(4),
459
- xs: z.number().int().min(1).max(4),
460
- sm: z.number().int().min(1).max(4),
461
- md: z.number().int().min(1).max(4),
462
- xl: z.number().int().min(1).max(4)
463
- }).describe("Responsive column counts from 1 to 4. Use 1 at every breakpoint for a lone full-width field.").optional(),
464
- fields: z.array(formFieldInputSchema).max(200).optional(),
465
- hasDisplayCondition: z.boolean().optional()
466
- }).passthrough();
467
- const upsertFormFieldGroupOperationSchema = z.object({
468
- id: operationIdSchema,
469
- kind: z.literal("upsert-form-field-group"),
470
- target: formTargetSchema,
471
- index: z.number().int().min(0).optional(),
472
- group: formFieldGroupInputSchema,
473
- translations: formTranslationsSchema
474
- });
475
- const removeFormFieldGroupOperationSchema = z.object({
476
- id: operationIdSchema,
477
- kind: z.literal("remove-form-field-group"),
478
- target: formTargetSchema,
479
- groupId: z.string().min(1).max(240)
480
- });
481
- const reorderFormFieldGroupsOperationSchema = z.object({
482
- id: operationIdSchema,
483
- kind: z.literal("reorder-form-field-groups"),
484
- target: formTargetSchema,
485
- groupIds: z.array(z.string().min(1).max(240)).min(1).max(100).describe("Complete desired order containing every existing form-field group id exactly once.")
486
- });
487
- const upsertFormFieldOperationSchema = z.object({
488
- id: operationIdSchema,
489
- kind: z.literal("upsert-form-field"),
490
- target: formTargetSchema,
491
- groupId: z.string().min(1).max(240),
492
- index: z.number().int().min(0).optional(),
493
- field: formFieldInputSchema,
494
- translations: formTranslationsSchema
495
- });
496
- const removeFormFieldOperationSchema = z.object({
497
- id: operationIdSchema,
498
- kind: z.literal("remove-form-field"),
499
- target: formTargetSchema,
500
- fieldId: z.string().min(1).max(240)
501
- });
502
- const moveFormFieldOperationSchema = z.object({
503
- id: operationIdSchema,
504
- kind: z.literal("move-form-field"),
505
- target: formTargetSchema,
506
- fieldId: z.string().min(1).max(240),
507
- targetGroupId: z.string().min(1).max(240),
508
- index: z.number().int().min(0).optional()
509
- });
510
- const setEmbeddedFormOperationSchema = z.object({
511
- id: operationIdSchema,
512
- kind: z.literal("set-embedded-form"),
513
- itemId: itemIdentifierSchema,
514
- optionId: z.string().min(1).max(240),
515
- form: z.object({
516
- id: z.string().min(1).max(120),
517
- authoringMode: z.enum(["simple", "custom"]).optional().describe("Use \"simple\" only for exactly one field group containing exactly one field; omitted or malformed simple mode normalizes to \"custom\"."),
518
- fieldGroups: z.array(formFieldGroupInputSchema).max(100)
519
- }).passthrough(),
520
- translations: formTranslationsSchema
521
- });
522
- const removeEmbeddedFormOperationSchema = z.object({
523
- id: operationIdSchema,
524
- kind: z.literal("remove-embedded-form"),
525
- itemId: itemIdentifierSchema,
526
- optionId: z.string().min(1).max(240)
527
- });
528
- const addChoiceOptionOperationSchema = z.object({
529
- id: operationIdSchema,
530
- kind: z.literal("add-choice-option"),
531
- itemId: itemIdentifierSchema,
532
- locale: z.string().min(1).max(40).optional(),
533
- index: z.number().int().min(0).optional(),
534
- option: choiceOptionInputSchema
535
- });
536
- const updateChoiceOptionLabelOperationSchema = z.object({
537
- id: operationIdSchema,
538
- kind: z.literal("update-choice-option-label"),
539
- itemId: itemIdentifierSchema,
540
- optionId: z.string().min(1).max(240).describe("Exact persistent choice option ID; discover it through inspection."),
541
- locale: z.string().min(1).max(40).optional(),
542
- label: z.string().min(1).max(1e3).describe("New respondent-visible option label.")
543
- });
544
- const removeChoiceOptionOperationSchema = z.object({
545
- id: operationIdSchema,
546
- kind: z.literal("remove-choice-option"),
547
- itemId: itemIdentifierSchema,
548
- optionId: z.string().min(1).max(240).describe("Exact persistent choice option ID; discover it through inspection.")
549
- });
550
- const reorderChoiceOptionsOperationSchema = z.object({
551
- id: operationIdSchema,
552
- kind: z.literal("reorder-choice-options"),
553
- itemId: itemIdentifierSchema,
554
- optionIds: z.array(z.string().min(1).max(240)).min(1).max(100).describe("Complete desired order of existing choice options, using their exact persistent option IDs.")
555
- });
556
- const removeItemOperationSchema = z.object({
557
- id: operationIdSchema,
558
- kind: z.literal("remove-item"),
559
- itemId: itemIdentifierSchema,
560
- includeChildren: z.boolean().optional().describe("Must be true when removing a group item that has children.")
561
- });
562
- const moveItemOperationSchema = z.object({
563
- id: operationIdSchema,
564
- kind: z.literal("move-item"),
565
- itemId: itemIdentifierSchema,
566
- target: z.object({
567
- parentItemId: itemIdentifierSchema,
568
- index: z.number().int().min(0).optional().describe("Zero-based insertion index in the parent group. Omit to append; use 0 to insert first.")
569
- }).describe("A different parent group and optional insertion index. Omit unchanged placements; use reorder-items for sibling order within the current parent.")
570
- });
571
- const reorderItemsOperationSchema = z.object({
572
- id: operationIdSchema,
573
- kind: z.literal("reorder-items"),
574
- parentItemId: itemIdentifierSchema,
575
- itemIds: z.array(itemIdentifierSchema).min(1).max(200).describe("Complete desired order containing every existing direct child of the parent group exactly once.")
576
- });
577
- const updateSurveyMetadataOperationSchema = z.object({
578
- id: operationIdSchema,
579
- kind: z.literal("update-survey-metadata"),
580
- values: z.record(z.string().min(1).max(240), z.string().max(2e4).nullable())
581
- });
582
- const updateSurveyPaginationOperationSchema = z.object({
583
- id: operationIdSchema,
584
- kind: z.literal("update-survey-pagination"),
585
- value: z.object({
586
- large: z.number().int().min(1).max(1e3),
587
- small: z.number().int().min(1).max(1e3)
588
- }).nullable()
589
- });
590
- const updateSurveyTranslationOperationSchema = z.object({
591
- id: operationIdSchema,
592
- kind: z.literal("update-survey-translation"),
593
- locale: z.string().min(1).max(40),
594
- surface: z.enum([
595
- "surveyCardContent",
596
- "navigationContent",
597
- "validationMessages"
598
- ]),
599
- contentKey: z.string().min(1).max(240),
600
- plainText: z.string().max(2e4).optional(),
601
- content: surveyContentSchema.optional().describe("Canonical structured survey content to persist for the survey translation. The survey_change model interface also accepts documented top-level richTextBlocks shorthand and normalizes it to this field before canonical validation.")
602
- }).refine((operation) => operation.plainText !== void 0 !== (operation.content !== void 0), { message: "Provide exactly one of plainText or content for update-survey-translation." });
603
- const surveyLocaleSchema = z.string().trim().min(1).max(40);
604
- const addSurveyLocaleOperationSchema = z.object({
605
- id: operationIdSchema,
606
- kind: z.literal("add-survey-locale"),
607
- locale: surveyLocaleSchema.describe("New, currently absent survey locale code.")
608
- }).describe("Register an empty survey locale through the editor locale-management API.");
609
- const removeSurveyLocaleOperationSchema = z.object({
610
- id: operationIdSchema,
611
- kind: z.literal("remove-survey-locale"),
612
- locale: surveyLocaleSchema.describe("Exact existing survey locale code to remove.")
613
- }).describe("Destructively remove a survey locale and all survey-level and item-level translations stored for it.");
614
- const imageAssetMetadataSchema = z.object({
615
- name: z.string().max(500).optional(),
616
- filename: z.string().max(500).optional(),
617
- alt: z.string().max(2e3).optional(),
618
- width: z.number().int().positive().optional(),
619
- height: z.number().int().positive().optional()
620
- });
621
- const rawSurveyImageAssetSchema = z.object({
622
- kind: z.literal("image"),
623
- source: z.object({
624
- type: z.literal("embedded"),
625
- mediaType: z.string().regex(/^image\//),
626
- encoding: z.literal("base64"),
627
- data: z.string().min(1).max(8e6)
628
- }),
629
- metadata: imageAssetMetadataSchema.optional()
630
- });
631
- const setImageAssetOperationSchema = z.object({
632
- id: operationIdSchema,
633
- kind: z.literal("set-image-asset"),
634
- assetId: z.string().min(1).max(240),
635
- asset: rawSurveyImageAssetSchema
636
- });
637
- const updateImageAssetMetadataOperationSchema = z.object({
638
- id: operationIdSchema,
639
- kind: z.literal("update-image-asset-metadata"),
640
- assetId: z.string().min(1).max(240),
641
- metadata: z.object({
642
- name: z.string().max(500).nullable().optional(),
643
- filename: z.string().max(500).nullable().optional(),
644
- alt: z.string().max(2e3).nullable().optional(),
645
- width: z.number().int().positive().nullable().optional(),
646
- height: z.number().int().positive().nullable().optional()
647
- })
648
- });
649
- const removeImageAssetOperationSchema = z.object({
650
- id: operationIdSchema,
651
- kind: z.literal("remove-image-asset"),
652
- assetId: z.string().min(1).max(240)
653
- });
654
- const surveyPatchOperationSchema = z.object({
655
- id: operationIdSchema,
656
- kind: z.literal("survey-json-patch"),
657
- patches: z.array(jsonPatchOperationSchema).min(1).max(100).describe("Sequential JSON Patch operations applied to the survey document. Use only for an existing, inspected survey-root extension with no typed operation, patch-item-config helper, or survey_expression mutation. Parent paths must exist. Add creates or replaces an object member, inserts at an array index, or appends with /-. Replace, remove, and test require an existing path. Move and copy require an existing from path. Preserve exact JSON value types, and guard overwrites or removals with test when the current value is known.")
658
- });
659
- const asDiscriminable = (schema) => schema;
660
- const surveyOperationSchemasByKind = {
661
- "create-item": createItemOperationSchema,
662
- "update-response-settings": responseSettingsChangesSchema.extend({
663
- id: operationIdSchema,
664
- kind: z.literal("update-response-settings")
665
- }),
666
- "update-item-label": updateItemLabelOperationSchema,
667
- "update-item-color": updateItemColorOperationSchema,
668
- "update-item-translation": updateItemTranslationOperationSchema,
669
- "update-placed-image": updatePlacedImageOperationSchema,
670
- "patch-item-config": patchItemConfigOperationSchema,
671
- "upsert-form-field-group": upsertFormFieldGroupOperationSchema,
672
- "remove-form-field-group": removeFormFieldGroupOperationSchema,
673
- "reorder-form-field-groups": reorderFormFieldGroupsOperationSchema,
674
- "upsert-form-field": upsertFormFieldOperationSchema,
675
- "remove-form-field": removeFormFieldOperationSchema,
676
- "move-form-field": moveFormFieldOperationSchema,
677
- "set-embedded-form": setEmbeddedFormOperationSchema,
678
- "remove-embedded-form": removeEmbeddedFormOperationSchema,
679
- "add-choice-option": addChoiceOptionOperationSchema,
680
- "update-choice-option-label": updateChoiceOptionLabelOperationSchema,
681
- "remove-choice-option": removeChoiceOptionOperationSchema,
682
- "reorder-choice-options": reorderChoiceOptionsOperationSchema,
683
- "remove-item": removeItemOperationSchema,
684
- "move-item": moveItemOperationSchema,
685
- "reorder-items": reorderItemsOperationSchema,
686
- "update-survey-metadata": updateSurveyMetadataOperationSchema,
687
- "update-survey-pagination": updateSurveyPaginationOperationSchema,
688
- "update-survey-translation": updateSurveyTranslationOperationSchema,
689
- "add-survey-locale": addSurveyLocaleOperationSchema,
690
- "remove-survey-locale": removeSurveyLocaleOperationSchema,
691
- "set-image-asset": setImageAssetOperationSchema,
692
- "update-image-asset-metadata": updateImageAssetMetadataOperationSchema,
693
- "remove-image-asset": removeImageAssetOperationSchema,
694
- "survey-json-patch": surveyPatchOperationSchema
695
- };
696
- const surveyOperationSchemaOptions = Object.values(surveyOperationSchemasByKind).map((schema) => asDiscriminable(schema));
697
- const surveyOperationSchema = z.discriminatedUnion("kind", surveyOperationSchemaOptions);
698
- const surveyValidationIssueSchema = z.object({
699
- severity: z.enum(["error", "warning"]),
700
- code: z.string(),
701
- message: z.string(),
702
- operationIndex: z.number().int().nonnegative().optional(),
703
- operationId: z.string().optional(),
704
- itemId: z.string().optional()
705
- });
706
- const surveyValidationResultSchema = z.object({
707
- valid: z.boolean(),
708
- issues: z.array(surveyValidationIssueSchema),
709
- warnings: z.array(surveyValidationIssueSchema),
710
- normalizedOperations: z.array(surveyOperationSchema)
711
- });
712
- const SURVEY_OPERATION_KINDS = Object.freeze(Object.keys(surveyOperationSchemasByKind));
713
- const surveyJsonPatchOperationSchema = jsonPatchOperationSchema;
714
- const surveyAssistantCreateItemOperationSchema = createItemOperationSchema;
715
- const surveyAssistantUpdateItemLabelOperationSchema = updateItemLabelOperationSchema;
716
- const surveyAssistantUpdateItemColorOperationSchema = updateItemColorOperationSchema;
717
- const surveyAssistantUpdateItemTranslationOperationSchema = updateItemTranslationOperationSchema;
718
- const surveyAssistantAddChoiceOptionOperationSchema = addChoiceOptionOperationSchema;
719
- const surveyAssistantUpdateChoiceOptionLabelOperationSchema = updateChoiceOptionLabelOperationSchema;
720
- const surveyAssistantRemoveChoiceOptionOperationSchema = removeChoiceOptionOperationSchema;
721
- const surveyAssistantReorderChoiceOptionsOperationSchema = reorderChoiceOptionsOperationSchema;
722
- const surveyAssistantRemoveItemOperationSchema = removeItemOperationSchema;
723
- const surveyAssistantSurveyJsonPatchOperationSchema = surveyPatchOperationSchema;
724
- const surveyAssistantOperationSchema = surveyOperationSchema;
725
- const surveyAssistantValidationIssueSchema = surveyValidationIssueSchema;
726
- const surveyAssistantValidationResultSchema = surveyValidationResultSchema;
727
- //#endregion
728
- //#region src/protocol/capabilities.ts
729
- const assistantItemCreateModeSchema = z.enum([
730
- "deterministic",
731
- "interactive-only",
732
- "unsupported"
733
- ]);
734
- const assistantContentSurfaceSchema = z.object({
735
- key: z.string().min(1),
736
- role: z.enum([
737
- "primary",
738
- "secondary",
739
- "option",
740
- "field",
741
- "validation"
742
- ]),
743
- format: z.enum(["plain", "rich"]),
744
- requiredOnCreate: z.boolean().optional(),
745
- pattern: z.boolean().optional(),
746
- aliases: z.array(z.string().min(1)).optional()
747
- });
748
- const assistantResponseSlotSchema = z.object({
749
- key: z.string().min(1),
750
- valueType: z.string().min(1)
751
- });
752
- const assistantItemAuthoringSchema = z.object({
753
- compactHint: z.string().min(1).max(240).optional(),
754
- configSummary: z.string().min(1).max(1e3).optional()
755
- });
756
- const assistantCreationPresetSchema = z.object({ id: z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,119}$/) });
757
- const assistantItemTypeManifestSchema = z.object({
758
- itemType: z.string().min(1),
759
- capabilityVersion: z.string().min(1),
760
- displayName: z.string().min(1),
761
- description: z.string().optional(),
762
- defaultItemKeyPrefix: z.string().min(1).optional(),
763
- create: assistantItemCreateModeSchema,
764
- supportedOperations: z.array(z.enum(SURVEY_OPERATION_KINDS)),
765
- contentSurfaces: z.array(assistantContentSurfaceSchema),
766
- responseSlots: z.array(assistantResponseSlotSchema).optional(),
767
- creationPresets: z.array(assistantCreationPresetSchema).max(100).optional(),
768
- referenceTopics: z.array(z.string().min(1)).optional(),
769
- authoring: assistantItemAuthoringSchema.optional()
770
- });
771
- const surveyAssistantCapabilityManifestSchema = z.object({
772
- digest: z.string().min(1),
773
- itemTypes: z.array(assistantItemTypeManifestSchema)
774
- });
775
- //#endregion
776
- //#region src/protocol/document.ts
777
- const SURVEY_ASSISTANT_PROTOCOL_VERSION = 1;
778
- const surveyAssistantProtocolVersionSchema = z.literal(1);
779
- const surveyDocumentVersionSchema = z.object({
780
- sessionId: z.string().nullable(),
781
- revision: z.number().int().nonnegative(),
782
- historyIndex: z.number().int(),
783
- contentHash: z.string().min(1),
784
- capabilityDigest: z.string().min(1)
785
- });
786
- const surveyEditorUIContextSchema = z.object({
787
- view: z.enum([
788
- "item-editor",
789
- "preview-mode",
790
- "translation-mode",
791
- "asset-manager",
792
- "response-data"
793
- ]),
794
- selectedItemId: z.string().optional(),
795
- responseSlotId: z.string().optional(),
796
- selectedLocale: z.string().min(1),
797
- focusItemId: z.string().optional(),
798
- recentItemIds: z.array(z.string()).max(10).optional(),
799
- activeSurface: z.string().max(120).optional(),
800
- openPanels: z.array(z.string().max(120)).max(12).optional(),
801
- highlights: z.array(z.object({
802
- kind: z.string().min(1).max(80),
803
- itemId: z.string().optional(),
804
- componentId: z.string().optional(),
805
- label: z.string().max(240).optional(),
806
- details: z.string().max(1e3).optional()
807
- })).max(12).optional(),
808
- history: z.object({
809
- currentIndex: z.number().int(),
810
- totalEntries: z.number().int().nonnegative(),
811
- canUndo: z.boolean(),
812
- canRedo: z.boolean(),
813
- recent: z.array(z.object({
814
- index: z.number().int().nonnegative(),
815
- kind: z.enum(["survey-snapshot", "asset-change"]),
816
- label: z.string(),
817
- source: z.enum([
818
- "user",
819
- "system",
820
- "assistant"
821
- ]).optional(),
822
- timestamp: z.number().nonnegative(),
823
- isCurrent: z.boolean()
824
- })).max(12)
825
- }).optional()
826
- });
827
- const rawSurveyItemSchema = z.object({
828
- id: z.string().min(1),
829
- itemType: z.string().min(1)
830
- }).passthrough();
831
- const rawSurveyTranslationsSchema = z.record(z.string(), z.object({ itemTranslations: z.record(z.string(), z.record(z.string(), surveyContentSchema)).optional() }).passthrough());
832
- const rawSurveyDocumentSchema = z.object({
833
- $schema: z.string().min(1),
834
- schemaVersion: z.literal(2),
835
- surveyItems: z.array(rawSurveyItemSchema).min(1),
836
- translations: rawSurveyTranslationsSchema.optional()
837
- }).passthrough();
838
- const surveyDocumentSnapshotSchema = z.object({
839
- protocolVersion: surveyAssistantProtocolVersionSchema,
840
- version: surveyDocumentVersionSchema,
841
- survey: rawSurveyDocumentSchema,
842
- ui: surveyEditorUIContextSchema,
843
- capabilities: surveyAssistantCapabilityManifestSchema,
844
- createdAt: z.string().min(1)
845
- });
846
- const surveyAssistantSnapshotSchema = surveyDocumentSnapshotSchema;
847
- const surveyAssistantSnapshotPayloadSchema = surveyDocumentSnapshotSchema;
848
- const surveyAssistantDraftChangePreconditionSchema = surveyDocumentVersionSchema;
849
- //#endregion
850
- //#region src/protocol/threads.ts
851
- const SURVEY_ASSISTANT_ATTACHMENT_PART_TYPE = "data-survey-assistant-attachment";
852
- const surveyAssistantThreadSchema = z.object({
853
- id: z.string().min(1).max(240),
854
- title: z.string().min(1).max(160),
855
- titleMode: z.enum(["automatic", "manual"]),
856
- createdAt: z.string().datetime(),
857
- updatedAt: z.string().datetime()
858
- });
859
- const surveyAssistantThreadListSchema = z.object({
860
- nextCursor: z.string().min(1).max(240).optional(),
861
- threads: z.array(surveyAssistantThreadSchema)
862
- });
863
- const surveyAssistantThreadTranscriptSchema = z.object({
864
- nextCursor: z.string().min(1).max(240).optional(),
865
- thread: surveyAssistantThreadSchema,
866
- messages: z.array(z.unknown())
867
- });
868
- const createSurveyAssistantThreadInputSchema = z.object({ title: z.string().trim().min(1).max(160).optional() });
869
- const updateSurveyAssistantThreadInputSchema = z.union([z.object({
870
- mode: z.literal("automatic"),
871
- title: z.string().trim().min(1).max(160).optional()
872
- }), z.object({
873
- mode: z.literal("manual").optional(),
874
- title: z.string().trim().min(1).max(160)
875
- })]);
876
- //#endregion
877
- //#region src/protocol/tasks.ts
878
- const surveyAssistantTaskInvocationModeSchema = z.enum(["user", "background"]);
879
- const surveyAssistantSuggestedTextSchema = z.object({ text: z.string().min(1) });
880
- const surveyAssistantKeySuggestionCategorySchema = z.enum([
881
- "survey-pattern",
882
- "compact",
883
- "preferred",
884
- "fair"
885
- ]);
886
- const surveyAssistantKeySuggestionSchema = surveyAssistantSuggestedTextSchema.extend({
887
- category: surveyAssistantKeySuggestionCategorySchema,
888
- rationale: z.string().optional()
889
- });
890
- const surveyAssistantSuggestResponseNameInputSchema = z.object({
891
- itemId: z.string().min(1),
892
- slotId: z.string().min(1),
893
- draftName: z.string(),
894
- currentName: z.string(),
895
- existingNames: z.array(z.string()),
896
- maxSuggestions: z.number().int().positive().optional()
897
- });
898
- const surveyAssistantSuggestResponseNameResultSchema = z.object({ suggestions: z.array(surveyAssistantKeySuggestionSchema) });
899
- const surveyAssistantSuggestItemLabelInputSchema = z.object({
900
- itemId: z.string().min(1),
901
- draftLabel: z.string(),
902
- itemType: z.string().min(1),
903
- locale: z.string().min(1).optional(),
904
- maxSuggestions: z.number().int().positive().optional()
905
- });
906
- const surveyAssistantSuggestItemLabelResultSchema = z.object({ suggestions: z.array(surveyAssistantSuggestedTextSchema) });
907
- const surveyAssistantTranslateContentEntrySchema = z.object({
908
- id: z.string().min(1),
909
- text: z.string(),
910
- kind: z.string().min(1)
911
- });
912
- const surveyAssistantTranslateContentInputSchema = z.object({
913
- sourceLocale: z.string().min(1),
914
- targetLocales: z.array(z.string().min(1)).min(1),
915
- entries: z.array(surveyAssistantTranslateContentEntrySchema).min(1)
916
- });
917
- const surveyAssistantTranslateContentResultSchema = z.object({ translations: z.record(z.string(), z.record(z.string(), z.string())) });
918
- const surveyAssistantTaskItemSummarySchema = z.object({
919
- id: z.string().min(1),
920
- editorName: z.string(),
921
- breadcrumb: z.string(),
922
- itemType: z.string().min(1),
923
- itemLabel: z.string().optional(),
924
- visibleText: z.array(z.object({
925
- locale: z.string().min(1),
926
- contentKey: z.string().min(1),
927
- text: z.string()
928
- })),
929
- visibleTextTruncated: z.boolean()
930
- });
931
- const surveyAssistantSuggestResponseSettingsInputSchema = z.object({
932
- slotIds: z.array(z.string().min(1)).min(1).max(200),
933
- category: surveyAssistantKeySuggestionCategorySchema.default("fair")
934
- });
935
- const surveyAssistantSuggestResponseSettingsResultSchema = responseSettingsChangesSchema;
936
- const namingRelationshipSchema = z.enum([
937
- "sibling",
938
- "same-type",
939
- "survey"
940
- ]);
941
- const surveyAssistantTaskContextSchema = z.object({
942
- document: z.object({
943
- revision: z.number().int().nonnegative(),
944
- contentHash: z.string().min(1),
945
- capabilityDigest: z.string().min(1)
946
- }),
947
- survey: z.object({
948
- key: z.string().optional(),
949
- locales: z.array(z.string()),
950
- itemCount: z.number().int().nonnegative(),
951
- selectedLocale: z.string().min(1)
952
- }),
953
- responseVariables: z.array(z.record(z.string(), z.unknown())).optional(),
954
- existingVariableNames: z.array(z.string()).optional(),
955
- responseOwners: z.array(z.record(z.string(), z.unknown())).optional(),
956
- focus: z.object({
957
- item: surveyAssistantTaskItemSummarySchema,
958
- parent: surveyAssistantTaskItemSummarySchema.optional(),
959
- ancestorPath: z.array(surveyAssistantTaskItemSummarySchema),
960
- siblingNames: z.array(z.string()),
961
- siblingItems: z.array(surveyAssistantTaskItemSummarySchema),
962
- siblingItemCount: z.number().int().nonnegative(),
963
- siblingItemsTruncated: z.boolean(),
964
- relatedItems: z.array(surveyAssistantTaskItemSummarySchema),
965
- relatedItemCount: z.number().int().nonnegative(),
966
- relatedItemsTruncated: z.boolean()
967
- }).optional(),
968
- naming: z.object({
969
- keyExamples: z.array(z.object({
970
- itemId: z.string().min(1),
971
- itemType: z.string().min(1),
972
- key: z.string(),
973
- relationship: namingRelationshipSchema
974
- })),
975
- keyExampleCount: z.number().int().nonnegative(),
976
- keyExamplesTruncated: z.boolean(),
977
- labelExamples: z.array(z.object({
978
- itemId: z.string().min(1),
979
- itemType: z.string().min(1),
980
- key: z.string(),
981
- label: z.string(),
982
- relationship: namingRelationshipSchema
983
- })),
984
- labelExampleCount: z.number().int().nonnegative(),
985
- labelExamplesTruncated: z.boolean()
986
- }).optional(),
987
- translation: z.object({
988
- examples: z.array(z.object({
989
- itemId: z.string().min(1),
990
- contentKey: z.string().min(1),
991
- values: z.record(z.string(), z.string())
992
- })),
993
- exampleCount: z.number().int().nonnegative(),
994
- examplesTruncated: z.boolean()
995
- }).optional()
996
- });
997
- const taskRequestBase = {
998
- context: surveyAssistantTaskContextSchema,
999
- mode: surveyAssistantTaskInvocationModeSchema.optional(),
1000
- modelId: z.string().trim().min(1).max(240).optional(),
1001
- resourceId: z.string().trim().min(1).max(240).optional(),
1002
- surveyId: z.string().trim().min(1).max(240).optional()
1003
- };
1004
- const surveyAssistantTaskRequestSchema = z.discriminatedUnion("taskId", [
1005
- z.object({
1006
- ...taskRequestBase,
1007
- taskId: z.literal("suggest-response-settings"),
1008
- input: surveyAssistantSuggestResponseSettingsInputSchema
1009
- }),
1010
- z.object({
1011
- ...taskRequestBase,
1012
- taskId: z.literal("suggest-response-name"),
1013
- input: surveyAssistantSuggestResponseNameInputSchema
1014
- }),
1015
- z.object({
1016
- ...taskRequestBase,
1017
- taskId: z.literal("suggest-item-label"),
1018
- input: surveyAssistantSuggestItemLabelInputSchema
1019
- }),
1020
- z.object({
1021
- ...taskRequestBase,
1022
- taskId: z.literal("translate-content"),
1023
- input: surveyAssistantTranslateContentInputSchema
1024
- })
1025
- ]);
1026
- //#endregion
1027
- //#region src/protocol/models.ts
1028
- const surveyAssistantModelOptionSchema = z.object({
1029
- id: z.string().trim().min(1).max(240),
1030
- label: z.string().trim().min(1).max(240)
1031
- });
1032
- const surveyAssistantModelCatalogSchema = z.object({
1033
- defaultModelId: z.string().trim().min(1).max(240),
1034
- models: z.array(surveyAssistantModelOptionSchema).min(1)
1035
- }).refine(({ defaultModelId, models }) => models.some((model) => model.id === defaultModelId), "The default model must be present in the model catalog.");
1036
- //#endregion
1037
- //#region src/protocol/lifecycle.ts
1038
- const surveyAssistantChangeVerificationReasonValues = [
1039
- "substantial-change",
1040
- "complex-change",
1041
- "bounded-preview",
1042
- "new-audit-findings"
1043
- ];
1044
- const surveyAssistantTurnTerminationReasonValues = [
1045
- "client-abort",
1046
- "first-response-timeout",
1047
- "idle-timeout",
1048
- "max-duration",
1049
- "max-steps",
1050
- "length-limit",
1051
- "content-filter",
1052
- "provider-error",
1053
- "stream-error",
1054
- "incomplete-response"
1055
- ];
1056
- const SURVEY_ASSISTANT_TURN_FINAL_DATA_NAME = "survey-assistant-turn-final";
1057
- const SURVEY_ASSISTANT_TURN_FINAL_PART_TYPE = `data-${SURVEY_ASSISTANT_TURN_FINAL_DATA_NAME}`;
1058
- const surveyAssistantApplyOutcomeStatusValues = [
1059
- "not-applied",
1060
- "apply-failed",
1061
- "settle-failed"
1062
- ];
1063
- const surveyChangeSetSchema = z.object({
1064
- protocolVersion: surveyAssistantProtocolVersionSchema.default(1),
1065
- id: z.string().min(1),
1066
- turnId: z.string().min(1),
1067
- status: z.enum(["validated", "rejected"]),
1068
- summary: z.string().min(1).max(500),
1069
- operations: z.array(surveyOperationSchema),
1070
- supersedesChangeIds: z.array(z.string().min(1)).max(100).optional(),
1071
- pendingRepairs: z.array(z.object({
1072
- changeId: z.string().min(1),
1073
- targets: z.array(z.string()),
1074
- requiresExplicitRetry: z.boolean(),
1075
- allowsAcknowledgment: z.boolean().optional()
1076
- })).optional(),
1077
- precondition: surveyDocumentVersionSchema.optional(),
1078
- postChange: z.object({
1079
- version: surveyDocumentVersionSchema,
1080
- itemCount: z.number().int().nonnegative(),
1081
- localeCount: z.number().int().nonnegative(),
1082
- locales: z.array(z.string().min(1)).max(32),
1083
- targetCount: z.number().int().nonnegative(),
1084
- touchedTargets: z.array(z.string().min(1)).max(16),
1085
- touchedItemCount: z.number().int().nonnegative(),
1086
- availableTouchedItemCount: z.number().int().nonnegative(),
1087
- touchedItems: z.array(z.object({
1088
- itemId: z.string().min(1),
1089
- itemType: z.string().min(1),
1090
- editorName: z.string().min(1),
1091
- breadcrumb: z.string().min(1),
1092
- itemLabel: z.string().optional(),
1093
- placement: z.object({
1094
- parentItemId: z.string().min(1),
1095
- index: z.number().int().nonnegative(),
1096
- siblingCount: z.number().int().nonnegative(),
1097
- previousItemId: z.string().min(1).optional(),
1098
- nextItemId: z.string().min(1).optional(),
1099
- shuffled: z.boolean()
1100
- }).optional(),
1101
- childOrder: z.object({
1102
- itemIds: z.array(z.string().min(1)).max(16),
1103
- total: z.number().int().nonnegative(),
1104
- truncated: z.boolean(),
1105
- shuffled: z.boolean()
1106
- }).optional(),
1107
- translationCount: z.number().int().nonnegative(),
1108
- translations: z.array(z.object({
1109
- locale: z.string().min(1),
1110
- contentKey: z.string().min(1),
1111
- textPreview: z.string(),
1112
- textLength: z.number().int().nonnegative(),
1113
- truncated: z.boolean()
1114
- })).max(12),
1115
- responseSlotCount: z.number().int().nonnegative(),
1116
- responseSlots: z.array(z.string().min(1)).max(12),
1117
- responseVariables: z.array(z.unknown()).max(12).optional()
1118
- })).max(6),
1119
- truncated: z.boolean()
1120
- }).optional(),
1121
- verification: z.object({
1122
- required: z.boolean(),
1123
- reasons: z.array(z.enum(surveyAssistantChangeVerificationReasonValues)).min(1).max(surveyAssistantChangeVerificationReasonValues.length),
1124
- newAuditFindingCount: z.number().int().nonnegative(),
1125
- auditFindings: z.array(z.object({
1126
- code: z.string().min(1),
1127
- severity: z.enum([
1128
- "error",
1129
- "warning",
1130
- "info"
1131
- ]),
1132
- category: z.enum([
1133
- "structure",
1134
- "content",
1135
- "localization",
1136
- "logic",
1137
- "responses",
1138
- "assets",
1139
- "quality"
1140
- ]),
1141
- itemId: z.string().min(1).optional(),
1142
- locale: z.string().min(1).optional(),
1143
- contentKey: z.string().min(1).optional(),
1144
- messagePreview: z.string(),
1145
- messageLength: z.number().int().nonnegative(),
1146
- truncated: z.boolean()
1147
- })).max(8),
1148
- truncated: z.boolean()
1149
- }).optional(),
1150
- validation: surveyValidationResultSchema,
1151
- createdAt: z.string().min(1)
1152
- });
1153
- const surveyAssistantTurnTerminationReasonSchema = z.enum(surveyAssistantTurnTerminationReasonValues);
1154
- const surveyAssistantTurnFinalSchema = z.object({
1155
- protocolVersion: surveyAssistantProtocolVersionSchema,
1156
- turnId: z.string().min(1),
1157
- status: z.enum([
1158
- "completed",
1159
- "failed",
1160
- "aborted"
1161
- ]),
1162
- executableChangeSetIds: z.array(z.string().min(1)),
1163
- blockedChangeSetIds: z.array(z.string().min(1)).max(100).optional(),
1164
- startedAt: z.string().datetime().optional(),
1165
- durationMs: z.number().int().nonnegative().optional(),
1166
- terminationReason: surveyAssistantTurnTerminationReasonSchema.optional(),
1167
- createdAt: z.string().min(1)
1168
- }).superRefine((value, context) => {
1169
- if (value.status !== "completed" && value.executableChangeSetIds.length > 0) context.addIssue({
1170
- code: "custom",
1171
- message: "Failed or aborted turns cannot authorize executable change sets.",
1172
- path: ["executableChangeSetIds"]
1173
- });
1174
- if (new Set(value.executableChangeSetIds).size !== value.executableChangeSetIds.length) context.addIssue({
1175
- code: "custom",
1176
- message: "Executable change-set ids must be unique.",
1177
- path: ["executableChangeSetIds"]
1178
- });
1179
- const blockedChangeSetIds = value.blockedChangeSetIds ?? [];
1180
- if (new Set(blockedChangeSetIds).size !== blockedChangeSetIds.length) context.addIssue({
1181
- code: "custom",
1182
- message: "Blocked change-set ids must be unique.",
1183
- path: ["blockedChangeSetIds"]
1184
- });
1185
- if (blockedChangeSetIds.length > 0 && value.executableChangeSetIds.length > 0) context.addIssue({
1186
- code: "custom",
1187
- message: "A blocked turn cannot authorize executable change sets.",
1188
- path: ["executableChangeSetIds"]
1189
- });
1190
- if (value.status === "completed" && value.terminationReason !== void 0) context.addIssue({
1191
- code: "custom",
1192
- message: "Completed turns cannot have a failure or abort reason.",
1193
- path: ["terminationReason"]
1194
- });
1195
- });
1196
- const surveyAssistantApplyPolicySchema = z.enum([
1197
- "auto",
1198
- "review",
1199
- "deny"
1200
- ]);
1201
- const surveyApplyStatusSchema = z.enum([
1202
- "applied",
1203
- "rejected",
1204
- "stale",
1205
- "failed"
1206
- ]);
1207
- const surveyApplyResultSchema = z.object({
1208
- status: surveyApplyStatusSchema,
1209
- changeId: z.string(),
1210
- summary: z.string(),
1211
- message: z.string(),
1212
- appliedOperations: z.number().int().nonnegative(),
1213
- issues: z.array(surveyValidationIssueSchema).optional()
1214
- });
1215
- const surveyBatchApplyResultSchema = z.object({ results: z.array(surveyApplyResultSchema) });
1216
- const surveyAssistantApplyOutcomeSchema = z.object({
1217
- protocolVersion: surveyAssistantProtocolVersionSchema,
1218
- turnId: z.string().min(1),
1219
- status: z.enum(surveyAssistantApplyOutcomeStatusValues),
1220
- message: z.string().min(1).max(2e3),
1221
- results: z.array(z.object({
1222
- status: surveyApplyStatusSchema,
1223
- changeId: z.string().min(1).max(240),
1224
- summary: z.string().min(1).max(500),
1225
- message: z.string().min(1).max(2e3),
1226
- appliedOperations: z.number().int().nonnegative()
1227
- })).max(100).optional(),
1228
- preparedChanges: z.array(z.object({
1229
- changeId: z.string().min(1).max(240),
1230
- status: z.enum(["validated", "rejected"]),
1231
- summary: z.string().min(1).max(500),
1232
- operationCount: z.number().int().nonnegative()
1233
- })).max(24).optional(),
1234
- createdAt: z.string().min(1)
1235
- });
1236
- const applyReceiptSchema = z.object({
1237
- protocolVersion: surveyAssistantProtocolVersionSchema,
1238
- turnId: z.string().min(1),
1239
- changeSetId: z.string().min(1),
1240
- beforeVersion: surveyDocumentVersionSchema,
1241
- afterVersion: surveyDocumentVersionSchema.optional(),
1242
- status: surveyApplyStatusSchema,
1243
- operationCount: z.number().int().nonnegative(),
1244
- commit: z.object({
1245
- id: z.string().min(1).optional(),
1246
- index: z.number().int().optional()
1247
- }).optional(),
1248
- issues: z.array(surveyValidationIssueSchema).optional(),
1249
- createdAt: z.string().min(1)
1250
- });
1251
- const surveyAssistantDraftChangeEventSchema = surveyChangeSetSchema;
1252
- //#endregion
1253
- export { addChoiceOptionOperationSchema as $, surveyAssistantTranslateContentResultSchema as A, surveyContentSchema as At, surveyAssistantProtocolVersionSchema as B, MAX_USER_ERROR_MESSAGE_LENGTH as Bt, surveyAssistantSuggestedTextSchema as C, surveyValidationIssueSchema as Ct, surveyAssistantTaskRequestSchema as D, updateItemLabelOperationSchema as Dt, surveyAssistantTaskItemSummarySchema as E, updateItemColorOperationSchema as Et, surveyAssistantThreadTranscriptSchema as F, isSurveyAssistantErrorRetryable as Ft, surveyEditorUIContextSchema as G, surveyAssistantSnapshotSchema as H, isSurveyAssistantSensitiveMetadataKey as Ht, updateSurveyAssistantThreadInputSchema as I, parseSurveyAssistantError as It, assistantItemCreateModeSchema as J, assistantContentSurfaceSchema as K, SURVEY_ASSISTANT_PROTOCOL_VERSION as L, serializeSurveyAssistantError as Lt, createSurveyAssistantThreadInputSchema as M, responseNamingEditSchema as Mt, surveyAssistantThreadListSchema as N, responseSettingsChangesSchema as Nt, surveyAssistantTranslateContentEntrySchema as O, updateItemTranslationOperationSchema as Ot, surveyAssistantThreadSchema as P, responseSettingsEditSchema as Pt, SURVEY_OPERATION_KINDS as Q, rawSurveyDocumentSchema as R, surveyAssistantErrorCodeSchema as Rt, surveyAssistantSuggestResponseSettingsResultSchema as S, surveyPatchOperationSchema as St, surveyAssistantTaskInvocationModeSchema as T, updateChoiceOptionLabelOperationSchema as Tt, surveyDocumentSnapshotSchema as U, redactSurveyAssistantDiagnosticSecrets as Ut, surveyAssistantSnapshotPayloadSchema as V, getSurveyAssistantEmbeddedBinaryMarker as Vt, surveyDocumentVersionSchema as W, sanitizeSurveyAssistantDiagnosticText as Wt, assistantResponseSlotSchema as X, assistantItemTypeManifestSchema as Y, surveyAssistantCapabilityManifestSchema as Z, surveyAssistantSuggestItemLabelInputSchema as _, surveyAssistantValidationIssueSchema as _t, surveyApplyStatusSchema as a, reorderChoiceOptionsOperationSchema as at, surveyAssistantSuggestResponseNameResultSchema as b, surveyOperationSchema as bt, surveyAssistantDraftChangeEventSchema as c, surveyAssistantOperationSchema as ct, surveyBatchApplyResultSchema as d, surveyAssistantReorderChoiceOptionsOperationSchema as dt, createItemOperationSchema as et, surveyChangeSetSchema as f, surveyAssistantSurveyJsonPatchOperationSchema as ft, surveyAssistantKeySuggestionSchema as g, surveyAssistantUpdateItemTranslationOperationSchema as gt, surveyAssistantKeySuggestionCategorySchema as h, surveyAssistantUpdateItemLabelOperationSchema as ht, surveyApplyResultSchema as i, removeItemOperationSchema as it, SURVEY_ASSISTANT_ATTACHMENT_PART_TYPE as j, responseExportSettingsSchema as jt, surveyAssistantTranslateContentInputSchema as k, jsonValueSchema as kt, surveyAssistantTurnFinalSchema as l, surveyAssistantRemoveChoiceOptionOperationSchema as lt, surveyAssistantModelOptionSchema as m, surveyAssistantUpdateItemColorOperationSchema as mt, SURVEY_ASSISTANT_TURN_FINAL_PART_TYPE as n, patchItemConfigOperationSchema as nt, surveyAssistantApplyOutcomeSchema as o, surveyAssistantAddChoiceOptionOperationSchema as ot, surveyAssistantModelCatalogSchema as p, surveyAssistantUpdateChoiceOptionLabelOperationSchema as pt, assistantItemAuthoringSchema as q, applyReceiptSchema as r, removeChoiceOptionOperationSchema as rt, surveyAssistantApplyPolicySchema as s, surveyAssistantCreateItemOperationSchema as st, SURVEY_ASSISTANT_TURN_FINAL_DATA_NAME as t, jsonPatchOperationSchema as tt, surveyAssistantTurnTerminationReasonSchema as u, surveyAssistantRemoveItemOperationSchema as ut, surveyAssistantSuggestItemLabelResultSchema as v, surveyAssistantValidationResultSchema as vt, surveyAssistantTaskContextSchema as w, surveyValidationResultSchema as wt, surveyAssistantSuggestResponseSettingsInputSchema as x, surveyOperationSchemasByKind as xt, surveyAssistantSuggestResponseNameInputSchema as y, surveyJsonPatchOperationSchema as yt, surveyAssistantDraftChangePreconditionSchema as z, surveyAssistantErrorInfoSchema as zt };
1254
-
1255
- //# sourceMappingURL=protocol-CF4Bh_Ch.mjs.map