@case-framework/survey-assistant 0.1.0 → 0.2.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 (113) hide show
  1. package/README.md +71 -11
  2. package/dist/{authoring-references-X6uRaWuf.mjs → authoring-references-DYuOAdVx.mjs} +26 -2
  3. package/dist/authoring-references-DYuOAdVx.mjs.map +1 -0
  4. package/dist/{capabilities-B6tvE7fK.mjs → capabilities-DZ0a_o2y.mjs} +2 -2
  5. package/dist/{capabilities-B6tvE7fK.mjs.map → capabilities-DZ0a_o2y.mjs.map} +1 -1
  6. package/dist/{capabilities-DvSKtjAw.d.mts → capabilities-DlC1l6qy.d.mts} +4 -1
  7. package/dist/capabilities-DlC1l6qy.d.mts.map +1 -0
  8. package/dist/capabilities-default.d.mts +1 -1
  9. package/dist/capabilities-default.d.mts.map +1 -1
  10. package/dist/capabilities-default.mjs +6 -3
  11. package/dist/capabilities-default.mjs.map +1 -1
  12. package/dist/{constants-Jw0k8ojS.d.mts → constants-56jf_4ls.d.mts} +36 -9
  13. package/dist/constants-56jf_4ls.d.mts.map +1 -0
  14. package/dist/{controller-proxy-BRDusFiO.d.mts → controller-proxy-2VH0b_5E.d.mts} +29 -4
  15. package/dist/controller-proxy-2VH0b_5E.d.mts.map +1 -0
  16. package/dist/{controller-proxy-Duxo2IFE.mjs → controller-proxy-ClsY4lFI.mjs} +74 -5
  17. package/dist/controller-proxy-ClsY4lFI.mjs.map +1 -0
  18. package/dist/{digest-BsoVq49o.d.mts → digest-BvXpeWcR.d.mts} +2 -2
  19. package/dist/{digest-BsoVq49o.d.mts.map → digest-BvXpeWcR.d.mts.map} +1 -1
  20. package/dist/digest.d.mts +1 -1
  21. package/dist/{engine-sPvuixWg.mjs → engine-DQrCO_ur.mjs} +392 -50
  22. package/dist/engine-DQrCO_ur.mjs.map +1 -0
  23. package/dist/engine.d.mts +2 -2
  24. package/dist/engine.mjs +2 -2
  25. package/dist/{index-MpEMQzTm.d.mts → index-B_x2IYi7.d.mts} +5 -1
  26. package/dist/index-B_x2IYi7.d.mts.map +1 -0
  27. package/dist/{index-BWNHkpkh.d.mts → index-C_x686M7.d.mts} +27 -5
  28. package/dist/index-C_x686M7.d.mts.map +1 -0
  29. package/dist/{index-TFtvBiSQ.d.mts → index-DVxVyhAu.d.mts} +31 -9
  30. package/dist/index-DVxVyhAu.d.mts.map +1 -0
  31. package/dist/{index-CUqbBjkc.d.mts → index-DZ6KBwVR.d.mts} +16 -3
  32. package/dist/index-DZ6KBwVR.d.mts.map +1 -0
  33. package/dist/{memory-thread-repository-CJkkVE2-.mjs → memory-thread-repository-Cm1BJyRw.mjs} +110 -41
  34. package/dist/memory-thread-repository-Cm1BJyRw.mjs.map +1 -0
  35. package/dist/{protocol-DV0ka9WT.mjs → protocol-7EEgcYja.mjs} +70 -97
  36. package/dist/protocol-7EEgcYja.mjs.map +1 -0
  37. package/dist/protocol.d.mts +3 -3
  38. package/dist/protocol.mjs +2 -2
  39. package/dist/{react-VuYe-cPh.mjs → react-B_5smfiK.mjs} +145 -38
  40. package/dist/react-B_5smfiK.mjs.map +1 -0
  41. package/dist/react-integration.d.mts +2 -2
  42. package/dist/react-integration.mjs +2 -2
  43. package/dist/react.d.mts +3 -3
  44. package/dist/react.mjs +3 -3
  45. package/dist/references/assistant-operations.md +6 -0
  46. package/dist/references/core-rules.md +6 -0
  47. package/dist/references/embedded-forms.md +21 -14
  48. package/dist/references/expressions.md +3 -0
  49. package/dist/references/item-types.md +37 -10
  50. package/dist/references/source-material-surveys.md +9 -1
  51. package/dist/references/survey-data-model.md +13 -0
  52. package/dist/request-context-BDBw4-Gw.mjs +79 -0
  53. package/dist/request-context-BDBw4-Gw.mjs.map +1 -0
  54. package/dist/request-guardrails-h4t6u8mP.mjs +129 -0
  55. package/dist/request-guardrails-h4t6u8mP.mjs.map +1 -0
  56. package/dist/server-agent.d.mts +6 -2
  57. package/dist/server-agent.d.mts.map +1 -1
  58. package/dist/server-agent.mjs +39 -24
  59. package/dist/server-agent.mjs.map +1 -1
  60. package/dist/server-runtime.d.mts +21 -5
  61. package/dist/server-runtime.d.mts.map +1 -1
  62. package/dist/server-runtime.mjs +98 -32
  63. package/dist/server-runtime.mjs.map +1 -1
  64. package/dist/server-tasks.d.mts +2 -78
  65. package/dist/server-tasks.mjs +103 -46
  66. package/dist/server-tasks.mjs.map +1 -1
  67. package/dist/server-tools.d.mts +1 -1
  68. package/dist/server-tools.mjs +1 -1
  69. package/dist/server.d.mts +89 -21
  70. package/dist/server.d.mts.map +1 -1
  71. package/dist/server.mjs +136 -5
  72. package/dist/server.mjs.map +1 -0
  73. package/dist/storage-postgres.d.mts +12 -2
  74. package/dist/storage-postgres.d.mts.map +1 -1
  75. package/dist/storage-postgres.mjs +11 -6
  76. package/dist/storage-postgres.mjs.map +1 -1
  77. package/dist/tasks-COQnhSeT.d.mts +140 -0
  78. package/dist/tasks-COQnhSeT.d.mts.map +1 -0
  79. package/dist/{thread-documents-DamIq9Od.d.mts → thread-documents-BlxNjc7S.d.mts} +21 -5
  80. package/dist/thread-documents-BlxNjc7S.d.mts.map +1 -0
  81. package/dist/{thread-handlers-DpynUc64.d.mts → thread-handlers-l79JBl5m.d.mts} +38 -5
  82. package/dist/thread-handlers-l79JBl5m.d.mts.map +1 -0
  83. package/dist/{tools-Hz2p7vyv.mjs → tools-DDXaJ8Za.mjs} +257 -38
  84. package/dist/tools-DDXaJ8Za.mjs.map +1 -0
  85. package/dist/ui.d.mts +5 -3
  86. package/dist/ui.d.mts.map +1 -1
  87. package/dist/ui.mjs +91 -12
  88. package/dist/ui.mjs.map +1 -1
  89. package/docs/integration.md +234 -0
  90. package/package.json +9 -7
  91. package/dist/authoring-references-Cy8J-DWt.d.mts +0 -48
  92. package/dist/authoring-references-Cy8J-DWt.d.mts.map +0 -1
  93. package/dist/authoring-references-X6uRaWuf.mjs.map +0 -1
  94. package/dist/capabilities-DvSKtjAw.d.mts.map +0 -1
  95. package/dist/constants-Jw0k8ojS.d.mts.map +0 -1
  96. package/dist/controller-proxy-BRDusFiO.d.mts.map +0 -1
  97. package/dist/controller-proxy-Duxo2IFE.mjs.map +0 -1
  98. package/dist/engine-sPvuixWg.mjs.map +0 -1
  99. package/dist/index-BWNHkpkh.d.mts.map +0 -1
  100. package/dist/index-CUqbBjkc.d.mts.map +0 -1
  101. package/dist/index-MpEMQzTm.d.mts.map +0 -1
  102. package/dist/index-TFtvBiSQ.d.mts.map +0 -1
  103. package/dist/memory-thread-repository-CJkkVE2-.mjs.map +0 -1
  104. package/dist/protocol-DV0ka9WT.mjs.map +0 -1
  105. package/dist/react-VuYe-cPh.mjs.map +0 -1
  106. package/dist/request-context-jcmXT_Q2.mjs +0 -44
  107. package/dist/request-context-jcmXT_Q2.mjs.map +0 -1
  108. package/dist/request-guardrails-C59IWnH8.mjs +0 -73
  109. package/dist/request-guardrails-C59IWnH8.mjs.map +0 -1
  110. package/dist/server-tasks.d.mts.map +0 -1
  111. package/dist/thread-documents-DamIq9Od.d.mts.map +0 -1
  112. package/dist/thread-handlers-DpynUc64.d.mts.map +0 -1
  113. package/dist/tools-Hz2p7vyv.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-BWNHkpkh.d.mts","names":[],"sources":["../src/react/session-state.ts","../src/react/turn-authorization.ts","../src/react/transport.ts","../src/react/thread-client.ts","../src/react/client-error.ts","../src/react/model-catalog.ts","../src/react/use-survey-assistant-session.ts"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-CUqbBjkc.d.mts","names":[],"sources":["../src/engine/capabilities.ts","../src/engine/context.ts","../src/engine/expression-validation.ts","../src/engine/expression-mutations.ts","../src/engine/inspection.ts","../src/engine/normalization.ts","../src/engine/operations.ts","../src/engine/turn-change-collector.ts","../src/engine/task-context.ts","../src/engine/task-result-cache.ts","../src/engine/audit.ts"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-MpEMQzTm.d.mts","names":[],"sources":["../src/server/tools/survey-audit-tool.ts","../src/server/tools/survey-asset-tool.ts","../src/server/tools/index.ts"],"mappings":";;;cAwBa,eAAA,EAwBX,qBAAA,CAxB0B,IAAA;;;;;;;;;qBAwB1B,qBAAA,CAAA,oBAAA;;;cCsHW,eAAA,EA+GX,qBAAA,CA/G0B,IAAA;;;;;;;;;8BA+G1B,qBAAA,CAAA,oBAAA;;;cC1QW,yBAAA;AAAA,cAUA,oBAAA,EAAoB,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAQ/B,qBAAA,CAAA,oBAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-TFtvBiSQ.d.mts","names":[],"sources":["../src/protocol/errors.ts","../src/protocol/content.ts","../src/protocol/document.ts","../src/protocol/operations.ts","../src/protocol/threads.ts","../src/protocol/tasks.ts","../src/protocol/models.ts","../src/protocol/lifecycle.ts"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory-thread-repository-CJkkVE2-.mjs","names":[],"sources":["../src/server/turn-stream.ts","../src/server/thread-documents.ts","../src/server/handler.ts","../src/server/thread-handlers.ts","../src/server/memory-thread-repository.ts"],"sourcesContent":["import {\n SURVEY_ASSISTANT_TURN_FINAL_PART_TYPE,\n type SurveyAssistantTurnFinal,\n} from \"../protocol\";\nimport type { TurnChangeCollector } from \"../engine\";\nimport type { UIMessageChunk } from \"ai\";\n\nconst createTurnFinalChunk = (turnFinal: SurveyAssistantTurnFinal): UIMessageChunk => ({\n type: SURVEY_ASSISTANT_TURN_FINAL_PART_TYPE,\n id: turnFinal.turnId,\n data: turnFinal,\n});\n\nexport interface SurveyAssistantTurnStreamOptions {\n stream: ReadableStream<UIMessageChunk>;\n changeCollector: TurnChangeCollector;\n signal?: AbortSignal;\n onUnexpectedError?: (error: unknown) => string;\n onSettled?: () => void;\n}\n\nexport const createSurveyAssistantTurnStream = ({\n changeCollector,\n onSettled,\n onUnexpectedError = () => \"The survey assistant stream ended unexpectedly.\",\n signal,\n stream,\n}: SurveyAssistantTurnStreamOptions): ReadableStream<UIMessageChunk> => {\n const reader = stream.getReader();\n let settled = false;\n\n const settle = () => {\n if (settled) {\n return;\n }\n settled = true;\n onSettled?.();\n };\n\n return new ReadableStream<UIMessageChunk>({\n async start(controller) {\n let emittedTurnFinal = false;\n let sawFinish = false;\n let finishReason: Extract<UIMessageChunk, { type: \"finish\" }>[\"finishReason\"];\n\n const emitTurnFinal = (status: SurveyAssistantTurnFinal[\"status\"]) => {\n if (emittedTurnFinal) {\n return;\n }\n emittedTurnFinal = true;\n controller.enqueue(createTurnFinalChunk(changeCollector.finalize(status)));\n };\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n\n if (value.type === SURVEY_ASSISTANT_TURN_FINAL_PART_TYPE) {\n emitTurnFinal(\"failed\");\n controller.enqueue({\n type: \"error\",\n errorText: \"The survey assistant returned an invalid duplicate turn final.\",\n });\n await reader.cancel(\"duplicate turn final\");\n break;\n }\n if (value.type === \"error\") {\n emitTurnFinal(\"failed\");\n controller.enqueue(value);\n continue;\n }\n if (value.type === \"abort\") {\n emitTurnFinal(\"aborted\");\n controller.enqueue(value);\n continue;\n }\n if (value.type === \"finish\") {\n sawFinish = true;\n finishReason = value.finishReason;\n }\n controller.enqueue(value);\n }\n\n if (!emittedTurnFinal) {\n emitTurnFinal(\n signal?.aborted\n ? \"aborted\"\n : sawFinish && (finishReason === undefined || finishReason === \"stop\")\n ? \"completed\"\n : \"failed\",\n );\n }\n controller.close();\n } catch (error) {\n try {\n emitTurnFinal(signal?.aborted ? \"aborted\" : \"failed\");\n if (!signal?.aborted) {\n controller.enqueue({ type: \"error\", errorText: onUnexpectedError(error) });\n }\n controller.close();\n } catch {\n // The client disconnected; finalization still occurred server-side.\n }\n } finally {\n reader.releaseLock();\n settle();\n }\n },\n async cancel(reason) {\n changeCollector.finalize(\"aborted\");\n settle();\n await reader.cancel(reason);\n },\n });\n};\n","import type { UIMessage } from \"ai\";\n\nexport interface SurveyAssistantThreadDocument {\n id: string;\n name: string;\n mediaType: string;\n bytes: number;\n contentHash: string;\n createdAt: string;\n}\n\nexport interface SurveyAssistantThreadDocumentContent extends SurveyAssistantThreadDocument {\n data: string;\n}\n\nexport interface SurveyAssistantModelAttachment {\n filename: string;\n mediaType: string;\n data: string;\n contentHash: string;\n}\n\nexport interface SurveyAssistantAttachmentAccess {\n documents: SurveyAssistantThreadDocument[];\n /** Attachments submitted in the current user message; already present as model context. */\n currentDocumentIds?: string[];\n selectedAttachments: SurveyAssistantModelAttachment[];\n load(documentIds: string[]): Promise<SurveyAssistantModelAttachment[]>;\n}\n\nexport interface SurveyAssistantThreadDocumentRepository {\n put(input: {\n resourceId: string;\n threadId: string;\n name: string;\n mediaType: string;\n data: string;\n bytes: number;\n }): Promise<SurveyAssistantThreadDocument>;\n list(input: { resourceId: string; threadId: string }): Promise<SurveyAssistantThreadDocument[]>;\n read(input: {\n resourceId: string;\n threadId: string;\n documentId: string;\n }): Promise<SurveyAssistantThreadDocumentContent | null>;\n deleteThread(input: { resourceId: string; threadId: string }): Promise<void>;\n}\n\nconst parseFileDataUrl = (url: string) => {\n const match = /^data:([^;,]+);base64,([A-Za-z0-9+/]*={0,2})$/.exec(url);\n return match ? { mediaType: match[1], data: match[2] } : null;\n};\n\nconst getBase64Bytes = (data: string) => {\n const padding = data.endsWith(\"==\") ? 2 : data.endsWith(\"=\") ? 1 : 0;\n return Math.max(0, Math.floor((data.length * 3) / 4) - padding);\n};\n\nexport const registerSurveyAssistantThreadAttachments = async ({\n messages,\n repository,\n resourceId,\n threadId,\n}: {\n messages: UIMessage[];\n repository: SurveyAssistantThreadDocumentRepository;\n resourceId: string;\n threadId: string;\n}) => {\n const registered: SurveyAssistantThreadDocument[] = [];\n\n const currentMessage = getCurrentUserMessage(messages);\n for (const message of currentMessage ? [currentMessage] : []) {\n for (const part of message.parts) {\n if (part.type !== \"file\" || typeof part.url !== \"string\") continue;\n const parsed = parseFileDataUrl(part.url);\n if (!parsed) continue;\n\n registered.push(\n await repository.put({\n resourceId,\n threadId,\n name: part.filename?.trim() || \"Attached document\",\n mediaType: parsed.mediaType,\n data: parsed.data,\n bytes: getBase64Bytes(parsed.data),\n }),\n );\n }\n }\n\n return registered;\n};\n\nconst hasMatchingCurrentFile = (message: UIMessage, document: SurveyAssistantThreadDocument) =>\n message.parts.some(\n (part) =>\n part.type === \"file\" &&\n part.filename === document.name &&\n part.mediaType === document.mediaType,\n );\n\nconst getCurrentUserMessage = (messages: UIMessage[]) => {\n for (let index = messages.length - 1; index >= 0; index -= 1) {\n const message = messages[index];\n if (message?.role === \"user\") return message;\n }\n return undefined;\n};\n\nexport const removeHistoricalSurveyAssistantAttachments = (messages: UIMessage[]) => {\n const current = getCurrentUserMessage(messages);\n return messages.map((message) => {\n if (message === current) return message;\n const parts = message.parts.filter((part) => part.type !== \"file\");\n return parts.length === message.parts.length ? message : { ...message, parts };\n });\n};\n\nexport const getSurveyAssistantReplayableDocuments = (\n documents: SurveyAssistantThreadDocument[],\n messages: UIMessage[],\n) => {\n const current = getCurrentUserMessage(messages);\n return current ? documents.filter((document) => !hasMatchingCurrentFile(current, document)) : [];\n};\n\nexport const loadSurveyAssistantThreadAttachments = async ({\n documents,\n messages,\n repository,\n resourceId,\n threadId,\n}: {\n documents: SurveyAssistantThreadDocument[];\n messages: UIMessage[];\n repository: SurveyAssistantThreadDocumentRepository;\n resourceId: string;\n threadId: string;\n}): Promise<SurveyAssistantModelAttachment[]> => {\n const replayableDocuments = getSurveyAssistantReplayableDocuments(documents, messages);\n\n return loadSurveyAssistantDocuments({\n documents: replayableDocuments,\n repository,\n resourceId,\n threadId,\n });\n};\n\nexport const loadSurveyAssistantDocuments = async ({\n documents,\n repository,\n resourceId,\n threadId,\n}: {\n documents: SurveyAssistantThreadDocument[];\n repository: SurveyAssistantThreadDocumentRepository;\n resourceId: string;\n threadId: string;\n}): Promise<SurveyAssistantModelAttachment[]> => {\n const attachments: SurveyAssistantModelAttachment[] = [];\n for (const document of documents) {\n const content = await repository.read({\n resourceId,\n threadId,\n documentId: document.id,\n });\n if (!content) continue;\n attachments.push({\n filename: content.name,\n mediaType: content.mediaType,\n data: content.data,\n contentHash: content.contentHash,\n });\n }\n\n return attachments;\n};\n","import { handleChatStream } from \"@mastra/ai-sdk\";\nimport type { AgentExecutionOptions } from \"@mastra/core/agent\";\nimport type { Mastra } from \"@mastra/core/mastra\";\nimport { createUIMessageStreamResponse, type UIMessage, type UIMessageChunk } from \"ai\";\nimport {\n SurveyAssistantCapabilityMismatchError,\n TurnChangeCollector,\n type SurveyAssistantCapabilitySet,\n} from \"../engine\";\nimport {\n serializeSurveyAssistantError,\n type SurveyAssistantErrorCode,\n type SurveyDocumentSnapshot,\n} from \"../protocol\";\nimport {\n buildSurveyAssistantRequestContext,\n parseSurveyAssistantSnapshot,\n type SurveyAssistantModelSelection,\n type SurveyAssistantIdentityContext,\n} from \"./request-context\";\nimport { SURVEY_ASSISTANT_AGENT_ID } from \"./constants\";\nimport {\n readSurveyAssistantRequestJson,\n SurveyAssistantRequestError,\n validateSurveyAssistantMessages,\n} from \"./request-guardrails\";\nimport { createSurveyAssistantTurnStream } from \"./turn-stream\";\nimport {\n registerSurveyAssistantThreadAttachments,\n loadSurveyAssistantDocuments,\n getSurveyAssistantReplayableDocuments,\n removeHistoricalSurveyAssistantAttachments,\n type SurveyAssistantAttachmentAccess,\n type SurveyAssistantModelAttachment,\n type SurveyAssistantThreadDocumentRepository,\n} from \"./thread-documents\";\n\nconst DEFAULT_MAX_STEPS = 48;\nconst DEFAULT_MAX_CONCURRENT_REQUESTS = 4;\nconst MAX_USER_ERROR_MESSAGE_LENGTH = 700;\nconst MAX_ERROR_CAUSE_DEPTH = 5;\n\ntype ProviderOptions = AgentExecutionOptions[\"providerOptions\"];\n\nexport interface SurveyAssistantAuthorizationInput {\n request: Request;\n requestedResourceId?: string;\n requestedThreadId?: string;\n requestedSurveyId?: string;\n}\n\nexport type SurveyAssistantAuthorizedIdentity = SurveyAssistantIdentityContext;\n\nexport type SurveyAssistantAuthorize = (\n input: SurveyAssistantAuthorizationInput,\n) => Promise<SurveyAssistantAuthorizedIdentity> | SurveyAssistantAuthorizedIdentity;\n\nexport interface SurveyAssistantModelResolutionInput {\n identity: SurveyAssistantAuthorizedIdentity;\n request: Request;\n requestedModelId?: string;\n}\n\nexport type SurveyAssistantResolveModel = (\n input: SurveyAssistantModelResolutionInput,\n) =>\n | Promise<SurveyAssistantModelSelection | null | undefined>\n | SurveyAssistantModelSelection\n | null\n | undefined;\n\nexport class SurveyAssistantAuthorizationError extends Error {\n readonly status: number;\n\n constructor(message = \"The survey assistant request is not authorized.\", status = 403) {\n super(message);\n this.name = \"SurveyAssistantAuthorizationError\";\n this.status = status;\n }\n}\n\nexport interface SurveyAssistantTurnMetrics {\n snapshotBytes: number;\n toolCalls: number;\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n reasoningTokens?: number;\n cachedInputTokens?: number;\n}\n\nexport interface SurveyAssistantStreamErrorContext {\n resourceId: string;\n threadId: string;\n}\n\nexport interface SurveyAssistantChatHandlerOptions {\n mastra: Mastra | (() => Mastra | Promise<Mastra>);\n authorize: SurveyAssistantAuthorize;\n activeTools: readonly string[];\n agentId?: string;\n trustedCapabilities?: SurveyAssistantCapabilitySet;\n isEnabled?: (request: Request) => boolean | Promise<boolean>;\n getReadinessError?: (request: Request) => string | null | Promise<string | null>;\n maxConcurrentRequests?: number;\n maxSteps?: number;\n providerName?: string;\n providerOptions?: ProviderOptions;\n sendReasoning?: boolean;\n formatStreamError?: (error: unknown, context: SurveyAssistantStreamErrorContext) => string;\n onStreamError?: (error: unknown, context: SurveyAssistantStreamErrorContext) => void;\n onTurnMetrics?: (input: {\n metrics: SurveyAssistantTurnMetrics;\n provider?: string;\n turnId: string;\n }) => void;\n resolveModel?: SurveyAssistantResolveModel;\n threadDocuments?: SurveyAssistantThreadDocumentRepository;\n}\n\ntype SurveyAssistantChatParams = {\n messages?: unknown;\n snapshot?: unknown;\n id?: unknown;\n resourceId?: unknown;\n modelId?: unknown;\n threadId?: unknown;\n surveyId?: unknown;\n trigger?: \"submit-message\" | \"regenerate-message\";\n} & Record<string, unknown>;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null && !Array.isArray(value);\n\nconst optionalRequestedId = (value: unknown) => {\n if (typeof value !== \"string\") return undefined;\n const normalized = value.trim();\n return normalized.length > 0 && normalized.length <= 240 ? normalized : undefined;\n};\n\nconst validateAuthorizedIdentity = (\n identity: SurveyAssistantAuthorizedIdentity,\n): SurveyAssistantAuthorizedIdentity => {\n if (\n !identity ||\n (identity.authority !== \"authenticated-host\" &&\n identity.authority !== \"experimental-client-request\") ||\n typeof identity.resourceId !== \"string\" ||\n identity.resourceId.trim().length === 0 ||\n identity.resourceId.length > 240 ||\n typeof identity.threadId !== \"string\" ||\n identity.threadId.trim().length === 0 ||\n identity.threadId.length > 240\n ) {\n throw new SurveyAssistantAuthorizationError(\n \"The host returned an invalid survey assistant identity.\",\n 500,\n );\n }\n\n return {\n authority: identity.authority,\n resourceId: identity.resourceId.trim(),\n threadId: identity.threadId.trim(),\n };\n};\n\nconst validateModelSelection = (\n selection: SurveyAssistantModelSelection | null | undefined,\n): SurveyAssistantModelSelection | null => {\n if (!selection) return null;\n const id = optionalRequestedId(selection.id);\n const model = optionalRequestedId(selection.model);\n return id && model ? { id, model } : null;\n};\n\nconst readNumber = (value: unknown): number | undefined =>\n typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n\nconst recordTurnStreamPart = (metrics: SurveyAssistantTurnMetrics, part: unknown) => {\n if (!isRecord(part)) return;\n if (part.type === \"tool-call\") metrics.toolCalls += 1;\n if (part.type !== \"finish\") return;\n\n const payload = isRecord(part.payload) ? part.payload : undefined;\n const output = isRecord(payload?.output) ? payload.output : undefined;\n const usage = isRecord(output?.usage) ? output.usage : undefined;\n if (!usage) return;\n\n metrics.inputTokens = readNumber(usage.inputTokens);\n metrics.outputTokens = readNumber(usage.outputTokens);\n metrics.totalTokens = readNumber(usage.totalTokens);\n metrics.reasoningTokens = readNumber(usage.reasoningTokens);\n metrics.cachedInputTokens = readNumber(usage.cachedInputTokens);\n};\n\nconst unwrapStreamError = (error: unknown) => {\n if (isRecord(error) && error.error !== undefined) return error.error;\n return error;\n};\n\nconst describeErrorLevel = (value: unknown): Record<string, unknown> => {\n if (value instanceof Error) {\n const properties = Object.fromEntries(\n Object.getOwnPropertyNames(value)\n .filter((key) => key !== \"stack\")\n .map((key) => [key, (value as unknown as Record<string, unknown>)[key]]),\n );\n return { name: value.name, message: value.message, stack: value.stack, ...properties };\n }\n\n if (isRecord(value)) {\n return {\n constructorName: value.constructor?.name,\n ...Object.fromEntries(Object.getOwnPropertyNames(value).map((key) => [key, value[key]])),\n };\n }\n\n return { value };\n};\n\nexport const describeSurveyAssistantStreamError = (error: unknown) => {\n const levels: Record<string, unknown>[] = [];\n let current: unknown = unwrapStreamError(error);\n\n for (\n let depth = 0;\n depth < MAX_ERROR_CAUSE_DEPTH && current !== undefined && current !== null;\n depth += 1\n ) {\n const level = describeErrorLevel(current);\n levels.push(level);\n current = level.cause;\n }\n\n return levels.length === 1 ? levels[0] : { levels };\n};\n\nconst clampUserErrorMessage = (message: string) => {\n const normalized = message.replace(/\\s+/g, \" \").trim();\n return normalized.length <= MAX_USER_ERROR_MESSAGE_LENGTH\n ? normalized\n : `${normalized.slice(0, MAX_USER_ERROR_MESSAGE_LENGTH - 1)}…`;\n};\n\nconst getProviderModelName = (message: string) =>\n message.match(/\\bmodel\\s+[`'\"]([^`'\"]+)[`'\"]/i)?.[1]?.trim();\n\nconst classifyStreamError = (message: string, statusCode?: number): SurveyAssistantErrorCode => {\n if (statusCode === 401 || statusCode === 403) return \"authorization_failed\";\n if (statusCode === 429) return \"rate_limited\";\n if (\n /\\bmodel\\b[\\s\\S]{0,160}\\b(?:limited preview|not available)\\b/i.test(message) ||\n /\\blimited preview\\b[\\s\\S]{0,160}\\bmodel\\b/i.test(message)\n ) {\n return \"model_unavailable\";\n }\n if (/\\b(?:rate limit|too many requests|request limit)\\b/i.test(message)) {\n return \"rate_limited\";\n }\n if (\n /\\b(?:invalid api key|incorrect api key|authentication|unauthorized|forbidden)\\b/i.test(message)\n ) {\n return \"authorization_failed\";\n }\n if (\n /\\b(?:attachment|document|file)\\b[\\s\\S]{0,120}\\b(?:missing|unavailable|not found|failed)\\b/i.test(\n message,\n )\n ) {\n return \"attachment_unavailable\";\n }\n return \"request_failed\";\n};\n\nconst formatKnownProviderError = (message: string) => {\n const normalized = clampUserErrorMessage(message);\n if (\n /\\bmodel\\b[\\s\\S]{0,160}\\b(?:limited preview|not available)\\b/i.test(normalized) ||\n /\\blimited preview\\b[\\s\\S]{0,160}\\bmodel\\b/i.test(normalized)\n ) {\n const modelName = getProviderModelName(normalized);\n return `The configured model${modelName ? ` \\`${modelName}\\`` : \"\"} is not available on this account.`;\n }\n if (/\\b(?:rate limit|too many requests|request limit)\\b/i.test(normalized)) {\n return \"The AI provider is temporarily limiting requests.\";\n }\n if (\n /\\b(?:invalid api key|incorrect api key|authentication|unauthorized|forbidden)\\b/i.test(\n normalized,\n )\n ) {\n return \"The AI provider rejected the assistant credentials.\";\n }\n return normalized;\n};\n\nconst parseProviderResponseBodyMessage = (responseBody: unknown) => {\n if (typeof responseBody !== \"string\" || responseBody.trim().length === 0) return undefined;\n try {\n const parsed = JSON.parse(responseBody) as unknown;\n if (isRecord(parsed) && isRecord(parsed.error) && typeof parsed.error.message === \"string\") {\n return parsed.error.message;\n }\n } catch {\n return responseBody;\n }\n return responseBody;\n};\n\nconst extractUserErrorMessageFromLevel = (level: Record<string, unknown>) => {\n if (\n isRecord(level.data) &&\n isRecord(level.data.error) &&\n typeof level.data.error.message === \"string\"\n ) {\n return level.data.error.message;\n }\n return (\n parseProviderResponseBodyMessage(level.responseBody) ??\n (typeof level.message === \"string\" ? level.message : undefined)\n );\n};\n\nexport const formatSurveyAssistantStreamError = (error: unknown) => {\n const describedError = describeSurveyAssistantStreamError(error);\n const levels = Array.isArray(describedError.levels) ? describedError.levels : [describedError];\n const messageLevel = levels.find(\n (level): level is Record<string, unknown> =>\n isRecord(level) && Boolean(extractUserErrorMessageFromLevel(level)),\n );\n const statusLevel = levels.find(\n (level): level is Record<string, unknown> => isRecord(level) && level.statusCode !== undefined,\n );\n const statusCode = Number(statusLevel?.statusCode);\n const detail = messageLevel ? extractUserErrorMessageFromLevel(messageLevel) : undefined;\n const formattedDetail = detail ? formatKnownProviderError(detail) : undefined;\n return serializeSurveyAssistantError({\n code: classifyStreamError(\n formattedDetail ?? \"\",\n Number.isFinite(statusCode) ? statusCode : undefined,\n ),\n ...(formattedDetail ? { detail: formattedDetail } : {}),\n });\n};\n\nconst requestErrorResponse = (error: unknown, fallback: string) => {\n const requestError =\n error instanceof SurveyAssistantRequestError\n ? error\n : new SurveyAssistantRequestError(fallback);\n return Response.json(\n { code: \"request_failed\", error: requestError.message },\n { status: requestError.status },\n );\n};\n\nexport const createSurveyAssistantChatHandler = (options: SurveyAssistantChatHandlerOptions) => {\n const maxConcurrentRequests =\n Number.isInteger(options.maxConcurrentRequests) && (options.maxConcurrentRequests ?? 0) > 0\n ? options.maxConcurrentRequests!\n : DEFAULT_MAX_CONCURRENT_REQUESTS;\n const maxSteps =\n Number.isInteger(options.maxSteps) && (options.maxSteps ?? 0) > 0\n ? options.maxSteps!\n : DEFAULT_MAX_STEPS;\n let activeRequestCount = 0;\n\n const acquireRequestSlot = () => {\n if (activeRequestCount >= maxConcurrentRequests) return null;\n activeRequestCount += 1;\n let released = false;\n return () => {\n if (released) return;\n released = true;\n activeRequestCount = Math.max(0, activeRequestCount - 1);\n };\n };\n\n return async (request: Request): Promise<Response> => {\n if (options.isEnabled && !(await options.isEnabled(request))) {\n return Response.json(\n { code: \"authorization_failed\", error: \"Survey assistant is disabled.\" },\n { status: 404 },\n );\n }\n\n let rawParams: unknown;\n try {\n rawParams = await readSurveyAssistantRequestJson(request);\n } catch (error) {\n return requestErrorResponse(error, \"The survey assistant request could not be read.\");\n }\n\n const params = isRecord(rawParams)\n ? (rawParams as SurveyAssistantChatParams)\n : ({} satisfies SurveyAssistantChatParams);\n\n let identity: SurveyAssistantAuthorizedIdentity;\n try {\n identity = validateAuthorizedIdentity(\n await options.authorize({\n request,\n requestedResourceId: optionalRequestedId(params.resourceId),\n requestedThreadId: optionalRequestedId(params.threadId ?? params.id),\n requestedSurveyId: optionalRequestedId(params.surveyId),\n }),\n );\n } catch (error) {\n const authorizationError =\n error instanceof SurveyAssistantAuthorizationError\n ? error\n : new SurveyAssistantAuthorizationError();\n return Response.json(\n { code: \"authorization_failed\", error: authorizationError.message },\n { status: authorizationError.status },\n );\n }\n\n let messages: UIMessage[];\n try {\n messages = validateSurveyAssistantMessages(params.messages);\n } catch (error) {\n return requestErrorResponse(error, \"The survey assistant messages are invalid.\");\n }\n\n let modelSelection: SurveyAssistantModelSelection | undefined;\n if (options.resolveModel) {\n const requestedModelId = optionalRequestedId(params.modelId);\n if (params.modelId !== undefined && !requestedModelId) {\n return Response.json(\n { code: \"model_unavailable\", error: \"Invalid survey assistant model selection.\" },\n { status: 400 },\n );\n }\n\n try {\n modelSelection =\n validateModelSelection(\n await options.resolveModel({ identity, request, requestedModelId }),\n ) ?? undefined;\n } catch (error) {\n options.onStreamError?.(error, {\n resourceId: identity.resourceId,\n threadId: identity.threadId,\n });\n return Response.json(\n {\n code: \"model_unavailable\",\n error: \"The survey assistant model catalog is unavailable.\",\n },\n { status: 503 },\n );\n }\n if (!modelSelection) {\n return Response.json(\n {\n code: \"model_unavailable\",\n error: \"The selected survey assistant model is not available.\",\n },\n { status: 400 },\n );\n }\n }\n\n let snapshot: SurveyDocumentSnapshot | null;\n try {\n snapshot = parseSurveyAssistantSnapshot(params.snapshot);\n } catch {\n return Response.json(\n { code: \"request_failed\", error: \"Invalid survey assistant snapshot.\" },\n { status: 400 },\n );\n }\n\n const readinessError = await options.getReadinessError?.(request);\n if (readinessError) {\n return Response.json({ code: \"request_failed\", error: readinessError }, { status: 503 });\n }\n\n const releaseRequestSlot = acquireRequestSlot();\n if (!releaseRequestSlot) {\n return Response.json(\n {\n code: \"rate_limited\",\n error: \"The survey assistant is handling too many requests. Try again shortly.\",\n },\n { status: 429 },\n );\n }\n\n const changeCollector = new TurnChangeCollector();\n let requestContext;\n try {\n let attachmentAccess: SurveyAssistantAttachmentAccess | undefined;\n let modelAttachments: SurveyAssistantModelAttachment[] = [];\n if (options.threadDocuments) {\n const repository = options.threadDocuments;\n const registered = await registerSurveyAssistantThreadAttachments({\n messages,\n repository,\n resourceId: identity.resourceId,\n threadId: identity.threadId,\n });\n const manifest = await repository.list({\n resourceId: identity.resourceId,\n threadId: identity.threadId,\n });\n modelAttachments = await loadSurveyAssistantDocuments({\n documents: registered,\n repository,\n resourceId: identity.resourceId,\n threadId: identity.threadId,\n });\n messages = removeHistoricalSurveyAssistantAttachments(messages);\n const registeredIds = new Set(registered.map((document) => document.id));\n const replayableDocuments = getSurveyAssistantReplayableDocuments(\n manifest.filter((document) => !registeredIds.has(document.id)),\n messages,\n );\n const documents = [...registered, ...replayableDocuments];\n if (documents.length > 0) {\n attachmentAccess = {\n documents,\n currentDocumentIds: registered.map((document) => document.id),\n selectedAttachments: [],\n load: (documentIds) =>\n loadSurveyAssistantDocuments({\n documents: documents.filter((document) => documentIds.includes(document.id)),\n repository,\n resourceId: identity.resourceId,\n threadId: identity.threadId,\n }),\n };\n }\n }\n requestContext = buildSurveyAssistantRequestContext({\n changeCollector,\n identity,\n snapshot,\n snapshotSource: snapshot ? \"full\" : \"missing\",\n trustedCapabilities: options.trustedCapabilities,\n attachmentAccess,\n modelAttachments,\n modelSelection,\n });\n } catch (error) {\n releaseRequestSlot();\n if (error instanceof SurveyAssistantRequestError) {\n return requestErrorResponse(error, \"The thread attachments could not be prepared.\");\n }\n if (error instanceof SurveyAssistantCapabilityMismatchError) {\n return Response.json({ error: error.message, code: error.code }, { status: 409 });\n }\n options.onStreamError?.(error, {\n resourceId: identity.resourceId,\n threadId: identity.threadId,\n });\n return Response.json(\n {\n code: \"attachment_unavailable\",\n error: \"The survey assistant could not prepare the thread's reference documents.\",\n },\n { status: 503 },\n );\n }\n\n const metrics: SurveyAssistantTurnMetrics = {\n snapshotBytes: snapshot ? new TextEncoder().encode(JSON.stringify(snapshot)).byteLength : 0,\n toolCalls: 0,\n };\n const streamErrorContext = {\n resourceId: identity.resourceId,\n threadId: identity.threadId,\n };\n const handleStreamError = (error: unknown) => {\n options.onStreamError?.(error, streamErrorContext);\n return (\n options.formatStreamError?.(error, streamErrorContext) ??\n formatSurveyAssistantStreamError(error)\n );\n };\n\n let stream: ReadableStream<UIMessageChunk>;\n try {\n const mastra = typeof options.mastra === \"function\" ? await options.mastra() : options.mastra;\n stream = (await handleChatStream({\n mastra,\n agentId: options.agentId ?? SURVEY_ASSISTANT_AGENT_ID,\n version: \"v6\",\n params: {\n messages,\n ...(params.trigger ? { trigger: params.trigger } : {}),\n requestContext,\n runId: changeCollector.turnId,\n abortSignal: request.signal,\n onAbort: () => {\n changeCollector.finalize(\"aborted\");\n },\n onError: () => {\n changeCollector.finalize(\"failed\");\n },\n memory: {\n thread: identity.threadId,\n resource: identity.resourceId,\n },\n },\n defaultOptions: {\n activeTools: [...options.activeTools],\n maxSteps,\n ...(options.providerOptions ? { providerOptions: options.providerOptions } : {}),\n },\n sendReasoning: options.sendReasoning ?? true,\n messageMetadata: ({ part }: { part: unknown }) => {\n recordTurnStreamPart(metrics, part);\n return undefined;\n },\n onError: (error: unknown) => {\n changeCollector.finalize(\"failed\");\n return handleStreamError(error);\n },\n } as never)) as ReadableStream<UIMessageChunk>;\n } catch (error) {\n changeCollector.finalize(request.signal.aborted ? \"aborted\" : \"failed\");\n releaseRequestSlot();\n return Response.json({ error: handleStreamError(error) }, { status: 503 });\n }\n\n const turnStream = createSurveyAssistantTurnStream({\n stream,\n changeCollector,\n signal: request.signal,\n onUnexpectedError: handleStreamError,\n onSettled: () => {\n releaseRequestSlot();\n options.onTurnMetrics?.({\n metrics,\n provider: options.providerName,\n turnId: changeCollector.turnId,\n });\n },\n });\n\n return createUIMessageStreamResponse({ stream: turnStream });\n };\n};\n","import {\n createSurveyAssistantThreadInputSchema,\n updateSurveyAssistantThreadInputSchema,\n type SurveyAssistantThread,\n} from \"../protocol\";\n\nconst DEFAULT_TITLE = \"New chat\";\nconst MANUAL_TITLE_METADATA_KEY = \"surveyAssistant.manualTitle\";\nconst AUTOMATIC_TITLE_METADATA_KEY = \"surveyAssistant.automaticTitle\";\n\nexport interface SurveyAssistantThreadIdentity {\n resourceId: string;\n metadata: Record<string, string>;\n}\n\nexport interface CreateSurveyAssistantThreadHandlersOptions {\n authorize(\n request: Request,\n ): SurveyAssistantThreadIdentity | Promise<SurveyAssistantThreadIdentity>;\n repository: SurveyAssistantThreadRepository;\n}\n\nexport interface SurveyAssistantStoredThread {\n id: string;\n title?: string;\n resourceId: string;\n createdAt: Date;\n updatedAt: Date;\n metadata?: Record<string, unknown>;\n}\n\nexport interface SurveyAssistantThreadRepository {\n create(input: {\n resourceId: string;\n title: string;\n metadata: Record<string, unknown>;\n }): Promise<SurveyAssistantStoredThread>;\n get(threadId: string): Promise<SurveyAssistantStoredThread | null>;\n list(\n resourceId: string,\n metadata: Record<string, string>,\n ): Promise<SurveyAssistantStoredThread[]>;\n readMessages(threadId: string, resourceId: string): Promise<unknown[]>;\n delete(threadId: string): Promise<void>;\n update(input: {\n id: string;\n title: string;\n metadata: Record<string, unknown>;\n }): Promise<SurveyAssistantStoredThread>;\n}\n\nconst getMetadataString = (metadata: Record<string, unknown> | undefined, key: string) => {\n const value = metadata?.[key];\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n};\n\nconst getRawTitle = (thread: SurveyAssistantStoredThread) => thread.title?.trim() || DEFAULT_TITLE;\n\nconst getAutomaticTitle = (thread: SurveyAssistantStoredThread, manualTitle: string): string => {\n const rawTitle = thread.title?.trim();\n if (rawTitle && rawTitle !== manualTitle) return rawTitle;\n return getMetadataString(thread.metadata, AUTOMATIC_TITLE_METADATA_KEY) ?? DEFAULT_TITLE;\n};\n\nconst asThread = (thread: SurveyAssistantStoredThread): SurveyAssistantThread => {\n const manualTitle = getMetadataString(thread.metadata, MANUAL_TITLE_METADATA_KEY);\n\n return {\n id: thread.id,\n title: manualTitle ?? getRawTitle(thread),\n titleMode: manualTitle ? \"manual\" : \"automatic\",\n createdAt: thread.createdAt.toISOString(),\n updatedAt: thread.updatedAt.toISOString(),\n };\n};\n\nconst json = (body: unknown, status = 200) => Response.json(body, { status });\n\nconst errorResponse = (error: unknown) => {\n const message =\n error instanceof Error ? error.message : \"The chat request could not be completed.\";\n const status =\n typeof error === \"object\" &&\n error !== null &&\n \"status\" in error &&\n typeof error.status === \"number\"\n ? error.status\n : 400;\n return json(\n {\n code: status === 401 || status === 403 ? \"authorization_failed\" : \"request_failed\",\n error: message,\n },\n status,\n );\n};\n\nconst ownsThread = (thread: SurveyAssistantStoredThread, identity: SurveyAssistantThreadIdentity) =>\n thread.resourceId === identity.resourceId &&\n Object.entries(identity.metadata).every(([key, value]) => thread.metadata?.[key] === value);\n\nconst getOwnedThread = async (\n repository: SurveyAssistantThreadRepository,\n identity: SurveyAssistantThreadIdentity,\n threadId: string,\n) => {\n const thread = await repository.get(threadId);\n return thread && ownsThread(thread, identity) ? thread : null;\n};\n\nexport const createSurveyAssistantThreadHandlers = ({\n authorize,\n repository,\n}: CreateSurveyAssistantThreadHandlersOptions) => {\n const list = async (request: Request) => {\n try {\n const identity = await authorize(request);\n const storedThreads = await repository.list(identity.resourceId, identity.metadata);\n const threads = storedThreads\n .filter(\n (thread) =>\n ownsThread(thread, identity) && typeof thread.metadata?.archivedAt !== \"string\",\n )\n .map(asThread);\n return json({ threads });\n } catch (error) {\n return errorResponse(error);\n }\n };\n\n const create = async (request: Request) => {\n try {\n const [identity, input] = await Promise.all([\n authorize(request),\n request.json().catch(() => ({})),\n ]);\n const parsed = createSurveyAssistantThreadInputSchema.parse(input);\n const metadata = { ...identity.metadata };\n if (parsed.title) {\n metadata[MANUAL_TITLE_METADATA_KEY] = parsed.title;\n metadata[AUTOMATIC_TITLE_METADATA_KEY] = DEFAULT_TITLE;\n }\n const thread = await repository.create({\n resourceId: identity.resourceId,\n title: parsed.title ?? DEFAULT_TITLE,\n metadata,\n });\n return json({ thread: asThread(thread) }, 201);\n } catch (error) {\n return errorResponse(error);\n }\n };\n\n const read = async (request: Request, threadId: string) => {\n try {\n const identity = await authorize(request);\n const thread = await getOwnedThread(repository, identity, threadId);\n if (!thread || typeof thread.metadata?.archivedAt === \"string\") {\n return json({ error: \"Chat not found.\" }, 404);\n }\n return json({\n thread: asThread(thread),\n messages: await repository.readMessages(threadId, identity.resourceId),\n });\n } catch (error) {\n return errorResponse(error);\n }\n };\n\n const update = async (request: Request, threadId: string) => {\n try {\n const [identity, input] = await Promise.all([authorize(request), request.json()]);\n const thread = await getOwnedThread(repository, identity, threadId);\n if (!thread || typeof thread.metadata?.archivedAt === \"string\") {\n return json({ error: \"Chat not found.\" }, 404);\n }\n const parsed = updateSurveyAssistantThreadInputSchema.parse(input);\n const metadata = { ...(thread.metadata ?? identity.metadata) };\n let title: string;\n\n if (parsed.mode === \"automatic\") {\n const manualTitle = getMetadataString(metadata, MANUAL_TITLE_METADATA_KEY);\n title =\n parsed.title ??\n (manualTitle ? getAutomaticTitle(thread, manualTitle) : getRawTitle(thread));\n metadata[MANUAL_TITLE_METADATA_KEY] = null;\n metadata[AUTOMATIC_TITLE_METADATA_KEY] = null;\n } else {\n const previousManualTitle = getMetadataString(metadata, MANUAL_TITLE_METADATA_KEY);\n const automaticTitle = previousManualTitle\n ? getAutomaticTitle(thread, previousManualTitle)\n : getRawTitle(thread);\n title = parsed.title;\n metadata[MANUAL_TITLE_METADATA_KEY] = title;\n metadata[AUTOMATIC_TITLE_METADATA_KEY] = automaticTitle;\n }\n\n const updated = await repository.update({\n id: thread.id,\n title,\n metadata,\n });\n return json({ thread: asThread(updated) });\n } catch (error) {\n return errorResponse(error);\n }\n };\n\n const deleteThread = async (request: Request, threadId: string) => {\n try {\n const identity = await authorize(request);\n const thread = await getOwnedThread(repository, identity, threadId);\n if (!thread) return json({ error: \"Chat not found.\" }, 404);\n await repository.delete(thread.id);\n return new Response(null, { status: 204 });\n } catch (error) {\n return errorResponse(error);\n }\n };\n\n return { create, delete: deleteThread, list, read, update };\n};\n","import { toAISdkMessages } from \"@mastra/ai-sdk/ui\";\nimport type { MastraMemory } from \"@mastra/core/memory\";\nimport type { SurveyAssistantThreadDocumentRepository } from \"./thread-documents\";\nimport type { SurveyAssistantThreadRepository } from \"./thread-handlers\";\n\ntype ThreadMemory = Pick<\n MastraMemory,\n \"createThread\" | \"deleteThread\" | \"getThreadById\" | \"listThreads\" | \"recall\" | \"updateThread\"\n>;\n\nexport interface CreateMastraMemoryThreadRepositoryOptions {\n getMemory(): ThreadMemory | Promise<ThreadMemory>;\n threadDocuments?: SurveyAssistantThreadDocumentRepository;\n}\n\nexport const createMastraMemoryThreadRepository = ({\n getMemory,\n threadDocuments,\n}: CreateMastraMemoryThreadRepositoryOptions): SurveyAssistantThreadRepository => ({\n async create({ metadata, resourceId, title }) {\n return (await getMemory()).createThread({ metadata, resourceId, title, saveThread: true });\n },\n async get(threadId) {\n return (await getMemory()).getThreadById({ threadId });\n },\n async list(resourceId, metadata) {\n const result = await (\n await getMemory()\n ).listThreads({\n filter: { metadata, resourceId },\n orderBy: { field: \"updatedAt\", direction: \"DESC\" },\n perPage: false,\n });\n return result.threads;\n },\n async readMessages(threadId, resourceId) {\n const result = await (\n await getMemory()\n ).recall({\n threadId,\n resourceId,\n perPage: false,\n orderBy: { field: \"createdAt\", direction: \"ASC\" },\n });\n return toAISdkMessages(result.messages, { version: \"v6\" });\n },\n async delete(threadId) {\n const memory = await getMemory();\n const thread = await memory.getThreadById({ threadId });\n if (thread && threadDocuments) {\n await threadDocuments.deleteThread({ resourceId: thread.resourceId, threadId });\n }\n await memory.deleteThread(threadId);\n },\n async update({ id, metadata, title }) {\n return (await getMemory()).updateThread({ id, metadata, title });\n },\n});\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"protocol-DV0ka9WT.mjs","names":[],"sources":["../src/protocol/errors.ts","../src/protocol/content.ts","../src/protocol/operations.ts","../src/protocol/capabilities.ts","../src/protocol/document.ts","../src/protocol/threads.ts","../src/protocol/tasks.ts","../src/protocol/models.ts","../src/protocol/lifecycle.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const surveyAssistantErrorCodeSchema = z.enum([\n \"attachment_unavailable\",\n \"authorization_failed\",\n \"model_unavailable\",\n \"rate_limited\",\n \"request_failed\",\n]);\n\nexport type SurveyAssistantErrorCode = z.infer<typeof surveyAssistantErrorCodeSchema>;\n\nexport const surveyAssistantErrorInfoSchema = z.object({\n code: surveyAssistantErrorCodeSchema,\n detail: z.string().optional(),\n});\n\nexport type SurveyAssistantErrorInfo = z.infer<typeof surveyAssistantErrorInfoSchema>;\n\nconst ERROR_PREFIX = \"case-survey-assistant-error:\";\n\nexport const serializeSurveyAssistantError = (error: SurveyAssistantErrorInfo): string =>\n `${ERROR_PREFIX}${JSON.stringify(surveyAssistantErrorInfoSchema.parse(error))}`;\n\nexport const parseSurveyAssistantError = (value: unknown): SurveyAssistantErrorInfo => {\n if (typeof value === \"object\" && value !== null && \"code\" in value) {\n const parsed = surveyAssistantErrorInfoSchema.safeParse({\n code: value.code,\n detail:\n \"detail\" in value && typeof value.detail === \"string\"\n ? value.detail\n : \"message\" in value && typeof value.message === \"string\"\n ? value.message\n : undefined,\n });\n if (parsed.success) return parsed.data;\n }\n\n const message =\n value instanceof Error\n ? value.message\n : typeof value === \"string\"\n ? value\n : typeof value === \"object\" && value !== null && \"message\" in value\n ? String(value.message)\n : \"\";\n\n if (message.startsWith(ERROR_PREFIX)) {\n try {\n const parsed = surveyAssistantErrorInfoSchema.safeParse(\n JSON.parse(message.slice(ERROR_PREFIX.length)),\n );\n if (parsed.success) return parsed.data;\n } catch {\n // Fall through to the stable generic category.\n }\n }\n\n return {\n code: \"request_failed\",\n ...(message.trim() ? { detail: message.trim() } : {}),\n };\n};\n","import { z } from \"zod\";\nimport type { Content, JsonValue as CoreJsonValue } from \"@case-framework/survey-core\";\n\nexport const jsonValueSchema: z.ZodType<CoreJsonValue> = z.lazy(() =>\n z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n z.array(jsonValueSchema),\n z.record(z.string(), jsonValueSchema),\n ]),\n);\n\nconst contentAttributesSchema = z.record(z.string(), jsonValueSchema);\n\nconst richTextStyleSchema = z.object({\n weight: z.enum([\"strong\", \"normal\"]).optional(),\n italic: z.enum([\"italic\", \"normal\"]).optional(),\n underline: z.enum([\"underline\", \"none\"]).optional(),\n color: z.enum([\"primary\", \"accent\", \"default\"]).optional(),\n});\n\nconst richTextTextInlineSchema = z.object({\n type: z.literal(\"text\"),\n text: z.string().max(20_000),\n style: richTextStyleSchema.optional(),\n attrs: contentAttributesSchema.optional(),\n});\n\nconst richTextTemplateInlineSchema = z.object({\n type: z.literal(\"template\"),\n key: z.string().min(1).max(240),\n style: richTextStyleSchema.optional(),\n attrs: contentAttributesSchema.optional(),\n});\n\nconst richTextLineBreakInlineSchema = z.object({\n type: z.literal(\"lineBreak\"),\n attrs: contentAttributesSchema.optional(),\n});\n\nconst richTextLinkChildInlineSchema = z.discriminatedUnion(\"type\", [\n richTextTextInlineSchema,\n richTextTemplateInlineSchema,\n richTextLineBreakInlineSchema,\n]);\n\nconst richTextLinkInlineSchema = z.object({\n type: z.literal(\"link\"),\n href: z.string().min(1).max(2000),\n target: z.string().max(120).nullable().optional(),\n rel: z.string().max(240).nullable().optional(),\n title: z.string().max(1000).nullable().optional(),\n attrs: contentAttributesSchema.optional(),\n children: z.array(richTextLinkChildInlineSchema).max(200),\n});\n\nconst richTextInlineExtensionSchema = z.object({\n type: z.literal(\"inlineExtension\"),\n name: z.string().min(1).max(120),\n attrs: contentAttributesSchema.optional(),\n});\n\nconst richTextInlineSchema = z.discriminatedUnion(\"type\", [\n richTextTextInlineSchema,\n richTextTemplateInlineSchema,\n richTextLinkInlineSchema,\n richTextLineBreakInlineSchema,\n richTextInlineExtensionSchema,\n]);\n\nconst textAlignmentSchema = z.enum([\"left\", \"center\", \"right\", \"justify\"]);\n\nconst richTextParagraphBlockSchema = z.object({\n type: z.literal(\"paragraph\"),\n children: z.array(richTextInlineSchema).max(500),\n alignment: textAlignmentSchema.optional(),\n attrs: contentAttributesSchema.optional(),\n});\n\nconst richTextHeadingBlockSchema = z.object({\n type: z.literal(\"heading\"),\n level: z.union([z.literal(1), z.literal(2)]),\n children: z.array(richTextInlineSchema).max(500),\n alignment: textAlignmentSchema.optional(),\n attrs: contentAttributesSchema.optional(),\n});\n\nconst richTextListItemBlockSchema = z.object({\n type: z.literal(\"listItem\"),\n children: z.array(richTextParagraphBlockSchema).max(100),\n attrs: contentAttributesSchema.optional(),\n});\n\nconst richTextBulletListBlockSchema = z.object({\n type: z.literal(\"bulletList\"),\n items: z.array(richTextListItemBlockSchema).max(100),\n attrs: contentAttributesSchema.optional(),\n});\n\nconst richTextImageDimensionSchema = z.union([\n z.object({ unit: z.literal(\"px\"), value: z.number().finite().nonnegative() }),\n z.object({ unit: z.literal(\"%\"), value: z.number().finite().nonnegative() }),\n]);\n\nconst richTextImageSourceSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"asset\"), assetId: z.string().min(1).max(240) }),\n z.object({ type: z.literal(\"external\"), url: z.string().min(1).max(2000) }),\n]);\n\nconst richTextImageBlockSchema = z.object({\n type: z.literal(\"image\"),\n source: richTextImageSourceSchema,\n alt: z.string().max(2000).optional(),\n caption: z.array(richTextParagraphBlockSchema).max(20).optional(),\n size: z\n .object({\n width: richTextImageDimensionSchema.optional(),\n height: richTextImageDimensionSchema.optional(),\n maxWidth: richTextImageDimensionSchema.optional(),\n maxHeight: richTextImageDimensionSchema.optional(),\n })\n .optional(),\n alignment: textAlignmentSchema.optional(),\n attrs: contentAttributesSchema.optional(),\n});\n\nconst richTextInfoBoxBlockSchema = z.object({\n type: z.literal(\"infoBox\"),\n tone: z.enum([\"info\", \"warning\"]).optional(),\n title: z.array(richTextInlineSchema).max(100).optional(),\n collapsible: z.boolean().optional(),\n defaultOpen: z.boolean().optional(),\n children: z.array(richTextParagraphBlockSchema).max(100),\n attrs: contentAttributesSchema.optional(),\n});\n\nconst richTextSeparatorBlockSchema = z.object({\n type: z.literal(\"separator\"),\n attrs: contentAttributesSchema.optional(),\n});\n\nconst richTextBlockExtensionSchema = z.object({\n type: z.literal(\"blockExtension\"),\n name: z.string().min(1).max(120),\n attrs: contentAttributesSchema.optional(),\n});\n\nconst richTextBlockSchema = z.discriminatedUnion(\"type\", [\n richTextParagraphBlockSchema,\n richTextHeadingBlockSchema,\n richTextBulletListBlockSchema,\n richTextImageBlockSchema,\n richTextInfoBoxBlockSchema,\n richTextSeparatorBlockSchema,\n richTextBlockExtensionSchema,\n]);\n\nexport const surveyContentSchema: z.ZodType<Content> = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"md\"), content: z.string().max(20_000) }),\n z.object({ type: z.literal(\"plain\"), content: z.string().max(20_000) }),\n z.object({\n type: z.literal(\"richText\"),\n version: z.literal(1),\n doc: z.object({\n type: z.literal(\"doc\"),\n blocks: z.array(richTextBlockSchema).max(200),\n }),\n }),\n]) as z.ZodType<Content>;\n\nexport type SurveyContent = z.infer<typeof surveyContentSchema>;\nexport type JsonValue = z.infer<typeof jsonValueSchema>;\n","import { z } from \"zod\";\nimport type {\n JsonPatchOperation as CoreJsonPatchOperation,\n RawSurveyAsset,\n RawSurveyItem,\n RichTextImageDimension,\n SurveyContentImageSource,\n} from \"@case-framework/survey-core\";\nimport { jsonValueSchema, surveyContentSchema, type SurveyContent } from \"./content\";\n\ninterface OperationBase {\n id?: string;\n}\n\ninterface ItemTranslation {\n locale: string;\n contentKey: string;\n plainText?: string;\n content?: SurveyContent;\n}\n\ninterface CreateItemOperation extends OperationBase {\n kind: \"create-item\";\n target: { parentItemId: string; index?: number };\n item: Omit<RawSurveyItem, \"id\"> & { id?: string };\n translations?: ItemTranslation[];\n}\n\ninterface UpdateItemKeyOperation extends OperationBase {\n kind: \"update-item-key\";\n itemId: string;\n key: string;\n}\n\ninterface UpdateItemLabelOperation extends OperationBase {\n kind: \"update-item-label\";\n itemId: string;\n itemLabel: string;\n}\n\ntype ItemColor =\n | \"#404040\"\n | \"#b91c1c\"\n | \"#c2410c\"\n | \"#a16207\"\n | \"#4d7c0f\"\n | \"#047857\"\n | \"#0369a1\"\n | \"#4338ca\"\n | \"#7e22ce\"\n | \"#86198f\"\n | \"#be123c\";\n\ninterface UpdateItemColorOperation extends OperationBase {\n kind: \"update-item-color\";\n itemId: string;\n color: ItemColor;\n}\n\ninterface UpdateItemTranslationOperation extends OperationBase, ItemTranslation {\n kind: \"update-item-translation\";\n itemId: string;\n}\n\ninterface UpdatePlacedImageOperation extends OperationBase {\n kind: \"update-placed-image\";\n itemId: string;\n locale: string;\n contentKey: string;\n /** Zero-based index among image blocks in this rich-text content value. */\n imageIndex: number;\n /** Optional guard that prevents editing a different image after content changed. */\n expectedAssetId?: string;\n changes: {\n source?: SurveyContentImageSource;\n alt?: string | null;\n caption?: string | null;\n width?: RichTextImageDimension | null;\n height?: RichTextImageDimension | null;\n maxWidth?: RichTextImageDimension | null;\n maxHeight?: RichTextImageDimension | null;\n alignment?: \"left\" | \"center\" | \"right\" | null;\n };\n}\n\ninterface PatchItemConfigOperation extends OperationBase {\n kind: \"patch-item-config\";\n itemId: string;\n /** JSON Patch paths are relative to the item's config root. */\n patches: CoreJsonPatchOperation[];\n}\n\ninterface FormTarget {\n itemId: string;\n /** When present, target the inline embedded form on this choice option. */\n optionId?: string;\n}\n\ninterface UpsertFormFieldGroupOperation extends OperationBase {\n kind: \"upsert-form-field-group\";\n target: FormTarget;\n index?: number;\n group: Record<string, unknown> & { id: string };\n translations?: ItemTranslation[];\n}\n\ninterface RemoveFormFieldGroupOperation extends OperationBase {\n kind: \"remove-form-field-group\";\n target: FormTarget;\n groupId: string;\n}\n\ninterface ReorderFormFieldGroupsOperation extends OperationBase {\n kind: \"reorder-form-field-groups\";\n target: FormTarget;\n groupIds: string[];\n}\n\ninterface UpsertFormFieldOperation extends OperationBase {\n kind: \"upsert-form-field\";\n target: FormTarget;\n groupId: string;\n index?: number;\n field: Record<string, unknown> & { id: string; key: string; type: string };\n translations?: ItemTranslation[];\n}\n\ninterface RemoveFormFieldOperation extends OperationBase {\n kind: \"remove-form-field\";\n target: FormTarget;\n fieldId: string;\n}\n\ninterface MoveFormFieldOperation extends OperationBase {\n kind: \"move-form-field\";\n target: FormTarget;\n fieldId: string;\n targetGroupId: string;\n index?: number;\n}\n\ninterface SetEmbeddedFormOperation extends OperationBase {\n kind: \"set-embedded-form\";\n itemId: string;\n optionId: string;\n form: Record<string, unknown> & { id: string; fieldGroups: unknown[] };\n translations?: ItemTranslation[];\n}\n\ninterface RemoveEmbeddedFormOperation extends OperationBase {\n kind: \"remove-embedded-form\";\n itemId: string;\n optionId: string;\n}\n\ninterface ChoiceOptionInput {\n id?: string;\n key?: string;\n label: string;\n}\n\ninterface AddChoiceOptionOperation extends OperationBase {\n kind: \"add-choice-option\";\n itemId: string;\n locale?: string;\n index?: number;\n option: ChoiceOptionInput;\n}\n\ninterface UpdateChoiceOptionLabelOperation extends OperationBase {\n kind: \"update-choice-option-label\";\n itemId: string;\n optionId: string;\n locale?: string;\n label: string;\n}\n\ninterface RemoveChoiceOptionOperation extends OperationBase {\n kind: \"remove-choice-option\";\n itemId: string;\n optionId: string;\n}\n\ninterface ReorderChoiceOptionsOperation extends OperationBase {\n kind: \"reorder-choice-options\";\n itemId: string;\n optionIds: string[];\n}\n\ninterface RemoveItemOperation extends OperationBase {\n kind: \"remove-item\";\n itemId: string;\n includeChildren?: boolean;\n}\n\ninterface MoveItemOperation extends OperationBase {\n kind: \"move-item\";\n itemId: string;\n target: { parentItemId: string; index?: number };\n}\n\ninterface ReorderItemsOperation extends OperationBase {\n kind: \"reorder-items\";\n parentItemId: string;\n itemIds: string[];\n}\n\ninterface UpdateSurveyMetadataOperation extends OperationBase {\n kind: \"update-survey-metadata\";\n values: Record<string, string | null>;\n}\n\ninterface UpdateSurveyPaginationOperation extends OperationBase {\n kind: \"update-survey-pagination\";\n value: { large: number; small: number } | null;\n}\n\ninterface UpdateSurveyTranslationOperation\n extends OperationBase, Omit<ItemTranslation, \"contentKey\"> {\n kind: \"update-survey-translation\";\n surface: \"surveyCardContent\" | \"navigationContent\" | \"validationMessages\";\n contentKey: string;\n}\n\ninterface RemoveSurveyLocaleOperation extends OperationBase {\n kind: \"remove-survey-locale\";\n locale: string;\n}\n\ninterface SetImageAssetOperation extends OperationBase {\n kind: \"set-image-asset\";\n assetId: string;\n asset: RawSurveyAsset;\n}\n\ninterface UpdateImageAssetMetadataOperation extends OperationBase {\n kind: \"update-image-asset-metadata\";\n assetId: string;\n metadata: {\n name?: string | null;\n filename?: string | null;\n alt?: string | null;\n width?: number | null;\n height?: number | null;\n };\n}\n\ninterface RemoveImageAssetOperation extends OperationBase {\n kind: \"remove-image-asset\";\n assetId: string;\n}\n\ninterface SurveyPatchOperation extends OperationBase {\n kind: \"survey-json-patch\";\n patches: CoreJsonPatchOperation[];\n}\n\ntype SurveyOperationShape =\n | CreateItemOperation\n | UpdateItemKeyOperation\n | UpdateItemLabelOperation\n | UpdateItemColorOperation\n | UpdateItemTranslationOperation\n | UpdatePlacedImageOperation\n | PatchItemConfigOperation\n | UpsertFormFieldGroupOperation\n | RemoveFormFieldGroupOperation\n | ReorderFormFieldGroupsOperation\n | UpsertFormFieldOperation\n | RemoveFormFieldOperation\n | MoveFormFieldOperation\n | SetEmbeddedFormOperation\n | RemoveEmbeddedFormOperation\n | AddChoiceOptionOperation\n | UpdateChoiceOptionLabelOperation\n | RemoveChoiceOptionOperation\n | ReorderChoiceOptionsOperation\n | RemoveItemOperation\n | MoveItemOperation\n | ReorderItemsOperation\n | UpdateSurveyMetadataOperation\n | UpdateSurveyPaginationOperation\n | UpdateSurveyTranslationOperation\n | RemoveSurveyLocaleOperation\n | SetImageAssetOperation\n | UpdateImageAssetMetadataOperation\n | RemoveImageAssetOperation\n | SurveyPatchOperation;\n\ninterface SurveyValidationIssueShape {\n severity: \"error\" | \"warning\";\n code: string;\n message: string;\n operationIndex?: number;\n operationId?: string;\n itemId?: string;\n}\n\ninterface SurveyValidationResultShape {\n valid: boolean;\n issues: SurveyValidationIssueShape[];\n warnings: SurveyValidationIssueShape[];\n normalizedOperations: SurveyOperationShape[];\n}\n\nconst operationIdSchema = z\n .string()\n .min(1)\n .max(120)\n .optional()\n .describe(\"Optional client/model supplied id for correlating validation issues.\");\nconst itemIdentifierSchema = z\n .string()\n .min(1)\n .max(240)\n .describe(\"Survey item id, key, or fullKey.\");\nconst itemKeySchema = z\n .string()\n .min(1)\n .max(120)\n .describe(\"New item key. It must be unique among siblings.\");\n\nconst itemTranslationSchema = z\n .object({\n locale: z.string().min(1).max(40),\n contentKey: z\n .string()\n .min(1)\n .max(240)\n .describe('Item translation content key, for example \"label\" or \"content\".'),\n plainText: z\n .string()\n .max(20_000)\n .optional()\n .describe(\"Simple text content to persist for the translation key.\"),\n content: surveyContentSchema\n .optional()\n .describe(\n 'Structured survey content to persist for the translation key. Use { \"type\": \"richText\", \"version\": 1, \"doc\": ... } for formatted text.',\n ),\n })\n .refine(\n (translation) => translation.plainText !== undefined || translation.content !== undefined,\n {\n message: \"Provide either plainText or content for a translation.\",\n },\n );\n\nconst choiceOptionInputSchema = z.object({\n id: z\n .string()\n .min(1)\n .max(120)\n .optional()\n .describe(\"Optional stable option id. If omitted, the validator derives a unique id.\"),\n key: z\n .string()\n .min(1)\n .max(120)\n .optional()\n .describe(\"Optional coding key. If omitted, the validator derives a unique key.\"),\n label: z\n .string()\n .min(1)\n .max(1000)\n .describe(\n \"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.\",\n ),\n});\n\nconst rawSurveyItemForCreateSchema = z\n .object({\n id: z.string().min(1).max(120).optional(),\n key: itemKeySchema,\n itemType: z.string().min(1).max(120),\n metadata: z.record(z.string(), z.string()).optional(),\n config: z\n .unknown()\n .optional()\n .describe(\n '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. The validator converts option labels into options.<optionId>.label translations.',\n ),\n validations: z.record(z.string(), z.any()).optional(),\n displayConditions: z.any().optional(),\n disabledConditions: z.any().optional(),\n prefills: z.array(z.any()).optional(),\n })\n .passthrough();\n\nconst jsonPointerPathSchema = z\n .string()\n .max(500)\n .describe(\n 'JSON Pointer path into the survey document, for example \"/surveyItems/1/config/options/0/key\" or \"/translations/en/itemTranslations/<itemId>/title\".',\n );\n\nexport const jsonPatchOperationSchema: z.ZodType<CoreJsonPatchOperation> = z.discriminatedUnion(\n \"op\",\n [\n z.object({ op: z.literal(\"add\"), path: jsonPointerPathSchema, value: jsonValueSchema }),\n z.object({ op: z.literal(\"replace\"), path: jsonPointerPathSchema, value: jsonValueSchema }),\n z.object({ op: z.literal(\"test\"), path: jsonPointerPathSchema, value: jsonValueSchema }),\n z.object({ op: z.literal(\"remove\"), path: jsonPointerPathSchema }),\n z.object({ op: z.literal(\"move\"), from: jsonPointerPathSchema, path: jsonPointerPathSchema }),\n z.object({ op: z.literal(\"copy\"), from: jsonPointerPathSchema, path: jsonPointerPathSchema }),\n ],\n) as z.ZodType<CoreJsonPatchOperation>;\n\nexport const createItemOperationSchema: z.ZodType<CreateItemOperation> = z.object({\n id: operationIdSchema,\n kind: z.literal(\"create-item\"),\n target: z.object({\n parentItemId: z\n .string()\n .max(240)\n .describe(\n \"Parent group item id, key, or fullKey where the new item should be inserted. Use the root group id/key for top-level items.\",\n ),\n index: z.number().int().min(0).optional(),\n }),\n item: rawSurveyItemForCreateSchema,\n translations: z\n .array(itemTranslationSchema)\n .optional()\n .describe(\n 'Top-level item translations for visible content, for example [{ \"locale\": \"en\", \"contentKey\": \"title\", \"plainText\": \"Question text\" }]. For formatted content, use the \"content\" field with a richText object. Put translations beside target and item, not inside item. Form select/dropdown option labels must be translations at fields.<fieldId>.options.<optionId>.label.',\n ),\n}) as z.ZodType<CreateItemOperation>;\n\nexport const updateItemKeyOperationSchema: z.ZodType<UpdateItemKeyOperation> = z.object({\n id: operationIdSchema,\n kind: z.literal(\"update-item-key\"),\n itemId: itemIdentifierSchema,\n key: itemKeySchema,\n});\n\nexport const updateItemLabelOperationSchema: z.ZodType<UpdateItemLabelOperation> = z.object({\n id: operationIdSchema,\n kind: z.literal(\"update-item-label\"),\n itemId: itemIdentifierSchema,\n itemLabel: z.string().max(200),\n});\n\nexport const updateItemColorOperationSchema: z.ZodType<UpdateItemColorOperation> = z.object({\n id: operationIdSchema,\n kind: z.literal(\"update-item-color\"),\n itemId: itemIdentifierSchema,\n color: z\n .enum([\n \"#404040\",\n \"#b91c1c\",\n \"#c2410c\",\n \"#a16207\",\n \"#4d7c0f\",\n \"#047857\",\n \"#0369a1\",\n \"#4338ca\",\n \"#7e22ce\",\n \"#86198f\",\n \"#be123c\",\n ])\n .describe(\"One of the Survey Editor's supported item-color swatches.\"),\n});\n\nexport const updateItemTranslationOperationSchema: z.ZodType<UpdateItemTranslationOperation> = z\n .object({\n id: operationIdSchema,\n kind: z.literal(\"update-item-translation\"),\n itemId: itemIdentifierSchema,\n locale: z.string().min(1).max(40),\n contentKey: z\n .string()\n .min(1)\n .max(240)\n .describe('Item translation content key, for example \"label\".'),\n plainText: z\n .string()\n .max(20_000)\n .optional()\n .describe(\"Simple text content to persist for the translation key.\"),\n content: surveyContentSchema\n .optional()\n .describe(\n 'Structured survey content to persist for the translation key. Use { \"type\": \"richText\", \"version\": 1, \"doc\": ... } for formatted text.',\n ),\n })\n .refine((operation) => operation.plainText !== undefined || operation.content !== undefined, {\n message: \"Provide either plainText or content for update-item-translation.\",\n }) as z.ZodType<UpdateItemTranslationOperation>;\n\nconst placedImageDimensionSchema: z.ZodType<RichTextImageDimension> = z.union([\n z.object({ unit: z.literal(\"px\"), value: z.number().finite().nonnegative() }),\n z.object({ unit: z.literal(\"%\"), value: z.number().finite().nonnegative().max(100) }),\n]);\n\nconst placedImageSourceSchema: z.ZodType<SurveyContentImageSource> = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"asset\"), assetId: z.string().min(1).max(240) }),\n z.object({ type: z.literal(\"external\"), url: z.string().min(1).max(2000) }),\n]);\n\nexport const updatePlacedImageOperationSchema: z.ZodType<UpdatePlacedImageOperation> = z.object({\n id: operationIdSchema,\n kind: z.literal(\"update-placed-image\"),\n itemId: itemIdentifierSchema,\n locale: z.string().min(1).max(40),\n contentKey: z.string().min(1).max(240),\n imageIndex: z\n .number()\n .int()\n .nonnegative()\n .describe(\"Zero-based index among image blocks in the selected rich-text content value.\"),\n expectedAssetId: z.string().min(1).max(240).optional(),\n changes: z\n .object({\n source: placedImageSourceSchema.optional(),\n alt: z.string().max(2000).nullable().optional(),\n caption: z.string().max(20_000).nullable().optional(),\n width: placedImageDimensionSchema.nullable().optional(),\n height: placedImageDimensionSchema.nullable().optional(),\n maxWidth: placedImageDimensionSchema.nullable().optional(),\n maxHeight: placedImageDimensionSchema.nullable().optional(),\n alignment: z.enum([\"left\", \"center\", \"right\"]).nullable().optional(),\n })\n .refine((changes) => Object.values(changes).some((value) => value !== undefined), {\n message: \"Provide at least one placed-image property to change.\",\n }),\n});\n\nexport const patchItemConfigOperationSchema: z.ZodType<PatchItemConfigOperation> = z.object({\n id: operationIdSchema,\n kind: z.literal(\"patch-item-config\"),\n itemId: itemIdentifierSchema,\n patches: z\n .array(jsonPatchOperationSchema)\n .min(1)\n .max(100)\n .describe(\n '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.',\n ),\n});\n\nconst formTargetSchema: z.ZodType<FormTarget> = z.object({\n itemId: itemIdentifierSchema,\n optionId: z\n .string()\n .min(1)\n .max(240)\n .optional()\n .describe(\"Choice option id when targeting an inline embedded form.\"),\n});\n\nconst formTranslationsSchema = z\n .array(itemTranslationSchema)\n .max(100)\n .optional()\n .describe(\n \"Translations written atomically with this form structure change. Content keys are relative to the form; embedded-form prefixes are added automatically.\",\n );\n\nconst formFieldGroupInputSchema = z\n .object({\n id: z.string().min(1).max(120),\n layout: z\n .object({\n base: z.number().int().min(1).max(12),\n xs: z.number().int().min(1).max(12),\n sm: z.number().int().min(1).max(12),\n md: z.number().int().min(1).max(12),\n xl: z.number().int().min(1).max(12),\n })\n .optional(),\n fields: z.array(z.unknown()).optional(),\n hasDisplayCondition: z.boolean().optional(),\n })\n .passthrough();\n\nconst formFieldInputSchema = z\n .object({\n id: z.string().min(1).max(120),\n key: z.string().min(1).max(120),\n type: z.enum([\"input\", \"textarea\", \"number\", \"datepicker\", \"switch\", \"select\", \"slider\"]),\n controller: z.record(z.string(), z.unknown()),\n required: z.boolean().optional(),\n validations: z.array(z.record(z.string(), z.unknown())).optional(),\n })\n .passthrough();\n\nexport const upsertFormFieldGroupOperationSchema: z.ZodType<UpsertFormFieldGroupOperation> =\n z.object({\n id: operationIdSchema,\n kind: z.literal(\"upsert-form-field-group\"),\n target: formTargetSchema,\n index: z.number().int().min(0).optional(),\n group: formFieldGroupInputSchema,\n translations: formTranslationsSchema,\n }) as z.ZodType<UpsertFormFieldGroupOperation>;\n\nexport const removeFormFieldGroupOperationSchema: z.ZodType<RemoveFormFieldGroupOperation> =\n z.object({\n id: operationIdSchema,\n kind: z.literal(\"remove-form-field-group\"),\n target: formTargetSchema,\n groupId: z.string().min(1).max(240),\n });\n\nexport const reorderFormFieldGroupsOperationSchema: z.ZodType<ReorderFormFieldGroupsOperation> =\n z.object({\n id: operationIdSchema,\n kind: z.literal(\"reorder-form-field-groups\"),\n target: formTargetSchema,\n groupIds: z.array(z.string().min(1).max(240)).min(1).max(100),\n });\n\nexport const upsertFormFieldOperationSchema: z.ZodType<UpsertFormFieldOperation> = z.object({\n id: operationIdSchema,\n kind: z.literal(\"upsert-form-field\"),\n target: formTargetSchema,\n groupId: z.string().min(1).max(240),\n index: z.number().int().min(0).optional(),\n field: formFieldInputSchema,\n translations: formTranslationsSchema,\n}) as z.ZodType<UpsertFormFieldOperation>;\n\nexport const removeFormFieldOperationSchema: z.ZodType<RemoveFormFieldOperation> = z.object({\n id: operationIdSchema,\n kind: z.literal(\"remove-form-field\"),\n target: formTargetSchema,\n fieldId: z.string().min(1).max(240),\n});\n\nexport const moveFormFieldOperationSchema: z.ZodType<MoveFormFieldOperation> = z.object({\n id: operationIdSchema,\n kind: z.literal(\"move-form-field\"),\n target: formTargetSchema,\n fieldId: z.string().min(1).max(240),\n targetGroupId: z.string().min(1).max(240),\n index: z.number().int().min(0).optional(),\n});\n\nexport const setEmbeddedFormOperationSchema: z.ZodType<SetEmbeddedFormOperation> = z.object({\n id: operationIdSchema,\n kind: z.literal(\"set-embedded-form\"),\n itemId: itemIdentifierSchema,\n optionId: z.string().min(1).max(240),\n form: z\n .object({\n id: z.string().min(1).max(120),\n fieldGroups: z.array(formFieldGroupInputSchema).max(100),\n })\n .passthrough(),\n translations: formTranslationsSchema,\n}) as z.ZodType<SetEmbeddedFormOperation>;\n\nexport const removeEmbeddedFormOperationSchema: z.ZodType<RemoveEmbeddedFormOperation> = z.object({\n id: operationIdSchema,\n kind: z.literal(\"remove-embedded-form\"),\n itemId: itemIdentifierSchema,\n optionId: z.string().min(1).max(240),\n});\n\nexport const addChoiceOptionOperationSchema: z.ZodType<AddChoiceOptionOperation> = z.object({\n id: operationIdSchema,\n kind: z.literal(\"add-choice-option\"),\n itemId: itemIdentifierSchema,\n locale: z.string().min(1).max(40).optional(),\n index: z.number().int().min(0).optional(),\n option: choiceOptionInputSchema,\n});\n\nexport const updateChoiceOptionLabelOperationSchema: z.ZodType<UpdateChoiceOptionLabelOperation> =\n z.object({\n id: operationIdSchema,\n kind: z.literal(\"update-choice-option-label\"),\n itemId: itemIdentifierSchema,\n optionId: z\n .string()\n .min(1)\n .max(240)\n .describe(\"Existing choice option id, key, or current visible label.\"),\n locale: z.string().min(1).max(40).optional(),\n label: z.string().min(1).max(1000).describe(\"New respondent-visible option label.\"),\n });\n\nexport const removeChoiceOptionOperationSchema: z.ZodType<RemoveChoiceOptionOperation> = z.object({\n id: operationIdSchema,\n kind: z.literal(\"remove-choice-option\"),\n itemId: itemIdentifierSchema,\n optionId: z\n .string()\n .min(1)\n .max(240)\n .describe(\"Existing choice option id, key, or current visible label.\"),\n});\n\nexport const reorderChoiceOptionsOperationSchema: z.ZodType<ReorderChoiceOptionsOperation> =\n z.object({\n id: operationIdSchema,\n kind: z.literal(\"reorder-choice-options\"),\n itemId: itemIdentifierSchema,\n optionIds: z\n .array(z.string().min(1).max(240))\n .min(1)\n .max(100)\n .describe(\n \"Complete desired order of existing choice options. Entries can be option ids, keys, or current visible labels.\",\n ),\n });\n\nexport const removeItemOperationSchema: z.ZodType<RemoveItemOperation> = z.object({\n id: operationIdSchema,\n kind: z.literal(\"remove-item\"),\n itemId: itemIdentifierSchema,\n includeChildren: z\n .boolean()\n .optional()\n .describe(\"Must be true when removing a group item that has children.\"),\n});\n\nexport const moveItemOperationSchema: z.ZodType<MoveItemOperation> = z.object({\n id: operationIdSchema,\n kind: z.literal(\"move-item\"),\n itemId: itemIdentifierSchema,\n target: z.object({\n parentItemId: itemIdentifierSchema,\n index: z.number().int().min(0).optional(),\n }),\n});\n\nexport const reorderItemsOperationSchema: z.ZodType<ReorderItemsOperation> = z.object({\n id: operationIdSchema,\n kind: z.literal(\"reorder-items\"),\n parentItemId: itemIdentifierSchema,\n itemIds: z.array(itemIdentifierSchema).min(1).max(200),\n});\n\nexport const updateSurveyMetadataOperationSchema: z.ZodType<UpdateSurveyMetadataOperation> =\n z.object({\n id: operationIdSchema,\n kind: z.literal(\"update-survey-metadata\"),\n values: z.record(z.string().min(1).max(240), z.string().max(20_000).nullable()),\n });\n\nexport const updateSurveyPaginationOperationSchema: z.ZodType<UpdateSurveyPaginationOperation> =\n z.object({\n id: operationIdSchema,\n kind: z.literal(\"update-survey-pagination\"),\n value: z\n .object({\n large: z.number().int().min(1).max(1000),\n small: z.number().int().min(1).max(1000),\n })\n .nullable(),\n });\n\nexport const updateSurveyTranslationOperationSchema: z.ZodType<UpdateSurveyTranslationOperation> = z\n .object({\n id: operationIdSchema,\n kind: z.literal(\"update-survey-translation\"),\n locale: z.string().min(1).max(40),\n surface: z.enum([\"surveyCardContent\", \"navigationContent\", \"validationMessages\"]),\n contentKey: z.string().min(1).max(240),\n plainText: z.string().max(20_000).optional(),\n content: surveyContentSchema.optional(),\n })\n .refine((operation) => operation.plainText !== undefined || operation.content !== undefined, {\n message: \"Provide either plainText or content for update-survey-translation.\",\n }) as z.ZodType<UpdateSurveyTranslationOperation>;\n\nexport const removeSurveyLocaleOperationSchema: z.ZodType<RemoveSurveyLocaleOperation> = z.object({\n id: operationIdSchema,\n kind: z.literal(\"remove-survey-locale\"),\n locale: z.string().min(1).max(40),\n});\n\nconst imageAssetMetadataSchema = z.object({\n name: z.string().max(500).optional(),\n filename: z.string().max(500).optional(),\n alt: z.string().max(2000).optional(),\n width: z.number().int().positive().optional(),\n height: z.number().int().positive().optional(),\n});\n\nconst rawSurveyImageAssetSchema: z.ZodType<RawSurveyAsset> = z.object({\n kind: z.literal(\"image\"),\n source: z.object({\n type: z.literal(\"embedded\"),\n mediaType: z.string().regex(/^image\\//),\n encoding: z.literal(\"base64\"),\n data: z.string().min(1).max(8_000_000),\n }),\n metadata: imageAssetMetadataSchema.optional(),\n});\n\nexport const setImageAssetOperationSchema: z.ZodType<SetImageAssetOperation> = z.object({\n id: operationIdSchema,\n kind: z.literal(\"set-image-asset\"),\n assetId: z.string().min(1).max(240),\n asset: rawSurveyImageAssetSchema,\n});\n\nexport const updateImageAssetMetadataOperationSchema: z.ZodType<UpdateImageAssetMetadataOperation> =\n z.object({\n id: operationIdSchema,\n kind: z.literal(\"update-image-asset-metadata\"),\n assetId: z.string().min(1).max(240),\n metadata: z.object({\n name: z.string().max(500).nullable().optional(),\n filename: z.string().max(500).nullable().optional(),\n alt: z.string().max(2000).nullable().optional(),\n width: z.number().int().positive().nullable().optional(),\n height: z.number().int().positive().nullable().optional(),\n }),\n });\n\nexport const removeImageAssetOperationSchema: z.ZodType<RemoveImageAssetOperation> = z.object({\n id: operationIdSchema,\n kind: z.literal(\"remove-image-asset\"),\n assetId: z.string().min(1).max(240),\n});\n\nexport const surveyPatchOperationSchema: z.ZodType<SurveyPatchOperation> = z.object({\n id: operationIdSchema,\n kind: z.literal(\"survey-json-patch\"),\n patches: z\n .array(jsonPatchOperationSchema)\n .min(1)\n .max(100)\n .describe(\n \"Batch of JSON Patch operations applied to the survey document. Use this for raw survey edits such as reordering group items, editing item config, survey metadata, template values, translations/locales, or maxItemsPerPage.\",\n ),\n});\n\n// Public annotations keep declaration output compact. Runtime values are still\n// the concrete Zod objects required by discriminatedUnion.\nconst asDiscriminable = <T>(schema: z.ZodType<T>) => schema as unknown as z.ZodObject;\n\nexport const surveyOperationSchema: z.ZodType<SurveyOperationShape> = z.discriminatedUnion(\"kind\", [\n asDiscriminable(createItemOperationSchema),\n asDiscriminable(updateItemKeyOperationSchema),\n asDiscriminable(updateItemLabelOperationSchema),\n asDiscriminable(updateItemColorOperationSchema),\n asDiscriminable(updateItemTranslationOperationSchema),\n asDiscriminable(updatePlacedImageOperationSchema),\n asDiscriminable(patchItemConfigOperationSchema),\n asDiscriminable(upsertFormFieldGroupOperationSchema),\n asDiscriminable(removeFormFieldGroupOperationSchema),\n asDiscriminable(reorderFormFieldGroupsOperationSchema),\n asDiscriminable(upsertFormFieldOperationSchema),\n asDiscriminable(removeFormFieldOperationSchema),\n asDiscriminable(moveFormFieldOperationSchema),\n asDiscriminable(setEmbeddedFormOperationSchema),\n asDiscriminable(removeEmbeddedFormOperationSchema),\n asDiscriminable(addChoiceOptionOperationSchema),\n asDiscriminable(updateChoiceOptionLabelOperationSchema),\n asDiscriminable(removeChoiceOptionOperationSchema),\n asDiscriminable(reorderChoiceOptionsOperationSchema),\n asDiscriminable(removeItemOperationSchema),\n asDiscriminable(moveItemOperationSchema),\n asDiscriminable(reorderItemsOperationSchema),\n asDiscriminable(updateSurveyMetadataOperationSchema),\n asDiscriminable(updateSurveyPaginationOperationSchema),\n asDiscriminable(updateSurveyTranslationOperationSchema),\n asDiscriminable(removeSurveyLocaleOperationSchema),\n asDiscriminable(setImageAssetOperationSchema),\n asDiscriminable(updateImageAssetMetadataOperationSchema),\n asDiscriminable(removeImageAssetOperationSchema),\n asDiscriminable(surveyPatchOperationSchema),\n]) as unknown as z.ZodType<SurveyOperationShape>;\n\nexport const surveyValidationIssueSchema: z.ZodType<SurveyValidationIssueShape> = z.object({\n severity: z.enum([\"error\", \"warning\"]),\n code: z.string(),\n message: z.string(),\n operationIndex: z.number().int().nonnegative().optional(),\n operationId: z.string().optional(),\n itemId: z.string().optional(),\n});\n\nexport const surveyValidationResultSchema: z.ZodType<SurveyValidationResultShape> = z.object({\n valid: z.boolean(),\n issues: z.array(surveyValidationIssueSchema),\n warnings: z.array(surveyValidationIssueSchema),\n normalizedOperations: z.array(surveyOperationSchema),\n});\n\nexport type JsonPatchOperation = z.infer<typeof jsonPatchOperationSchema>;\nexport type SurveyOperation = z.infer<typeof surveyOperationSchema>;\nexport type SurveyOperationKind = SurveyOperation[\"kind\"];\n\nexport const SURVEY_OPERATION_KINDS = [\n \"create-item\",\n \"update-item-key\",\n \"update-item-label\",\n \"update-item-color\",\n \"update-item-translation\",\n \"update-placed-image\",\n \"patch-item-config\",\n \"upsert-form-field-group\",\n \"remove-form-field-group\",\n \"reorder-form-field-groups\",\n \"upsert-form-field\",\n \"remove-form-field\",\n \"move-form-field\",\n \"set-embedded-form\",\n \"remove-embedded-form\",\n \"add-choice-option\",\n \"update-choice-option-label\",\n \"remove-choice-option\",\n \"reorder-choice-options\",\n \"remove-item\",\n \"move-item\",\n \"reorder-items\",\n \"update-survey-metadata\",\n \"update-survey-pagination\",\n \"update-survey-translation\",\n \"remove-survey-locale\",\n \"set-image-asset\",\n \"update-image-asset-metadata\",\n \"remove-image-asset\",\n \"survey-json-patch\",\n] as const satisfies readonly SurveyOperationKind[];\nexport type SurveyValidationIssue = z.infer<typeof surveyValidationIssueSchema>;\nexport type SurveyValidationResult = z.infer<typeof surveyValidationResultSchema>;\n\n// Compatibility names retained while app and survey-ui public APIs migrate.\nexport const surveyJsonPatchOperationSchema = jsonPatchOperationSchema;\nexport const surveyAssistantCreateItemOperationSchema = createItemOperationSchema;\nexport const surveyAssistantUpdateItemKeyOperationSchema = updateItemKeyOperationSchema;\nexport const surveyAssistantUpdateItemLabelOperationSchema = updateItemLabelOperationSchema;\nexport const surveyAssistantUpdateItemColorOperationSchema = updateItemColorOperationSchema;\nexport const surveyAssistantUpdateItemTranslationOperationSchema =\n updateItemTranslationOperationSchema;\nexport const surveyAssistantAddChoiceOptionOperationSchema = addChoiceOptionOperationSchema;\nexport const surveyAssistantUpdateChoiceOptionLabelOperationSchema =\n updateChoiceOptionLabelOperationSchema;\nexport const surveyAssistantRemoveChoiceOptionOperationSchema = removeChoiceOptionOperationSchema;\nexport const surveyAssistantReorderChoiceOptionsOperationSchema =\n reorderChoiceOptionsOperationSchema;\nexport const surveyAssistantRemoveItemOperationSchema = removeItemOperationSchema;\nexport const surveyAssistantSurveyJsonPatchOperationSchema = surveyPatchOperationSchema;\nexport const surveyAssistantOperationSchema = surveyOperationSchema;\nexport const surveyAssistantValidationIssueSchema = surveyValidationIssueSchema;\nexport const surveyAssistantValidationResultSchema = surveyValidationResultSchema;\n\nexport type SurveyAssistantOperation = SurveyOperation;\nexport type SurveyAssistantValidationIssue = SurveyValidationIssue;\nexport type SurveyAssistantValidationResult = SurveyValidationResult;\nexport type SurveyAssistantSurveyJsonPatchOperation = z.infer<typeof surveyPatchOperationSchema>;\n","import { z } from \"zod\";\nimport { SURVEY_OPERATION_KINDS } from \"./operations\";\n\nexport const assistantItemCreateModeSchema = z.enum([\n \"deterministic\",\n \"interactive-only\",\n \"unsupported\",\n]);\n\nexport const assistantContentSurfaceSchema = z.object({\n key: z.string().min(1),\n role: z.enum([\"primary\", \"secondary\", \"option\", \"field\", \"validation\"]),\n format: z.enum([\"plain\", \"rich\"]),\n requiredOnCreate: z.boolean().optional(),\n pattern: z.boolean().optional(),\n aliases: z.array(z.string().min(1)).optional(),\n});\n\nexport const assistantResponseSlotSchema = z.object({\n key: z.string().min(1),\n valueType: z.string().min(1),\n});\n\nexport const assistantItemAuthoringSchema = z.object({\n configSummary: z.string().min(1).max(1000).optional(),\n});\n\nexport const assistantItemTypeManifestSchema = z.object({\n itemType: z.string().min(1),\n capabilityVersion: z.string().min(1),\n displayName: z.string().min(1),\n description: z.string().optional(),\n defaultItemKeyPrefix: z.string().min(1).optional(),\n create: assistantItemCreateModeSchema,\n supportedOperations: z.array(z.enum(SURVEY_OPERATION_KINDS)),\n contentSurfaces: z.array(assistantContentSurfaceSchema),\n responseSlots: z.array(assistantResponseSlotSchema).optional(),\n referenceTopics: z.array(z.string().min(1)).optional(),\n authoring: assistantItemAuthoringSchema.optional(),\n});\n\nexport const surveyAssistantCapabilityManifestSchema = z.object({\n digest: z.string().min(1),\n itemTypes: z.array(assistantItemTypeManifestSchema),\n});\n\nexport type AssistantItemCreateMode = z.infer<typeof assistantItemCreateModeSchema>;\nexport type AssistantContentSurface = z.infer<typeof assistantContentSurfaceSchema>;\nexport type AssistantResponseSlot = z.infer<typeof assistantResponseSlotSchema>;\nexport type AssistantItemAuthoring = z.infer<typeof assistantItemAuthoringSchema>;\nexport type AssistantItemTypeManifest = z.infer<typeof assistantItemTypeManifestSchema>;\nexport type SurveyAssistantCapabilityManifest = z.infer<\n typeof surveyAssistantCapabilityManifestSchema\n>;\n","import type { RawSurvey } from \"@case-framework/survey-core\";\nimport { z } from \"zod\";\nimport { surveyContentSchema } from \"./content\";\nimport {\n surveyAssistantCapabilityManifestSchema,\n type AssistantItemTypeManifest,\n type SurveyAssistantCapabilityManifest,\n} from \"./capabilities\";\n\ninterface SurveyDocumentVersionShape {\n sessionId: string | null;\n revision: number;\n historyIndex: number;\n contentHash: string;\n capabilityDigest: string;\n}\n\ninterface SurveyEditorUIContextShape {\n view: \"item-editor\" | \"preview-mode\" | \"translation-mode\" | \"asset-manager\";\n selectedItemId?: string;\n selectedLocale: string;\n focusItemId?: string;\n recentItemIds?: string[];\n activeSurface?: string;\n openPanels?: string[];\n highlights?: Array<{\n kind: string;\n itemId?: string;\n componentId?: string;\n label?: string;\n details?: string;\n }>;\n history?: {\n currentIndex: number;\n totalEntries: number;\n canUndo: boolean;\n canRedo: boolean;\n recent: Array<{\n index: number;\n kind: \"survey-snapshot\" | \"asset-change\";\n label: string;\n source?: \"user\" | \"system\" | \"assistant\";\n timestamp: number;\n isCurrent: boolean;\n }>;\n };\n}\n\ninterface SurveyDocumentSnapshotShape {\n protocolVersion: 1;\n version: SurveyDocumentVersionShape;\n survey: RawSurvey;\n ui: SurveyEditorUIContextShape;\n capabilities: SurveyAssistantCapabilityManifest;\n createdAt: string;\n}\n\nexport const SURVEY_ASSISTANT_PROTOCOL_VERSION = 1 as const;\nexport const surveyAssistantProtocolVersionSchema = z.literal(SURVEY_ASSISTANT_PROTOCOL_VERSION);\n\nexport const surveyDocumentVersionSchema: z.ZodType<SurveyDocumentVersionShape> = z.object({\n sessionId: z.string().nullable(),\n revision: z.number().int().nonnegative(),\n historyIndex: z.number().int(),\n contentHash: z.string().min(1),\n capabilityDigest: z.string().min(1),\n});\n\nexport const surveyEditorUIContextSchema: z.ZodType<SurveyEditorUIContextShape> = z.object({\n view: z.enum([\"item-editor\", \"preview-mode\", \"translation-mode\", \"asset-manager\"]),\n selectedItemId: z.string().optional(),\n selectedLocale: z.string().min(1),\n focusItemId: z.string().optional(),\n recentItemIds: z.array(z.string()).max(10).optional(),\n activeSurface: z.string().max(120).optional(),\n openPanels: z.array(z.string().max(120)).max(12).optional(),\n highlights: z\n .array(\n z.object({\n kind: z.string().min(1).max(80),\n itemId: z.string().optional(),\n componentId: z.string().optional(),\n label: z.string().max(240).optional(),\n details: z.string().max(1000).optional(),\n }),\n )\n .max(12)\n .optional(),\n history: z\n .object({\n currentIndex: z.number().int(),\n totalEntries: z.number().int().nonnegative(),\n canUndo: z.boolean(),\n canRedo: z.boolean(),\n recent: z\n .array(\n z.object({\n index: z.number().int().nonnegative(),\n kind: z.enum([\"survey-snapshot\", \"asset-change\"]),\n label: z.string(),\n source: z.enum([\"user\", \"system\", \"assistant\"]).optional(),\n timestamp: z.number().nonnegative(),\n isCurrent: z.boolean(),\n }),\n )\n .max(12),\n })\n .optional(),\n});\n\nconst rawSurveyItemSchema = z\n .object({\n id: z.string().min(1),\n key: z.string().min(1),\n itemType: z.string().min(1),\n })\n .passthrough();\n\nconst rawSurveyTranslationsSchema = z.record(\n z.string(),\n z\n .object({\n itemTranslations: z.record(z.string(), z.record(z.string(), surveyContentSchema)).optional(),\n })\n .passthrough(),\n);\n\nexport const rawSurveyDocumentSchema: z.ZodType<RawSurvey> = z\n .object({\n $schema: z.string().min(1),\n surveyItems: z.array(rawSurveyItemSchema).min(1),\n translations: rawSurveyTranslationsSchema.optional(),\n })\n .passthrough() as z.ZodType<RawSurvey>;\n\nexport const surveyDocumentSnapshotSchema: z.ZodType<SurveyDocumentSnapshotShape> = z.object({\n protocolVersion: surveyAssistantProtocolVersionSchema,\n version: surveyDocumentVersionSchema,\n survey: rawSurveyDocumentSchema,\n ui: surveyEditorUIContextSchema,\n capabilities: surveyAssistantCapabilityManifestSchema,\n createdAt: z.string().min(1),\n});\n\nexport const surveyAssistantSnapshotSchema = surveyDocumentSnapshotSchema;\nexport const surveyAssistantSnapshotPayloadSchema = surveyDocumentSnapshotSchema;\n\nexport type SurveyAssistantProtocolVersion = z.infer<typeof surveyAssistantProtocolVersionSchema>;\nexport type SurveyDocumentVersion = z.infer<typeof surveyDocumentVersionSchema>;\nexport type SurveyEditorUIContext = z.infer<typeof surveyEditorUIContextSchema>;\nexport type RawSurveyDocument = z.infer<typeof rawSurveyDocumentSchema>;\nexport type SurveyDocumentSnapshot = z.infer<typeof surveyDocumentSnapshotSchema>;\n\n// Compatibility names for host adapters while the public API converges on\n// SurveyDocumentSnapshot. They are aliases, not alternate wire shapes.\nexport type SurveyAssistantSnapshot = SurveyDocumentSnapshot;\nexport type SurveyAssistantSnapshotPayload = SurveyDocumentSnapshot;\nexport type SurveyAssistantItemCreateStrategy =\n SurveyAssistantCapabilityManifest[\"itemTypes\"][number][\"create\"];\nexport type SurveyAssistantItemTypeManifestEntry = AssistantItemTypeManifest;\nexport type SurveyAssistantItemRegistryManifest = SurveyAssistantCapabilityManifest;\nexport type SurveyAssistantDraftChangePrecondition = SurveyDocumentVersion;\nexport const surveyAssistantDraftChangePreconditionSchema = surveyDocumentVersionSchema;\n","import { z } from \"zod\";\n\nexport const surveyAssistantThreadSchema = z.object({\n id: z.string().min(1).max(240),\n title: z.string().min(1).max(160),\n titleMode: z.enum([\"automatic\", \"manual\"]),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\n\nexport const surveyAssistantThreadListSchema = z.object({\n threads: z.array(surveyAssistantThreadSchema),\n});\n\nexport const surveyAssistantThreadTranscriptSchema = z.object({\n thread: surveyAssistantThreadSchema,\n messages: z.array(z.unknown()),\n});\n\nexport const createSurveyAssistantThreadInputSchema = z.object({\n title: z.string().trim().min(1).max(160).optional(),\n});\n\nexport const updateSurveyAssistantThreadInputSchema = z.union([\n z.object({\n mode: z.literal(\"automatic\"),\n title: z.string().trim().min(1).max(160).optional(),\n }),\n z.object({\n mode: z.literal(\"manual\").optional(),\n title: z.string().trim().min(1).max(160),\n }),\n]);\n\nexport type SurveyAssistantThreadTitleMode = \"automatic\" | \"manual\";\nexport type SurveyAssistantThread = z.infer<typeof surveyAssistantThreadSchema>;\nexport type SurveyAssistantThreadList = z.infer<typeof surveyAssistantThreadListSchema>;\nexport type SurveyAssistantThreadTranscript = z.infer<typeof surveyAssistantThreadTranscriptSchema>;\nexport type CreateSurveyAssistantThreadInput = z.infer<\n typeof createSurveyAssistantThreadInputSchema\n>;\nexport type UpdateSurveyAssistantThreadInput = z.infer<\n typeof updateSurveyAssistantThreadInputSchema\n>;\n","import { z } from \"zod\";\n\nexport const surveyAssistantTaskInvocationModeSchema = z.enum([\"user\", \"background\"]);\n\nexport type SurveyAssistantTaskInvocationMode = z.infer<\n typeof surveyAssistantTaskInvocationModeSchema\n>;\n\nexport const surveyAssistantSuggestedTextSchema = z.object({ text: z.string().min(1) });\n\nexport type SurveyAssistantSuggestedText = z.infer<typeof surveyAssistantSuggestedTextSchema>;\n\nexport const surveyAssistantKeySuggestionCategorySchema = z.enum([\n \"survey-pattern\",\n \"compact\",\n \"preferred\",\n \"fair\",\n]);\n\nexport type SurveyAssistantKeySuggestionCategory = z.infer<\n typeof surveyAssistantKeySuggestionCategorySchema\n>;\n\nexport const surveyAssistantKeySuggestionSchema = surveyAssistantSuggestedTextSchema.extend({\n category: surveyAssistantKeySuggestionCategorySchema,\n rationale: z.string().optional(),\n});\n\nexport type SurveyAssistantKeySuggestion = z.infer<typeof surveyAssistantKeySuggestionSchema>;\n\nexport const surveyAssistantSuggestItemKeyInputSchema = z.object({\n itemId: z.string().min(1),\n draftKey: z.string(),\n currentKey: z.string(),\n siblingKeys: z.array(z.string()),\n maxSuggestions: z.number().int().positive().optional(),\n});\n\nexport type SurveyAssistantSuggestItemKeyInput = z.infer<\n typeof surveyAssistantSuggestItemKeyInputSchema\n>;\n\nexport const surveyAssistantSuggestItemKeyResultSchema = z.object({\n suggestions: z.array(surveyAssistantKeySuggestionSchema),\n});\n\nexport type SurveyAssistantSuggestItemKeyResult = z.infer<\n typeof surveyAssistantSuggestItemKeyResultSchema\n>;\n\nexport type SurveyAssistantLabelSuggestion = SurveyAssistantSuggestedText;\n\nexport const surveyAssistantSuggestItemLabelInputSchema = z.object({\n itemId: z.string().min(1),\n draftLabel: z.string(),\n itemType: z.string().min(1),\n locale: z.string().min(1).optional(),\n maxSuggestions: z.number().int().positive().optional(),\n});\n\nexport type SurveyAssistantSuggestItemLabelInput = z.infer<\n typeof surveyAssistantSuggestItemLabelInputSchema\n>;\n\nexport const surveyAssistantSuggestItemLabelResultSchema = z.object({\n suggestions: z.array(surveyAssistantSuggestedTextSchema),\n});\n\nexport type SurveyAssistantSuggestItemLabelResult = z.infer<\n typeof surveyAssistantSuggestItemLabelResultSchema\n>;\n\nexport const surveyAssistantTranslateContentEntrySchema = z.object({\n id: z.string().min(1),\n text: z.string(),\n kind: z.string().min(1),\n});\n\nexport type SurveyAssistantTranslateContentEntry = z.infer<\n typeof surveyAssistantTranslateContentEntrySchema\n>;\n\nexport const surveyAssistantTranslateContentInputSchema = z.object({\n sourceLocale: z.string().min(1),\n targetLocales: z.array(z.string().min(1)).min(1),\n entries: z.array(surveyAssistantTranslateContentEntrySchema).min(1),\n});\n\nexport type SurveyAssistantTranslateContentInput = z.infer<\n typeof surveyAssistantTranslateContentInputSchema\n>;\n\nexport const surveyAssistantTranslateContentResultSchema = z.object({\n translations: z.record(z.string(), z.record(z.string(), z.string())),\n});\n\nexport type SurveyAssistantTranslateContentResult = z.infer<\n typeof surveyAssistantTranslateContentResultSchema\n>;\n\nexport const surveyAssistantTaskItemSummarySchema = z.object({\n id: z.string().min(1),\n key: z.string(),\n fullKey: z.string(),\n itemType: z.string().min(1),\n itemLabel: z.string().optional(),\n visibleText: z.array(\n z.object({\n locale: z.string().min(1),\n contentKey: z.string().min(1),\n text: z.string(),\n }),\n ),\n visibleTextTruncated: z.boolean(),\n});\n\nexport type SurveyAssistantTaskItemSummary = z.infer<typeof surveyAssistantTaskItemSummarySchema>;\n\nconst namingRelationshipSchema = z.enum([\"sibling\", \"same-type\", \"survey\"]);\n\nexport const surveyAssistantTaskContextSchema = z.object({\n document: z.object({\n revision: z.number().int().nonnegative(),\n contentHash: z.string().min(1),\n capabilityDigest: z.string().min(1),\n }),\n survey: z.object({\n key: z.string().optional(),\n locales: z.array(z.string()),\n itemCount: z.number().int().nonnegative(),\n selectedLocale: z.string().min(1),\n }),\n focus: z\n .object({\n item: surveyAssistantTaskItemSummarySchema,\n parent: surveyAssistantTaskItemSummarySchema.optional(),\n ancestorPath: z.array(surveyAssistantTaskItemSummarySchema),\n siblingKeys: z.array(z.string()),\n siblingItems: z.array(surveyAssistantTaskItemSummarySchema),\n siblingItemCount: z.number().int().nonnegative(),\n siblingItemsTruncated: z.boolean(),\n relatedItems: z.array(surveyAssistantTaskItemSummarySchema),\n relatedItemCount: z.number().int().nonnegative(),\n relatedItemsTruncated: z.boolean(),\n })\n .optional(),\n naming: z\n .object({\n keyExamples: z.array(\n z.object({\n itemId: z.string().min(1),\n itemType: z.string().min(1),\n key: z.string(),\n relationship: namingRelationshipSchema,\n }),\n ),\n keyExampleCount: z.number().int().nonnegative(),\n keyExamplesTruncated: z.boolean(),\n labelExamples: z.array(\n z.object({\n itemId: z.string().min(1),\n itemType: z.string().min(1),\n key: z.string(),\n label: z.string(),\n relationship: namingRelationshipSchema,\n }),\n ),\n labelExampleCount: z.number().int().nonnegative(),\n labelExamplesTruncated: z.boolean(),\n })\n .optional(),\n translation: z\n .object({\n examples: z.array(\n z.object({\n itemId: z.string().min(1),\n contentKey: z.string().min(1),\n values: z.record(z.string(), z.string()),\n }),\n ),\n exampleCount: z.number().int().nonnegative(),\n examplesTruncated: z.boolean(),\n })\n .optional(),\n});\n\nexport type SurveyAssistantTaskContext = z.infer<typeof surveyAssistantTaskContextSchema>;\n\nconst taskRequestBase = {\n context: surveyAssistantTaskContextSchema,\n mode: surveyAssistantTaskInvocationModeSchema.optional(),\n modelId: z.string().trim().min(1).max(240).optional(),\n};\n\nexport const surveyAssistantTaskRequestSchema = z.discriminatedUnion(\"taskId\", [\n z.object({\n ...taskRequestBase,\n taskId: z.literal(\"suggest-item-key\"),\n input: surveyAssistantSuggestItemKeyInputSchema,\n }),\n z.object({\n ...taskRequestBase,\n taskId: z.literal(\"suggest-item-label\"),\n input: surveyAssistantSuggestItemLabelInputSchema,\n }),\n z.object({\n ...taskRequestBase,\n taskId: z.literal(\"translate-content\"),\n input: surveyAssistantTranslateContentInputSchema,\n }),\n]);\n\nexport type SurveyAssistantTaskRequest = z.infer<typeof surveyAssistantTaskRequestSchema>;\n","import { z } from \"zod\";\n\nexport const surveyAssistantModelOptionSchema = z.object({\n id: z.string().trim().min(1).max(240),\n label: z.string().trim().min(1).max(240),\n});\n\nexport const surveyAssistantModelCatalogSchema = z\n .object({\n defaultModelId: z.string().trim().min(1).max(240),\n models: z.array(surveyAssistantModelOptionSchema).min(1),\n })\n .refine(\n ({ defaultModelId, models }) => models.some((model) => model.id === defaultModelId),\n \"The default model must be present in the model catalog.\",\n );\n\nexport type SurveyAssistantModelOption = z.infer<typeof surveyAssistantModelOptionSchema>;\nexport type SurveyAssistantModelCatalog = z.infer<typeof surveyAssistantModelCatalogSchema>;\n","import { z } from \"zod\";\nimport {\n surveyAssistantProtocolVersionSchema,\n surveyDocumentVersionSchema,\n type SurveyDocumentVersion,\n} from \"./document\";\nimport {\n surveyOperationSchema,\n surveyValidationIssueSchema,\n surveyValidationResultSchema,\n type SurveyOperation,\n type SurveyValidationIssue,\n type SurveyValidationResult,\n} from \"./operations\";\n\ninterface SurveyChangeSetShape {\n protocolVersion: 1;\n id: string;\n turnId: string;\n status: \"validated\" | \"rejected\";\n summary: string;\n operations: SurveyOperation[];\n supersedesChangeIds?: string[];\n precondition?: SurveyDocumentVersion;\n validation: SurveyValidationResult;\n createdAt: string;\n}\n\ninterface SurveyAssistantTurnFinalShape {\n protocolVersion: 1;\n turnId: string;\n status: \"completed\" | \"failed\" | \"aborted\";\n executableChangeSetIds: string[];\n blockedChangeSetIds?: string[];\n createdAt: string;\n}\n\ntype SurveyAssistantApplyPolicyShape = \"auto\" | \"review\" | \"deny\";\n\nexport const SURVEY_ASSISTANT_TURN_FINAL_DATA_NAME = \"survey-assistant-turn-final\" as const;\nexport const SURVEY_ASSISTANT_TURN_FINAL_PART_TYPE =\n `data-${SURVEY_ASSISTANT_TURN_FINAL_DATA_NAME}` as const;\n\ntype SurveyApplyStatusShape = \"applied\" | \"rejected\" | \"stale\" | \"failed\";\n\ninterface SurveyApplyResultShape {\n status: SurveyApplyStatusShape;\n changeId: string;\n summary: string;\n message: string;\n appliedOperations: number;\n issues?: SurveyValidationIssue[];\n}\n\ninterface SurveyBatchApplyResultShape {\n results: SurveyApplyResultShape[];\n}\n\ninterface ApplyReceiptShape {\n protocolVersion: 1;\n turnId: string;\n changeSetId: string;\n beforeVersion: SurveyDocumentVersion;\n afterVersion?: SurveyDocumentVersion;\n status: SurveyApplyStatusShape;\n operationCount: number;\n commit?: { id?: string; index?: number };\n issues?: SurveyValidationIssue[];\n createdAt: string;\n}\n\nexport const surveyChangeSetSchema: z.ZodType<SurveyChangeSetShape> = z.object({\n protocolVersion: surveyAssistantProtocolVersionSchema.default(1),\n id: z.string().min(1),\n turnId: z.string().min(1),\n status: z.enum([\"validated\", \"rejected\"]),\n summary: z.string().min(1).max(500),\n operations: z.array(surveyOperationSchema),\n supersedesChangeIds: z.array(z.string().min(1)).max(100).optional(),\n precondition: surveyDocumentVersionSchema.optional(),\n validation: surveyValidationResultSchema,\n createdAt: z.string().min(1),\n});\n\nexport const surveyAssistantTurnFinalSchema: z.ZodType<SurveyAssistantTurnFinalShape> = z\n .object({\n protocolVersion: surveyAssistantProtocolVersionSchema,\n turnId: z.string().min(1),\n status: z.enum([\"completed\", \"failed\", \"aborted\"]),\n executableChangeSetIds: z.array(z.string().min(1)),\n blockedChangeSetIds: z.array(z.string().min(1)).max(100).optional(),\n createdAt: z.string().min(1),\n })\n .superRefine((value, context) => {\n if (value.status !== \"completed\" && value.executableChangeSetIds.length > 0) {\n context.addIssue({\n code: \"custom\",\n message: \"Failed or aborted turns cannot authorize executable change sets.\",\n path: [\"executableChangeSetIds\"],\n });\n }\n\n if (new Set(value.executableChangeSetIds).size !== value.executableChangeSetIds.length) {\n context.addIssue({\n code: \"custom\",\n message: \"Executable change-set ids must be unique.\",\n path: [\"executableChangeSetIds\"],\n });\n }\n\n const blockedChangeSetIds = value.blockedChangeSetIds ?? [];\n if (new Set(blockedChangeSetIds).size !== blockedChangeSetIds.length) {\n context.addIssue({\n code: \"custom\",\n message: \"Blocked change-set ids must be unique.\",\n path: [\"blockedChangeSetIds\"],\n });\n }\n\n if (blockedChangeSetIds.length > 0 && value.executableChangeSetIds.length > 0) {\n context.addIssue({\n code: \"custom\",\n message: \"A blocked turn cannot authorize executable change sets.\",\n path: [\"executableChangeSetIds\"],\n });\n }\n }) as z.ZodType<SurveyAssistantTurnFinalShape>;\n\nexport const surveyAssistantApplyPolicySchema: z.ZodType<SurveyAssistantApplyPolicyShape> = z.enum([\n \"auto\",\n \"review\",\n \"deny\",\n]);\n\nexport const surveyApplyStatusSchema: z.ZodType<SurveyApplyStatusShape> = z.enum([\n \"applied\",\n \"rejected\",\n \"stale\",\n \"failed\",\n]);\n\nexport const surveyApplyResultSchema: z.ZodType<SurveyApplyResultShape> = z.object({\n status: surveyApplyStatusSchema,\n changeId: z.string(),\n summary: z.string(),\n message: z.string(),\n appliedOperations: z.number().int().nonnegative(),\n issues: z.array(surveyValidationIssueSchema).optional(),\n});\n\nexport const surveyBatchApplyResultSchema: z.ZodType<SurveyBatchApplyResultShape> = z.object({\n results: z.array(surveyApplyResultSchema),\n});\n\nexport const applyReceiptSchema: z.ZodType<ApplyReceiptShape> = z.object({\n protocolVersion: surveyAssistantProtocolVersionSchema,\n turnId: z.string().min(1),\n changeSetId: z.string().min(1),\n beforeVersion: surveyDocumentVersionSchema,\n afterVersion: surveyDocumentVersionSchema.optional(),\n status: surveyApplyStatusSchema,\n operationCount: z.number().int().nonnegative(),\n commit: z\n .object({\n id: z.string().min(1).optional(),\n index: z.number().int().optional(),\n })\n .optional(),\n issues: z.array(surveyValidationIssueSchema).optional(),\n createdAt: z.string().min(1),\n});\n\nexport type SurveyChangeSet = z.infer<typeof surveyChangeSetSchema>;\nexport type SurveyAssistantTurnFinal = z.infer<typeof surveyAssistantTurnFinalSchema>;\nexport type SurveyAssistantApplyPolicy = z.infer<typeof surveyAssistantApplyPolicySchema>;\nexport type SurveyApplyStatus = z.infer<typeof surveyApplyStatusSchema>;\nexport type SurveyApplyResult = z.infer<typeof surveyApplyResultSchema>;\nexport type SurveyBatchApplyResult = z.infer<typeof surveyBatchApplyResultSchema>;\nexport type ApplyReceipt = z.infer<typeof applyReceiptSchema>;\n\n// Compatibility names retained until the UI and host public APIs can make a\n// breaking terminology change.\nexport const surveyAssistantDraftChangeEventSchema = surveyChangeSetSchema;\nexport type SurveyAssistantDraftChangeEvent = SurveyChangeSet;\nexport type SurveyAssistantApplyStatus = SurveyApplyStatus;\nexport type SurveyAssistantApplyResult = SurveyApplyResult;\nexport type SurveyAssistantBatchApplyResult = SurveyBatchApplyResult;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"react-VuYe-cPh.mjs","names":["findLastUserMessageIndex"],"sources":["../src/react/session-state.ts","../src/react/turn-authorization.ts","../src/react/transport.ts","../src/react/thread-client.ts","../src/react/model-catalog.ts","../src/react/use-survey-assistant-session.ts"],"sourcesContent":["export type SurveyAssistantSessionState =\n | \"idle\"\n | \"submitting\"\n | \"streaming\"\n | \"completed\"\n | \"failed\"\n | \"aborted\"\n | \"applying\"\n | \"applied\";\n\nexport type SurveyAssistantSessionEvent =\n | { type: \"submit\" }\n | { type: \"stream-started\" }\n | { type: \"completed\" }\n | { type: \"apply-started\" }\n | { type: \"applied\" }\n | { type: \"failed\" }\n | { type: \"aborted\" }\n | { type: \"reset\"; hasTranscript: boolean };\n\nexport const isSurveyAssistantTurnActive = ({\n isStreaming,\n state,\n}: {\n isStreaming: boolean;\n state: SurveyAssistantSessionState;\n}): boolean =>\n state !== \"aborted\" &&\n (isStreaming || state === \"submitting\" || state === \"streaming\" || state === \"applying\");\n\nexport const reduceSurveyAssistantSessionState = (\n _state: SurveyAssistantSessionState,\n event: SurveyAssistantSessionEvent,\n): SurveyAssistantSessionState => {\n switch (event.type) {\n case \"submit\":\n return \"submitting\";\n case \"stream-started\":\n return \"streaming\";\n case \"completed\":\n return \"completed\";\n case \"apply-started\":\n return \"applying\";\n case \"applied\":\n return \"applied\";\n case \"failed\":\n return \"failed\";\n case \"aborted\":\n return \"aborted\";\n case \"reset\":\n return event.hasTranscript ? \"completed\" : \"idle\";\n }\n};\n","import {\n SURVEY_ASSISTANT_PROTOCOL_VERSION,\n SURVEY_ASSISTANT_TURN_FINAL_PART_TYPE,\n applyReceiptSchema,\n surveyAssistantTurnFinalSchema,\n surveyChangeSetSchema,\n type ApplyReceipt,\n type SurveyAssistantSnapshot,\n type SurveyAssistantTurnFinal,\n type SurveyApplyResult,\n type SurveyChangeSet,\n type SurveyDocumentVersion,\n} from \"../protocol\";\nimport type { UIMessage } from \"ai\";\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null && !Array.isArray(value);\n\nconst isCompletedToolPart = (\n part: UIMessage[\"parts\"][number],\n): part is UIMessage[\"parts\"][number] & { state: \"output-available\"; output: unknown } =>\n (part.type === \"dynamic-tool\" || part.type.startsWith(\"tool-\")) &&\n \"state\" in part &&\n part.state === \"output-available\" &&\n \"output\" in part;\n\nexport const unwrapSurveyAssistantToolOutput = (output: unknown) => {\n if (isRecord(output) && \"output\" in output && output.output !== undefined) {\n return output.output;\n }\n return output;\n};\n\nexport const parseSurveyChangeSet = (output: unknown): SurveyChangeSet | null => {\n const parsed = surveyChangeSetSchema.safeParse(unwrapSurveyAssistantToolOutput(output));\n return parsed.success ? parsed.data : null;\n};\n\nexport const collectSurveyChangeSets = (messages: UIMessage[]): SurveyChangeSet[] => {\n const changes: SurveyChangeSet[] = [];\n for (const message of messages) {\n for (const part of message.parts) {\n if (!isCompletedToolPart(part)) {\n continue;\n }\n const change = parseSurveyChangeSet(part.output);\n if (change) {\n changes.push(change);\n }\n }\n }\n return changes;\n};\n\nconst findLastUserMessageIndex = (messages: UIMessage[]) => {\n for (let index = messages.length - 1; index >= 0; index -= 1) {\n if (messages[index]?.role === \"user\") return index;\n }\n return -1;\n};\n\nexport type SurveyTurnAuthorization =\n | { status: \"pending\" }\n | { status: \"invalid\"; reason: string; turnId?: string }\n | {\n status: \"failed\" | \"aborted\";\n turnFinal: SurveyAssistantTurnFinal;\n changeSets: [];\n }\n | {\n status: \"completed\";\n turnFinal: SurveyAssistantTurnFinal;\n changeSets: SurveyChangeSet[];\n };\n\nexport type SurveyTurnOutcome =\n | {\n status: \"blocked\";\n blockedChangeSetCount: number;\n }\n | {\n status: \"apply-failed\";\n appliedChangeSetCount: number;\n failedChangeSetCount: number;\n };\n\nexport const resolveLatestSurveyTurnAuthorization = (\n messages: UIMessage[],\n): SurveyTurnAuthorization => {\n const lastUserIndex = findLastUserMessageIndex(messages);\n if (lastUserIndex < 0) {\n return { status: \"pending\" };\n }\n\n const turnMessages = messages.slice(lastUserIndex + 1);\n const finalParts = turnMessages\n .flatMap((message) => message.parts)\n .filter((part) => part.type === SURVEY_ASSISTANT_TURN_FINAL_PART_TYPE);\n if (finalParts.length === 0) {\n return { status: \"pending\" };\n }\n if (finalParts.length !== 1) {\n return { status: \"invalid\", reason: \"The assistant returned multiple turn finals.\" };\n }\n\n const finalPart = finalParts[0];\n const finalParse = surveyAssistantTurnFinalSchema.safeParse(\n finalPart && \"data\" in finalPart ? finalPart.data : undefined,\n );\n if (!finalParse.success) {\n return { status: \"invalid\", reason: \"The assistant returned an invalid turn final.\" };\n }\n const turnFinal = finalParse.data;\n if (turnFinal.status !== \"completed\") {\n return { status: turnFinal.status, turnFinal, changeSets: [] };\n }\n\n const candidates = collectSurveyChangeSets(turnMessages).filter(\n (change) => change.turnId === turnFinal.turnId,\n );\n const candidatesById = new Map<string, SurveyChangeSet>();\n for (const candidate of candidates) {\n if (candidatesById.has(candidate.id)) {\n return {\n status: \"invalid\",\n turnId: turnFinal.turnId,\n reason: `The assistant returned duplicate change set \"${candidate.id}\".`,\n };\n }\n candidatesById.set(candidate.id, candidate);\n }\n\n for (const blockedChangeSetId of turnFinal.blockedChangeSetIds ?? []) {\n const candidate = candidatesById.get(blockedChangeSetId);\n if (!candidate || candidate.status !== \"rejected\" || candidate.validation.valid) {\n return {\n status: \"invalid\",\n turnId: turnFinal.turnId,\n reason: `The assistant did not provide blocked change set \"${blockedChangeSetId}\".`,\n };\n }\n }\n\n const changeSets: SurveyChangeSet[] = [];\n for (const changeSetId of turnFinal.executableChangeSetIds) {\n const candidate = candidatesById.get(changeSetId);\n if (!candidate || candidate.status !== \"validated\" || !candidate.validation.valid) {\n return {\n status: \"invalid\",\n turnId: turnFinal.turnId,\n reason: `The assistant did not provide authorized change set \"${changeSetId}\".`,\n };\n }\n changeSets.push(candidate);\n }\n\n return { status: \"completed\", turnFinal, changeSets };\n};\n\nexport const resolveSurveyTurnOutcome = ({\n applyResultsByChangeId,\n authorization,\n}: {\n applyResultsByChangeId: Record<string, SurveyApplyResult>;\n authorization: SurveyTurnAuthorization;\n}): SurveyTurnOutcome | null => {\n if (authorization.status !== \"completed\") {\n return null;\n }\n\n const blockedChangeSetCount = authorization.turnFinal.blockedChangeSetIds?.length ?? 0;\n if (blockedChangeSetCount > 0) {\n return { status: \"blocked\", blockedChangeSetCount };\n }\n\n if (authorization.changeSets.length === 0) {\n return null;\n }\n\n const results = authorization.changeSets.map((change) => applyResultsByChangeId[change.id]);\n if (results.some((result) => result === undefined)) {\n return null;\n }\n\n const failedChangeSetCount = results.filter((result) => result.status !== \"applied\").length;\n if (failedChangeSetCount === 0) {\n return null;\n }\n\n return {\n status: \"apply-failed\",\n appliedChangeSetCount: results.length - failedChangeSetCount,\n failedChangeSetCount,\n };\n};\n\nexport const getSurveyDocumentVersionFromSnapshot = (\n snapshot: SurveyAssistantSnapshot,\n): SurveyDocumentVersion => ({ ...snapshot.version });\n\nexport const createApplyReceipts = ({\n afterSnapshot,\n beforeSnapshot,\n changeSets,\n results,\n turnFinal,\n createdAt = new Date().toISOString(),\n}: {\n afterSnapshot: SurveyAssistantSnapshot | null;\n beforeSnapshot: SurveyAssistantSnapshot;\n changeSets: SurveyChangeSet[];\n results: SurveyApplyResult[];\n turnFinal: SurveyAssistantTurnFinal;\n createdAt?: string;\n}): ApplyReceipt[] => {\n const beforeVersion = getSurveyDocumentVersionFromSnapshot(beforeSnapshot);\n const afterVersion = afterSnapshot\n ? getSurveyDocumentVersionFromSnapshot(afterSnapshot)\n : undefined;\n const resultsByChangeId = new Map(results.map((result) => [result.changeId, result]));\n\n return changeSets.map((changeSet) => {\n const result = resultsByChangeId.get(changeSet.id);\n const status = result?.status ?? \"failed\";\n return applyReceiptSchema.parse({\n protocolVersion: SURVEY_ASSISTANT_PROTOCOL_VERSION,\n turnId: turnFinal.turnId,\n changeSetId: changeSet.id,\n beforeVersion,\n ...(status === \"applied\" && afterVersion ? { afterVersion } : {}),\n status,\n operationCount: changeSet.operations.length,\n ...(status === \"applied\" && afterVersion?.historyIndex !== undefined\n ? { commit: { index: afterVersion.historyIndex } }\n : {}),\n ...(result?.issues ? { issues: result.issues } : {}),\n createdAt,\n });\n });\n};\n","import { DefaultChatTransport, type UIMessage } from \"ai\";\n\nconst findLastUserMessage = (messages: UIMessage[]): UIMessage | undefined => {\n for (let index = messages.length - 1; index >= 0; index -= 1) {\n if (messages[index]?.role === \"user\") return messages[index];\n }\n return undefined;\n};\n\nexport const createSurveyAssistantTransport = ({\n api = \"/api/survey-assistant/chat\",\n resourceId,\n threadId,\n}: {\n api?: string;\n resourceId: string;\n threadId: string;\n}) =>\n new DefaultChatTransport({\n api,\n body: { resourceId, threadId },\n prepareSendMessagesRequest: ({\n api,\n body,\n credentials,\n headers,\n id,\n messageId,\n messages,\n trigger,\n }) => {\n const latestUserMessage = findLastUserMessage(messages);\n return {\n api,\n credentials,\n headers,\n body: {\n ...body,\n id,\n messages: latestUserMessage ? [latestUserMessage] : [],\n trigger,\n messageId,\n },\n };\n },\n });\n","import {\n surveyAssistantThreadListSchema,\n surveyAssistantThreadSchema,\n surveyAssistantThreadTranscriptSchema,\n type SurveyAssistantThread,\n type SurveyAssistantThreadTranscript,\n} from \"../protocol\";\nimport { readSurveyAssistantJson } from \"./client-error\";\n\nexport interface SurveyAssistantThreadClient {\n delete(threadId: string): Promise<void>;\n create(title?: string): Promise<SurveyAssistantThread>;\n list(): Promise<SurveyAssistantThread[]>;\n read(threadId: string): Promise<SurveyAssistantThreadTranscript>;\n rename(threadId: string, title: string): Promise<SurveyAssistantThread>;\n setAutomaticTitle(threadId: string, title?: string): Promise<SurveyAssistantThread>;\n}\n\nexport const createSurveyAssistantThreadClient = (\n api = \"/api/survey-assistant/threads\",\n): SurveyAssistantThreadClient => ({\n async delete(threadId) {\n const response = await fetch(`${api}/${encodeURIComponent(threadId)}`, { method: \"DELETE\" });\n if (!response.ok) await readSurveyAssistantJson(response);\n },\n async create(title) {\n const body = await readSurveyAssistantJson(\n await fetch(api, {\n body: JSON.stringify(title ? { title } : {}),\n headers: { \"content-type\": \"application/json\" },\n method: \"POST\",\n }),\n );\n return surveyAssistantThreadSchema.parse(body.thread);\n },\n async list() {\n const body = await readSurveyAssistantJson(await fetch(api, { cache: \"no-store\" }));\n return surveyAssistantThreadListSchema.parse(body).threads;\n },\n async read(threadId) {\n const body = await readSurveyAssistantJson(\n await fetch(`${api}/${encodeURIComponent(threadId)}`, { cache: \"no-store\" }),\n );\n return surveyAssistantThreadTranscriptSchema.parse(body);\n },\n async rename(threadId, title) {\n const body = await readSurveyAssistantJson(\n await fetch(`${api}/${encodeURIComponent(threadId)}`, {\n body: JSON.stringify({ mode: \"manual\", title }),\n headers: { \"content-type\": \"application/json\" },\n method: \"PATCH\",\n }),\n );\n return surveyAssistantThreadSchema.parse(body.thread);\n },\n async setAutomaticTitle(threadId, title) {\n const body = await readSurveyAssistantJson(\n await fetch(`${api}/${encodeURIComponent(threadId)}`, {\n body: JSON.stringify({ mode: \"automatic\", ...(title ? { title } : {}) }),\n headers: { \"content-type\": \"application/json\" },\n method: \"PATCH\",\n }),\n );\n return surveyAssistantThreadSchema.parse(body.thread);\n },\n});\n","import { useCallback, useEffect, useState } from \"react\";\nimport {\n surveyAssistantModelCatalogSchema,\n type SurveyAssistantModelCatalog,\n type SurveyAssistantModelOption,\n} from \"../protocol\";\nimport { readSurveyAssistantJson } from \"./client-error\";\n\nconst DEFAULT_MODEL_STORAGE_KEY = \"survey-assistant-selected-model\";\n\nexport interface SurveyAssistantModelCatalogClient {\n get(): Promise<SurveyAssistantModelCatalog>;\n}\n\nexport const createSurveyAssistantModelCatalogClient = (\n api = \"/api/survey-assistant/models\",\n): SurveyAssistantModelCatalogClient => ({\n async get() {\n const body = await readSurveyAssistantJson(\n await fetch(api, { cache: \"no-store\" }),\n \"The assistant model catalog could not be loaded.\",\n );\n return surveyAssistantModelCatalogSchema.parse(body);\n },\n});\n\nexport interface UseSurveyAssistantModelCatalogOptions {\n api?: string;\n client?: SurveyAssistantModelCatalogClient;\n onModelChange?(modelId: string): void;\n storageKey?: string | false;\n}\n\nexport interface SurveyAssistantModelCatalogState {\n error: Error | null;\n loading: boolean;\n modelId?: string;\n models: SurveyAssistantModelOption[];\n reload(): void;\n selectModel(modelId: string): void;\n}\n\nexport const useSurveyAssistantModelCatalog = ({\n api,\n client: providedClient,\n onModelChange,\n storageKey = DEFAULT_MODEL_STORAGE_KEY,\n}: UseSurveyAssistantModelCatalogOptions = {}): SurveyAssistantModelCatalogState => {\n const [models, setModels] = useState<SurveyAssistantModelOption[]>([]);\n const [modelId, setModelId] = useState<string>();\n const [error, setError] = useState<Error | null>(null);\n const [loading, setLoading] = useState(true);\n const [reloadToken, setReloadToken] = useState(0);\n\n useEffect(() => {\n let cancelled = false;\n const client = providedClient ?? createSurveyAssistantModelCatalogClient(api);\n setLoading(true);\n setError(null);\n void client\n .get()\n .then((catalog) => {\n if (cancelled) return;\n const rememberedId =\n storageKey && typeof window !== \"undefined\"\n ? (window.localStorage.getItem(storageKey) ?? undefined)\n : undefined;\n const selectedId =\n rememberedId && catalog.models.some((model) => model.id === rememberedId)\n ? rememberedId\n : catalog.defaultModelId;\n setModels(catalog.models);\n setModelId(selectedId);\n onModelChange?.(selectedId);\n })\n .catch((reason: unknown) => {\n if (!cancelled) setError(reason instanceof Error ? reason : new Error(String(reason)));\n })\n .finally(() => {\n if (!cancelled) setLoading(false);\n });\n return () => {\n cancelled = true;\n };\n }, [api, onModelChange, providedClient, reloadToken, storageKey]);\n\n const selectModel = useCallback(\n (nextModelId: string) => {\n if (!models.some((model) => model.id === nextModelId)) return;\n setModelId(nextModelId);\n if (storageKey && typeof window !== \"undefined\") {\n window.localStorage.setItem(storageKey, nextModelId);\n }\n onModelChange?.(nextModelId);\n },\n [models, onModelChange, storageKey],\n );\n\n const reload = useCallback(() => setReloadToken((current) => current + 1), []);\n\n return { error, loading, modelId, models, reload, selectModel };\n};\n","\"use client\";\n\nimport { useChat } from \"@ai-sdk/react\";\nimport type {\n ApplyReceipt,\n SurveyApplyResult,\n SurveyAssistantApplyPolicy,\n SurveyAssistantTurnFinal,\n SurveyChangeSet,\n} from \"../protocol\";\nimport type { ChatStatus, FileUIPart, UIMessage } from \"ai\";\nimport {\n useCallback,\n useEffect,\n useEffectEvent,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from \"react\";\nimport {\n collectSurveyChangeSets,\n createApplyReceipts,\n resolveLatestSurveyTurnAuthorization,\n resolveSurveyTurnOutcome,\n} from \"./turn-authorization\";\nimport { isSurveyAssistantTurnActive, reduceSurveyAssistantSessionState } from \"./session-state\";\nimport type { SurveyAssistantSessionState } from \"./session-state\";\nimport type { SurveyTurnOutcome } from \"./turn-authorization\";\nimport { createSurveyAssistantTransport } from \"./transport\";\nimport type { SurveyAssistantController } from \"./controller\";\n\nconst createLocalId = (prefix: string) => {\n const id = globalThis.crypto?.randomUUID?.() ?? Math.random().toString(36).slice(2);\n return `${prefix}-${id}`;\n};\n\ntype AssistantTextPart = Extract<UIMessage[\"parts\"][number], { type: \"text\" }>;\n\nconst getAssistantTextParts = (message: UIMessage) =>\n message.parts.filter(\n (part): part is AssistantTextPart => part.type === \"text\" && part.text.trim().length > 0,\n );\n\nconst findLastAssistantTextMessageIndex = (\n messages: UIMessage[],\n endExclusive = messages.length,\n) => {\n for (let index = Math.min(messages.length, endExclusive) - 1; index >= 0; index -= 1) {\n const message = messages[index];\n if (message?.role === \"assistant\" && getAssistantTextParts(message).length > 0) return index;\n }\n return -1;\n};\n\nconst findLastUserMessageIndex = (messages: UIMessage[]) => {\n for (let index = messages.length - 1; index >= 0; index -= 1) {\n if (messages[index]?.role === \"user\") return index;\n }\n return -1;\n};\n\nconst pruneFailedMessagesForDisplay = (messages: UIMessage[]): UIMessage[] => {\n const lastUserIndex = findLastUserMessageIndex(messages);\n const lastCompletedAssistantIndex = findLastAssistantTextMessageIndex(messages);\n\n if (lastUserIndex > lastCompletedAssistantIndex) return messages.slice(0, lastUserIndex + 1);\n return lastCompletedAssistantIndex >= 0 ? messages.slice(0, lastCompletedAssistantIndex + 1) : [];\n};\n\nconst hasCompletedAssistantResponseAfterLastUser = (messages: UIMessage[]) => {\n const lastUserIndex = findLastUserMessageIndex(messages);\n return lastUserIndex >= 0 && findLastAssistantTextMessageIndex(messages) > lastUserIndex;\n};\n\nconst collectChangeSetsAfterLastUser = (messages: UIMessage[]) => {\n const lastUserIndex = findLastUserMessageIndex(messages);\n return lastUserIndex < 0 ? [] : collectSurveyChangeSets(messages.slice(lastUserIndex + 1));\n};\n\nexport interface SurveyAssistantSessionOptions {\n api?: string;\n applyPolicy?: SurveyAssistantApplyPolicy;\n controller?: SurveyAssistantController | null;\n initialMessages?: UIMessage[];\n modelId?: string;\n onApplyReceipts?: (receipts: ApplyReceipt[]) => void;\n onReviewChangeSets?: (changeSets: SurveyChangeSet[], turnFinal: SurveyAssistantTurnFinal) => void;\n /** Reports when a turn owns the editor state, including submission, streaming, and apply. */\n onTurnActiveChange?: (active: boolean) => void;\n resourceId?: string;\n threadId?: string;\n}\n\nexport interface SurveyAssistantSubmitMessage {\n text: string;\n files: FileUIPart[];\n}\n\nexport interface SurveyAssistantSession {\n applyResultsByChangeId: Record<string, SurveyApplyResult>;\n authorizationError: string | null;\n dismissError(): void;\n error: Error | undefined;\n isStreaming: boolean;\n latestTurnOutcome: SurveyTurnOutcome | null;\n messages: UIMessage[];\n state: SurveyAssistantSessionState;\n status: ChatStatus;\n stop(): void;\n submit(message: SurveyAssistantSubmitMessage): boolean;\n retry(): void;\n}\n\nexport const useSurveyAssistantSession = ({\n api,\n applyPolicy = \"auto\",\n controller,\n initialMessages = [],\n modelId,\n onApplyReceipts,\n onReviewChangeSets,\n onTurnActiveChange,\n resourceId: controlledResourceId,\n threadId: controlledThreadId,\n}: SurveyAssistantSessionOptions): SurveyAssistantSession => {\n const [localResourceId] = useState(() => createLocalId(\"survey-assistant-local-user\"));\n const [localThreadId] = useState(() => createLocalId(\"survey-assistant-local-thread\"));\n const resourceId = controlledResourceId ?? localResourceId;\n const threadId = controlledThreadId ?? localThreadId;\n const [state, dispatch] = useReducer(reduceSurveyAssistantSessionState, \"idle\");\n const [applyResultsByChangeId, setApplyResultsByChangeId] = useState<\n Record<string, SurveyApplyResult>\n >({});\n const [authorizationError, setAuthorizationError] = useState<string | null>(null);\n const handledTurnIdsRef = useRef<Set<string>>(new Set());\n const localTurnAwaitingApplyRef = useRef(false);\n const localTurnStreamStartedRef = useRef(false);\n\n const transport = useMemo(\n () => createSurveyAssistantTransport({ api, resourceId, threadId }),\n [api, resourceId, threadId],\n );\n const {\n messages,\n setMessages,\n sendMessage,\n status,\n stop: stopChat,\n error,\n clearError,\n regenerate,\n } = useChat({ id: threadId, messages: initialMessages, transport });\n const isStreaming = status === \"submitted\" || status === \"streaming\";\n const isTurnActive = isSurveyAssistantTurnActive({ isStreaming, state });\n const notifyTurnActiveChange = useEffectEvent((active: boolean) => {\n onTurnActiveChange?.(active);\n });\n const turnAuthorization = useMemo(\n () => resolveLatestSurveyTurnAuthorization(messages),\n [messages],\n );\n const latestTurnOutcome = useMemo(\n () => resolveSurveyTurnOutcome({ applyResultsByChangeId, authorization: turnAuthorization }),\n [applyResultsByChangeId, turnAuthorization],\n );\n const hasUsefulLatestAssistantResponse = useMemo(\n () =>\n hasCompletedAssistantResponseAfterLastUser(messages) ||\n collectChangeSetsAfterLastUser(messages).length > 0,\n [messages],\n );\n\n const reportAuthorizationError = useCallback((message: string) => {\n queueMicrotask(() => {\n setAuthorizationError(message);\n dispatch({ type: \"failed\" });\n });\n }, []);\n\n useEffect(() => {\n if (status === \"submitted\") dispatch({ type: \"submit\" });\n if (status === \"streaming\") dispatch({ type: \"stream-started\" });\n }, [status]);\n\n useEffect(() => {\n notifyTurnActiveChange(isTurnActive);\n\n return () => {\n if (isTurnActive) notifyTurnActiveChange(false);\n };\n }, [isTurnActive]);\n\n useEffect(() => {\n if (isStreaming) {\n localTurnStreamStartedRef.current = true;\n return;\n }\n if (!localTurnAwaitingApplyRef.current) return;\n\n if (turnAuthorization.status === \"pending\") {\n if (!localTurnStreamStartedRef.current) return;\n const timeoutId = window.setTimeout(() => {\n localTurnAwaitingApplyRef.current = false;\n localTurnStreamStartedRef.current = false;\n reportAuthorizationError(\"The assistant response ended without a valid turn final.\");\n }, 100);\n return () => window.clearTimeout(timeoutId);\n }\n\n localTurnAwaitingApplyRef.current = false;\n localTurnStreamStartedRef.current = false;\n if (turnAuthorization.status === \"invalid\") {\n reportAuthorizationError(turnAuthorization.reason);\n return;\n }\n\n const { turnFinal } = turnAuthorization;\n if (handledTurnIdsRef.current.has(turnFinal.turnId)) return;\n handledTurnIdsRef.current.add(turnFinal.turnId);\n\n if (turnAuthorization.status !== \"completed\" || turnAuthorization.changeSets.length === 0) {\n dispatch({ type: \"completed\" });\n return;\n }\n if (applyPolicy === \"deny\") {\n dispatch({ type: \"completed\" });\n return;\n }\n if (applyPolicy === \"review\") {\n onReviewChangeSets?.(turnAuthorization.changeSets, turnFinal);\n dispatch({ type: \"completed\" });\n return;\n }\n if (!controller?.applyAssistantChange && !controller?.applyAssistantChanges) {\n reportAuthorizationError(\"No survey editor apply adapter is available.\");\n return;\n }\n\n const beforeSnapshot = controller.getSnapshot();\n if (!beforeSnapshot) {\n reportAuthorizationError(\n \"The editor state was unavailable when applying the assistant change.\",\n );\n return;\n }\n\n dispatch({ type: \"apply-started\" });\n const result = controller.applyAssistantChanges?.(turnAuthorization.changeSets) ?? {\n results: turnAuthorization.changeSets\n .map((change) => controller.applyAssistantChange?.(change))\n .filter((applyResult): applyResult is SurveyApplyResult => Boolean(applyResult)),\n };\n queueMicrotask(() =>\n setApplyResultsByChangeId((current) => ({\n ...current,\n ...Object.fromEntries(\n result.results.map((applyResult) => [applyResult.changeId, applyResult]),\n ),\n })),\n );\n const receipts = createApplyReceipts({\n beforeSnapshot,\n afterSnapshot: controller.getSnapshot(),\n changeSets: turnAuthorization.changeSets,\n results: result.results,\n turnFinal,\n });\n onApplyReceipts?.(receipts);\n dispatch({\n type: result.results.every((applyResult) => applyResult.status === \"applied\")\n ? \"applied\"\n : \"completed\",\n });\n }, [\n applyPolicy,\n controller,\n isStreaming,\n onApplyReceipts,\n onReviewChangeSets,\n reportAuthorizationError,\n turnAuthorization,\n ]);\n\n useEffect(() => {\n if (!error) return;\n localTurnAwaitingApplyRef.current = false;\n localTurnStreamStartedRef.current = false;\n dispatch({ type: \"failed\" });\n if (!hasUsefulLatestAssistantResponse) setMessages(pruneFailedMessagesForDisplay);\n }, [error, hasUsefulLatestAssistantResponse, setMessages]);\n\n const submit = useCallback(\n ({ files, text: rawText }: SurveyAssistantSubmitMessage) => {\n const text = rawText.trim();\n if (!text && files.length === 0) return false;\n if (isStreaming || localTurnAwaitingApplyRef.current) return false;\n\n localTurnAwaitingApplyRef.current = true;\n localTurnStreamStartedRef.current = false;\n setAuthorizationError(null);\n if (authorizationError || error) setMessages(pruneFailedMessagesForDisplay);\n clearError();\n dispatch({ type: \"submit\" });\n\n void sendMessage(files.length > 0 ? (text ? { text, files } : { files }) : { text }, {\n body: { snapshot: controller?.getSnapshot() ?? null, ...(modelId ? { modelId } : {}) },\n });\n return true;\n },\n [\n authorizationError,\n clearError,\n controller,\n error,\n isStreaming,\n modelId,\n sendMessage,\n setMessages,\n ],\n );\n\n const stop = useCallback(() => {\n localTurnAwaitingApplyRef.current = false;\n localTurnStreamStartedRef.current = false;\n dispatch({ type: \"aborted\" });\n void stopChat();\n }, [stopChat]);\n\n const retry = useCallback(() => {\n localTurnAwaitingApplyRef.current = true;\n localTurnStreamStartedRef.current = false;\n setAuthorizationError(null);\n clearError();\n dispatch({ type: \"submit\" });\n void regenerate({\n body: { snapshot: controller?.getSnapshot() ?? null, ...(modelId ? { modelId } : {}) },\n });\n }, [clearError, controller, modelId, regenerate]);\n\n const dismissError = useCallback(() => {\n localTurnAwaitingApplyRef.current = false;\n localTurnStreamStartedRef.current = false;\n setMessages(pruneFailedMessagesForDisplay);\n setAuthorizationError(null);\n clearError();\n dispatch({ type: \"reset\", hasTranscript: messages.length > 0 });\n }, [clearError, messages.length, setMessages]);\n\n return {\n applyResultsByChangeId,\n authorizationError,\n dismissError,\n error,\n isStreaming,\n latestTurnOutcome,\n messages,\n state,\n status,\n stop,\n submit,\n retry,\n };\n};\n"],"mappings":"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"}
@@ -1,44 +0,0 @@
1
- import { I as surveyAssistantSnapshotPayloadSchema } from "./protocol-DV0ka9WT.mjs";
2
- import { Q as createSurveyAssistantEngineContext } from "./engine-sPvuixWg.mjs";
3
- import { defaultSurveyAssistantCapabilitySet } from "./capabilities-default.mjs";
4
- import { MASTRA_RESOURCE_ID_KEY, MASTRA_THREAD_ID_KEY, RequestContext } from "@mastra/core/request-context";
5
- //#region src/server/request-context.ts
6
- const parseSurveyAssistantSnapshot = (value) => {
7
- if (value === void 0 || value === null) return null;
8
- return surveyAssistantSnapshotPayloadSchema.parse(value);
9
- };
10
- const buildSurveyAssistantRequestContext = ({ changeCollector, identity, snapshot, snapshotSource = snapshot ? "full" : "missing", trustedCapabilities = defaultSurveyAssistantCapabilitySet, attachmentAccess, modelAttachments = [], modelSelection }) => {
11
- const requestContext = new RequestContext();
12
- requestContext.set("invocation", { kind: "chat" });
13
- requestContext.set("turnId", changeCollector.turnId);
14
- requestContext.set("changeCollector", changeCollector);
15
- requestContext.set("identity", identity);
16
- if (identity.authority === "authenticated-host") {
17
- requestContext.set("authenticatedResourceId", identity.resourceId);
18
- requestContext.set("authorizedThreadId", identity.threadId);
19
- }
20
- requestContext.set(MASTRA_RESOURCE_ID_KEY, identity.resourceId);
21
- requestContext.set(MASTRA_THREAD_ID_KEY, identity.threadId);
22
- requestContext.set("snapshotSource", snapshotSource);
23
- if (attachmentAccess && attachmentAccess.documents.length > 0) requestContext.set("attachmentAccess", attachmentAccess);
24
- if (modelAttachments.length > 0) requestContext.set("modelAttachments", modelAttachments);
25
- if (modelSelection) requestContext.set("modelSelection", modelSelection);
26
- if (!snapshot) return requestContext;
27
- const engineContext = createSurveyAssistantEngineContext(snapshot, trustedCapabilities);
28
- requestContext.set("documentSnapshot", snapshot);
29
- requestContext.set("engineContext", engineContext);
30
- return requestContext;
31
- };
32
- const requireSurveyAssistantTurnState = (requestContext) => {
33
- const turnId = requestContext?.get("turnId");
34
- const changeCollector = requestContext?.get("changeCollector");
35
- if (!turnId || !changeCollector || changeCollector.turnId !== turnId) throw new Error("Survey assistant turn context is unavailable or inconsistent.");
36
- return {
37
- turnId,
38
- changeCollector
39
- };
40
- };
41
- //#endregion
42
- export { parseSurveyAssistantSnapshot as n, requireSurveyAssistantTurnState as r, buildSurveyAssistantRequestContext as t };
43
-
44
- //# sourceMappingURL=request-context-jcmXT_Q2.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request-context-jcmXT_Q2.mjs","names":[],"sources":["../src/server/request-context.ts"],"sourcesContent":["import {\n MASTRA_RESOURCE_ID_KEY,\n MASTRA_THREAD_ID_KEY,\n RequestContext,\n} from \"@mastra/core/request-context\";\nimport { surveyAssistantSnapshotPayloadSchema, type SurveyDocumentSnapshot } from \"../protocol\";\nimport {\n createSurveyAssistantEngineContext,\n TurnChangeCollector,\n type SurveyAssistantCapabilitySet,\n type SurveyAssistantEngineContext,\n} from \"../engine\";\nimport { defaultSurveyAssistantCapabilitySet } from \"../capabilities/default\";\nimport type {\n SurveyAssistantAttachmentAccess,\n SurveyAssistantModelAttachment,\n} from \"./thread-documents\";\n\nexport interface SurveyAssistantInvocationContext {\n kind: \"chat\";\n}\n\nexport interface SurveyAssistantIdentityContext {\n authority: \"experimental-client-request\" | \"authenticated-host\";\n resourceId: string;\n threadId: string;\n}\n\nexport interface SurveyAssistantModelSelection {\n id: string;\n model: string;\n}\n\nexport type SurveyAssistantSnapshotSource = \"full\" | \"missing\";\n\nexport interface SurveyAssistantRequestContext {\n invocation: SurveyAssistantInvocationContext;\n turnId: string;\n changeCollector: TurnChangeCollector;\n identity: SurveyAssistantIdentityContext;\n authenticatedResourceId?: string;\n authorizedThreadId?: string;\n applyPolicy?: \"auto\" | \"review\" | \"deny\";\n mastra__resourceId?: string;\n mastra__threadId?: string;\n snapshotSource?: SurveyAssistantSnapshotSource;\n engineContext?: SurveyAssistantEngineContext;\n documentSnapshot?: SurveyDocumentSnapshot;\n modelAttachments?: SurveyAssistantModelAttachment[];\n attachmentAccess?: SurveyAssistantAttachmentAccess;\n modelSelection?: SurveyAssistantModelSelection;\n}\n\nexport const parseSurveyAssistantSnapshot = (value: unknown): SurveyDocumentSnapshot | null => {\n if (value === undefined || value === null) {\n return null;\n }\n\n return surveyAssistantSnapshotPayloadSchema.parse(value);\n};\n\nexport const buildSurveyAssistantRequestContext = ({\n changeCollector,\n identity,\n snapshot,\n snapshotSource = snapshot ? \"full\" : \"missing\",\n trustedCapabilities = defaultSurveyAssistantCapabilitySet,\n attachmentAccess,\n modelAttachments = [],\n modelSelection,\n}: {\n changeCollector: TurnChangeCollector;\n identity: SurveyAssistantIdentityContext;\n snapshot: SurveyDocumentSnapshot | null;\n snapshotSource?: SurveyAssistantSnapshotSource;\n trustedCapabilities?: SurveyAssistantCapabilitySet;\n attachmentAccess?: SurveyAssistantAttachmentAccess;\n modelAttachments?: SurveyAssistantModelAttachment[];\n modelSelection?: SurveyAssistantModelSelection;\n}): RequestContext<SurveyAssistantRequestContext> => {\n const requestContext = new RequestContext<SurveyAssistantRequestContext>();\n\n requestContext.set(\"invocation\", { kind: \"chat\" });\n requestContext.set(\"turnId\", changeCollector.turnId);\n requestContext.set(\"changeCollector\", changeCollector);\n requestContext.set(\"identity\", identity);\n if (identity.authority === \"authenticated-host\") {\n requestContext.set(\"authenticatedResourceId\", identity.resourceId);\n requestContext.set(\"authorizedThreadId\", identity.threadId);\n }\n requestContext.set(MASTRA_RESOURCE_ID_KEY, identity.resourceId);\n requestContext.set(MASTRA_THREAD_ID_KEY, identity.threadId);\n requestContext.set(\"snapshotSource\", snapshotSource);\n if (attachmentAccess && attachmentAccess.documents.length > 0) {\n requestContext.set(\"attachmentAccess\", attachmentAccess);\n }\n if (modelAttachments.length > 0) {\n requestContext.set(\"modelAttachments\", modelAttachments);\n }\n if (modelSelection) {\n requestContext.set(\"modelSelection\", modelSelection);\n }\n\n if (!snapshot) {\n return requestContext;\n }\n\n const engineContext = createSurveyAssistantEngineContext(snapshot, trustedCapabilities);\n requestContext.set(\"documentSnapshot\", snapshot);\n requestContext.set(\"engineContext\", engineContext);\n\n return requestContext;\n};\n\nexport const requireSurveyAssistantTurnState = (\n requestContext: RequestContext<SurveyAssistantRequestContext> | undefined,\n) => {\n const turnId = requestContext?.get(\"turnId\");\n const changeCollector = requestContext?.get(\"changeCollector\");\n if (!turnId || !changeCollector || changeCollector.turnId !== turnId) {\n throw new Error(\"Survey assistant turn context is unavailable or inconsistent.\");\n }\n\n return { turnId, changeCollector };\n};\n"],"mappings":";;;;;AAqDA,MAAa,gCAAgC,UAAkD;AAC7F,KAAI,UAAU,KAAA,KAAa,UAAU,KACnC,QAAO;AAGT,QAAO,qCAAqC,MAAM,MAAM;;AAG1D,MAAa,sCAAsC,EACjD,iBACA,UACA,UACA,iBAAiB,WAAW,SAAS,WACrC,sBAAsB,qCACtB,kBACA,mBAAmB,EAAE,EACrB,qBAUmD;CACnD,MAAM,iBAAiB,IAAI,gBAA+C;AAE1E,gBAAe,IAAI,cAAc,EAAE,MAAM,QAAQ,CAAC;AAClD,gBAAe,IAAI,UAAU,gBAAgB,OAAO;AACpD,gBAAe,IAAI,mBAAmB,gBAAgB;AACtD,gBAAe,IAAI,YAAY,SAAS;AACxC,KAAI,SAAS,cAAc,sBAAsB;AAC/C,iBAAe,IAAI,2BAA2B,SAAS,WAAW;AAClE,iBAAe,IAAI,sBAAsB,SAAS,SAAS;;AAE7D,gBAAe,IAAI,wBAAwB,SAAS,WAAW;AAC/D,gBAAe,IAAI,sBAAsB,SAAS,SAAS;AAC3D,gBAAe,IAAI,kBAAkB,eAAe;AACpD,KAAI,oBAAoB,iBAAiB,UAAU,SAAS,EAC1D,gBAAe,IAAI,oBAAoB,iBAAiB;AAE1D,KAAI,iBAAiB,SAAS,EAC5B,gBAAe,IAAI,oBAAoB,iBAAiB;AAE1D,KAAI,eACF,gBAAe,IAAI,kBAAkB,eAAe;AAGtD,KAAI,CAAC,SACH,QAAO;CAGT,MAAM,gBAAgB,mCAAmC,UAAU,oBAAoB;AACvF,gBAAe,IAAI,oBAAoB,SAAS;AAChD,gBAAe,IAAI,iBAAiB,cAAc;AAElD,QAAO;;AAGT,MAAa,mCACX,mBACG;CACH,MAAM,SAAS,gBAAgB,IAAI,SAAS;CAC5C,MAAM,kBAAkB,gBAAgB,IAAI,kBAAkB;AAC9D,KAAI,CAAC,UAAU,CAAC,mBAAmB,gBAAgB,WAAW,OAC5D,OAAM,IAAI,MAAM,gEAAgE;AAGlF,QAAO;EAAE;EAAQ;EAAiB"}