@case-framework/survey-assistant 0.6.0 → 0.8.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 (135) hide show
  1. package/README.md +67 -7
  2. package/dist/{attachments-B0hg3vpT.mjs → attachments-BuNni5vB.mjs} +1 -1
  3. package/dist/{attachments-B0hg3vpT.mjs.map → attachments-BuNni5vB.mjs.map} +1 -1
  4. package/dist/{authoring-references-CW38pYzK.mjs → authoring-references-DbuOKerg.mjs} +13 -4
  5. package/dist/authoring-references-DbuOKerg.mjs.map +1 -0
  6. package/dist/{capabilities-DVTfogjv.d.mts → capabilities-CmeeAjEc.d.mts} +3 -4
  7. package/dist/capabilities-CmeeAjEc.d.mts.map +1 -0
  8. package/dist/capabilities-DCMA71PP.mjs +58 -0
  9. package/dist/capabilities-DCMA71PP.mjs.map +1 -0
  10. package/dist/capabilities-default.d.mts +13 -12
  11. package/dist/capabilities-default.d.mts.map +1 -1
  12. package/dist/capabilities-default.mjs +2 -414
  13. package/dist/{constants-BMGTgfjv.d.mts → constants-B6HzpEsx.d.mts} +7 -28
  14. package/dist/constants-B6HzpEsx.d.mts.map +1 -0
  15. package/dist/{constants-0UHGFcRJ.mjs → constants-Ct-vv9cu.mjs} +1 -1
  16. package/dist/{constants-0UHGFcRJ.mjs.map → constants-Ct-vv9cu.mjs.map} +1 -1
  17. package/dist/controller-proxy-D7uQfm5f.d.mts +65 -0
  18. package/dist/controller-proxy-D7uQfm5f.d.mts.map +1 -0
  19. package/dist/{controller-proxy-DMTqer6T.mjs → controller-proxy-DEeFl9IA.mjs} +29 -26
  20. package/dist/controller-proxy-DEeFl9IA.mjs.map +1 -0
  21. package/dist/default-fhSon2RM.mjs +760 -0
  22. package/dist/default-fhSon2RM.mjs.map +1 -0
  23. package/dist/{digest-SJmoYVaK.d.mts → digest-C39WyAWG.d.mts} +2 -3
  24. package/dist/digest-C39WyAWG.d.mts.map +1 -0
  25. package/dist/digest.d.mts +1 -1
  26. package/dist/digest.mjs.map +1 -1
  27. package/dist/{engine-CQwOAcwK.mjs → engine-nXoCWYpQ.mjs} +2821 -2018
  28. package/dist/engine-nXoCWYpQ.mjs.map +1 -0
  29. package/dist/engine.d.mts +3 -3
  30. package/dist/engine.mjs +3 -3
  31. package/dist/{fair-guidance-CRYCRxQm.mjs → fair-guidance-BmO4PswW.mjs} +1 -1
  32. package/dist/{fair-guidance-CRYCRxQm.mjs.map → fair-guidance-BmO4PswW.mjs.map} +1 -1
  33. package/dist/{index-D6nqkz0O.d.mts → index-Ciq7vHIs.d.mts} +121 -197
  34. package/dist/index-Ciq7vHIs.d.mts.map +1 -0
  35. package/dist/{index-DvTqML-0.d.mts → index-D7wT6P3t.d.mts} +294 -63
  36. package/dist/index-D7wT6P3t.d.mts.map +1 -0
  37. package/dist/index-WB5kfnz0.d.mts +348 -0
  38. package/dist/index-WB5kfnz0.d.mts.map +1 -0
  39. package/dist/{index-B0lxsAzx.d.mts → index-r5riv4md.d.mts} +50 -29
  40. package/dist/index-r5riv4md.d.mts.map +1 -0
  41. package/dist/{lifecycle-BmGAIUlv.d.mts → lifecycle-Dm8u7QFh.d.mts} +40 -18
  42. package/dist/lifecycle-Dm8u7QFh.d.mts.map +1 -0
  43. package/dist/{memory-thread-repository-CjFGVNZh.mjs → memory-thread-repository-DAnOGIB3.mjs} +89 -34
  44. package/dist/memory-thread-repository-DAnOGIB3.mjs.map +1 -0
  45. package/dist/{protocol-DJUP4gc0.mjs → protocol-CF4Bh_Ch.mjs} +182 -50
  46. package/dist/protocol-CF4Bh_Ch.mjs.map +1 -0
  47. package/dist/protocol.d.mts +4 -4
  48. package/dist/protocol.mjs +3 -3
  49. package/dist/react-C_GY-Fsc.mjs +1727 -0
  50. package/dist/react-C_GY-Fsc.mjs.map +1 -0
  51. package/dist/react-integration.d.mts +2 -2
  52. package/dist/react-integration.mjs +2 -2
  53. package/dist/react.d.mts +3 -3
  54. package/dist/react.mjs +3 -3
  55. package/dist/references/assistant-operations.md +143 -68
  56. package/dist/references/core-rules.md +6 -3
  57. package/dist/references/embedded-forms.md +34 -14
  58. package/dist/references/expressions.md +238 -48
  59. package/dist/references/fair-by-design.md +9 -9
  60. package/dist/references/item-types.md +306 -72
  61. package/dist/references/localization.md +5 -4
  62. package/dist/references/response-variables.md +38 -0
  63. package/dist/references/rich-text-content.md +60 -27
  64. package/dist/references/source-material-surveys.md +13 -5
  65. package/dist/references/survey-data-model.md +32 -9
  66. package/dist/{request-context-BjTHNcDd.mjs → request-context-Dg4jSwN1.mjs} +4 -10
  67. package/dist/request-context-Dg4jSwN1.mjs.map +1 -0
  68. package/dist/{request-guardrails-TmgQtqp4.mjs → request-guardrails-C0ugBOp0.mjs} +6 -5
  69. package/dist/request-guardrails-C0ugBOp0.mjs.map +1 -0
  70. package/dist/server-agent.d.mts +53 -44
  71. package/dist/server-agent.d.mts.map +1 -1
  72. package/dist/server-agent.mjs +48 -27
  73. package/dist/server-agent.mjs.map +1 -1
  74. package/dist/server-runtime.d.mts +36 -49
  75. package/dist/server-runtime.d.mts.map +1 -1
  76. package/dist/server-runtime.mjs +17 -12
  77. package/dist/server-runtime.mjs.map +1 -1
  78. package/dist/server-tasks.d.mts +2 -2
  79. package/dist/server-tasks.mjs +2 -313
  80. package/dist/server-tools.d.mts +1 -1
  81. package/dist/server-tools.mjs +1 -1
  82. package/dist/server.d.mts +13 -36
  83. package/dist/server.d.mts.map +1 -1
  84. package/dist/server.mjs +5 -5
  85. package/dist/server.mjs.map +1 -1
  86. package/dist/storage-postgres.d.mts +9 -25
  87. package/dist/storage-postgres.d.mts.map +1 -1
  88. package/dist/storage-postgres.mjs +5 -4
  89. package/dist/storage-postgres.mjs.map +1 -1
  90. package/dist/{tasks-DxzD25Zc.d.mts → tasks-B9h3LPam.d.mts} +19 -35
  91. package/dist/tasks-B9h3LPam.d.mts.map +1 -0
  92. package/dist/tasks-BZEiwgxA.mjs +396 -0
  93. package/dist/tasks-BZEiwgxA.mjs.map +1 -0
  94. package/dist/thread-documents-DrHbaXqP.d.mts +119 -0
  95. package/dist/thread-documents-DrHbaXqP.d.mts.map +1 -0
  96. package/dist/{thread-handlers-AbQbt4sX.d.mts → thread-handlers-Bef0td9N.d.mts} +10 -40
  97. package/dist/thread-handlers-Bef0td9N.d.mts.map +1 -0
  98. package/dist/{tools-CFh35R4d.mjs → tools-CEsv-WoO.mjs} +705 -578
  99. package/dist/tools-CEsv-WoO.mjs.map +1 -0
  100. package/dist/ui.css +1 -1
  101. package/dist/ui.d.mts +17 -55
  102. package/dist/ui.d.mts.map +1 -1
  103. package/dist/ui.mjs +759 -171
  104. package/dist/ui.mjs.map +1 -1
  105. package/docs/integration.md +51 -1
  106. package/package.json +49 -42
  107. package/dist/authoring-references-CW38pYzK.mjs.map +0 -1
  108. package/dist/capabilities-DVTfogjv.d.mts.map +0 -1
  109. package/dist/capabilities-default.mjs.map +0 -1
  110. package/dist/constants-BMGTgfjv.d.mts.map +0 -1
  111. package/dist/controller-proxy-DMTqer6T.mjs.map +0 -1
  112. package/dist/controller-proxy-mRvez2qw.d.mts +0 -85
  113. package/dist/controller-proxy-mRvez2qw.d.mts.map +0 -1
  114. package/dist/digest-SJmoYVaK.d.mts.map +0 -1
  115. package/dist/engine-CQwOAcwK.mjs.map +0 -1
  116. package/dist/form-authoring-kQDgC5oz.mjs +0 -155
  117. package/dist/form-authoring-kQDgC5oz.mjs.map +0 -1
  118. package/dist/index-B0lxsAzx.d.mts.map +0 -1
  119. package/dist/index-BS-Xjk1h.d.mts +0 -224
  120. package/dist/index-BS-Xjk1h.d.mts.map +0 -1
  121. package/dist/index-D6nqkz0O.d.mts.map +0 -1
  122. package/dist/index-DvTqML-0.d.mts.map +0 -1
  123. package/dist/lifecycle-BmGAIUlv.d.mts.map +0 -1
  124. package/dist/memory-thread-repository-CjFGVNZh.mjs.map +0 -1
  125. package/dist/protocol-DJUP4gc0.mjs.map +0 -1
  126. package/dist/react-Dqlmasrs.mjs +0 -768
  127. package/dist/react-Dqlmasrs.mjs.map +0 -1
  128. package/dist/request-context-BjTHNcDd.mjs.map +0 -1
  129. package/dist/request-guardrails-TmgQtqp4.mjs.map +0 -1
  130. package/dist/server-tasks.mjs.map +0 -1
  131. package/dist/tasks-DxzD25Zc.d.mts.map +0 -1
  132. package/dist/thread-documents-rmd6nyX9.d.mts +0 -107
  133. package/dist/thread-documents-rmd6nyX9.d.mts.map +0 -1
  134. package/dist/thread-handlers-AbQbt4sX.d.mts.map +0 -1
  135. package/dist/tools-CFh35R4d.mjs.map +0 -1
@@ -1,414 +1,2 @@
1
- import { a as normalizeFormAuthoringConfig, i as isValidSimpleFormConfig, l as createSurveyAssistantCapabilities } from "./form-authoring-kQDgC5oz.mjs";
2
- import { ValueType } from "@case-framework/survey-core";
3
- //#region src/capabilities/default.ts
4
- const COMMON_OPERATIONS = [
5
- "create-item",
6
- "update-item-key",
7
- "update-item-label",
8
- "update-item-color",
9
- "update-item-translation",
10
- "update-placed-image",
11
- "patch-item-config",
12
- "remove-item",
13
- "move-item",
14
- "survey-json-patch"
15
- ];
16
- const QUESTION_CONTENT_SURFACES = [
17
- {
18
- key: "title",
19
- role: "primary",
20
- format: "rich",
21
- requiredOnCreate: true,
22
- aliases: [
23
- "content",
24
- "label",
25
- "prompt",
26
- "question",
27
- "text"
28
- ]
29
- },
30
- {
31
- key: "subtitle",
32
- role: "secondary",
33
- format: "rich",
34
- aliases: ["subheading", "subtext"]
35
- },
36
- {
37
- key: "topContent",
38
- role: "secondary",
39
- format: "rich",
40
- aliases: ["preContent", "preResponse"]
41
- },
42
- {
43
- key: "bottomContent",
44
- role: "secondary",
45
- format: "rich",
46
- aliases: ["postContent", "postResponse"]
47
- },
48
- {
49
- key: "cardFooter",
50
- role: "secondary",
51
- format: "rich",
52
- aliases: ["footer"]
53
- }
54
- ];
55
- const FIELD_CONTENT_SURFACES = [
56
- "label",
57
- "description",
58
- "error",
59
- "placeholder",
60
- "unit",
61
- "checkedLabel",
62
- "uncheckedLabel"
63
- ].map((key) => ({
64
- key: `fields.<fieldId>.${key}`,
65
- role: key === "error" ? "validation" : "field",
66
- format: "rich",
67
- pattern: true
68
- }));
69
- const createManifest = (manifest) => ({
70
- capabilityVersion: "1",
71
- ...manifest
72
- });
73
- const STRUCTURE_REFERENCE = {
74
- topic: "item-types",
75
- markdown: "Groups are containers. Create a group without child ids, then create or move children through separate operations. Page breaks are standalone structural boundaries."
76
- };
77
- const QUESTION_REFERENCE = {
78
- topic: "item-types",
79
- markdown: "Question titles and supporting text are translations. Configuration stores response behavior; respondent-visible option and field labels use the declared dynamic content surfaces."
80
- };
81
- const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
82
- const withMaterializedConfig = (item, defaults) => ({
83
- ...item,
84
- config: {
85
- ...defaults,
86
- ...isRecord(item.config) ? item.config : {}
87
- }
88
- });
89
- const materializeGroupCreate = (item) => withMaterializedConfig(item, {
90
- items: [],
91
- shuffleItems: false
92
- });
93
- const materializeEmptyConfigCreate = (item) => withMaterializedConfig(item, {});
94
- const materializeChoiceCreate = (item) => normalizeEmbeddedFormAuthoringModes({
95
- ...item,
96
- config: {
97
- ...isRecord(item.config) ? item.config : {},
98
- id: item.id,
99
- maxSelection: isRecord(item.config) && "maxSelection" in item.config ? item.config.maxSelection : 1,
100
- shuffleOptions: isRecord(item.config) && "shuffleOptions" in item.config ? item.config.shuffleOptions : false,
101
- options: isRecord(item.config) && Array.isArray(item.config.options) ? item.config.options : []
102
- }
103
- });
104
- const materializeFormCreate = (item) => ({
105
- ...item,
106
- config: normalizeFormAuthoringConfig({
107
- fieldGroups: [],
108
- ...isRecord(item.config) ? item.config : {},
109
- id: item.id
110
- })
111
- });
112
- const getFieldValueType = (field) => {
113
- switch (field.type) {
114
- case "number":
115
- case "slider": return ValueType.number;
116
- case "datepicker": return ValueType.date;
117
- case "switch": return ValueType.boolean;
118
- default: return ValueType.string;
119
- }
120
- };
121
- const deriveFormResponseSlots = (config, prefix) => {
122
- if (!isRecord(config) || !Array.isArray(config.fieldGroups)) return {};
123
- const slots = {};
124
- for (const group of config.fieldGroups.filter(isRecord)) {
125
- if (!Array.isArray(group.fields)) continue;
126
- for (const field of group.fields.filter(isRecord)) {
127
- if (typeof field.key !== "string" || field.key.length === 0) continue;
128
- slots[prefix ? `${prefix}.${field.key}` : field.key] = getFieldValueType(field);
129
- }
130
- }
131
- return slots;
132
- };
133
- const deriveChoiceResponseSlots = (item) => {
134
- const config = isRecord(item.config) ? item.config : {};
135
- const slots = { [typeof config.id === "string" && config.id.length > 0 ? config.id : item.id]: config.maxSelection === 1 ? ValueType.reference : ValueType.referenceArray };
136
- if (Array.isArray(config.options)) for (const option of config.options.filter(isRecord)) {
137
- if (typeof option.id !== "string" || !option.embeddedForm) continue;
138
- Object.assign(slots, deriveFormResponseSlots(option.embeddedForm, `embedded.${option.id}`));
139
- }
140
- return slots;
141
- };
142
- const normalizeEmbeddedFormAuthoringModes = (item) => {
143
- if (!isRecord(item.config) || !Array.isArray(item.config.options)) return item;
144
- return {
145
- ...item,
146
- config: {
147
- ...item.config,
148
- options: item.config.options.map((option) => {
149
- if (!isRecord(option) || !isRecord(option.embeddedForm)) return option;
150
- return {
151
- ...option,
152
- embeddedForm: normalizeFormAuthoringConfig(option.embeddedForm)
153
- };
154
- })
155
- }
156
- };
157
- };
158
- const getSimpleFormValidationIssues = (config, subject) => isValidSimpleFormConfig(config) ? [] : [{
159
- severity: "error",
160
- code: "invalid-simple-form-structure",
161
- message: `${subject} with authoringMode "simple" must contain one single-column field group without group display behavior and exactly one supported field whose controller type matches the field type. Use authoringMode "custom" for any other structure.`
162
- }];
163
- const rootItemAssistantCapability = { manifest: createManifest({
164
- itemType: "root",
165
- displayName: "Survey root",
166
- description: "The existing root container. A second root cannot be created.",
167
- create: "unsupported",
168
- supportedOperations: [
169
- "update-item-key",
170
- "update-item-label",
171
- "update-item-color"
172
- ],
173
- contentSurfaces: [],
174
- referenceTopics: ["survey-data-model", "item-types"]
175
- }) };
176
- const groupItemAssistantCapability = {
177
- manifest: createManifest({
178
- itemType: "group",
179
- displayName: "Group",
180
- description: "A structural container whose children are created as separate items.",
181
- defaultItemKeyPrefix: "group",
182
- create: "deterministic",
183
- supportedOperations: [...COMMON_OPERATIONS, "reorder-items"],
184
- contentSurfaces: [{
185
- key: "title",
186
- role: "primary",
187
- format: "rich",
188
- aliases: [
189
- "content",
190
- "label",
191
- "name",
192
- "text"
193
- ]
194
- }],
195
- referenceTopics: ["survey-data-model", "item-types"]
196
- }),
197
- references: [STRUCTURE_REFERENCE],
198
- normalizeCreate: materializeGroupCreate
199
- };
200
- const pageBreakItemAssistantCapability = {
201
- manifest: createManifest({
202
- itemType: "page-break",
203
- displayName: "Page break",
204
- description: "A structural page boundary.",
205
- defaultItemKeyPrefix: "page",
206
- create: "deterministic",
207
- supportedOperations: COMMON_OPERATIONS,
208
- contentSurfaces: [{
209
- key: "title",
210
- role: "primary",
211
- format: "rich",
212
- aliases: [
213
- "content",
214
- "label",
215
- "name",
216
- "text"
217
- ]
218
- }],
219
- referenceTopics: ["survey-data-model", "item-types"]
220
- }),
221
- references: [STRUCTURE_REFERENCE],
222
- normalizeCreate: materializeEmptyConfigCreate
223
- };
224
- const infoItemAssistantCapability = {
225
- manifest: createManifest({
226
- itemType: "infoItem",
227
- displayName: "Info",
228
- description: "Display-only formatted content without a response slot.",
229
- defaultItemKeyPrefix: "info",
230
- create: "deterministic",
231
- supportedOperations: COMMON_OPERATIONS,
232
- contentSurfaces: [{
233
- key: "content",
234
- role: "primary",
235
- format: "rich",
236
- requiredOnCreate: true,
237
- aliases: [
238
- "body",
239
- "label",
240
- "prompt",
241
- "question",
242
- "text",
243
- "title"
244
- ]
245
- }],
246
- referenceTopics: ["item-types", "rich-text-content"]
247
- }),
248
- references: [{
249
- topic: "rich-text-content",
250
- markdown: "Info content uses the rich `content` surface. Markdown strings are not parsed; send structured rich text when formatting matters."
251
- }],
252
- normalizeCreate: materializeEmptyConfigCreate
253
- };
254
- const choiceItemAssistantCapability = {
255
- manifest: createManifest({
256
- itemType: "choiceItem",
257
- displayName: "Choice question",
258
- description: "A single- or multiple-choice question with optional embedded forms.",
259
- defaultItemKeyPrefix: "choice",
260
- create: "deterministic",
261
- supportedOperations: [
262
- ...COMMON_OPERATIONS,
263
- "add-choice-option",
264
- "update-choice-option-label",
265
- "remove-choice-option",
266
- "reorder-choice-options",
267
- "upsert-form-field-group",
268
- "remove-form-field-group",
269
- "reorder-form-field-groups",
270
- "upsert-form-field",
271
- "remove-form-field",
272
- "move-form-field",
273
- "set-embedded-form",
274
- "remove-embedded-form"
275
- ],
276
- contentSurfaces: [
277
- ...QUESTION_CONTENT_SURFACES,
278
- {
279
- key: "options.<optionId>.label",
280
- role: "option",
281
- format: "rich",
282
- pattern: true
283
- },
284
- ...FIELD_CONTENT_SURFACES.map((surface) => ({
285
- ...surface,
286
- key: `embeddedForms.<optionId>.${surface.key}`
287
- })),
288
- {
289
- key: "embeddedForms.<optionId>.fields.<fieldId>.options.<optionId>.label",
290
- role: "option",
291
- format: "rich",
292
- pattern: true
293
- },
294
- {
295
- key: "embeddedForms.<optionId>.fields.<fieldId>.validations.<validationId>.message",
296
- role: "validation",
297
- format: "rich",
298
- pattern: true
299
- },
300
- {
301
- key: "embeddedForms.<optionId>.fieldGroups.<groupId>.title",
302
- role: "field",
303
- format: "rich",
304
- pattern: true
305
- },
306
- {
307
- key: "embeddedForms.<optionId>.fieldGroups.<groupId>.description",
308
- role: "field",
309
- format: "rich",
310
- pattern: true
311
- }
312
- ],
313
- responseSlots: [{
314
- key: "<responseId>",
315
- valueType: "reference|referenceArray"
316
- }],
317
- referenceTopics: [
318
- "item-types",
319
- "embedded-forms",
320
- "localization",
321
- "expressions",
322
- "rich-text-content"
323
- ],
324
- authoring: {
325
- compactHint: "presets choice.single=maxSelection 1; choice.multiple=maxSelection null; embedded one supported field=simple; embedded blank/structured=custom",
326
- configSummary: "Config stores id, maxSelection, shuffleOptions, and options. Put every initial option and inline embeddedForm in create-item config; choice option operations edit only choice items already present in the live snapshot. Default an eligible one-field embedded form to authoringMode simple; use custom for blank or structured follow-ups. Embedded field content uses embeddedForms.<choiceOption.id> (case-sensitive), never the option key or embeddedForm id. Form layout values are column counts 1-4; one column makes a lone field full width."
327
- }
328
- }),
329
- references: [QUESTION_REFERENCE],
330
- normalizeCreate: materializeChoiceCreate,
331
- validateItem: (item) => {
332
- if (!isRecord(item.config) || !Array.isArray(item.config.options)) return [];
333
- return item.config.options.flatMap((option) => isRecord(option) && isRecord(option.embeddedForm) ? getSimpleFormValidationIssues(option.embeddedForm, "An embedded form") : []);
334
- },
335
- deriveResponseSlots: deriveChoiceResponseSlots
336
- };
337
- const formItemAssistantCapability = {
338
- manifest: createManifest({
339
- itemType: "formItem",
340
- displayName: "Form",
341
- description: "A form with groups, typed fields, validations, and select options.",
342
- defaultItemKeyPrefix: "form",
343
- create: "deterministic",
344
- supportedOperations: [
345
- ...COMMON_OPERATIONS,
346
- "upsert-form-field-group",
347
- "remove-form-field-group",
348
- "reorder-form-field-groups",
349
- "upsert-form-field",
350
- "remove-form-field",
351
- "move-form-field"
352
- ],
353
- contentSurfaces: [
354
- ...QUESTION_CONTENT_SURFACES,
355
- {
356
- key: "fieldGroups.<groupId>.title",
357
- role: "field",
358
- format: "rich",
359
- pattern: true
360
- },
361
- {
362
- key: "fieldGroups.<groupId>.description",
363
- role: "field",
364
- format: "rich",
365
- pattern: true
366
- },
367
- ...FIELD_CONTENT_SURFACES,
368
- {
369
- key: "fields.<fieldId>.options.<optionId>.label",
370
- role: "option",
371
- format: "rich",
372
- pattern: true
373
- },
374
- {
375
- key: "fields.<fieldId>.validations.<validationId>.message",
376
- role: "validation",
377
- format: "rich",
378
- pattern: true
379
- }
380
- ],
381
- responseSlots: [{
382
- key: "<fieldKey>",
383
- valueType: "field-dependent"
384
- }],
385
- referenceTopics: [
386
- "item-types",
387
- "localization",
388
- "expressions",
389
- "rich-text-content"
390
- ],
391
- authoring: {
392
- compactHint: "presets form.text=input|form.long-text=textarea|form.number=number|form.slider=slider|form.dropdown=select|form.date=datepicker|form.switch=switch; form.blank=custom",
393
- configSummary: "Config stores authoringMode and fieldGroups with typed fields. Use authoringMode \"simple\" only for exactly one internal group with exactly one field: text=input, long text=textarea, number=number, slider=slider, dropdown=select, date=datepicker, switch=switch. Use \"custom\" for blank or multi-field forms. Structural changes are a one-way transition to custom. The controller type must match the field type; full date uses datepicker/year-month-day. Layout values are column counts 1-4, not spans."
394
- }
395
- }),
396
- references: [QUESTION_REFERENCE],
397
- normalizeCreate: materializeFormCreate,
398
- validateItem: (item) => getSimpleFormValidationIssues(item.config, "A formItem"),
399
- deriveResponseSlots: (item) => deriveFormResponseSlots(item.config)
400
- };
401
- const defaultSurveyAssistantCapabilities = [
402
- rootItemAssistantCapability,
403
- groupItemAssistantCapability,
404
- pageBreakItemAssistantCapability,
405
- infoItemAssistantCapability,
406
- choiceItemAssistantCapability,
407
- formItemAssistantCapability
408
- ];
409
- const defaultSurveyAssistantCapabilitySet = createSurveyAssistantCapabilities(defaultSurveyAssistantCapabilities);
410
- const getDefaultSurveyAssistantCapability = (itemType) => defaultSurveyAssistantCapabilitySet.byItemType.get(itemType);
411
- //#endregion
412
- export { choiceItemAssistantCapability, defaultSurveyAssistantCapabilities, defaultSurveyAssistantCapabilitySet, formItemAssistantCapability, getDefaultSurveyAssistantCapability, groupItemAssistantCapability, infoItemAssistantCapability, pageBreakItemAssistantCapability, rootItemAssistantCapability };
413
-
414
- //# sourceMappingURL=capabilities-default.mjs.map
1
+ import { a as defaultSurveyAssistantCapabilitySet, c as getDefaultSurveyAssistantCapability, d as pageBreakItemAssistantCapability, f as rootItemAssistantCapability, i as defaultSurveyAssistantCapabilities, l as groupItemAssistantCapability, n as choiceMatrixAssistantCapability, o as formItemAssistantCapability, r as consentItemAssistantCapability, s as formMatrixAssistantCapability, t as choiceItemAssistantCapability, u as infoItemAssistantCapability } from "./default-fhSon2RM.mjs";
2
+ export { choiceItemAssistantCapability, choiceMatrixAssistantCapability, consentItemAssistantCapability, defaultSurveyAssistantCapabilities, defaultSurveyAssistantCapabilitySet, formItemAssistantCapability, formMatrixAssistantCapability, getDefaultSurveyAssistantCapability, groupItemAssistantCapability, infoItemAssistantCapability, pageBreakItemAssistantCapability, rootItemAssistantCapability };
@@ -1,14 +1,11 @@
1
- import { Ct as SurveyDocumentSnapshot, o as SurveyAssistantApplyOutcome, wt as SurveyDocumentVersion } from "./lifecycle-BmGAIUlv.mjs";
2
- import { Gt as SurveyAssistantCapabilitySet, jt as SurveyAssistantEngineContext, x as TurnSurveyDraft } from "./index-D6nqkz0O.mjs";
3
- import { n as SurveyAssistantModelAttachment, t as SurveyAssistantAttachmentAccess } from "./thread-documents-rmd6nyX9.mjs";
1
+ import "./index-D7wT6P3t.mjs";
2
+ import { St as SurveyDocumentVersion, o as SurveyAssistantApplyOutcome, xt as SurveyDocumentSnapshot } from "./lifecycle-Dm8u7QFh.mjs";
3
+ import { Pt as SurveyAssistantEngineContext, qt as SurveyAssistantCapabilitySet, x as TurnSurveyDraft } from "./index-Ciq7vHIs.mjs";
4
+ import { r as SurveyAssistantModelAttachment, t as SurveyAssistantAttachmentAccess } from "./thread-documents-DrHbaXqP.mjs";
4
5
  import { RequestContext } from "@mastra/core/request-context";
5
6
  import { AgentExecutionOptions } from "@mastra/core/agent";
6
7
  import { OpenAICompatibleConfig } from "@mastra/core/llm";
7
-
8
8
  //#region src/server/request-context.d.ts
9
- interface SurveyAssistantInvocationContext {
10
- kind: "chat";
11
- }
12
9
  interface SurveyAssistantIdentityContext {
13
10
  authority: "experimental-client-request" | "authenticated-host";
14
11
  resourceId: string;
@@ -41,18 +38,13 @@ type SurveyAssistantDocumentTransition = {
41
38
  capabilitiesChanged: boolean;
42
39
  };
43
40
  interface SurveyAssistantRequestContext {
44
- invocation: SurveyAssistantInvocationContext;
45
41
  turnId: string;
46
42
  turnDraft: TurnSurveyDraft;
47
43
  identity: SurveyAssistantIdentityContext;
48
- authenticatedResourceId?: string;
49
- authorizedThreadId?: string;
50
- applyPolicy?: "auto" | "review" | "deny";
51
44
  mastra__resourceId?: string;
52
45
  mastra__threadId?: string;
53
46
  documentTransition?: SurveyAssistantDocumentTransition;
54
47
  engineContext?: SurveyAssistantEngineContext;
55
- documentSnapshot?: SurveyDocumentSnapshot;
56
48
  modelAttachments?: SurveyAssistantModelAttachment[];
57
49
  attachmentAccess?: SurveyAssistantAttachmentAccess;
58
50
  modelSelection?: SurveyAssistantModelSelection;
@@ -61,24 +53,11 @@ interface SurveyAssistantRequestContext {
61
53
  declare const parseSurveyAssistantSnapshot: (value: unknown) => SurveyDocumentSnapshot | null;
62
54
  declare const parseSurveyAssistantPreviousSettledVersion: (value: unknown) => SurveyDocumentVersion | null;
63
55
  declare const parseSurveyAssistantPreviousApplyOutcome: (value: unknown) => SurveyAssistantApplyOutcome | null;
64
- declare const deriveSurveyAssistantDocumentTransition: ({
65
- current,
66
- previous
67
- }: {
56
+ declare const deriveSurveyAssistantDocumentTransition: ({ current, previous }: {
68
57
  current: SurveyDocumentSnapshot | null;
69
58
  previous: SurveyDocumentVersion | null;
70
59
  }) => SurveyAssistantDocumentTransition | undefined;
71
- declare const buildSurveyAssistantRequestContext: ({
72
- turnDraft,
73
- identity,
74
- snapshot,
75
- previousSettledVersion,
76
- trustedCapabilities,
77
- attachmentAccess,
78
- modelAttachments,
79
- modelSelection,
80
- previousApplyOutcome
81
- }: {
60
+ declare const buildSurveyAssistantRequestContext: ({ turnDraft, identity, snapshot, previousSettledVersion, trustedCapabilities, attachmentAccess, modelAttachments, modelSelection, previousApplyOutcome }: {
82
61
  turnDraft: TurnSurveyDraft;
83
62
  identity: SurveyAssistantIdentityContext;
84
63
  snapshot: SurveyDocumentSnapshot | null;
@@ -99,4 +78,4 @@ declare const SURVEY_ASSISTANT_AGENT_ID = "survey-assistant-agent";
99
78
  declare const SURVEY_ASSISTANT_TASK_AGENT_ID = "survey-assistant-task-agent";
100
79
  //#endregion
101
80
  export { SurveyAssistantModelSelection as a, deriveSurveyAssistantDocumentTransition as c, parseSurveyAssistantSnapshot as d, requireSurveyAssistantTurnState as f, SurveyAssistantIdentityContext as i, parseSurveyAssistantPreviousApplyOutcome as l, SURVEY_ASSISTANT_TASK_AGENT_ID as n, SurveyAssistantRequestContext as o, SurveyAssistantDocumentTransition as r, buildSurveyAssistantRequestContext as s, SURVEY_ASSISTANT_AGENT_ID as t, parseSurveyAssistantPreviousSettledVersion as u };
102
- //# sourceMappingURL=constants-BMGTgfjv.d.mts.map
81
+ //# sourceMappingURL=constants-B6HzpEsx.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants-B6HzpEsx.d.mts","names":[],"sources":["../src/server/request-context.ts","../src/server/constants.ts"],"mappings":";;;;;;;;UA2BiB;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA,gBAAgB;EAChB;EACA,kBAAkB;;KAGR;EACN;;EAEA;EACA;EACA;;EAGA;EACA;EACA;EACA;;EAGA;EACA;EACA;EACA;EACA,iBAAiB;EACjB;;UAGW;EACf;EACA,WAAW;EACX,UAAU;EACV;EACA;EACA,qBAAqB;EACrB,gBAAgB;EAChB,mBAAmB;EACnB,mBAAmB;EACnB,iBAAiB;EACjB,uBAAuB;;cAGZ,+BAAgC,mBAAiB;cAQjD,6CACX,mBACC;cAQU,2CACX,mBACC;cAQU,4CAA2C,SAAA;EAItD,SAAS;EACT,UAAU;MACR;cAqDS,uCAAsC,WAAA,UAAA,UAAA,wBAAA,qBAAA,kBAAA,kBAAA,gBAAA;EAWjD,WAAW;EACX,UAAU;EACV,UAAU;EACV,yBAAyB;EACzB,sBAAsB;EACtB,mBAAmB;EACnB,mBAAmB;EACnB,iBAAiB;EACjB,uBAAuB;MACrB,eAAe;cAiDN,kCACX,gBAAgB,eAAe;;;;;;cC1OpB;cACA"}
@@ -4,4 +4,4 @@ const SURVEY_ASSISTANT_TASK_AGENT_ID = "survey-assistant-task-agent";
4
4
  //#endregion
5
5
  export { SURVEY_ASSISTANT_TASK_AGENT_ID as n, SURVEY_ASSISTANT_AGENT_ID as t };
6
6
 
7
- //# sourceMappingURL=constants-0UHGFcRJ.mjs.map
7
+ //# sourceMappingURL=constants-Ct-vv9cu.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants-0UHGFcRJ.mjs","names":[],"sources":["../src/server/constants.ts"],"sourcesContent":["export const SURVEY_ASSISTANT_AGENT_ID = \"survey-assistant-agent\";\nexport const SURVEY_ASSISTANT_TASK_AGENT_ID = \"survey-assistant-task-agent\";\n"],"mappings":";AAAA,MAAa,4BAA4B;AACzC,MAAa,iCAAiC"}
1
+ {"version":3,"file":"constants-Ct-vv9cu.mjs","names":[],"sources":["../src/server/constants.ts"],"sourcesContent":["export const SURVEY_ASSISTANT_AGENT_ID = \"survey-assistant-agent\";\nexport const SURVEY_ASSISTANT_TASK_AGENT_ID = \"survey-assistant-task-agent\";\n"],"mappings":";AAAA,MAAa,4BAA4B;AACzC,MAAa,iCAAiC"}
@@ -0,0 +1,65 @@
1
+ import { G as SurveyAssistantThread, b as SurveyAssistantTranslateContentInput, c as SurveyAssistantSuggestItemLabelInput, d as SurveyAssistantSuggestResponseNameResult, f as SurveyAssistantSuggestResponseSettingsInput, g as SurveyAssistantTaskInvocationMode, h as SurveyAssistantTaskContext, l as SurveyAssistantSuggestItemLabelResult, p as SurveyAssistantSuggestResponseSettingsResult, u as SurveyAssistantSuggestResponseNameInput, x as SurveyAssistantTranslateContentResult } from "./index-D7wT6P3t.mjs";
2
+ import { Ct as SurveyEditorUIContext, h as SurveyChangeSet, m as SurveyBatchApplyResult, yt as SurveyAssistantSnapshot } from "./lifecycle-Dm8u7QFh.mjs";
3
+ import { FileUIPart } from "ai";
4
+ //#region src/react/thread-launcher.d.ts
5
+ type SurveyAssistantLaunchUIContext = Partial<Omit<SurveyEditorUIContext, "history">>;
6
+ interface SurveyAssistantThreadLaunch {
7
+ /** User-visible prompt submitted as the first message in the new thread. */
8
+ prompt: string;
9
+ files?: FileUIPart[];
10
+ /** Optional model used for the opening assistant turn. */
11
+ modelId?: string;
12
+ /** Optional manual thread title. The prompt-derived automatic title is used by default. */
13
+ title?: string;
14
+ /** Turn-local editor context merged into the snapshot captured when the prompt is submitted. */
15
+ uiContext?: SurveyAssistantLaunchUIContext;
16
+ }
17
+ interface SurveyAssistantThreadLauncher {
18
+ /**
19
+ * Creates a new thread and submits its first prompt when a connected panel is ready.
20
+ * Calls made before the panel mounts are queued.
21
+ */
22
+ startThread(input: SurveyAssistantThreadLaunch): Promise<SurveyAssistantThread>;
23
+ }
24
+ declare const createSurveyAssistantThreadLauncher: () => SurveyAssistantThreadLauncher;
25
+ //#endregion
26
+ //#region src/react/controller.d.ts
27
+ interface SurveyAssistantController {
28
+ /** Snapshot version.sessionId identifies the editor document session, independently of this wrapper's identity. */
29
+ getSnapshot(): SurveyAssistantSnapshot | null;
30
+ /** Applies the authorized turn, including a one-change turn, and returns one result per change. */
31
+ applyAssistantChanges(changes: SurveyChangeSet[]): SurveyBatchApplyResult;
32
+ }
33
+ //#endregion
34
+ //#region src/react/task-client.d.ts
35
+ interface SurveyAssistantTaskClientOptions {
36
+ api?: string;
37
+ resourceId?: string;
38
+ surveyId?: string;
39
+ }
40
+ interface SurveyAssistantTaskExecutionOptions {
41
+ mode?: SurveyAssistantTaskInvocationMode;
42
+ modelId?: string;
43
+ signal?: AbortSignal;
44
+ }
45
+ interface SurveyAssistantTaskClient {
46
+ suggestResponseSettings(input: SurveyAssistantSuggestResponseSettingsInput, context: SurveyAssistantTaskContext, options?: SurveyAssistantTaskExecutionOptions): Promise<SurveyAssistantSuggestResponseSettingsResult>;
47
+ suggestResponseName(input: SurveyAssistantSuggestResponseNameInput, context: SurveyAssistantTaskContext, options?: SurveyAssistantTaskExecutionOptions): Promise<SurveyAssistantSuggestResponseNameResult>;
48
+ suggestItemLabel(input: SurveyAssistantSuggestItemLabelInput, context: SurveyAssistantTaskContext, options?: SurveyAssistantTaskExecutionOptions): Promise<SurveyAssistantSuggestItemLabelResult>;
49
+ translateContent(input: SurveyAssistantTranslateContentInput, context: SurveyAssistantTaskContext, options?: SurveyAssistantTaskExecutionOptions): Promise<SurveyAssistantTranslateContentResult>;
50
+ }
51
+ declare const createSurveyAssistantTaskClient: ({ api, resourceId, surveyId }?: SurveyAssistantTaskClientOptions) => SurveyAssistantTaskClient;
52
+ //#endregion
53
+ //#region src/react/controller-proxy.d.ts
54
+ interface CreateSurveyAssistantControllerProxyOptions {
55
+ notReadyMessage?: string;
56
+ }
57
+ interface SurveyAssistantControllerBridge {
58
+ controller: SurveyAssistantController;
59
+ setController(controller: SurveyAssistantController | null | undefined): void;
60
+ }
61
+ declare const createSurveyAssistantControllerProxy: (getController: () => SurveyAssistantController | null | undefined, { notReadyMessage }?: CreateSurveyAssistantControllerProxyOptions) => SurveyAssistantController;
62
+ declare const createSurveyAssistantControllerBridge: (options?: CreateSurveyAssistantControllerProxyOptions) => SurveyAssistantControllerBridge;
63
+ //#endregion
64
+ export { SurveyAssistantTaskClient as a, createSurveyAssistantTaskClient as c, SurveyAssistantThreadLaunch as d, SurveyAssistantThreadLauncher as f, createSurveyAssistantControllerProxy as i, SurveyAssistantController as l, SurveyAssistantControllerBridge as n, SurveyAssistantTaskClientOptions as o, createSurveyAssistantThreadLauncher as p, createSurveyAssistantControllerBridge as r, SurveyAssistantTaskExecutionOptions as s, CreateSurveyAssistantControllerProxyOptions as t, SurveyAssistantLaunchUIContext as u };
65
+ //# sourceMappingURL=controller-proxy-D7uQfm5f.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller-proxy-D7uQfm5f.d.mts","names":[],"sources":["../src/react/thread-launcher.ts","../src/react/controller.ts","../src/react/task-client.ts","../src/react/controller-proxy.ts"],"mappings":";;;;KAOY,iCAAiC,QAAQ,KAAK;UAEzC;;EAEf;EACA,QAAQ;;EAER;;EAEA;;EAEA,YAAY;;UAGG;;;;;EAKf,YAAY,OAAO,8BAA8B,QAAQ;;cA6D9C,2CAA0C;;;UCrFtC;;EAEf,eAAe;;EAEf,sBAAsB,SAAS,oBAAoB;;;;UCcpC;EACf;EACA;EACA;;UAGe;EACf,OAAO;EACP;EACA,SAAS;;UAGM;EACf,wBACE,OAAO,6CACP,SAAS,4BACT,UAAU,sCACT,QAAQ;EACX,oBACE,OAAO,yCACP,SAAS,4BACT,UAAU,sCACT,QAAQ;EACX,iBACE,OAAO,sCACP,SAAS,4BACT,UAAU,sCACT,QAAQ;EACX,iBACE,OAAO,sCACP,SAAS,4BACT,UAAU,sCACT,QAAQ;;cAGA,oCAAmC,KAAA,YAAA,aAI7C,qCAAwC;;;UCxD1B;EACf;;UAGe;EACf,YAAY;EACZ,cAAc,YAAY;;cAWf,uCACX,qBAAqB,gDACrB,oBAEG,gDACF;cAWU,wCACX,UAAU,gDACT"}