@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,8 +1,7 @@
1
- import { i as AssistantItemTypeManifest, o as SurveyAssistantCapabilityManifest } from "./capabilities-DVTfogjv.mjs";
1
+ import { i as AssistantItemTypeManifest, o as SurveyAssistantCapabilityManifest } from "./capabilities-CmeeAjEc.mjs";
2
2
  import { z } from "zod";
3
3
  import { SURVEY_EDITOR_ITEM_COLORS } from "@case-framework/survey-core/editor/colors";
4
4
  import { Content, JsonPatchOperation, JsonValue, RawSurvey, RawSurveyAsset, RawSurveyItem, RichTextImageDimension, SurveyContentImageSource } from "@case-framework/survey-core";
5
-
6
5
  //#region src/protocol/content.d.ts
7
6
  declare const jsonValueSchema: z.ZodType<JsonValue>;
8
7
  declare const surveyContentSchema: z.ZodType<Content>;
@@ -18,8 +17,9 @@ interface SurveyDocumentVersionShape {
18
17
  capabilityDigest: string;
19
18
  }
20
19
  interface SurveyEditorUIContextShape {
21
- view: "item-editor" | "preview-mode" | "translation-mode" | "asset-manager";
20
+ view: "item-editor" | "preview-mode" | "translation-mode" | "asset-manager" | "response-data";
22
21
  selectedItemId?: string;
22
+ responseSlotId?: string;
23
23
  selectedLocale: string;
24
24
  focusItemId?: string;
25
25
  recentItemIds?: string[];
@@ -92,16 +92,12 @@ interface CreateItemOperation extends OperationBase {
92
92
  parentItemId: string;
93
93
  index?: number;
94
94
  };
95
+ presetId?: string;
95
96
  item: Omit<RawSurveyItem, "id"> & {
96
97
  id?: string;
97
98
  };
98
99
  translations?: ItemTranslation[];
99
100
  }
100
- interface UpdateItemKeyOperation extends OperationBase {
101
- kind: "update-item-key";
102
- itemId: string;
103
- key: string;
104
- }
105
101
  interface UpdateItemLabelOperation extends OperationBase {
106
102
  kind: "update-item-label";
107
103
  itemId: string;
@@ -142,6 +138,7 @@ interface PatchItemConfigOperation extends OperationBase {
142
138
  itemId: string;
143
139
  /** JSON Patch paths are relative to the item's config root. */
144
140
  patches: JsonPatchOperation[];
141
+ translations?: ItemTranslation[];
145
142
  }
146
143
  interface FormTarget {
147
144
  itemId: string;
@@ -174,7 +171,7 @@ interface UpsertFormFieldOperation extends OperationBase {
174
171
  index?: number;
175
172
  field: Record<string, unknown> & {
176
173
  id: string;
177
- key: string;
174
+ variableName: string;
178
175
  type: string;
179
176
  };
180
177
  translations?: ItemTranslation[];
@@ -208,7 +205,7 @@ interface RemoveEmbeddedFormOperation extends OperationBase {
208
205
  }
209
206
  interface ChoiceOptionInput {
210
207
  id?: string;
211
- key?: string;
208
+ code?: string;
212
209
  label: string;
213
210
  }
214
211
  interface AddChoiceOptionOperation extends OperationBase {
@@ -247,6 +244,7 @@ interface MoveItemOperation extends OperationBase {
247
244
  parentItemId: string;
248
245
  index?: number;
249
246
  };
247
+ presetId?: string;
250
248
  }
251
249
  interface ReorderItemsOperation extends OperationBase {
252
250
  kind: "reorder-items";
@@ -301,7 +299,12 @@ interface SurveyPatchOperation extends OperationBase {
301
299
  kind: "survey-json-patch";
302
300
  patches: JsonPatchOperation[];
303
301
  }
304
- type SurveyOperationShape = CreateItemOperation | UpdateItemKeyOperation | UpdateItemLabelOperation | UpdateItemColorOperation | UpdateItemTranslationOperation | UpdatePlacedImageOperation | PatchItemConfigOperation | UpsertFormFieldGroupOperation | RemoveFormFieldGroupOperation | ReorderFormFieldGroupsOperation | UpsertFormFieldOperation | RemoveFormFieldOperation | MoveFormFieldOperation | SetEmbeddedFormOperation | RemoveEmbeddedFormOperation | AddChoiceOptionOperation | UpdateChoiceOptionLabelOperation | RemoveChoiceOptionOperation | ReorderChoiceOptionsOperation | RemoveItemOperation | MoveItemOperation | ReorderItemsOperation | UpdateSurveyMetadataOperation | UpdateSurveyPaginationOperation | UpdateSurveyTranslationOperation | AddSurveyLocaleOperation | RemoveSurveyLocaleOperation | SetImageAssetOperation | UpdateImageAssetMetadataOperation | RemoveImageAssetOperation | SurveyPatchOperation;
302
+ interface UpdateResponseSettingsOperation extends OperationBase {
303
+ kind: "update-response-settings";
304
+ naming: import("@case-framework/survey-core/editor").ResponseNamingEdit[];
305
+ settings: import("@case-framework/survey-core/editor").ResponseSettingsEdit[];
306
+ }
307
+ type SurveyOperationShape = UpdateResponseSettingsOperation | CreateItemOperation | UpdateItemLabelOperation | UpdateItemColorOperation | UpdateItemTranslationOperation | UpdatePlacedImageOperation | PatchItemConfigOperation | UpsertFormFieldGroupOperation | RemoveFormFieldGroupOperation | ReorderFormFieldGroupsOperation | UpsertFormFieldOperation | RemoveFormFieldOperation | MoveFormFieldOperation | SetEmbeddedFormOperation | RemoveEmbeddedFormOperation | AddChoiceOptionOperation | UpdateChoiceOptionLabelOperation | RemoveChoiceOptionOperation | ReorderChoiceOptionsOperation | RemoveItemOperation | MoveItemOperation | ReorderItemsOperation | UpdateSurveyMetadataOperation | UpdateSurveyPaginationOperation | UpdateSurveyTranslationOperation | AddSurveyLocaleOperation | RemoveSurveyLocaleOperation | SetImageAssetOperation | UpdateImageAssetMetadataOperation | RemoveImageAssetOperation | SurveyPatchOperation;
305
308
  type SurveyOperationKind = SurveyOperationShape["kind"];
306
309
  interface SurveyValidationIssueShape {
307
310
  severity: "error" | "warning";
@@ -319,7 +322,6 @@ interface SurveyValidationResultShape {
319
322
  }
320
323
  declare const jsonPatchOperationSchema: z.ZodType<JsonPatchOperation>;
321
324
  declare const createItemOperationSchema: z.ZodType<CreateItemOperation>;
322
- declare const updateItemKeyOperationSchema: z.ZodType<UpdateItemKeyOperation>;
323
325
  declare const updateItemLabelOperationSchema: z.ZodType<UpdateItemLabelOperation>;
324
326
  declare const updateItemColorOperationSchema: z.ZodType<UpdateItemColorOperation>;
325
327
  declare const updateItemTranslationOperationSchema: z.ZodType<UpdateItemTranslationOperation>;
@@ -340,7 +342,6 @@ type SurveyValidationIssue = z.infer<typeof surveyValidationIssueSchema>;
340
342
  type SurveyValidationResult = z.infer<typeof surveyValidationResultSchema>;
341
343
  declare const surveyJsonPatchOperationSchema: z.ZodType<JsonPatchOperation, unknown, z.core.$ZodTypeInternals<JsonPatchOperation, unknown>>;
342
344
  declare const surveyAssistantCreateItemOperationSchema: z.ZodType<CreateItemOperation, unknown, z.core.$ZodTypeInternals<CreateItemOperation, unknown>>;
343
- declare const surveyAssistantUpdateItemKeyOperationSchema: z.ZodType<UpdateItemKeyOperation, unknown, z.core.$ZodTypeInternals<UpdateItemKeyOperation, unknown>>;
344
345
  declare const surveyAssistantUpdateItemLabelOperationSchema: z.ZodType<UpdateItemLabelOperation, unknown, z.core.$ZodTypeInternals<UpdateItemLabelOperation, unknown>>;
345
346
  declare const surveyAssistantUpdateItemColorOperationSchema: z.ZodType<UpdateItemColorOperation, unknown, z.core.$ZodTypeInternals<UpdateItemColorOperation, unknown>>;
346
347
  declare const surveyAssistantUpdateItemTranslationOperationSchema: z.ZodType<UpdateItemTranslationOperation, unknown, z.core.$ZodTypeInternals<UpdateItemTranslationOperation, unknown>>;
@@ -367,6 +368,12 @@ interface SurveyChangeSetShape {
367
368
  summary: string;
368
369
  operations: SurveyOperation[];
369
370
  supersedesChangeIds?: string[];
371
+ pendingRepairs?: Array<{
372
+ changeId: string;
373
+ targets: string[];
374
+ requiresExplicitRetry: boolean;
375
+ allowsAcknowledgment?: boolean;
376
+ }>;
370
377
  precondition?: SurveyDocumentVersion;
371
378
  postChange?: SurveyAssistantPostChangeProjectionShape;
372
379
  verification?: SurveyAssistantChangeVerificationShape;
@@ -403,9 +410,23 @@ interface SurveyAssistantPostChangeProjectionShape {
403
410
  touchedItems: Array<{
404
411
  itemId: string;
405
412
  itemType: string;
406
- key: string;
407
- fullKey: string;
413
+ editorName: string;
414
+ breadcrumb: string;
408
415
  itemLabel?: string;
416
+ placement?: {
417
+ parentItemId: string;
418
+ index: number;
419
+ siblingCount: number;
420
+ previousItemId?: string;
421
+ nextItemId?: string;
422
+ shuffled: boolean;
423
+ };
424
+ childOrder?: {
425
+ itemIds: string[];
426
+ total: number;
427
+ truncated: boolean;
428
+ shuffled: boolean;
429
+ };
409
430
  translationCount: number;
410
431
  translations: Array<{
411
432
  locale: string;
@@ -416,6 +437,7 @@ interface SurveyAssistantPostChangeProjectionShape {
416
437
  }>;
417
438
  responseSlotCount: number;
418
439
  responseSlots: string[];
440
+ responseVariables?: unknown[];
419
441
  }>;
420
442
  truncated: boolean;
421
443
  }
@@ -486,13 +508,13 @@ interface ApplyReceiptShape {
486
508
  }
487
509
  declare const surveyChangeSetSchema: z.ZodType<SurveyChangeSetShape>;
488
510
  declare const surveyAssistantTurnTerminationReasonSchema: z.ZodEnum<{
511
+ "content-filter": "content-filter";
489
512
  "client-abort": "client-abort";
490
513
  "first-response-timeout": "first-response-timeout";
491
514
  "idle-timeout": "idle-timeout";
492
515
  "max-duration": "max-duration";
493
516
  "max-steps": "max-steps";
494
517
  "length-limit": "length-limit";
495
- "content-filter": "content-filter";
496
518
  "provider-error": "provider-error";
497
519
  "stream-error": "stream-error";
498
520
  "incomplete-response": "incomplete-response";
@@ -519,5 +541,5 @@ type SurveyAssistantApplyStatus = SurveyApplyStatus;
519
541
  type SurveyAssistantApplyResult = SurveyApplyResult;
520
542
  type SurveyAssistantBatchApplyResult = SurveyBatchApplyResult;
521
543
  //#endregion
522
- export { surveyAssistantUpdateItemKeyOperationSchema as $, SurveyAssistantSurveyJsonPatchOperation as A, surveyAssistantSnapshotSchema as At, patchItemConfigOperationSchema as B, surveyAssistantTurnFinalSchema as C, SurveyDocumentSnapshot as Ct, JsonPatchOperation$1 as D, surveyAssistantDraftChangePreconditionSchema as Dt, surveyChangeSetSchema as E, rawSurveyDocumentSchema as Et, SurveyValidationIssue as F, SurveyContent as Ft, surveyAssistantCreateItemOperationSchema as G, removeItemOperationSchema as H, SurveyValidationResult as I, jsonValueSchema as It, surveyAssistantRemoveItemOperationSchema as J, surveyAssistantOperationSchema as K, addChoiceOptionOperationSchema as L, surveyContentSchema as Lt, SurveyAssistantValidationResult as M, surveyDocumentVersionSchema as Mt, SurveyOperation as N, surveyEditorUIContextSchema as Nt, SURVEY_OPERATION_KINDS as O, surveyAssistantProtocolVersionSchema as Ot, SurveyOperationKind as P, JsonValue$1 as Pt, surveyAssistantUpdateItemColorOperationSchema as Q, createItemOperationSchema as R, surveyAssistantDraftChangeEventSchema as S, SurveyAssistantSnapshotPayload as St, surveyBatchApplyResultSchema as T, SurveyEditorUIContext as Tt, reorderChoiceOptionsOperationSchema as U, removeChoiceOptionOperationSchema as V, surveyAssistantAddChoiceOptionOperationSchema as W, surveyAssistantSurveyJsonPatchOperationSchema as X, surveyAssistantReorderChoiceOptionsOperationSchema as Y, surveyAssistantUpdateChoiceOptionLabelOperationSchema as Z, applyReceiptSchema as _, SurveyAssistantItemCreateStrategy as _t, SurveyApplyStatus as a, surveyOperationSchema as at, surveyAssistantApplyOutcomeSchema as b, SurveyAssistantProtocolVersion as bt, SurveyAssistantApplyResult as c, surveyValidationResultSchema as ct, SurveyAssistantDraftChangeEvent as d, updateItemKeyOperationSchema as dt, surveyAssistantUpdateItemLabelOperationSchema as et, SurveyAssistantTurnFinal as f, updateItemLabelOperationSchema as ft, SurveyChangeSetShape as g, SurveyAssistantDraftChangePrecondition as gt, SurveyChangeSet as h, SURVEY_ASSISTANT_PROTOCOL_VERSION as ht, SurveyApplyResult as i, surveyJsonPatchOperationSchema as it, SurveyAssistantValidationIssue as j, surveyDocumentSnapshotSchema as jt, SurveyAssistantOperation as k, surveyAssistantSnapshotPayloadSchema as kt, SurveyAssistantApplyStatus as l, updateChoiceOptionLabelOperationSchema as lt, SurveyBatchApplyResult as m, RawSurveyDocument as mt, SURVEY_ASSISTANT_TURN_FINAL_DATA_NAME as n, surveyAssistantValidationIssueSchema as nt, SurveyAssistantApplyOutcome as o, surveyPatchOperationSchema as ot, SurveyAssistantTurnTerminationReason as p, updateItemTranslationOperationSchema as pt, surveyAssistantRemoveChoiceOptionOperationSchema as q, SURVEY_ASSISTANT_TURN_FINAL_PART_TYPE as r, surveyAssistantValidationResultSchema as rt, SurveyAssistantApplyPolicy as s, surveyValidationIssueSchema as st, ApplyReceipt as t, surveyAssistantUpdateItemTranslationOperationSchema as tt, SurveyAssistantBatchApplyResult as u, updateItemColorOperationSchema as ut, surveyApplyResultSchema as v, SurveyAssistantItemRegistryManifest as vt, surveyAssistantTurnTerminationReasonSchema as w, SurveyDocumentVersion as wt, surveyAssistantApplyPolicySchema as x, SurveyAssistantSnapshot as xt, surveyApplyStatusSchema as y, SurveyAssistantItemTypeManifestEntry as yt, jsonPatchOperationSchema as z };
523
- //# sourceMappingURL=lifecycle-BmGAIUlv.d.mts.map
544
+ export { surveyAssistantUpdateItemLabelOperationSchema as $, SurveyAssistantSurveyJsonPatchOperation as A, surveyDocumentVersionSchema as At, patchItemConfigOperationSchema as B, surveyAssistantTurnFinalSchema as C, SurveyEditorUIContext as Ct, JsonPatchOperation$1 as D, surveyAssistantSnapshotPayloadSchema as Dt, surveyChangeSetSchema as E, surveyAssistantProtocolVersionSchema as Et, SurveyValidationIssue as F, surveyContentSchema as Ft, surveyAssistantCreateItemOperationSchema as G, removeItemOperationSchema as H, SurveyValidationResult as I, surveyAssistantRemoveItemOperationSchema as J, surveyAssistantOperationSchema as K, addChoiceOptionOperationSchema as L, SurveyAssistantValidationResult as M, JsonValue$1 as Mt, SurveyOperation as N, SurveyContent as Nt, SURVEY_OPERATION_KINDS as O, surveyAssistantSnapshotSchema as Ot, SurveyOperationKind as P, jsonValueSchema as Pt, surveyAssistantUpdateItemColorOperationSchema as Q, createItemOperationSchema as R, surveyAssistantDraftChangeEventSchema as S, SurveyDocumentVersion as St, surveyBatchApplyResultSchema as T, surveyAssistantDraftChangePreconditionSchema as Tt, reorderChoiceOptionsOperationSchema as U, removeChoiceOptionOperationSchema as V, surveyAssistantAddChoiceOptionOperationSchema as W, surveyAssistantSurveyJsonPatchOperationSchema as X, surveyAssistantReorderChoiceOptionsOperationSchema as Y, surveyAssistantUpdateChoiceOptionLabelOperationSchema as Z, applyReceiptSchema as _, SurveyAssistantItemTypeManifestEntry as _t, SurveyApplyStatus as a, surveyPatchOperationSchema as at, surveyAssistantApplyOutcomeSchema as b, SurveyAssistantSnapshotPayload as bt, SurveyAssistantApplyResult as c, updateChoiceOptionLabelOperationSchema as ct, SurveyAssistantDraftChangeEvent as d, updateItemTranslationOperationSchema as dt, surveyAssistantUpdateItemTranslationOperationSchema as et, SurveyAssistantTurnFinal as f, RawSurveyDocument as ft, SurveyChangeSetShape as g, SurveyAssistantItemRegistryManifest as gt, SurveyChangeSet as h, SurveyAssistantItemCreateStrategy as ht, SurveyApplyResult as i, surveyOperationSchema as it, SurveyAssistantValidationIssue as j, surveyEditorUIContextSchema as jt, SurveyAssistantOperation as k, surveyDocumentSnapshotSchema as kt, SurveyAssistantApplyStatus as l, updateItemColorOperationSchema as lt, SurveyBatchApplyResult as m, SurveyAssistantDraftChangePrecondition as mt, SURVEY_ASSISTANT_TURN_FINAL_DATA_NAME as n, surveyAssistantValidationResultSchema as nt, SurveyAssistantApplyOutcome as o, surveyValidationIssueSchema as ot, SurveyAssistantTurnTerminationReason as p, SURVEY_ASSISTANT_PROTOCOL_VERSION as pt, surveyAssistantRemoveChoiceOptionOperationSchema as q, SURVEY_ASSISTANT_TURN_FINAL_PART_TYPE as r, surveyJsonPatchOperationSchema as rt, SurveyAssistantApplyPolicy as s, surveyValidationResultSchema as st, ApplyReceipt as t, surveyAssistantValidationIssueSchema as tt, SurveyAssistantBatchApplyResult as u, updateItemLabelOperationSchema as ut, surveyApplyResultSchema as v, SurveyAssistantProtocolVersion as vt, surveyAssistantTurnTerminationReasonSchema as w, rawSurveyDocumentSchema as wt, surveyAssistantApplyPolicySchema as x, SurveyDocumentSnapshot as xt, surveyApplyStatusSchema as y, SurveyAssistantSnapshot as yt, jsonPatchOperationSchema as z };
545
+ //# sourceMappingURL=lifecycle-Dm8u7QFh.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle-Dm8u7QFh.d.mts","names":[],"sources":["../src/protocol/content.ts","../src/protocol/document.ts","../src/protocol/operations.ts","../src/protocol/lifecycle.ts"],"mappings":"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"}
@@ -1,13 +1,24 @@
1
- import { A as createSurveyAssistantThreadInputSchema, Mt as serializeSurveyAssistantError, P as updateSurveyAssistantThreadInputSchema, k as SURVEY_ASSISTANT_ATTACHMENT_PART_TYPE, n as SURVEY_ASSISTANT_TURN_FINAL_PART_TYPE } from "./protocol-DJUP4gc0.mjs";
2
- import { s as SurveyAssistantCapabilityMismatchError } from "./form-authoring-kQDgC5oz.mjs";
3
- import { r as TurnSurveyDraft } from "./engine-CQwOAcwK.mjs";
4
- import "./constants-0UHGFcRJ.mjs";
5
- import { a as parseSurveyAssistantPreviousSettledVersion, i as parseSurveyAssistantPreviousApplyOutcome, o as parseSurveyAssistantSnapshot, t as buildSurveyAssistantRequestContext } from "./request-context-BjTHNcDd.mjs";
6
- import { d as readSurveyAssistantRequestJson, f as validateSurveyAssistantMessages, n as SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS, u as SurveyAssistantRequestError } from "./request-guardrails-TmgQtqp4.mjs";
1
+ import { Ft as isSurveyAssistantErrorRetryable, I as updateSurveyAssistantThreadInputSchema, Lt as serializeSurveyAssistantError, M as createSurveyAssistantThreadInputSchema, Wt as sanitizeSurveyAssistantDiagnosticText, j as SURVEY_ASSISTANT_ATTACHMENT_PART_TYPE, n as SURVEY_ASSISTANT_TURN_FINAL_PART_TYPE } from "./protocol-CF4Bh_Ch.mjs";
2
+ import { l as TurnSurveyDraft } from "./engine-nXoCWYpQ.mjs";
3
+ import { t as SurveyAssistantCapabilityMismatchError } from "./capabilities-DCMA71PP.mjs";
4
+ import "./constants-Ct-vv9cu.mjs";
5
+ import { a as parseSurveyAssistantPreviousSettledVersion, i as parseSurveyAssistantPreviousApplyOutcome, o as parseSurveyAssistantSnapshot, t as buildSurveyAssistantRequestContext } from "./request-context-Dg4jSwN1.mjs";
6
+ import { d as readSurveyAssistantRequestJson, f as validateSurveyAssistantMessages, n as SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS, u as SurveyAssistantRequestError } from "./request-guardrails-C0ugBOp0.mjs";
7
7
  import { createUIMessageStreamResponse } from "ai";
8
- import { handleChatStream } from "@mastra/ai-sdk";
9
8
  import { createHash } from "node:crypto";
9
+ import { handleChatStream } from "@mastra/ai-sdk";
10
10
  import { toAISdkMessages } from "@mastra/ai-sdk/ui";
11
+ //#region src/server/message-identity.ts
12
+ /** Bind client message ids to the host-authorized storage scope before Mastra's id-only upsert. */
13
+ const scopeSurveyAssistantMessage = (message, identity) => {
14
+ const prefix = `survey-user-${createHash("sha256").update(JSON.stringify([identity.resourceId, identity.threadId])).digest("hex")}-`;
15
+ return {
16
+ id: message.id.startsWith(prefix) && /^[a-f0-9]{64}$/.test(message.id.slice(prefix.length)) ? message.id : `${prefix}${createHash("sha256").update(message.id).digest("hex")}`,
17
+ role: "user",
18
+ parts: message.parts
19
+ };
20
+ };
21
+ //#endregion
11
22
  //#region src/server/execution-timeout.ts
12
23
  const timeoutMessages = {
13
24
  "first-response": "The survey assistant timed out while waiting for its first response.",
@@ -146,8 +157,10 @@ const createSurveyAssistantTurnStream = ({ turnDraft, getAbortErrorText, getAbor
146
157
  }
147
158
  controller.enqueue(value);
148
159
  }
149
- if (!emittedTurnFinal) if (signal?.aborted) emitAbortOutcome();
150
- else emitTurnFinal(sawFinish && (finishReason === void 0 || finishReason === "stop") ? "completed" : "failed", sawFinish && finishReason !== void 0 && finishReason !== "stop" ? getFinishTerminationReason(finishReason) : !sawFinish ? "incomplete-response" : void 0);
160
+ if (!emittedTurnFinal) {
161
+ if (signal?.aborted) emitAbortOutcome();
162
+ else emitTurnFinal(sawFinish && (finishReason === void 0 || finishReason === "stop") ? "completed" : "failed", sawFinish && finishReason !== void 0 && finishReason !== "stop" ? getFinishTerminationReason(finishReason) : !sawFinish ? "incomplete-response" : void 0);
163
+ }
151
164
  controller.close();
152
165
  } catch (error) {
153
166
  try {
@@ -219,8 +232,9 @@ const replaceCurrentSurveyAssistantAttachmentsWithReferences = ({ documents, mes
219
232
  changed = true;
220
233
  const parsed = typeof part.url === "string" ? parseFileDataUrl(part.url) : null;
221
234
  const mediaType = parsed?.mediaType || part.mediaType;
235
+ const document = parsed ? documentIndex.get(`${mediaType}\u0000${getAttachmentContentHash(parsed.data)}`) : void 0;
222
236
  return createAttachmentReferencePart({
223
- document: parsed ? documentIndex.get(`${mediaType}\u0000${getAttachmentContentHash(parsed.data)}`) : void 0,
237
+ document,
224
238
  filename: part.filename,
225
239
  mediaType,
226
240
  parsedData: parsed?.data
@@ -273,8 +287,9 @@ const removeHistoricalSurveyAssistantAttachments = (messages) => {
273
287
  */
274
288
  const getSurveyAssistantReplayableDocuments = (documents, currentDocumentIds) => documents.filter((document) => !currentDocumentIds.has(document.id));
275
289
  const loadSurveyAssistantThreadAttachments = async ({ currentDocumentIds = /* @__PURE__ */ new Set(), documents, repository, resourceId, threadId }) => {
290
+ const replayableDocuments = getSurveyAssistantReplayableDocuments(documents, currentDocumentIds);
276
291
  return loadSurveyAssistantDocuments({
277
- documents: getSurveyAssistantReplayableDocuments(documents, currentDocumentIds),
292
+ documents: replayableDocuments,
278
293
  repository,
279
294
  resourceId,
280
295
  threadId
@@ -290,6 +305,7 @@ const loadSurveyAssistantDocuments = async ({ documents, repository, resourceId,
290
305
  });
291
306
  if (!content) continue;
292
307
  attachments.push({
308
+ documentId: document.id,
293
309
  filename: content.name,
294
310
  mediaType: content.mediaType,
295
311
  data: content.data,
@@ -302,10 +318,9 @@ const loadSurveyAssistantDocuments = async ({ documents, repository, resourceId,
302
318
  //#region src/server/handler.ts
303
319
  const DEFAULT_MAX_STEPS = 48;
304
320
  const DEFAULT_MAX_CONCURRENT_REQUESTS = 8;
305
- const DEFAULT_FIRST_RESPONSE_TIMEOUT_MS = 900 * 1e3;
306
- const DEFAULT_IDLE_TIMEOUT_MS = 300 * 1e3;
307
- const DEFAULT_MAX_DURATION_MS = 3600 * 1e3;
308
- const MAX_USER_ERROR_MESSAGE_LENGTH = 700;
321
+ const DEFAULT_FIRST_RESPONSE_TIMEOUT_MS = 9e5;
322
+ const DEFAULT_IDLE_TIMEOUT_MS = 3e5;
323
+ const DEFAULT_MAX_DURATION_MS = 36e5;
309
324
  const MAX_ERROR_CAUSE_DEPTH = 5;
310
325
  const getTimeoutTerminationReason = (kind) => {
311
326
  switch (kind) {
@@ -328,6 +343,11 @@ const optionalRequestedId = (value) => {
328
343
  const normalized = value.trim();
329
344
  return normalized.length > 0 && normalized.length <= 240 ? normalized : void 0;
330
345
  };
346
+ const optionalDiagnosticId = (value) => {
347
+ if (typeof value !== "string") return void 0;
348
+ const normalized = value.trim();
349
+ return /^[A-Za-z0-9_-]{8,64}$/.test(normalized) ? normalized : void 0;
350
+ };
331
351
  const validateAuthorizedIdentity = (identity) => {
332
352
  if (!identity || identity.authority !== "authenticated-host" && identity.authority !== "experimental-client-request" || typeof identity.resourceId !== "string" || identity.resourceId.trim().length === 0 || identity.resourceId.length > 240 || identity.surveyId !== void 0 && !optionalRequestedId(identity.surveyId) || typeof identity.threadId !== "string" || identity.threadId.trim().length === 0 || identity.threadId.length > 240) throw new SurveyAssistantAuthorizationError("The host returned an invalid survey assistant identity.", 500);
333
353
  return {
@@ -422,8 +442,7 @@ const describeSurveyAssistantStreamError = (error) => {
422
442
  return levels.length === 1 ? levels[0] : { levels };
423
443
  };
424
444
  const clampUserErrorMessage = (message) => {
425
- const normalized = message.replace(/\s+/g, " ").trim();
426
- return normalized.length <= MAX_USER_ERROR_MESSAGE_LENGTH ? normalized : `${normalized.slice(0, MAX_USER_ERROR_MESSAGE_LENGTH - 1)}…`;
445
+ return sanitizeSurveyAssistantDiagnosticText(message, 700);
427
446
  };
428
447
  const getProviderModelName = (message) => message.match(/\bmodel\s+[`'"]([^`'"]+)[`'"]/i)?.[1]?.trim();
429
448
  const classifyStreamError = (message, statusCode) => {
@@ -451,14 +470,26 @@ const parseProviderResponseBodyMessage = (responseBody) => {
451
470
  const parsed = JSON.parse(responseBody);
452
471
  if (isRecord(parsed) && isRecord(parsed.error) && typeof parsed.error.message === "string") return parsed.error.message;
453
472
  } catch {
454
- return responseBody;
473
+ return;
474
+ }
475
+ };
476
+ const getProviderRequestId = (levels) => {
477
+ for (const level of levels) {
478
+ if (!isRecord(level) || !isRecord(level.responseHeaders)) continue;
479
+ for (const [key, value] of Object.entries(level.responseHeaders)) {
480
+ const normalizedKey = key.toLocaleLowerCase();
481
+ if ((normalizedKey === "request-id" || normalizedKey === "x-request-id") && typeof value === "string") {
482
+ const normalized = sanitizeSurveyAssistantDiagnosticText(value, 240);
483
+ if (normalized) return normalized;
484
+ }
485
+ }
455
486
  }
456
- return responseBody;
457
487
  };
458
488
  const extractUserErrorMessageFromLevel = (level) => {
459
489
  if (isRecord(level.data) && isRecord(level.data.error) && typeof level.data.error.message === "string") return level.data.error.message;
460
490
  return parseProviderResponseBodyMessage(level.responseBody) ?? (typeof level.message === "string" ? level.message : void 0);
461
491
  };
492
+ const isProviderCallErrorLevel = (level) => level.constructorName === "APICallError" || level.name === "AI_APICallError" || level.statusCode !== void 0 && (level.responseBody !== void 0 || level.responseHeaders !== void 0);
462
493
  const formatSurveyAssistantStreamError = (error) => {
463
494
  const describedError = describeSurveyAssistantStreamError(error);
464
495
  const levels = Array.isArray(describedError.levels) ? describedError.levels : [describedError];
@@ -466,12 +497,23 @@ const formatSurveyAssistantStreamError = (error) => {
466
497
  const statusLevel = levels.find((level) => isRecord(level) && level.statusCode !== void 0);
467
498
  const statusCode = Number(statusLevel?.statusCode);
468
499
  const detail = messageLevel ? extractUserErrorMessageFromLevel(messageLevel) : void 0;
500
+ const providerLevel = levels.find((level) => isRecord(level) && isProviderCallErrorLevel(level));
501
+ const providerDetail = providerLevel ? extractUserErrorMessageFromLevel(providerLevel) : void 0;
469
502
  const formattedDetail = detail ? formatKnownProviderError(detail) : void 0;
470
- const code = classifyStreamError(formattedDetail ?? "", Number.isFinite(statusCode) ? statusCode : void 0);
503
+ const code = classifyStreamError(detail ?? formattedDetail ?? "", Number.isFinite(statusCode) ? statusCode : void 0);
504
+ const providerMessage = code === "authorization_failed" || !providerDetail ? void 0 : sanitizeSurveyAssistantDiagnosticText(providerDetail, 700);
505
+ const upstreamStatus = Number.isFinite(statusCode) ? statusCode : void 0;
506
+ const providerRequestId = getProviderRequestId(levels);
471
507
  return serializeSurveyAssistantError({
472
508
  code,
473
509
  ...formattedDetail ? { detail: formattedDetail } : {},
474
- retryable: code === "rate_limited" || code === "request_failed" && (!Number.isFinite(statusCode) || statusCode >= 500)
510
+ ...upstreamStatus ? { upstreamStatus } : {},
511
+ ...providerRequestId ? { providerRequestId } : {},
512
+ ...providerMessage ? { providerMessage } : {},
513
+ retryable: isSurveyAssistantErrorRetryable({
514
+ code,
515
+ upstreamStatus
516
+ })
475
517
  });
476
518
  };
477
519
  const requestErrorResponse = (error, fallback) => {
@@ -516,6 +558,7 @@ const createSurveyAssistantChatHandler = (options) => {
516
558
  return requestErrorResponse(error, "The survey assistant request could not be read.");
517
559
  }
518
560
  const params = isRecord(rawParams) ? rawParams : {};
561
+ const requestId = optionalDiagnosticId(params.requestId);
519
562
  let identity;
520
563
  try {
521
564
  identity = validateAuthorizedIdentity(await options.authorize({
@@ -533,7 +576,7 @@ const createSurveyAssistantChatHandler = (options) => {
533
576
  }
534
577
  let messages;
535
578
  try {
536
- messages = validateSurveyAssistantMessages(params.messages, requestLimits);
579
+ messages = validateSurveyAssistantMessages(params.messages, requestLimits).map((message) => scopeSurveyAssistantMessage(message, identity));
537
580
  } catch (error) {
538
581
  return requestErrorResponse(error, "The survey assistant messages are invalid.");
539
582
  }
@@ -552,6 +595,7 @@ const createSurveyAssistantChatHandler = (options) => {
552
595
  })) ?? void 0;
553
596
  } catch (error) {
554
597
  options.onStreamError?.(error, {
598
+ requestId,
555
599
  resourceId: identity.resourceId,
556
600
  surveyId: identity.surveyId,
557
601
  threadId: identity.threadId
@@ -617,12 +661,14 @@ const createSurveyAssistantChatHandler = (options) => {
617
661
  messages
618
662
  });
619
663
  messages = removeHistoricalSurveyAssistantAttachments(messages);
620
- const replayableDocuments = getSurveyAssistantReplayableDocuments(manifest, new Set(registered.map((document) => document.id)));
664
+ const registeredIds = new Set(registered.map((document) => document.id));
665
+ const replayableDocuments = getSurveyAssistantReplayableDocuments(manifest, registeredIds);
621
666
  const documents = [...registered, ...replayableDocuments];
622
667
  if (documents.length > 0) attachmentAccess = {
623
668
  documents,
624
669
  currentDocumentIds: registered.map((document) => document.id),
625
670
  selectedAttachments: [],
671
+ limits: requestLimits,
626
672
  load: (documentIds) => loadSurveyAssistantDocuments({
627
673
  documents: documents.filter((document) => documentIds.includes(document.id)),
628
674
  repository,
@@ -650,6 +696,7 @@ const createSurveyAssistantChatHandler = (options) => {
650
696
  code: error.code
651
697
  }, { status: 409 });
652
698
  options.onStreamError?.(error, {
699
+ requestId,
653
700
  resourceId: identity.resourceId,
654
701
  surveyId: identity.surveyId,
655
702
  threadId: identity.threadId
@@ -664,6 +711,7 @@ const createSurveyAssistantChatHandler = (options) => {
664
711
  toolCalls: 0
665
712
  };
666
713
  const streamErrorContext = {
714
+ requestId,
667
715
  resourceId: identity.resourceId,
668
716
  surveyId: identity.surveyId,
669
717
  threadId: identity.threadId
@@ -690,8 +738,9 @@ const createSurveyAssistantChatHandler = (options) => {
690
738
  };
691
739
  let stream;
692
740
  try {
741
+ const mastra = typeof options.mastra === "function" ? await options.mastra() : options.mastra;
693
742
  stream = await handleChatStream({
694
- mastra: typeof options.mastra === "function" ? await options.mastra() : options.mastra,
743
+ mastra,
695
744
  agentId: options.agentId ?? "survey-assistant-agent",
696
745
  version: "v6",
697
746
  params: {
@@ -731,7 +780,7 @@ const createSurveyAssistantChatHandler = (options) => {
731
780
  releaseRequestSlot();
732
781
  return Response.json({ error: executionTimeout.timeoutKind ? getSurveyAssistantExecutionTimeoutMessage(executionTimeout.timeoutKind) : handleStreamError(error) }, { status: 503 });
733
782
  }
734
- return createUIMessageStreamResponse({ stream: createSurveyAssistantTurnStream({
783
+ const turnStream = createSurveyAssistantTurnStream({
735
784
  stream,
736
785
  turnDraft,
737
786
  signal: executionSignal,
@@ -749,6 +798,7 @@ const createSurveyAssistantChatHandler = (options) => {
749
798
  identity,
750
799
  metrics,
751
800
  provider: modelSelection?.providerName ?? options.providerName,
801
+ requestId,
752
802
  turnId: turnDraft.turnId
753
803
  });
754
804
  } catch (error) {
@@ -758,13 +808,14 @@ const createSurveyAssistantChatHandler = (options) => {
758
808
  }
759
809
  },
760
810
  turnStartedAt: executionStartedAt
761
- }) });
811
+ });
812
+ return createUIMessageStreamResponse({ stream: turnStream });
762
813
  };
763
814
  };
764
815
  //#endregion
765
816
  //#region src/server/thread-handlers.ts
766
817
  const DEFAULT_TITLE = "New chat";
767
- const MAX_THREAD_MUTATION_BYTES = 16 * 1024;
818
+ const MAX_THREAD_MUTATION_BYTES = 16384;
768
819
  const MANUAL_TITLE_METADATA_KEY = "surveyAssistant.manualTitle";
769
820
  const AUTOMATIC_TITLE_METADATA_KEY = "surveyAssistant.automaticTitle";
770
821
  const getMetadataString = (metadata, key) => {
@@ -820,8 +871,9 @@ const createSurveyAssistantThreadHandlers = ({ authorize, onError, repository })
820
871
  const identity = await authorize(request);
821
872
  const cursor = new URL(request.url).searchParams.get("cursor")?.trim() || void 0;
822
873
  const result = await repository.list(identity.resourceId, identity.metadata, { ...cursor ? { cursor } : {} });
874
+ const threads = (Array.isArray(result) ? result : result.threads).filter((thread) => ownsThread(thread, identity) && typeof thread.metadata?.archivedAt !== "string").map(asThread);
823
875
  return json({
824
- threads: (Array.isArray(result) ? result : result.threads).filter((thread) => ownsThread(thread, identity) && typeof thread.metadata?.archivedAt !== "string").map(asThread),
876
+ threads,
825
877
  ...!Array.isArray(result) && result.nextCursor ? { nextCursor: result.nextCursor } : {}
826
878
  });
827
879
  } catch (error) {
@@ -840,11 +892,12 @@ const createSurveyAssistantThreadHandlers = ({ authorize, onError, repository })
840
892
  metadata[MANUAL_TITLE_METADATA_KEY] = parsed.title;
841
893
  metadata[AUTOMATIC_TITLE_METADATA_KEY] = DEFAULT_TITLE;
842
894
  }
843
- return json({ thread: asThread(await repository.create({
895
+ const thread = await repository.create({
844
896
  resourceId: identity.resourceId,
845
897
  title: parsed.title ?? DEFAULT_TITLE,
846
898
  metadata
847
- })) }, 201);
899
+ });
900
+ return json({ thread: asThread(thread) }, 201);
848
901
  } catch (error) {
849
902
  return errorResponse(error, onError, {
850
903
  operation: "create",
@@ -892,11 +945,12 @@ const createSurveyAssistantThreadHandlers = ({ authorize, onError, repository })
892
945
  metadata[MANUAL_TITLE_METADATA_KEY] = title;
893
946
  metadata[AUTOMATIC_TITLE_METADATA_KEY] = automaticTitle;
894
947
  }
895
- return json({ thread: asThread(await repository.update({
948
+ const updated = await repository.update({
896
949
  id: thread.id,
897
950
  title,
898
951
  metadata
899
- })) });
952
+ });
953
+ return json({ thread: asThread(updated) });
900
954
  } catch (error) {
901
955
  return errorResponse(error, onError, {
902
956
  operation: "update",
@@ -907,7 +961,8 @@ const createSurveyAssistantThreadHandlers = ({ authorize, onError, repository })
907
961
  };
908
962
  const deleteThread = async (request, threadId) => {
909
963
  try {
910
- const thread = await getOwnedThread(repository, await authorize(request), threadId);
964
+ const identity = await authorize(request);
965
+ const thread = await getOwnedThread(repository, identity, threadId);
911
966
  if (!thread) return json({ error: "Chat not found." }, 404);
912
967
  await repository.delete(thread.id);
913
968
  return new Response(null, { status: 204 });
@@ -998,4 +1053,4 @@ const createMastraMemoryThreadRepository = ({ getMemory, maxMessagesPerTranscrip
998
1053
  //#endregion
999
1054
  export { describeSurveyAssistantStreamError as a, loadSurveyAssistantDocuments as c, removeHistoricalSurveyAssistantAttachments as d, replaceCurrentSurveyAssistantAttachmentsWithReferences as f, createSurveyAssistantChatHandler as i, loadSurveyAssistantThreadAttachments as l, createSurveyAssistantThreadHandlers as n, formatSurveyAssistantStreamError as o, createSurveyAssistantTurnStream as p, SurveyAssistantAuthorizationError as r, getSurveyAssistantReplayableDocuments as s, createMastraMemoryThreadRepository as t, registerSurveyAssistantThreadAttachments as u };
1000
1055
 
1001
- //# sourceMappingURL=memory-thread-repository-CjFGVNZh.mjs.map
1056
+ //# sourceMappingURL=memory-thread-repository-DAnOGIB3.mjs.map