@case-framework/survey-assistant 0.5.0 → 0.7.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.
- package/README.md +9 -4
- package/dist/attachments-B0hg3vpT.mjs +11 -0
- package/dist/attachments-B0hg3vpT.mjs.map +1 -0
- package/dist/authoring-references-BJQ_1nMX.mjs +115 -0
- package/dist/authoring-references-BJQ_1nMX.mjs.map +1 -0
- package/dist/capabilities-1KNnNO1_.mjs +73 -0
- package/dist/capabilities-1KNnNO1_.mjs.map +1 -0
- package/dist/{capabilities-CnsVuJ1k.d.mts → capabilities-DVTfogjv.d.mts} +1 -1
- package/dist/{capabilities-CnsVuJ1k.d.mts.map → capabilities-DVTfogjv.d.mts.map} +1 -1
- package/dist/capabilities-default.d.mts +1 -1
- package/dist/capabilities-default.d.mts.map +1 -1
- package/dist/capabilities-default.mjs +47 -20
- package/dist/capabilities-default.mjs.map +1 -1
- package/dist/{constants-CFUWrRtl.mjs → constants-0UHGFcRJ.mjs} +1 -1
- package/dist/{constants-CFUWrRtl.mjs.map → constants-0UHGFcRJ.mjs.map} +1 -1
- package/dist/{constants-DbrJxxOh.d.mts → constants-Be91Gay9.d.mts} +4 -4
- package/dist/{constants-DbrJxxOh.d.mts.map → constants-Be91Gay9.d.mts.map} +1 -1
- package/dist/{controller-proxy-jWIPOZAv.mjs → controller-proxy-BH05e-C2.mjs} +21 -8
- package/dist/controller-proxy-BH05e-C2.mjs.map +1 -0
- package/dist/{controller-proxy-BdKF2yrq.d.mts → controller-proxy-Bd0ZHBPF.d.mts} +11 -11
- package/dist/controller-proxy-Bd0ZHBPF.d.mts.map +1 -0
- package/dist/{digest-Dyjch_sC.d.mts → digest-SJmoYVaK.d.mts} +2 -2
- package/dist/{digest-Dyjch_sC.d.mts.map → digest-SJmoYVaK.d.mts.map} +1 -1
- package/dist/digest.d.mts +1 -1
- package/dist/{engine-DcSdLRle.mjs → engine-Bo85Oyj0.mjs} +3129 -2435
- package/dist/engine-Bo85Oyj0.mjs.map +1 -0
- package/dist/engine.d.mts +3 -3
- package/dist/engine.mjs +3 -3
- package/dist/{fair-guidance-CEdJYccK.mjs → fair-guidance-CRYCRxQm.mjs} +1 -1
- package/dist/{fair-guidance-CEdJYccK.mjs.map → fair-guidance-CRYCRxQm.mjs.map} +1 -1
- package/dist/{index-Da_Hb9-1.d.mts → index-Tnqv-yKW.d.mts} +73 -67
- package/dist/index-Tnqv-yKW.d.mts.map +1 -0
- package/dist/index-l_EK4yK7.d.mts +404 -0
- package/dist/index-l_EK4yK7.d.mts.map +1 -0
- package/dist/{index-BApnIiCI.d.mts → index-nhrgbgO5.d.mts} +24 -5
- package/dist/index-nhrgbgO5.d.mts.map +1 -0
- package/dist/{index-DhNQKOwr.d.mts → index-x0qprHgK.d.mts} +19 -7
- package/dist/index-x0qprHgK.d.mts.map +1 -0
- package/dist/{lifecycle-DWv5CiSu.d.mts → lifecycle-Bx0aq_4S.d.mts} +8 -2
- package/dist/{lifecycle-DWv5CiSu.d.mts.map → lifecycle-Bx0aq_4S.d.mts.map} +1 -1
- package/dist/{memory-thread-repository-CvYZwni6.mjs → memory-thread-repository-KWHQWFEW.mjs} +45 -14
- package/dist/memory-thread-repository-KWHQWFEW.mjs.map +1 -0
- package/dist/{protocol-DJUP4gc0.mjs → protocol-BhzQbx81.mjs} +66 -16
- package/dist/protocol-BhzQbx81.mjs.map +1 -0
- package/dist/protocol.d.mts +4 -4
- package/dist/protocol.mjs +3 -2
- package/dist/react-B3ybjJ-X.mjs +1620 -0
- package/dist/react-B3ybjJ-X.mjs.map +1 -0
- package/dist/react-integration.d.mts +1 -1
- package/dist/react-integration.mjs +1 -1
- package/dist/react.d.mts +3 -3
- package/dist/react.mjs +3 -3
- package/dist/references/assistant-operations.md +45 -39
- package/dist/references/expressions.md +28 -0
- package/dist/references/item-types.md +1 -1
- package/dist/references/localization.md +5 -4
- package/dist/references/rich-text-content.md +60 -27
- package/dist/references/source-material-surveys.md +9 -2
- package/dist/references/survey-data-model.md +9 -1
- package/dist/{request-context-D1sC54ZA.mjs → request-context-CG4SWijt.mjs} +3 -3
- package/dist/{request-context-D1sC54ZA.mjs.map → request-context-CG4SWijt.mjs.map} +1 -1
- package/dist/{request-guardrails-h4t6u8mP.mjs → request-guardrails-TmgQtqp4.mjs} +5 -12
- package/dist/request-guardrails-TmgQtqp4.mjs.map +1 -0
- package/dist/server-agent.d.mts +19 -8
- package/dist/server-agent.d.mts.map +1 -1
- package/dist/server-agent.mjs +11 -13
- package/dist/server-agent.mjs.map +1 -1
- package/dist/server-runtime.d.mts +12 -6
- package/dist/server-runtime.d.mts.map +1 -1
- package/dist/server-runtime.mjs +9 -4
- package/dist/server-runtime.mjs.map +1 -1
- package/dist/server-tasks.d.mts +1 -1
- package/dist/server-tasks.mjs +5 -5
- package/dist/server-tools.d.mts +1 -1
- package/dist/server-tools.mjs +1 -1
- package/dist/server.d.mts +7 -7
- package/dist/server.mjs +6 -6
- package/dist/storage-postgres.d.mts +1 -1
- package/dist/storage-postgres.mjs +1 -1
- package/dist/{tasks-CCtxjhwh.d.mts → tasks-CYqrcaRO.d.mts} +16 -4
- package/dist/tasks-CYqrcaRO.d.mts.map +1 -0
- package/dist/{thread-documents-Dvo6XS7o.d.mts → thread-documents-rmd6nyX9.d.mts} +1 -1
- package/dist/{thread-documents-Dvo6XS7o.d.mts.map → thread-documents-rmd6nyX9.d.mts.map} +1 -1
- package/dist/{thread-handlers-Bt9cDo-F.d.mts → thread-handlers-DBAaU7BA.d.mts} +7 -5
- package/dist/thread-handlers-DBAaU7BA.d.mts.map +1 -0
- package/dist/{tools-3tq-XqI0.mjs → tools-BvSovehT.mjs} +433 -495
- package/dist/tools-BvSovehT.mjs.map +1 -0
- package/dist/ui.css +1 -1
- package/dist/ui.d.mts +5 -4
- package/dist/ui.d.mts.map +1 -1
- package/dist/ui.mjs +744 -131
- package/dist/ui.mjs.map +1 -1
- package/docs/integration.md +43 -3
- package/package.json +21 -19
- package/dist/authoring-references-yyYC4Ydi.mjs +0 -98
- package/dist/authoring-references-yyYC4Ydi.mjs.map +0 -1
- package/dist/controller-proxy-BdKF2yrq.d.mts.map +0 -1
- package/dist/controller-proxy-jWIPOZAv.mjs.map +0 -1
- package/dist/engine-DcSdLRle.mjs.map +0 -1
- package/dist/form-authoring-BQh40yDb.mjs +0 -155
- package/dist/form-authoring-BQh40yDb.mjs.map +0 -1
- package/dist/index-BApnIiCI.d.mts.map +0 -1
- package/dist/index-Da_Hb9-1.d.mts.map +0 -1
- package/dist/index-DhNQKOwr.d.mts.map +0 -1
- package/dist/index-dV6df0W3.d.mts +0 -224
- package/dist/index-dV6df0W3.d.mts.map +0 -1
- package/dist/memory-thread-repository-CvYZwni6.mjs.map +0 -1
- package/dist/protocol-DJUP4gc0.mjs.map +0 -1
- package/dist/react-CY6N7lVi.mjs +0 -768
- package/dist/react-CY6N7lVi.mjs.map +0 -1
- package/dist/request-guardrails-h4t6u8mP.mjs.map +0 -1
- package/dist/tasks-CCtxjhwh.d.mts.map +0 -1
- package/dist/thread-handlers-Bt9cDo-F.d.mts.map +0 -1
- package/dist/tools-3tq-XqI0.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-runtime.mjs","names":[],"sources":["../src/server/runtime-config.ts","../src/server/runtime.ts"],"sourcesContent":["import type { AgentExecutionOptions } from \"@mastra/core/agent\";\nimport type { AzureOpenAIGatewayConfig } from \"@mastra/core/llm\";\nimport { z } from \"zod\";\nimport {\n createSurveyAssistantObservationalMemoryOptions,\n SURVEY_ASSISTANT_OBSERVATIONAL_MEMORY_DEFAULTS,\n type SurveyAssistantObservationalMemoryOptions,\n} from \"./agent\";\nimport {\n SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS,\n type SurveyAssistantRequestLimits,\n} from \"./request-guardrails\";\n\nexport type SurveyAssistantProvider = \"azure-openai\" | \"lmstudio\" | \"mistral\" | \"openai\";\nexport type SurveyAssistantProviderOptionsKey = \"azure\" | \"lmstudio\" | \"mistral\" | \"openai\";\n\nexport type SurveyAssistantModelRole = \"chat-default\" | \"chat-picker\" | \"memory\" | \"task-default\";\n\nexport interface SurveyAssistantConfiguredModel {\n id: string;\n label: string;\n upstreamModelId: string;\n providerOptions?: AgentExecutionOptions[\"providerOptions\"];\n}\n\nexport interface SurveyAssistantAzureConfig {\n apiKey?: string;\n apiVersion: \"preview\" | \"v1\";\n discoverModels: boolean;\n management?: AzureOpenAIGatewayConfig[\"management\"];\n resourceName?: string;\n}\n\nexport interface SurveyAssistantLmStudioConfig {\n apiKey?: string;\n baseUrl: string;\n}\n\nexport interface SurveyAssistantExecutionConfig {\n firstResponseTimeoutMs: number;\n idleTimeoutMs: number;\n maxConcurrentRequests: number;\n /** Absolute execution ceiling. Active streams still stop when this duration is reached. */\n maxDurationMs: number;\n maxSteps: number;\n providerOptions?: AgentExecutionOptions[\"providerOptions\"];\n sendReasoning: boolean;\n}\n\nexport interface SurveyAssistantRuntimeConfig {\n azure?: SurveyAssistantAzureConfig;\n lmstudio?: SurveyAssistantLmStudioConfig;\n /** Default chat model and fallback for chat requests without a selection. */\n defaultModelId: string;\n enabled: boolean;\n /** Fixed same-provider model shared by memory observation and reflection. */\n memoryModelId: string;\n modelCatalogTtlMs: number;\n /** Every configured model for the active provider, including internal-only roles. */\n models?: SurveyAssistantConfiguredModel[];\n modelIds: string[];\n observationalMemory: SurveyAssistantObservationalMemoryOptions | false;\n provider: SurveyAssistantProvider;\n /** Resolved server-only provider credential. Never expose it through the model catalog. */\n providerApiKey?: string;\n requestLimits: Pick<\n SurveyAssistantRequestLimits,\n | \"maxAttachmentBytes\"\n | \"maxAttachments\"\n | \"maxRequestBytes\"\n | \"maxTextPartChars\"\n | \"maxTotalAttachmentBytes\"\n >;\n readinessError: string | null;\n /**\n * Fixed model for one-shot tasks. When omitted, tasks follow the\n * server-authorized chat model selection.\n */\n taskModelId?: string;\n execution: SurveyAssistantExecutionConfig;\n}\n\nexport interface ParseSurveyAssistantEnvironmentOptions {\n defaultLmStudioModel?: string;\n defaultMistralModel?: string;\n defaultOpenAIModel?: string;\n defaultProvider?: SurveyAssistantProvider;\n /**\n * Adds an explicit production rollout gate to assistant enablement. When\n * true, an otherwise enabled assistant remains disabled outside development\n * unless `SURVEY_ASSISTANT_ALLOW_EXPERIMENTAL_IDENTITY=true` is also set.\n *\n * Despite the legacy environment-variable name, this does not select an\n * identity authority or replace the host's authorization callback. Most\n * hosts with authenticated identity integration should omit it unless they\n * deliberately want the additional rollout gate.\n *\n * @default false\n */\n requireExperimentalIdentityOptIn?: boolean;\n requireStorage?: boolean;\n}\n\ntype Environment = Record<string, string | undefined>;\n\nconst ENVIRONMENT_VARIABLE_NAME = /^[A-Z_][A-Z0-9_]*$/;\n\nconst modelRoleSchema = z.enum([\"chat-default\", \"chat-picker\", \"memory\", \"task-default\"]);\n\nconst providerModelOptionsSchema = z\n .object({\n parallelToolCalls: z.boolean().optional(),\n promptCacheKey: z.string().trim().min(1).optional(),\n promptCacheRetention: z.enum([\"in_memory\", \"24h\"]).optional(),\n reasoningEffort: z.string().trim().min(1).optional(),\n reasoningSummary: z.enum([\"auto\", \"concise\", \"detailed\", \"off\", \"none\"]).optional(),\n serviceTier: z.enum([\"auto\", \"flex\", \"priority\", \"default\"]).optional(),\n textVerbosity: z.enum([\"low\", \"medium\", \"high\"]).optional(),\n })\n .strict();\n\nconst configuredModelSchema = z\n .object({\n id: z.string().trim().min(1).max(240),\n label: z.string().trim().min(1).max(240).optional(),\n upstreamModel: z.string().trim().min(1).max(240).optional(),\n roles: z.array(modelRoleSchema).min(1),\n options: providerModelOptionsSchema.optional(),\n })\n .strict()\n .superRefine(({ roles }, context) => {\n if (new Set(roles).size !== roles.length) {\n context.addIssue({ code: \"custom\", message: \"Model roles must be unique.\" });\n }\n });\n\nconst providerBaseShape = {\n apiKeyEnv: z.string().regex(ENVIRONMENT_VARIABLE_NAME).optional(),\n models: z.array(configuredModelSchema).min(1),\n options: providerModelOptionsSchema.optional(),\n};\n\nconst providerSchema = z.discriminatedUnion(\"type\", [\n z\n .object({\n ...providerBaseShape,\n type: z.literal(\"openai\"),\n apiKeyEnv: z.string().regex(ENVIRONMENT_VARIABLE_NAME),\n })\n .strict(),\n z\n .object({\n ...providerBaseShape,\n type: z.literal(\"mistral\"),\n apiKeyEnv: z.string().regex(ENVIRONMENT_VARIABLE_NAME),\n })\n .strict(),\n z\n .object({\n ...providerBaseShape,\n type: z.literal(\"lmstudio\"),\n baseUrl: z.string().url().default(\"http://127.0.0.1:1234/v1\"),\n apiKeyOptional: z.boolean().default(true),\n })\n .strict(),\n z\n .object({\n ...providerBaseShape,\n type: z.literal(\"azure-openai\"),\n apiKeyEnv: z.string().regex(ENVIRONMENT_VARIABLE_NAME),\n apiVersion: z.enum([\"v1\", \"preview\"]).default(\"v1\"),\n discoverModels: z.boolean().default(false),\n resourceName: z.string().trim().min(1),\n management: z\n .object({\n tenantId: z.string().trim().min(1),\n clientId: z.string().trim().min(1),\n clientSecretEnv: z.string().regex(ENVIRONMENT_VARIABLE_NAME),\n subscriptionId: z.string().trim().min(1),\n resourceGroup: z.string().trim().min(1),\n })\n .strict()\n .optional(),\n })\n .strict(),\n]);\n\nexport const surveyAssistantConfigurationDocumentSchema = z\n .object({\n version: z.literal(1),\n activeProvider: z.string().trim().min(1),\n enabled: z.boolean().optional(),\n providers: z.record(z.string().trim().min(1), providerSchema),\n execution: z\n .object({\n firstResponseTimeoutMs: z.number().int().positive().optional(),\n idleTimeoutMs: z.number().int().positive().optional(),\n maxConcurrentRequests: z.number().int().positive().optional(),\n maxDurationMs: z.number().int().positive().optional(),\n maxSteps: z.number().int().positive().optional(),\n sendReasoning: z.boolean().optional(),\n })\n .strict()\n .optional(),\n memory: z\n .object({\n enabled: z.boolean().optional(),\n bufferOnIdle: z.boolean().optional(),\n messageTokens: z.number().int().positive().optional(),\n observationTokens: z.number().int().positive().optional(),\n temporalMarkers: z.boolean().optional(),\n })\n .strict()\n .optional(),\n modelCatalogTtlMs: z.number().int().positive().optional(),\n requestLimits: z\n .object({\n maxAttachmentBytes: z.number().int().positive().optional(),\n maxAttachments: z.number().int().positive().optional(),\n maxRequestBytes: z.number().int().positive().optional(),\n maxTextPartChars: z.number().int().positive().optional(),\n maxTotalAttachmentBytes: z.number().int().positive().optional(),\n })\n .strict()\n .optional(),\n })\n .strict();\n\nexport type SurveyAssistantConfigurationDocument = z.infer<\n typeof surveyAssistantConfigurationDocumentSchema\n>;\n\nconst DEFAULT_MAX_STEPS = 48;\nconst HARD_MAX_STEPS = 64;\nconst DEFAULT_FIRST_RESPONSE_TIMEOUT_MS = 15 * 60 * 1_000;\nconst DEFAULT_IDLE_TIMEOUT_MS = 5 * 60 * 1_000;\nconst DEFAULT_MAX_DURATION_MS = 60 * 60 * 1_000;\nconst DEFAULT_CATALOG_TTL_MS = 5 * 60 * 1_000;\n\ntype ProviderModelOptions = z.infer<typeof providerModelOptionsSchema>;\n\nconst getValue = (env: Environment, name: string) => {\n const value = env[name]?.trim();\n return value || undefined;\n};\n\nconst getBoolean = (env: Environment, name: string, fallback: boolean) => {\n const value = getValue(env, name)?.toLowerCase();\n if (value === \"true\") return true;\n if (value === \"false\") return false;\n if (value !== undefined) {\n throw new Error(`${name} must be \"true\" or \"false\".`);\n }\n return fallback;\n};\n\nconst getPositiveNumber = (env: Environment, name: string, fallback: number) => {\n const configured = getValue(env, name);\n if (configured === undefined) return fallback;\n const value = Number(configured);\n if (!Number.isSafeInteger(value) || value <= 0) {\n throw new Error(`${name} must be a positive integer.`);\n }\n return value;\n};\n\nconst getEnum = <TValue extends string>(\n env: Environment,\n name: string,\n values: readonly TValue[],\n) => {\n const value = getValue(env, name);\n if (!value) return undefined;\n if (!(values as readonly string[]).includes(value)) {\n throw new Error(`${name} must be one of: ${values.join(\", \")}.`);\n }\n return value as TValue;\n};\n\nconst getCommaSeparatedValues = (env: Environment, name: string) => [\n ...new Set(\n (getValue(env, name) ?? \"\")\n .split(\",\")\n .map((value) => value.trim())\n .filter(Boolean),\n ),\n];\n\nconst getSameProviderModelId = (\n value: string,\n name: string,\n { allowNestedId = false }: { allowNestedId?: boolean } = {},\n) => {\n if (!allowNestedId && value.includes(\"/\")) {\n throw new Error(\n `${name} must be a model or deployment id without a provider prefix. ` +\n \"All survey assistant models use SURVEY_ASSISTANT_PROVIDER.\",\n );\n }\n return value;\n};\n\nconst getOptionalSameProviderModelId = (\n env: Environment,\n name: string,\n options?: { allowNestedId?: boolean },\n) => {\n const value = getValue(env, name);\n return value ? getSameProviderModelId(value, name, options) : undefined;\n};\n\nexport const resolveSurveyAssistantProviderOptionsKey = (\n provider: SurveyAssistantProvider,\n): SurveyAssistantProviderOptionsKey => (provider === \"azure-openai\" ? \"azure\" : provider);\n\nconst createProviderOptions = (\n provider: SurveyAssistantProvider,\n options: ProviderModelOptions | undefined,\n sendReasoning: boolean,\n): AgentExecutionOptions[\"providerOptions\"] => {\n const providerOptionsKey = resolveSurveyAssistantProviderOptionsKey(provider);\n const reasoningSummary =\n options?.reasoningSummary === \"off\" || options?.reasoningSummary === \"none\"\n ? undefined\n : options?.reasoningSummary;\n const reasoningEffort =\n options?.reasoningEffort === \"default\" || options?.reasoningEffort === \"provider-default\"\n ? undefined\n : options?.reasoningEffort;\n const resolved = {\n parallelToolCalls: options?.parallelToolCalls ?? false,\n ...(reasoningEffort ? { reasoningEffort } : {}),\n ...(options?.promptCacheKey ? { promptCacheKey: options.promptCacheKey } : {}),\n ...(options?.promptCacheRetention\n ? { promptCacheRetention: options.promptCacheRetention }\n : {}),\n ...(sendReasoning && reasoningSummary ? { reasoningSummary } : {}),\n ...(options?.serviceTier ? { serviceTier: options.serviceTier } : {}),\n ...(options?.textVerbosity ? { textVerbosity: options.textVerbosity } : {}),\n };\n return { [providerOptionsKey]: resolved } as AgentExecutionOptions[\"providerOptions\"];\n};\n\nconst getConfiguredEnabledOverride = (env: Environment) => {\n const value = getValue(env, \"SURVEY_ASSISTANT_ENABLED\");\n if (value !== undefined && value !== \"true\" && value !== \"false\") {\n throw new Error('SURVEY_ASSISTANT_ENABLED must be \"true\" or \"false\".');\n }\n return value === undefined ? undefined : value === \"true\";\n};\n\nconst isSurveyAssistantExplicitlyDisabled = (input: unknown, env: Environment) => {\n const environmentOverride = getConfiguredEnabledOverride(env);\n if (environmentOverride !== undefined) return !environmentOverride;\n return (\n typeof input === \"object\" && input !== null && \"enabled\" in input && input.enabled === false\n );\n};\n\nconst createDisabledSurveyAssistantRuntimeConfig = (): SurveyAssistantRuntimeConfig => {\n const disabledModelId = \"survey-assistant-disabled\";\n return {\n provider: \"openai\",\n defaultModelId: disabledModelId,\n memoryModelId: disabledModelId,\n modelIds: [disabledModelId],\n models: [\n {\n id: disabledModelId,\n label: \"Survey assistant disabled\",\n upstreamModelId: disabledModelId,\n },\n ],\n modelCatalogTtlMs: DEFAULT_CATALOG_TTL_MS,\n enabled: false,\n readinessError: null,\n requestLimits: { ...SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS },\n execution: {\n firstResponseTimeoutMs: DEFAULT_FIRST_RESPONSE_TIMEOUT_MS,\n idleTimeoutMs: DEFAULT_IDLE_TIMEOUT_MS,\n maxConcurrentRequests: 4,\n maxDurationMs: DEFAULT_MAX_DURATION_MS,\n maxSteps: DEFAULT_MAX_STEPS,\n sendReasoning: false,\n },\n observationalMemory: false,\n };\n};\n\nconst resolveConfiguredEnabled = (\n env: Environment,\n configured: boolean | undefined,\n requireExperimentalIdentityOptIn: boolean,\n) => {\n const environmentOverride = getConfiguredEnabledOverride(env);\n const requested =\n environmentOverride !== undefined\n ? environmentOverride\n : (configured ?? env.NODE_ENV === \"development\");\n return (\n requested &&\n (!requireExperimentalIdentityOptIn ||\n env.NODE_ENV === \"development\" ||\n getBoolean(env, \"SURVEY_ASSISTANT_ALLOW_EXPERIMENTAL_IDENTITY\", false))\n );\n};\n\nconst parseProvider = (\n env: Environment,\n fallback: SurveyAssistantProvider,\n): SurveyAssistantProvider => {\n const value = getValue(env, \"SURVEY_ASSISTANT_PROVIDER\")?.toLowerCase();\n if (value === \"azure\" || value === \"azure-openai\") return \"azure-openai\";\n if (value === \"lmstudio\" || value === \"openai\" || value === \"mistral\") return value;\n if (value) {\n throw new Error(\n \"SURVEY_ASSISTANT_PROVIDER must be one of: openai, mistral, lmstudio, azure-openai.\",\n );\n }\n return fallback;\n};\n\nconst parseAzureManagement = (\n env: Environment,\n): AzureOpenAIGatewayConfig[\"management\"] | undefined => {\n if (!getBoolean(env, \"SURVEY_ASSISTANT_AZURE_DISCOVER_MODELS\", false)) return undefined;\n const management = {\n tenantId: getValue(env, \"AZURE_TENANT_ID\"),\n clientId: getValue(env, \"AZURE_CLIENT_ID\"),\n clientSecret: getValue(env, \"AZURE_CLIENT_SECRET\"),\n subscriptionId: getValue(env, \"AZURE_SUBSCRIPTION_ID\"),\n resourceGroup: getValue(env, \"AZURE_RESOURCE_GROUP\"),\n };\n return Object.values(management).every(Boolean)\n ? (management as AzureOpenAIGatewayConfig[\"management\"])\n : undefined;\n};\n\nconst getReadinessError = ({\n azure,\n env,\n modelWasConfigured,\n provider,\n requireStorage,\n}: {\n azure?: SurveyAssistantAzureConfig;\n env: Environment;\n modelWasConfigured: boolean;\n provider: SurveyAssistantProvider;\n requireStorage: boolean;\n}) => {\n if (\n requireStorage &&\n !getValue(env, \"SURVEY_ASSISTANT_DATABASE_URL\") &&\n !getValue(env, \"DATABASE_URL\")\n ) {\n return \"Survey assistant storage is not configured.\";\n }\n if (provider === \"openai\" && !getValue(env, \"OPENAI_API_KEY\")) {\n return \"The OpenAI API key is not configured for the survey assistant.\";\n }\n if (provider === \"mistral\" && !getValue(env, \"MISTRAL_API_KEY\")) {\n return \"The Mistral API key is not configured for the survey assistant.\";\n }\n if (provider === \"azure-openai\") {\n if (!azure?.resourceName) {\n return \"The Azure OpenAI resource name is not configured for the survey assistant.\";\n }\n if (!azure.apiKey) {\n return \"The Azure OpenAI API key is not configured for the survey assistant.\";\n }\n if (!modelWasConfigured) {\n return \"The Azure OpenAI deployment name is not configured for the survey assistant.\";\n }\n if (azure.discoverModels && !azure.management) {\n return \"Azure deployment discovery requires complete tenant, client, subscription, and resource-group settings.\";\n }\n }\n return null;\n};\n\nexport const parseSurveyAssistantConfigurationDocument = (\n input: unknown,\n env: Environment,\n {\n requireExperimentalIdentityOptIn = false,\n requireStorage = true,\n }: Pick<\n ParseSurveyAssistantEnvironmentOptions,\n \"requireExperimentalIdentityOptIn\" | \"requireStorage\"\n > = {},\n): SurveyAssistantRuntimeConfig => {\n if (isSurveyAssistantExplicitlyDisabled(input, env)) {\n return createDisabledSurveyAssistantRuntimeConfig();\n }\n const document = surveyAssistantConfigurationDocumentSchema.parse(input);\n const activeProvider = document.providers[document.activeProvider];\n if (!activeProvider) {\n throw new Error(`activeProvider references unknown provider \"${document.activeProvider}\".`);\n }\n\n const memoryEnabled = document.memory?.enabled ?? true;\n for (const [providerName, configuredProvider] of Object.entries(document.providers)) {\n const duplicateModelId = configuredProvider.models.find(\n (model, index, models) =>\n models.findIndex((candidate) => candidate.id === model.id) !== index,\n )?.id;\n if (duplicateModelId) {\n throw new Error(\n `Provider \"${providerName}\" contains duplicate model id \"${duplicateModelId}\".`,\n );\n }\n const modelsForProviderRole = (role: SurveyAssistantModelRole) =>\n configuredProvider.models.filter((model) => model.roles.includes(role));\n const providerChatDefaults = modelsForProviderRole(\"chat-default\");\n const providerChatModels = modelsForProviderRole(\"chat-picker\");\n const providerTaskDefaults = modelsForProviderRole(\"task-default\");\n const providerMemoryModels = modelsForProviderRole(\"memory\");\n if (providerChatDefaults.length !== 1) {\n throw new Error(`Provider \"${providerName}\" must configure exactly one chat-default model.`);\n }\n if (!providerChatDefaults[0].roles.includes(\"chat-picker\")) {\n throw new Error(\n `The chat-default model for provider \"${providerName}\" must also have the chat-picker role.`,\n );\n }\n if (providerChatModels.length === 0) {\n throw new Error(`Provider \"${providerName}\" must configure a chat-picker model.`);\n }\n if (providerTaskDefaults.length > 1) {\n throw new Error(`Provider \"${providerName}\" may configure at most one task-default model.`);\n }\n if (providerMemoryModels.length > 1 || (memoryEnabled && providerMemoryModels.length !== 1)) {\n throw new Error(\n memoryEnabled\n ? `Provider \"${providerName}\" must configure exactly one memory model when memory is enabled.`\n : `Provider \"${providerName}\" may configure at most one memory model.`,\n );\n }\n if (\n configuredProvider.type === \"lmstudio\" &&\n !configuredProvider.apiKeyOptional &&\n !configuredProvider.apiKeyEnv\n ) {\n throw new Error(\n `Provider \"${providerName}\" must configure apiKeyEnv when apiKeyOptional is false.`,\n );\n }\n const validateOptions = (options: ProviderModelOptions | undefined, location: string) => {\n if (!options) return;\n if (\n configuredProvider.type !== \"openai\" &&\n configuredProvider.type !== \"azure-openai\" &&\n (options.promptCacheKey ||\n options.promptCacheRetention ||\n options.reasoningSummary ||\n options.textVerbosity)\n ) {\n throw new Error(`${location} contains options unsupported by ${configuredProvider.type}.`);\n }\n if (configuredProvider.type !== \"openai\" && options.serviceTier) {\n throw new Error(`${location} contains serviceTier, which is only supported by openai.`);\n }\n };\n validateOptions(configuredProvider.options, `Provider \"${providerName}\"`);\n for (const model of configuredProvider.models) {\n const upstreamModelId = model.upstreamModel ?? model.id;\n if (configuredProvider.type !== \"lmstudio\" && upstreamModelId.includes(\"/\")) {\n throw new Error(\n `Model \"${model.id}\" must use an upstreamModel without a provider prefix for ${configuredProvider.type}.`,\n );\n }\n validateOptions(model.options, `Model \"${model.id}\" in provider \"${providerName}\"`);\n }\n }\n\n const modelsForRole = (role: SurveyAssistantModelRole) =>\n activeProvider.models.filter((model) => model.roles.includes(role));\n const chatDefaults = modelsForRole(\"chat-default\");\n const chatModels = modelsForRole(\"chat-picker\");\n const taskDefaults = modelsForRole(\"task-default\");\n const memoryModels = modelsForRole(\"memory\");\n\n const provider = activeProvider.type;\n\n const sendReasoning = document.execution?.sendReasoning ?? true;\n const providerDefaults: ProviderModelOptions = {\n parallelToolCalls: false,\n ...(provider === \"openai\" || provider === \"azure-openai\"\n ? {\n reasoningEffort: \"low\",\n reasoningSummary: \"detailed\" as const,\n promptCacheKey: \"survey-assistant-chat-v21\",\n }\n : provider === \"mistral\"\n ? { reasoningEffort: \"none\" }\n : {}),\n ...activeProvider.options,\n };\n const models: SurveyAssistantConfiguredModel[] = activeProvider.models.map((model) => ({\n id: model.id,\n label: model.label ?? model.id,\n upstreamModelId: model.upstreamModel ?? model.id,\n providerOptions: createProviderOptions(\n provider,\n { ...providerDefaults, ...model.options },\n sendReasoning,\n ),\n }));\n const configuredModel = (id: string) => models.find((model) => model.id === id)!;\n const defaultModelId = chatDefaults[0].id;\n const memoryModelId = (memoryModels[0] ?? chatDefaults[0]).id;\n const taskModelId = taskDefaults[0]?.id;\n const providerApiKey = activeProvider.apiKeyEnv\n ? getValue(env, activeProvider.apiKeyEnv)\n : undefined;\n const memoryModel = configuredModel(memoryModelId);\n const memoryModelConfig:\n | string\n | { id: `${string}/${string}`; apiKey?: string }\n | {\n providerId: string;\n modelId: string;\n url: string;\n apiKey?: string;\n } =\n provider === \"lmstudio\"\n ? {\n providerId: \"lmstudio\",\n modelId: memoryModel.upstreamModelId,\n url: activeProvider.baseUrl,\n ...(providerApiKey ? { apiKey: providerApiKey } : {}),\n }\n : provider === \"azure-openai\"\n ? `${provider}/${memoryModel.upstreamModelId}`\n : {\n id: `${provider}/${memoryModel.upstreamModelId}`,\n ...(providerApiKey ? { apiKey: providerApiKey } : {}),\n };\n const azure: SurveyAssistantAzureConfig | undefined =\n provider === \"azure-openai\"\n ? {\n resourceName: activeProvider.resourceName,\n apiKey: providerApiKey,\n apiVersion: activeProvider.apiVersion,\n discoverModels: activeProvider.discoverModels,\n management: activeProvider.management\n ? {\n tenantId: activeProvider.management.tenantId,\n clientId: activeProvider.management.clientId,\n clientSecret: getValue(env, activeProvider.management.clientSecretEnv) ?? \"\",\n subscriptionId: activeProvider.management.subscriptionId,\n resourceGroup: activeProvider.management.resourceGroup,\n }\n : undefined,\n }\n : undefined;\n const lmstudio: SurveyAssistantLmStudioConfig | undefined =\n provider === \"lmstudio\"\n ? { baseUrl: activeProvider.baseUrl, ...(providerApiKey ? { apiKey: providerApiKey } : {}) }\n : undefined;\n const missingProviderSecret =\n activeProvider.apiKeyEnv &&\n !providerApiKey &&\n !(provider === \"lmstudio\" && activeProvider.apiKeyOptional);\n const missingManagementSecret =\n provider === \"azure-openai\" &&\n activeProvider.discoverModels &&\n (!activeProvider.management || !azure?.management?.clientSecret);\n const missingStorage =\n requireStorage &&\n !getValue(env, \"SURVEY_ASSISTANT_DATABASE_URL\") &&\n !getValue(env, \"DATABASE_URL\");\n const readinessError = missingStorage\n ? \"Survey assistant storage is not configured.\"\n : missingProviderSecret\n ? `The provider credential ${activeProvider.apiKeyEnv} is not configured for the survey assistant.`\n : missingManagementSecret\n ? \"Azure deployment discovery requires complete management configuration and credentials.\"\n : null;\n const configuredMaxSteps = document.execution?.maxSteps ?? DEFAULT_MAX_STEPS;\n\n return {\n provider,\n providerApiKey,\n defaultModelId,\n memoryModelId,\n taskModelId,\n modelIds: chatModels.map((model) => model.id),\n models,\n modelCatalogTtlMs: document.modelCatalogTtlMs ?? DEFAULT_CATALOG_TTL_MS,\n azure,\n lmstudio,\n enabled: resolveConfiguredEnabled(env, document.enabled, requireExperimentalIdentityOptIn),\n readinessError,\n requestLimits: {\n maxAttachmentBytes:\n document.requestLimits?.maxAttachmentBytes ??\n SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS.maxAttachmentBytes,\n maxAttachments:\n document.requestLimits?.maxAttachments ??\n SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS.maxAttachments,\n maxRequestBytes:\n document.requestLimits?.maxRequestBytes ??\n SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS.maxRequestBytes,\n maxTextPartChars:\n document.requestLimits?.maxTextPartChars ??\n SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS.maxTextPartChars,\n maxTotalAttachmentBytes:\n document.requestLimits?.maxTotalAttachmentBytes ??\n SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS.maxTotalAttachmentBytes,\n },\n execution: {\n firstResponseTimeoutMs:\n document.execution?.firstResponseTimeoutMs ?? DEFAULT_FIRST_RESPONSE_TIMEOUT_MS,\n idleTimeoutMs: document.execution?.idleTimeoutMs ?? DEFAULT_IDLE_TIMEOUT_MS,\n maxConcurrentRequests: document.execution?.maxConcurrentRequests ?? 4,\n maxDurationMs: document.execution?.maxDurationMs ?? DEFAULT_MAX_DURATION_MS,\n maxSteps: Math.min(configuredMaxSteps, HARD_MAX_STEPS),\n providerOptions: configuredModel(defaultModelId).providerOptions,\n sendReasoning,\n },\n observationalMemory: memoryEnabled\n ? createSurveyAssistantObservationalMemoryOptions({\n model: memoryModelConfig,\n temporalMarkers: document.memory?.temporalMarkers ?? false,\n observation: {\n messageTokens:\n document.memory?.messageTokens ??\n SURVEY_ASSISTANT_OBSERVATIONAL_MEMORY_DEFAULTS.messageTokens,\n bufferOnIdle: document.memory?.bufferOnIdle ?? false,\n observeAttachments: false,\n },\n reflection: {\n observationTokens:\n document.memory?.observationTokens ??\n SURVEY_ASSISTANT_OBSERVATIONAL_MEMORY_DEFAULTS.observationTokens,\n },\n })\n : false,\n };\n};\n\nexport const parseSurveyAssistantEnvironment = (\n env: Environment,\n {\n defaultLmStudioModel,\n defaultMistralModel = \"mistral-medium-latest\",\n defaultOpenAIModel = \"gpt-5.4-nano\",\n defaultProvider = \"openai\",\n requireExperimentalIdentityOptIn = false,\n requireStorage = true,\n }: ParseSurveyAssistantEnvironmentOptions = {},\n): SurveyAssistantRuntimeConfig => {\n if (getConfiguredEnabledOverride(env) === false) {\n return createDisabledSurveyAssistantRuntimeConfig();\n }\n const provider = parseProvider(env, defaultProvider);\n const modelIdOptions = { allowNestedId: provider === \"lmstudio\" };\n const configuredModelId = getOptionalSameProviderModelId(\n env,\n \"SURVEY_ASSISTANT_MODEL\",\n modelIdOptions,\n );\n if (provider === \"lmstudio\" && !configuredModelId && !defaultLmStudioModel) {\n throw new Error(\n \"SURVEY_ASSISTANT_MODEL must be configured when SURVEY_ASSISTANT_PROVIDER is lmstudio.\",\n );\n }\n const defaultModelId =\n configuredModelId ??\n getSameProviderModelId(\n provider === \"lmstudio\"\n ? defaultLmStudioModel!\n : provider === \"mistral\"\n ? defaultMistralModel\n : defaultOpenAIModel,\n provider === \"lmstudio\"\n ? \"defaultLmStudioModel\"\n : provider === \"mistral\"\n ? \"defaultMistralModel\"\n : \"defaultOpenAIModel\",\n modelIdOptions,\n );\n const configuredModelIds = getCommaSeparatedValues(env, \"SURVEY_ASSISTANT_MODELS\").map(\n (modelId) => getSameProviderModelId(modelId, \"SURVEY_ASSISTANT_MODELS\", modelIdOptions),\n );\n const modelIds = [\n ...new Set(\n configuredModelIds.includes(defaultModelId)\n ? configuredModelIds\n : [defaultModelId, ...configuredModelIds],\n ),\n ];\n const taskModelId = getOptionalSameProviderModelId(\n env,\n \"SURVEY_ASSISTANT_TASK_MODEL\",\n modelIdOptions,\n );\n const sendReasoning = getBoolean(env, \"SURVEY_ASSISTANT_SEND_REASONING\", true);\n const providerOptionsKey = resolveSurveyAssistantProviderOptionsKey(provider);\n const providerReasoningEffort = getValue(\n env,\n `SURVEY_ASSISTANT_${providerOptionsKey.toUpperCase()}_REASONING_EFFORT`,\n );\n const reasoningEffort =\n providerReasoningEffort ??\n getValue(env, \"SURVEY_ASSISTANT_REASONING_EFFORT\") ??\n (provider === \"openai\" || provider === \"azure-openai\" ? \"low\" : \"none\");\n const promptCacheRetention = getEnum(\n env,\n provider === \"azure-openai\"\n ? \"SURVEY_ASSISTANT_AZURE_PROMPT_CACHE_RETENTION\"\n : \"SURVEY_ASSISTANT_PROMPT_CACHE_RETENTION\",\n [\"in_memory\", \"24h\"] as const,\n );\n const serviceTier = getEnum(env, \"SURVEY_ASSISTANT_OPENAI_SERVICE_TIER\", [\n \"auto\",\n \"flex\",\n \"priority\",\n \"default\",\n ] as const);\n const textVerbosity = getEnum(env, \"SURVEY_ASSISTANT_OPENAI_TEXT_VERBOSITY\", [\n \"low\",\n \"medium\",\n \"high\",\n ] as const);\n const reasoningSummaryValue = getEnum(env, \"SURVEY_ASSISTANT_OPENAI_REASONING_SUMMARY\", [\n \"auto\",\n \"concise\",\n \"detailed\",\n \"off\",\n \"none\",\n ] as const);\n const reasoningSummary =\n reasoningSummaryValue === \"off\" || reasoningSummaryValue === \"none\"\n ? undefined\n : (reasoningSummaryValue ?? \"detailed\");\n const resolvedReasoningEffort =\n reasoningEffort === \"default\" || reasoningEffort === \"provider-default\"\n ? undefined\n : reasoningEffort;\n const providerOptions: AgentExecutionOptions[\"providerOptions\"] =\n provider === \"lmstudio\"\n ? undefined\n : {\n [providerOptionsKey]: {\n parallelToolCalls: false,\n ...(resolvedReasoningEffort ? { reasoningEffort: resolvedReasoningEffort } : {}),\n ...(provider === \"openai\" || provider === \"azure-openai\"\n ? {\n promptCacheKey:\n getValue(env, \"SURVEY_ASSISTANT_PROMPT_CACHE_KEY\") ??\n \"survey-assistant-chat-v21\",\n ...(promptCacheRetention ? { promptCacheRetention } : {}),\n ...(sendReasoning && reasoningSummary ? { reasoningSummary } : {}),\n ...(provider === \"openai\" && serviceTier ? { serviceTier } : {}),\n ...(textVerbosity ? { textVerbosity } : {}),\n }\n : {}),\n },\n };\n const azure: SurveyAssistantAzureConfig | undefined =\n provider === \"azure-openai\"\n ? {\n resourceName: getValue(env, \"AZURE_RESOURCE_NAME\"),\n apiKey: getValue(env, \"AZURE_API_KEY\"),\n apiVersion: getEnum(env, \"SURVEY_ASSISTANT_AZURE_API_VERSION\", [\"v1\", \"preview\"]) ?? \"v1\",\n discoverModels: getBoolean(env, \"SURVEY_ASSISTANT_AZURE_DISCOVER_MODELS\", false),\n management: parseAzureManagement(env),\n }\n : undefined;\n const lmstudio: SurveyAssistantLmStudioConfig | undefined =\n provider === \"lmstudio\"\n ? {\n baseUrl:\n getValue(env, \"SURVEY_ASSISTANT_LMSTUDIO_BASE_URL\") ?? \"http://127.0.0.1:1234/v1\",\n apiKey: getValue(env, \"SURVEY_ASSISTANT_LMSTUDIO_API_KEY\"),\n }\n : undefined;\n const providerApiKey =\n provider === \"openai\"\n ? getValue(env, \"OPENAI_API_KEY\")\n : provider === \"mistral\"\n ? getValue(env, \"MISTRAL_API_KEY\")\n : provider === \"lmstudio\"\n ? getValue(env, \"SURVEY_ASSISTANT_LMSTUDIO_API_KEY\")\n : getValue(env, \"AZURE_API_KEY\");\n const memoryModelId =\n getOptionalSameProviderModelId(env, \"SURVEY_ASSISTANT_MEMORY_MODEL\", modelIdOptions) ??\n defaultModelId;\n const memoryModel =\n provider === \"lmstudio\"\n ? {\n providerId: \"lmstudio\",\n modelId: memoryModelId,\n url: lmstudio!.baseUrl,\n ...(providerApiKey ? { apiKey: providerApiKey } : {}),\n }\n : provider === \"azure-openai\"\n ? `${provider}/${memoryModelId}`\n : `${provider}/${memoryModelId}`;\n const observationalMemory = getBoolean(env, \"SURVEY_ASSISTANT_MEMORY_ENABLED\", true)\n ? createSurveyAssistantObservationalMemoryOptions({\n model: memoryModel,\n temporalMarkers: getBoolean(env, \"SURVEY_ASSISTANT_MEMORY_TEMPORAL_MARKERS\", false),\n observation: {\n messageTokens: getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_MEMORY_MESSAGE_TOKENS\",\n SURVEY_ASSISTANT_OBSERVATIONAL_MEMORY_DEFAULTS.messageTokens,\n ),\n bufferOnIdle: getBoolean(env, \"SURVEY_ASSISTANT_MEMORY_BUFFER_ON_IDLE\", false),\n observeAttachments: false,\n },\n reflection: {\n observationTokens: getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_MEMORY_OBSERVATION_TOKENS\",\n SURVEY_ASSISTANT_OBSERVATIONAL_MEMORY_DEFAULTS.observationTokens,\n ),\n },\n })\n : false;\n const configuredMaxSteps = getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_MAX_STEPS\",\n DEFAULT_MAX_STEPS,\n );\n const enabled = resolveConfiguredEnabled(env, undefined, requireExperimentalIdentityOptIn);\n const allModelIds = [\n ...new Set([...modelIds, ...(taskModelId ? [taskModelId] : []), memoryModelId]),\n ];\n\n return {\n provider,\n defaultModelId,\n memoryModelId,\n modelIds,\n models: allModelIds.map((id) => ({\n id,\n label: id,\n upstreamModelId: id,\n providerOptions,\n })),\n modelCatalogTtlMs: getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_MODEL_CATALOG_TTL_MS\",\n DEFAULT_CATALOG_TTL_MS,\n ),\n azure,\n lmstudio,\n enabled,\n readinessError: getReadinessError({\n azure,\n env,\n modelWasConfigured: Boolean(configuredModelId),\n provider,\n requireStorage,\n }),\n requestLimits: {\n maxAttachmentBytes: getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_MAX_ATTACHMENT_BYTES\",\n SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS.maxAttachmentBytes,\n ),\n maxAttachments: getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_MAX_ATTACHMENTS\",\n SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS.maxAttachments,\n ),\n maxRequestBytes: getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_MAX_REQUEST_BYTES\",\n SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS.maxRequestBytes,\n ),\n maxTextPartChars: getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_MAX_TEXT_PART_CHARS\",\n SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS.maxTextPartChars,\n ),\n maxTotalAttachmentBytes: getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_MAX_TOTAL_ATTACHMENT_BYTES\",\n SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS.maxTotalAttachmentBytes,\n ),\n },\n execution: {\n firstResponseTimeoutMs: getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_FIRST_RESPONSE_TIMEOUT_MS\",\n DEFAULT_FIRST_RESPONSE_TIMEOUT_MS,\n ),\n idleTimeoutMs: getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_IDLE_TIMEOUT_MS\",\n DEFAULT_IDLE_TIMEOUT_MS,\n ),\n maxConcurrentRequests: getPositiveNumber(env, \"SURVEY_ASSISTANT_MAX_CONCURRENT_REQUESTS\", 4),\n maxDurationMs: getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_MAX_DURATION_MS\",\n DEFAULT_MAX_DURATION_MS,\n ),\n maxSteps: Math.min(configuredMaxSteps, HARD_MAX_STEPS),\n providerOptions,\n sendReasoning,\n },\n observationalMemory,\n taskModelId,\n };\n};\n","import type { AgentExecutionOptions } from \"@mastra/core/agent\";\nimport { AzureOpenAIGateway, type MastraModelGatewayInterface } from \"@mastra/core/llm\";\nimport type { Mastra } from \"@mastra/core/mastra\";\nimport type { RequestContext } from \"@mastra/core/request-context\";\nimport type { SurveyAssistantModelCatalog } from \"../protocol\";\nimport { createSurveyAssistantAgent, type CreateSurveyAssistantAgentOptions } from \"./agent\";\nimport { SURVEY_ASSISTANT_AGENT_ID, SURVEY_ASSISTANT_TASK_AGENT_ID } from \"./constants\";\nimport {\n createSurveyAssistantChatHandler,\n SurveyAssistantAuthorizationError,\n type SurveyAssistantAuthorize,\n type SurveyAssistantChatHandlerOptions,\n type SurveyAssistantResolveModel,\n} from \"./handler\";\nimport { createMastraMemoryThreadRepository } from \"./memory-thread-repository\";\nimport type {\n SurveyAssistantModelSelection,\n SurveyAssistantRequestContext,\n} from \"./request-context\";\nimport type { SurveyAssistantCapabilitySet } from \"../engine\";\nimport type { SurveyAssistantRuntimeConfig } from \"./runtime-config\";\nimport {\n createSurveyAssistantTaskAgent,\n createSurveyAssistantTaskHandler,\n type CreateSurveyAssistantTaskHandlerOptions,\n type SurveyAssistantTaskModelResolutionInput,\n} from \"./tasks\";\nimport type { SurveyAssistantThreadDocumentRepository } from \"./thread-documents\";\nimport {\n createSurveyAssistantThreadHandlers,\n type CreateSurveyAssistantThreadHandlersOptions,\n} from \"./thread-handlers\";\nimport { SURVEY_ASSISTANT_TOOL_IDS } from \"./tools\";\n\nexport {\n parseSurveyAssistantEnvironment,\n parseSurveyAssistantConfigurationDocument,\n resolveSurveyAssistantProviderOptionsKey,\n surveyAssistantConfigurationDocumentSchema,\n type ParseSurveyAssistantEnvironmentOptions,\n type SurveyAssistantAzureConfig,\n type SurveyAssistantConfigurationDocument,\n type SurveyAssistantConfiguredModel,\n type SurveyAssistantExecutionConfig,\n type SurveyAssistantLmStudioConfig,\n type SurveyAssistantModelRole,\n type SurveyAssistantProvider,\n type SurveyAssistantProviderOptionsKey,\n type SurveyAssistantRuntimeConfig,\n} from \"./runtime-config\";\n\nexport interface SurveyAssistantModelRouter {\n defaultModel: SurveyAssistantModelSelection[\"model\"];\n gateways?: Record<string, MastraModelGatewayInterface>;\n getCatalog(options?: { refresh?: boolean }): Promise<SurveyAssistantModelCatalog>;\n memoryModel: SurveyAssistantModelSelection[\"model\"];\n providerName: string;\n providerOptions?: AgentExecutionOptions[\"providerOptions\"];\n resolveModel: SurveyAssistantResolveModel;\n resolveTaskModel(\n input: SurveyAssistantTaskModelResolutionInput,\n ): ReturnType<SurveyAssistantResolveModel>;\n taskModel?: SurveyAssistantModelSelection[\"model\"];\n}\n\nexport const createSurveyAssistantModelRouter = (\n config: SurveyAssistantRuntimeConfig,\n): SurveyAssistantModelRouter => {\n const configuredModels = new Map(config.models?.map((model) => [model.id, model]));\n const getConfiguredModel = (modelId: string) =>\n configuredModels.get(modelId) ?? {\n id: modelId,\n label: modelId,\n upstreamModelId: modelId,\n providerOptions: config.execution.providerOptions,\n };\n const toProviderModel = (\n modelId: string,\n configName: string,\n ): SurveyAssistantModelSelection[\"model\"] => {\n const configuredModel = getConfiguredModel(modelId);\n const upstreamModelId = configuredModel.upstreamModelId;\n if (config.provider === \"lmstudio\") {\n if (!config.lmstudio) {\n throw new Error(\"LM Studio configuration is missing for the lmstudio provider.\");\n }\n return {\n providerId: \"lmstudio\",\n modelId: upstreamModelId,\n url: config.lmstudio.baseUrl,\n ...(config.lmstudio.apiKey ? { apiKey: config.lmstudio.apiKey } : {}),\n };\n }\n if (upstreamModelId.includes(\"/\")) {\n throw new Error(\n `${configName} must be a model or deployment id without a provider prefix. ` +\n \"All survey assistant models use the configured provider.\",\n );\n }\n const id = `${config.provider}/${upstreamModelId}` as `${string}/${string}`;\n return config.providerApiKey && config.provider !== \"azure-openai\"\n ? { id, apiKey: config.providerApiKey }\n : id;\n };\n const defaultModel = toProviderModel(config.defaultModelId, \"defaultModelId\");\n const chatModelIds = config.modelIds.map((modelId) => {\n toProviderModel(modelId, \"modelIds\");\n return modelId;\n });\n if (!chatModelIds.includes(config.defaultModelId)) {\n throw new Error(\"modelIds must include defaultModelId.\");\n }\n const taskModel = config.taskModelId\n ? toProviderModel(config.taskModelId, \"taskModelId\")\n : undefined;\n const memoryModel = toProviderModel(config.memoryModelId, \"memoryModelId\");\n if (config.observationalMemory !== false) {\n const configuredMemoryModel = toProviderModel(config.memoryModelId, \"memoryModelId\");\n if (\n JSON.stringify(config.observationalMemory.model) !== JSON.stringify(configuredMemoryModel) ||\n config.observationalMemory.observation?.model !== undefined ||\n config.observationalMemory.reflection?.model !== undefined\n ) {\n throw new Error(\n \"The standard runtime requires observationalMemory to use memoryModelId \" +\n \"for both observation and reflection. Use the low-level Agent factory \" +\n \"for custom memory model routing.\",\n );\n }\n }\n const deploymentIds = [\n ...new Set([\n ...chatModelIds.map((id) => getConfiguredModel(id).upstreamModelId),\n ...(config.taskModelId ? [getConfiguredModel(config.taskModelId).upstreamModelId] : []),\n getConfiguredModel(config.memoryModelId).upstreamModelId,\n ]),\n ];\n const azureGateway = config.azure\n ? new AzureOpenAIGateway({\n resourceName: config.azure.resourceName ?? \"\",\n apiKey: config.azure.apiKey,\n apiVersion: config.azure.apiVersion,\n useResponsesAPI: true,\n ...(config.azure.management\n ? { management: config.azure.management }\n : { deployments: deploymentIds }),\n })\n : undefined;\n let cachedCatalog: { expiresAt: number; value: SurveyAssistantModelCatalog } | undefined;\n\n const getCatalog = async ({ refresh = false }: { refresh?: boolean } = {}) => {\n if (!refresh && cachedCatalog && cachedCatalog.expiresAt > Date.now()) {\n return cachedCatalog.value;\n }\n let ids = chatModelIds;\n if (azureGateway && config.azure?.discoverModels) {\n try {\n const providers = await azureGateway.fetchProviders();\n const configuredUpstreamIds = new Set(\n chatModelIds.map((id) => getConfiguredModel(id).upstreamModelId),\n );\n const discoveredIds = (providers[\"azure-openai\"]?.models ?? []).filter(\n (id) => !configuredUpstreamIds.has(id),\n );\n ids = [...new Set([...chatModelIds, ...discoveredIds])];\n } catch {\n // Keep the explicit catalog available when Azure management discovery is temporarily down.\n }\n }\n const value = {\n defaultModelId: config.defaultModelId,\n models: ids.map((id) => {\n const configuredModel = getConfiguredModel(id);\n return { id, label: configuredModel.label };\n }),\n } satisfies SurveyAssistantModelCatalog;\n cachedCatalog = { expiresAt: Date.now() + config.modelCatalogTtlMs, value };\n return value;\n };\n const resolveRequestedModel = async (requestedModelId?: string) => {\n const catalog = await getCatalog();\n const id = requestedModelId ?? catalog.defaultModelId;\n return catalog.models.some((model) => model.id === id)\n ? {\n id,\n model: toProviderModel(id, \"requestedModelId\"),\n providerName: config.provider,\n ...(getConfiguredModel(id).providerOptions\n ? { providerOptions: getConfiguredModel(id).providerOptions }\n : {}),\n }\n : null;\n };\n\n return {\n defaultModel,\n gateways: azureGateway\n ? {\n // Mastra 1.47 narrows one method's environment type in the concrete class.\n \"azure-openai\": azureGateway as unknown as MastraModelGatewayInterface,\n }\n : undefined,\n getCatalog,\n memoryModel,\n providerName: config.provider,\n providerOptions: config.execution.providerOptions,\n resolveModel: async ({ requestedModelId }) => resolveRequestedModel(requestedModelId),\n resolveTaskModel: async ({ requestedModelId }) =>\n config.taskModelId\n ? {\n id: config.taskModelId,\n model: taskModel!,\n providerName: config.provider,\n ...(getConfiguredModel(config.taskModelId).providerOptions\n ? { providerOptions: getConfiguredModel(config.taskModelId).providerOptions }\n : {}),\n }\n : resolveRequestedModel(requestedModelId),\n taskModel,\n };\n};\n\nexport interface SurveyAssistantRuntimeComponents {\n agents: Record<\n string,\n | ReturnType<typeof createSurveyAssistantAgent>\n | ReturnType<typeof createSurveyAssistantTaskAgent>\n >;\n gateways?: Record<string, MastraModelGatewayInterface>;\n modelRouter: SurveyAssistantModelRouter;\n}\n\nexport const createSurveyAssistantRuntimeComponents = (\n config: SurveyAssistantRuntimeConfig,\n): SurveyAssistantRuntimeComponents => {\n const modelRouter = createSurveyAssistantModelRouter(config);\n const chatModel: CreateSurveyAssistantAgentOptions[\"model\"] = ({\n requestContext,\n }: {\n requestContext: RequestContext<SurveyAssistantRequestContext>;\n }) => requestContext.get(\"modelSelection\")?.model ?? modelRouter.defaultModel;\n const taskModel = modelRouter.taskModel ?? chatModel;\n const observationalMemory =\n config.provider === \"lmstudio\" && config.observationalMemory !== false\n ? { ...config.observationalMemory, model: modelRouter.memoryModel }\n : config.observationalMemory;\n return {\n agents: {\n [SURVEY_ASSISTANT_AGENT_ID]: createSurveyAssistantAgent({\n model: chatModel,\n observationalMemory,\n }),\n [SURVEY_ASSISTANT_TASK_AGENT_ID]: createSurveyAssistantTaskAgent({ model: taskModel }),\n },\n gateways: modelRouter.gateways,\n modelRouter,\n };\n};\n\ntype ChatHandlerOverrides = Partial<\n Omit<\n SurveyAssistantChatHandlerOptions,\n \"authorize\" | \"mastra\" | \"providerName\" | \"providerOptions\" | \"resolveModel\"\n >\n>;\ntype TaskHandlerOverrides = Partial<\n Omit<\n CreateSurveyAssistantTaskHandlerOptions,\n \"agent\" | \"authorize\" | \"providerOptions\" | \"resolveModel\"\n >\n>;\n\nexport interface CreateSurveyAssistantRuntimeHandlersOptions {\n authorize: {\n chat: SurveyAssistantAuthorize;\n model?: (request: Request) => unknown | Promise<unknown>;\n task: CreateSurveyAssistantTaskHandlerOptions[\"authorize\"];\n thread: CreateSurveyAssistantThreadHandlersOptions[\"authorize\"];\n };\n chat?: ChatHandlerOverrides;\n config: SurveyAssistantRuntimeConfig;\n mastra: Mastra | (() => Mastra | Promise<Mastra>);\n modelRouter: SurveyAssistantModelRouter;\n task?: TaskHandlerOverrides;\n threads?: Pick<CreateSurveyAssistantThreadHandlersOptions, \"onError\">;\n threadDocuments?: SurveyAssistantThreadDocumentRepository;\n}\n\nexport type CreateConfiguredSurveyAssistantRuntimeHandlersOptions = Omit<\n CreateSurveyAssistantRuntimeHandlersOptions,\n \"config\" | \"modelRouter\"\n>;\n\nconst resolveMastra = async (mastra: Mastra | (() => Mastra | Promise<Mastra>)) =>\n typeof mastra === \"function\" ? mastra() : mastra;\n\nexport const createSurveyAssistantRuntimeHandlers = ({\n authorize,\n chat = {},\n config,\n mastra,\n modelRouter,\n task = {},\n threads: threadOptions = {},\n threadDocuments,\n}: CreateSurveyAssistantRuntimeHandlersOptions) => {\n const isEnabled = chat.isEnabled ?? (() => config.enabled);\n const getReadinessError = chat.getReadinessError ?? (() => config.readinessError);\n const chatHandler = createSurveyAssistantChatHandler({\n ...chat,\n mastra,\n agentId: SURVEY_ASSISTANT_AGENT_ID,\n activeTools:\n chat.activeTools ??\n (config.observationalMemory === false\n ? SURVEY_ASSISTANT_TOOL_IDS\n : [...SURVEY_ASSISTANT_TOOL_IDS, \"recall\"]),\n authorize: authorize.chat,\n firstResponseTimeoutMs: chat.firstResponseTimeoutMs ?? config.execution.firstResponseTimeoutMs,\n getReadinessError,\n isEnabled,\n idleTimeoutMs: chat.idleTimeoutMs ?? config.execution.idleTimeoutMs,\n maxConcurrentRequests: chat.maxConcurrentRequests ?? config.execution.maxConcurrentRequests,\n maxDurationMs: chat.maxDurationMs ?? config.execution.maxDurationMs,\n maxSteps: chat.maxSteps ?? config.execution.maxSteps,\n providerName: modelRouter.providerName,\n providerOptions: modelRouter.providerOptions,\n requestLimits: { ...config.requestLimits, ...chat.requestLimits },\n resolveModel: modelRouter.resolveModel,\n sendReasoning: chat.sendReasoning ?? config.execution.sendReasoning,\n threadDocuments,\n });\n const taskHandler = createSurveyAssistantTaskHandler({\n ...task,\n agent: async () => (await resolveMastra(mastra)).getAgent(SURVEY_ASSISTANT_TASK_AGENT_ID),\n authorize: authorize.task,\n getReadinessError: task.getReadinessError ?? getReadinessError,\n isEnabled: task.isEnabled ?? isEnabled,\n maxConcurrentRequests: task.maxConcurrentRequests ?? config.execution.maxConcurrentRequests,\n maxDurationMs: task.maxDurationMs ?? config.execution.maxDurationMs,\n providerOptions: modelRouter.providerOptions,\n resolveModel: modelRouter.resolveTaskModel,\n });\n const getMemory = async () => {\n const memory = await (\n await resolveMastra(mastra)\n )\n .getAgent(SURVEY_ASSISTANT_AGENT_ID)\n .getMemory();\n if (!memory) throw new Error(\"Survey assistant memory is not configured.\");\n return memory;\n };\n const threads = createSurveyAssistantThreadHandlers({\n authorize: async (request) => {\n if (!config.enabled) {\n throw new SurveyAssistantAuthorizationError(\"Survey assistant is disabled.\", 404);\n }\n return authorize.thread(request);\n },\n ...threadOptions,\n repository: createMastraMemoryThreadRepository({ getMemory, threadDocuments }),\n });\n const models = async (request: Request) => {\n if (!config.enabled) {\n return Response.json(\n { code: \"authorization_failed\", error: \"Survey assistant is disabled.\" },\n { status: 404 },\n );\n }\n try {\n if (authorize.model) {\n await authorize.model(request);\n } else {\n await authorize.task({ request });\n }\n return Response.json(await modelRouter.getCatalog());\n } catch (error) {\n const status =\n typeof error === \"object\" &&\n error !== null &&\n \"status\" in error &&\n typeof error.status === \"number\"\n ? error.status\n : 403;\n return Response.json(\n {\n code: \"authorization_failed\",\n error: \"The survey assistant request is not authorized.\",\n },\n { status },\n );\n }\n };\n\n return {\n chat: chatHandler,\n models,\n task: taskHandler,\n threads,\n };\n};\n\nexport interface SurveyAssistantRuntime extends SurveyAssistantRuntimeComponents {\n config: SurveyAssistantRuntimeConfig;\n createHandlers(\n options: CreateConfiguredSurveyAssistantRuntimeHandlersOptions,\n ): ReturnType<typeof createSurveyAssistantRuntimeHandlers>;\n}\n\nexport interface CreateSurveyAssistantRuntimeOptions {\n /** Trusted server-side capabilities for custom registry item types. */\n trustedCapabilities?: SurveyAssistantCapabilitySet;\n}\n\n/**\n * Creates the reusable assistant runtime without hiding Mastra from the host.\n * Register `agents` and `gateways` in the host's standard Mastra instance, then\n * call `createHandlers` with that instance and host authorization policy.\n */\nexport const createSurveyAssistantRuntime = (\n config: SurveyAssistantRuntimeConfig,\n runtimeOptions: CreateSurveyAssistantRuntimeOptions = {},\n): SurveyAssistantRuntime => {\n const components = createSurveyAssistantRuntimeComponents(config);\n return {\n ...components,\n config,\n createHandlers: (handlerOptions) =>\n createSurveyAssistantRuntimeHandlers({\n ...handlerOptions,\n chat: {\n ...handlerOptions.chat,\n trustedCapabilities:\n handlerOptions.chat?.trustedCapabilities ?? runtimeOptions.trustedCapabilities,\n },\n config,\n modelRouter: components.modelRouter,\n }),\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server-runtime.mjs","names":[],"sources":["../src/server/runtime-config.ts","../src/server/runtime.ts"],"sourcesContent":["import type { AgentExecutionOptions } from \"@mastra/core/agent\";\nimport type { AzureOpenAIGatewayConfig } from \"@mastra/core/llm\";\nimport { z } from \"zod\";\nimport {\n createSurveyAssistantObservationalMemoryOptions,\n SURVEY_ASSISTANT_OBSERVATIONAL_MEMORY_DEFAULTS,\n type SurveyAssistantObservationalMemoryOptions,\n} from \"./agent\";\nimport {\n SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS,\n type SurveyAssistantRequestLimits,\n} from \"./request-guardrails\";\n\nexport type SurveyAssistantProvider = \"azure-openai\" | \"lmstudio\" | \"mistral\" | \"openai\";\nexport type SurveyAssistantProviderOptionsKey = \"azure\" | \"lmstudio\" | \"mistral\" | \"openai\";\n\nexport type SurveyAssistantModelRole = \"chat-default\" | \"chat-picker\" | \"memory\" | \"task-default\";\n\nexport interface SurveyAssistantConfiguredModel {\n id: string;\n label: string;\n upstreamModelId: string;\n providerOptions?: AgentExecutionOptions[\"providerOptions\"];\n}\n\nexport interface SurveyAssistantAzureConfig {\n apiKey?: string;\n apiVersion: \"preview\" | \"v1\";\n discoverModels: boolean;\n management?: AzureOpenAIGatewayConfig[\"management\"];\n resourceName?: string;\n}\n\nexport interface SurveyAssistantLmStudioConfig {\n apiKey?: string;\n baseUrl: string;\n}\n\nexport interface SurveyAssistantExecutionConfig {\n firstResponseTimeoutMs: number;\n idleTimeoutMs: number;\n maxConcurrentRequests: number;\n /** Absolute execution ceiling. Active streams still stop when this duration is reached. */\n maxDurationMs: number;\n maxSteps: number;\n providerOptions?: AgentExecutionOptions[\"providerOptions\"];\n sendReasoning: boolean;\n}\n\nexport interface SurveyAssistantRuntimeConfig {\n azure?: SurveyAssistantAzureConfig;\n lmstudio?: SurveyAssistantLmStudioConfig;\n /** Default chat model and fallback for chat requests without a selection. */\n defaultModelId: string;\n enabled: boolean;\n /** Fixed same-provider model shared by memory observation and reflection. */\n memoryModelId: string;\n modelCatalogTtlMs: number;\n /** Every configured model for the active provider, including internal-only roles. */\n models?: SurveyAssistantConfiguredModel[];\n modelIds: string[];\n observationalMemory: SurveyAssistantObservationalMemoryOptions | false;\n provider: SurveyAssistantProvider;\n /** Resolved server-only provider credential. Never expose it through the model catalog. */\n providerApiKey?: string;\n requestLimits: Pick<\n SurveyAssistantRequestLimits,\n | \"maxAttachmentBytes\"\n | \"maxAttachments\"\n | \"maxRequestBytes\"\n | \"maxTextPartChars\"\n | \"maxTotalAttachmentBytes\"\n >;\n supportBundle: {\n /** Whether the package UI exposes support-bundle export actions. */\n enabled: boolean;\n };\n readinessError: string | null;\n /**\n * Fixed model for one-shot tasks. When omitted, tasks follow the\n * server-authorized chat model selection.\n */\n taskModelId?: string;\n execution: SurveyAssistantExecutionConfig;\n}\n\nexport interface ParseSurveyAssistantEnvironmentOptions {\n defaultLmStudioModel?: string;\n defaultMistralModel?: string;\n defaultOpenAIModel?: string;\n defaultProvider?: SurveyAssistantProvider;\n /**\n * Adds an explicit production rollout gate to assistant enablement. When\n * true, an otherwise enabled assistant remains disabled outside development\n * unless `SURVEY_ASSISTANT_ALLOW_EXPERIMENTAL_IDENTITY=true` is also set.\n *\n * Despite the legacy environment-variable name, this does not select an\n * identity authority or replace the host's authorization callback. Most\n * hosts with authenticated identity integration should omit it unless they\n * deliberately want the additional rollout gate.\n *\n * @default false\n */\n requireExperimentalIdentityOptIn?: boolean;\n requireStorage?: boolean;\n}\n\ntype Environment = Record<string, string | undefined>;\n\nconst ENVIRONMENT_VARIABLE_NAME = /^[A-Z_][A-Z0-9_]*$/;\n\nconst modelRoleSchema = z.enum([\"chat-default\", \"chat-picker\", \"memory\", \"task-default\"]);\n\nconst providerModelOptionsSchema = z\n .object({\n parallelToolCalls: z.boolean().optional(),\n promptCacheKey: z.string().trim().min(1).optional(),\n promptCacheRetention: z.enum([\"in_memory\", \"24h\"]).optional(),\n reasoningEffort: z.string().trim().min(1).optional(),\n reasoningSummary: z.enum([\"auto\", \"concise\", \"detailed\", \"off\", \"none\"]).optional(),\n serviceTier: z.enum([\"auto\", \"flex\", \"priority\", \"default\"]).optional(),\n textVerbosity: z.enum([\"low\", \"medium\", \"high\"]).optional(),\n })\n .strict();\n\nconst configuredModelSchema = z\n .object({\n id: z.string().trim().min(1).max(240),\n label: z.string().trim().min(1).max(240).optional(),\n upstreamModel: z.string().trim().min(1).max(240).optional(),\n roles: z.array(modelRoleSchema).min(1),\n options: providerModelOptionsSchema.optional(),\n })\n .strict()\n .superRefine(({ roles }, context) => {\n if (new Set(roles).size !== roles.length) {\n context.addIssue({ code: \"custom\", message: \"Model roles must be unique.\" });\n }\n });\n\nconst providerBaseShape = {\n apiKeyEnv: z.string().regex(ENVIRONMENT_VARIABLE_NAME).optional(),\n models: z.array(configuredModelSchema).min(1),\n options: providerModelOptionsSchema.optional(),\n};\n\nconst providerSchema = z.discriminatedUnion(\"type\", [\n z\n .object({\n ...providerBaseShape,\n type: z.literal(\"openai\"),\n apiKeyEnv: z.string().regex(ENVIRONMENT_VARIABLE_NAME),\n })\n .strict(),\n z\n .object({\n ...providerBaseShape,\n type: z.literal(\"mistral\"),\n apiKeyEnv: z.string().regex(ENVIRONMENT_VARIABLE_NAME),\n })\n .strict(),\n z\n .object({\n ...providerBaseShape,\n type: z.literal(\"lmstudio\"),\n baseUrl: z.string().url().default(\"http://127.0.0.1:1234/v1\"),\n apiKeyOptional: z.boolean().default(true),\n })\n .strict(),\n z\n .object({\n ...providerBaseShape,\n type: z.literal(\"azure-openai\"),\n apiKeyEnv: z.string().regex(ENVIRONMENT_VARIABLE_NAME),\n apiVersion: z.enum([\"v1\", \"preview\"]).default(\"v1\"),\n discoverModels: z.boolean().default(false),\n resourceName: z.string().trim().min(1),\n management: z\n .object({\n tenantId: z.string().trim().min(1),\n clientId: z.string().trim().min(1),\n clientSecretEnv: z.string().regex(ENVIRONMENT_VARIABLE_NAME),\n subscriptionId: z.string().trim().min(1),\n resourceGroup: z.string().trim().min(1),\n })\n .strict()\n .optional(),\n })\n .strict(),\n]);\n\nexport const surveyAssistantConfigurationDocumentSchema = z\n .object({\n version: z.literal(1),\n activeProvider: z.string().trim().min(1),\n enabled: z.boolean().optional(),\n providers: z.record(z.string().trim().min(1), providerSchema),\n execution: z\n .object({\n firstResponseTimeoutMs: z.number().int().positive().optional(),\n idleTimeoutMs: z.number().int().positive().optional(),\n maxConcurrentRequests: z.number().int().positive().optional(),\n maxDurationMs: z.number().int().positive().optional(),\n maxSteps: z.number().int().positive().optional(),\n sendReasoning: z.boolean().optional(),\n })\n .strict()\n .optional(),\n memory: z\n .object({\n enabled: z.boolean().optional(),\n bufferOnIdle: z.boolean().optional(),\n messageTokens: z.number().int().positive().optional(),\n observationTokens: z.number().int().positive().optional(),\n temporalMarkers: z.boolean().optional(),\n })\n .strict()\n .optional(),\n modelCatalogTtlMs: z.number().int().positive().optional(),\n supportBundle: z\n .object({\n enabled: z.boolean().optional(),\n })\n .strict()\n .optional(),\n requestLimits: z\n .object({\n maxAttachmentBytes: z.number().int().positive().optional(),\n maxAttachments: z.number().int().positive().optional(),\n maxRequestBytes: z.number().int().positive().optional(),\n maxTextPartChars: z.number().int().positive().optional(),\n maxTotalAttachmentBytes: z.number().int().positive().optional(),\n })\n .strict()\n .optional(),\n })\n .strict();\n\nexport type SurveyAssistantConfigurationDocument = z.infer<\n typeof surveyAssistantConfigurationDocumentSchema\n>;\n\nconst DEFAULT_MAX_STEPS = 48;\nconst HARD_MAX_STEPS = 64;\nconst DEFAULT_FIRST_RESPONSE_TIMEOUT_MS = 15 * 60 * 1_000;\nconst DEFAULT_IDLE_TIMEOUT_MS = 5 * 60 * 1_000;\nconst DEFAULT_MAX_DURATION_MS = 60 * 60 * 1_000;\nconst DEFAULT_CATALOG_TTL_MS = 5 * 60 * 1_000;\n\ntype ProviderModelOptions = z.infer<typeof providerModelOptionsSchema>;\n\nconst getValue = (env: Environment, name: string) => {\n const value = env[name]?.trim();\n return value || undefined;\n};\n\nconst getBoolean = (env: Environment, name: string, fallback: boolean) => {\n const value = getValue(env, name)?.toLowerCase();\n if (value === \"true\") return true;\n if (value === \"false\") return false;\n if (value !== undefined) {\n throw new Error(`${name} must be \"true\" or \"false\".`);\n }\n return fallback;\n};\n\nconst getPositiveNumber = (env: Environment, name: string, fallback: number) => {\n const configured = getValue(env, name);\n if (configured === undefined) return fallback;\n const value = Number(configured);\n if (!Number.isSafeInteger(value) || value <= 0) {\n throw new Error(`${name} must be a positive integer.`);\n }\n return value;\n};\n\nconst getEnum = <TValue extends string>(\n env: Environment,\n name: string,\n values: readonly TValue[],\n) => {\n const value = getValue(env, name);\n if (!value) return undefined;\n if (!(values as readonly string[]).includes(value)) {\n throw new Error(`${name} must be one of: ${values.join(\", \")}.`);\n }\n return value as TValue;\n};\n\nconst getCommaSeparatedValues = (env: Environment, name: string) => [\n ...new Set(\n (getValue(env, name) ?? \"\")\n .split(\",\")\n .map((value) => value.trim())\n .filter(Boolean),\n ),\n];\n\nconst getSameProviderModelId = (\n value: string,\n name: string,\n { allowNestedId = false }: { allowNestedId?: boolean } = {},\n) => {\n if (!allowNestedId && value.includes(\"/\")) {\n throw new Error(\n `${name} must be a model or deployment id without a provider prefix. ` +\n \"All survey assistant models use SURVEY_ASSISTANT_PROVIDER.\",\n );\n }\n return value;\n};\n\nconst getOptionalSameProviderModelId = (\n env: Environment,\n name: string,\n options?: { allowNestedId?: boolean },\n) => {\n const value = getValue(env, name);\n return value ? getSameProviderModelId(value, name, options) : undefined;\n};\n\nexport const resolveSurveyAssistantProviderOptionsKey = (\n provider: SurveyAssistantProvider,\n): SurveyAssistantProviderOptionsKey => (provider === \"azure-openai\" ? \"azure\" : provider);\n\nconst createProviderOptions = (\n provider: SurveyAssistantProvider,\n options: ProviderModelOptions | undefined,\n sendReasoning: boolean,\n): AgentExecutionOptions[\"providerOptions\"] => {\n const providerOptionsKey = resolveSurveyAssistantProviderOptionsKey(provider);\n const reasoningSummary =\n options?.reasoningSummary === \"off\" || options?.reasoningSummary === \"none\"\n ? undefined\n : options?.reasoningSummary;\n const reasoningEffort =\n options?.reasoningEffort === \"default\" || options?.reasoningEffort === \"provider-default\"\n ? undefined\n : options?.reasoningEffort;\n const resolved = {\n parallelToolCalls: options?.parallelToolCalls ?? false,\n ...(reasoningEffort ? { reasoningEffort } : {}),\n ...(options?.promptCacheKey ? { promptCacheKey: options.promptCacheKey } : {}),\n ...(options?.promptCacheRetention\n ? { promptCacheRetention: options.promptCacheRetention }\n : {}),\n ...(sendReasoning && reasoningSummary ? { reasoningSummary } : {}),\n ...(options?.serviceTier ? { serviceTier: options.serviceTier } : {}),\n ...(options?.textVerbosity ? { textVerbosity: options.textVerbosity } : {}),\n };\n return { [providerOptionsKey]: resolved } as AgentExecutionOptions[\"providerOptions\"];\n};\n\nconst getConfiguredEnabledOverride = (env: Environment) => {\n const value = getValue(env, \"SURVEY_ASSISTANT_ENABLED\");\n if (value !== undefined && value !== \"true\" && value !== \"false\") {\n throw new Error('SURVEY_ASSISTANT_ENABLED must be \"true\" or \"false\".');\n }\n return value === undefined ? undefined : value === \"true\";\n};\n\nconst isSurveyAssistantExplicitlyDisabled = (input: unknown, env: Environment) => {\n const environmentOverride = getConfiguredEnabledOverride(env);\n if (environmentOverride !== undefined) return !environmentOverride;\n return (\n typeof input === \"object\" && input !== null && \"enabled\" in input && input.enabled === false\n );\n};\n\nconst resolveSupportBundleEnabled = (env: Environment, configured?: boolean) =>\n getBoolean(env, \"SURVEY_ASSISTANT_SUPPORT_BUNDLE_ENABLED\", configured ?? true);\n\nconst createDisabledSurveyAssistantRuntimeConfig = (): SurveyAssistantRuntimeConfig => {\n const disabledModelId = \"survey-assistant-disabled\";\n return {\n provider: \"openai\",\n defaultModelId: disabledModelId,\n memoryModelId: disabledModelId,\n modelIds: [disabledModelId],\n models: [\n {\n id: disabledModelId,\n label: \"Survey assistant disabled\",\n upstreamModelId: disabledModelId,\n },\n ],\n modelCatalogTtlMs: DEFAULT_CATALOG_TTL_MS,\n enabled: false,\n readinessError: null,\n requestLimits: { ...SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS },\n supportBundle: { enabled: false },\n execution: {\n firstResponseTimeoutMs: DEFAULT_FIRST_RESPONSE_TIMEOUT_MS,\n idleTimeoutMs: DEFAULT_IDLE_TIMEOUT_MS,\n maxConcurrentRequests: 4,\n maxDurationMs: DEFAULT_MAX_DURATION_MS,\n maxSteps: DEFAULT_MAX_STEPS,\n sendReasoning: false,\n },\n observationalMemory: false,\n };\n};\n\nconst resolveConfiguredEnabled = (\n env: Environment,\n configured: boolean | undefined,\n requireExperimentalIdentityOptIn: boolean,\n) => {\n const environmentOverride = getConfiguredEnabledOverride(env);\n const requested =\n environmentOverride !== undefined\n ? environmentOverride\n : (configured ?? env.NODE_ENV === \"development\");\n return (\n requested &&\n (!requireExperimentalIdentityOptIn ||\n env.NODE_ENV === \"development\" ||\n getBoolean(env, \"SURVEY_ASSISTANT_ALLOW_EXPERIMENTAL_IDENTITY\", false))\n );\n};\n\nconst parseProvider = (\n env: Environment,\n fallback: SurveyAssistantProvider,\n): SurveyAssistantProvider => {\n const value = getValue(env, \"SURVEY_ASSISTANT_PROVIDER\")?.toLowerCase();\n if (value === \"azure\" || value === \"azure-openai\") return \"azure-openai\";\n if (value === \"lmstudio\" || value === \"openai\" || value === \"mistral\") return value;\n if (value) {\n throw new Error(\n \"SURVEY_ASSISTANT_PROVIDER must be one of: openai, mistral, lmstudio, azure-openai.\",\n );\n }\n return fallback;\n};\n\nconst parseAzureManagement = (\n env: Environment,\n): AzureOpenAIGatewayConfig[\"management\"] | undefined => {\n if (!getBoolean(env, \"SURVEY_ASSISTANT_AZURE_DISCOVER_MODELS\", false)) return undefined;\n const management = {\n tenantId: getValue(env, \"AZURE_TENANT_ID\"),\n clientId: getValue(env, \"AZURE_CLIENT_ID\"),\n clientSecret: getValue(env, \"AZURE_CLIENT_SECRET\"),\n subscriptionId: getValue(env, \"AZURE_SUBSCRIPTION_ID\"),\n resourceGroup: getValue(env, \"AZURE_RESOURCE_GROUP\"),\n };\n return Object.values(management).every(Boolean)\n ? (management as AzureOpenAIGatewayConfig[\"management\"])\n : undefined;\n};\n\nconst getReadinessError = ({\n azure,\n env,\n modelWasConfigured,\n provider,\n requireStorage,\n}: {\n azure?: SurveyAssistantAzureConfig;\n env: Environment;\n modelWasConfigured: boolean;\n provider: SurveyAssistantProvider;\n requireStorage: boolean;\n}) => {\n if (\n requireStorage &&\n !getValue(env, \"SURVEY_ASSISTANT_DATABASE_URL\") &&\n !getValue(env, \"DATABASE_URL\")\n ) {\n return \"Survey assistant storage is not configured.\";\n }\n if (provider === \"openai\" && !getValue(env, \"OPENAI_API_KEY\")) {\n return \"The OpenAI API key is not configured for the survey assistant.\";\n }\n if (provider === \"mistral\" && !getValue(env, \"MISTRAL_API_KEY\")) {\n return \"The Mistral API key is not configured for the survey assistant.\";\n }\n if (provider === \"azure-openai\") {\n if (!azure?.resourceName) {\n return \"The Azure OpenAI resource name is not configured for the survey assistant.\";\n }\n if (!azure.apiKey) {\n return \"The Azure OpenAI API key is not configured for the survey assistant.\";\n }\n if (!modelWasConfigured) {\n return \"The Azure OpenAI deployment name is not configured for the survey assistant.\";\n }\n if (azure.discoverModels && !azure.management) {\n return \"Azure deployment discovery requires complete tenant, client, subscription, and resource-group settings.\";\n }\n }\n return null;\n};\n\nexport const parseSurveyAssistantConfigurationDocument = (\n input: unknown,\n env: Environment,\n {\n requireExperimentalIdentityOptIn = false,\n requireStorage = true,\n }: Pick<\n ParseSurveyAssistantEnvironmentOptions,\n \"requireExperimentalIdentityOptIn\" | \"requireStorage\"\n > = {},\n): SurveyAssistantRuntimeConfig => {\n if (isSurveyAssistantExplicitlyDisabled(input, env)) {\n return createDisabledSurveyAssistantRuntimeConfig();\n }\n const document = surveyAssistantConfigurationDocumentSchema.parse(input);\n const activeProvider = document.providers[document.activeProvider];\n if (!activeProvider) {\n throw new Error(`activeProvider references unknown provider \"${document.activeProvider}\".`);\n }\n\n const memoryEnabled = document.memory?.enabled ?? true;\n for (const [providerName, configuredProvider] of Object.entries(document.providers)) {\n const duplicateModelId = configuredProvider.models.find(\n (model, index, models) =>\n models.findIndex((candidate) => candidate.id === model.id) !== index,\n )?.id;\n if (duplicateModelId) {\n throw new Error(\n `Provider \"${providerName}\" contains duplicate model id \"${duplicateModelId}\".`,\n );\n }\n const modelsForProviderRole = (role: SurveyAssistantModelRole) =>\n configuredProvider.models.filter((model) => model.roles.includes(role));\n const providerChatDefaults = modelsForProviderRole(\"chat-default\");\n const providerChatModels = modelsForProviderRole(\"chat-picker\");\n const providerTaskDefaults = modelsForProviderRole(\"task-default\");\n const providerMemoryModels = modelsForProviderRole(\"memory\");\n if (providerChatDefaults.length !== 1) {\n throw new Error(`Provider \"${providerName}\" must configure exactly one chat-default model.`);\n }\n if (!providerChatDefaults[0].roles.includes(\"chat-picker\")) {\n throw new Error(\n `The chat-default model for provider \"${providerName}\" must also have the chat-picker role.`,\n );\n }\n if (providerChatModels.length === 0) {\n throw new Error(`Provider \"${providerName}\" must configure a chat-picker model.`);\n }\n if (providerTaskDefaults.length > 1) {\n throw new Error(`Provider \"${providerName}\" may configure at most one task-default model.`);\n }\n if (providerMemoryModels.length > 1 || (memoryEnabled && providerMemoryModels.length !== 1)) {\n throw new Error(\n memoryEnabled\n ? `Provider \"${providerName}\" must configure exactly one memory model when memory is enabled.`\n : `Provider \"${providerName}\" may configure at most one memory model.`,\n );\n }\n if (\n configuredProvider.type === \"lmstudio\" &&\n !configuredProvider.apiKeyOptional &&\n !configuredProvider.apiKeyEnv\n ) {\n throw new Error(\n `Provider \"${providerName}\" must configure apiKeyEnv when apiKeyOptional is false.`,\n );\n }\n const validateOptions = (options: ProviderModelOptions | undefined, location: string) => {\n if (!options) return;\n if (\n configuredProvider.type !== \"openai\" &&\n configuredProvider.type !== \"azure-openai\" &&\n (options.promptCacheKey ||\n options.promptCacheRetention ||\n options.reasoningSummary ||\n options.textVerbosity)\n ) {\n throw new Error(`${location} contains options unsupported by ${configuredProvider.type}.`);\n }\n if (configuredProvider.type !== \"openai\" && options.serviceTier) {\n throw new Error(`${location} contains serviceTier, which is only supported by openai.`);\n }\n };\n validateOptions(configuredProvider.options, `Provider \"${providerName}\"`);\n for (const model of configuredProvider.models) {\n const upstreamModelId = model.upstreamModel ?? model.id;\n if (configuredProvider.type !== \"lmstudio\" && upstreamModelId.includes(\"/\")) {\n throw new Error(\n `Model \"${model.id}\" must use an upstreamModel without a provider prefix for ${configuredProvider.type}.`,\n );\n }\n validateOptions(model.options, `Model \"${model.id}\" in provider \"${providerName}\"`);\n }\n }\n\n const modelsForRole = (role: SurveyAssistantModelRole) =>\n activeProvider.models.filter((model) => model.roles.includes(role));\n const chatDefaults = modelsForRole(\"chat-default\");\n const chatModels = modelsForRole(\"chat-picker\");\n const taskDefaults = modelsForRole(\"task-default\");\n const memoryModels = modelsForRole(\"memory\");\n\n const provider = activeProvider.type;\n\n const sendReasoning = document.execution?.sendReasoning ?? true;\n const providerDefaults: ProviderModelOptions = {\n parallelToolCalls: false,\n ...(provider === \"openai\" || provider === \"azure-openai\"\n ? {\n reasoningEffort: \"low\",\n reasoningSummary: \"detailed\" as const,\n promptCacheKey: \"survey-assistant-chat-v21\",\n }\n : provider === \"mistral\"\n ? { reasoningEffort: \"none\" }\n : {}),\n ...activeProvider.options,\n };\n const models: SurveyAssistantConfiguredModel[] = activeProvider.models.map((model) => ({\n id: model.id,\n label: model.label ?? model.id,\n upstreamModelId: model.upstreamModel ?? model.id,\n providerOptions: createProviderOptions(\n provider,\n { ...providerDefaults, ...model.options },\n sendReasoning,\n ),\n }));\n const configuredModel = (id: string) => models.find((model) => model.id === id)!;\n const defaultModelId = chatDefaults[0].id;\n const memoryModelId = (memoryModels[0] ?? chatDefaults[0]).id;\n const taskModelId = taskDefaults[0]?.id;\n const providerApiKey = activeProvider.apiKeyEnv\n ? getValue(env, activeProvider.apiKeyEnv)\n : undefined;\n const memoryModel = configuredModel(memoryModelId);\n const memoryModelConfig:\n | string\n | { id: `${string}/${string}`; apiKey?: string }\n | {\n providerId: string;\n modelId: string;\n url: string;\n apiKey?: string;\n } =\n provider === \"lmstudio\"\n ? {\n providerId: \"lmstudio\",\n modelId: memoryModel.upstreamModelId,\n url: activeProvider.baseUrl,\n ...(providerApiKey ? { apiKey: providerApiKey } : {}),\n }\n : provider === \"azure-openai\"\n ? `${provider}/${memoryModel.upstreamModelId}`\n : {\n id: `${provider}/${memoryModel.upstreamModelId}`,\n ...(providerApiKey ? { apiKey: providerApiKey } : {}),\n };\n const azure: SurveyAssistantAzureConfig | undefined =\n provider === \"azure-openai\"\n ? {\n resourceName: activeProvider.resourceName,\n apiKey: providerApiKey,\n apiVersion: activeProvider.apiVersion,\n discoverModels: activeProvider.discoverModels,\n management: activeProvider.management\n ? {\n tenantId: activeProvider.management.tenantId,\n clientId: activeProvider.management.clientId,\n clientSecret: getValue(env, activeProvider.management.clientSecretEnv) ?? \"\",\n subscriptionId: activeProvider.management.subscriptionId,\n resourceGroup: activeProvider.management.resourceGroup,\n }\n : undefined,\n }\n : undefined;\n const lmstudio: SurveyAssistantLmStudioConfig | undefined =\n provider === \"lmstudio\"\n ? { baseUrl: activeProvider.baseUrl, ...(providerApiKey ? { apiKey: providerApiKey } : {}) }\n : undefined;\n const missingProviderSecret =\n activeProvider.apiKeyEnv &&\n !providerApiKey &&\n !(provider === \"lmstudio\" && activeProvider.apiKeyOptional);\n const missingManagementSecret =\n provider === \"azure-openai\" &&\n activeProvider.discoverModels &&\n (!activeProvider.management || !azure?.management?.clientSecret);\n const missingStorage =\n requireStorage &&\n !getValue(env, \"SURVEY_ASSISTANT_DATABASE_URL\") &&\n !getValue(env, \"DATABASE_URL\");\n const readinessError = missingStorage\n ? \"Survey assistant storage is not configured.\"\n : missingProviderSecret\n ? `The provider credential ${activeProvider.apiKeyEnv} is not configured for the survey assistant.`\n : missingManagementSecret\n ? \"Azure deployment discovery requires complete management configuration and credentials.\"\n : null;\n const configuredMaxSteps = document.execution?.maxSteps ?? DEFAULT_MAX_STEPS;\n\n return {\n provider,\n providerApiKey,\n defaultModelId,\n memoryModelId,\n taskModelId,\n modelIds: chatModels.map((model) => model.id),\n models,\n modelCatalogTtlMs: document.modelCatalogTtlMs ?? DEFAULT_CATALOG_TTL_MS,\n azure,\n lmstudio,\n enabled: resolveConfiguredEnabled(env, document.enabled, requireExperimentalIdentityOptIn),\n readinessError,\n requestLimits: {\n maxAttachmentBytes:\n document.requestLimits?.maxAttachmentBytes ??\n SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS.maxAttachmentBytes,\n maxAttachments:\n document.requestLimits?.maxAttachments ??\n SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS.maxAttachments,\n maxRequestBytes:\n document.requestLimits?.maxRequestBytes ??\n SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS.maxRequestBytes,\n maxTextPartChars:\n document.requestLimits?.maxTextPartChars ??\n SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS.maxTextPartChars,\n maxTotalAttachmentBytes:\n document.requestLimits?.maxTotalAttachmentBytes ??\n SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS.maxTotalAttachmentBytes,\n },\n supportBundle: {\n enabled: resolveSupportBundleEnabled(env, document.supportBundle?.enabled),\n },\n execution: {\n firstResponseTimeoutMs:\n document.execution?.firstResponseTimeoutMs ?? DEFAULT_FIRST_RESPONSE_TIMEOUT_MS,\n idleTimeoutMs: document.execution?.idleTimeoutMs ?? DEFAULT_IDLE_TIMEOUT_MS,\n maxConcurrentRequests: document.execution?.maxConcurrentRequests ?? 4,\n maxDurationMs: document.execution?.maxDurationMs ?? DEFAULT_MAX_DURATION_MS,\n maxSteps: Math.min(configuredMaxSteps, HARD_MAX_STEPS),\n providerOptions: configuredModel(defaultModelId).providerOptions,\n sendReasoning,\n },\n observationalMemory: memoryEnabled\n ? createSurveyAssistantObservationalMemoryOptions({\n model: memoryModelConfig,\n temporalMarkers: document.memory?.temporalMarkers ?? false,\n observation: {\n messageTokens:\n document.memory?.messageTokens ??\n SURVEY_ASSISTANT_OBSERVATIONAL_MEMORY_DEFAULTS.messageTokens,\n bufferOnIdle: document.memory?.bufferOnIdle ?? false,\n observeAttachments: false,\n },\n reflection: {\n observationTokens:\n document.memory?.observationTokens ??\n SURVEY_ASSISTANT_OBSERVATIONAL_MEMORY_DEFAULTS.observationTokens,\n },\n })\n : false,\n };\n};\n\nexport const parseSurveyAssistantEnvironment = (\n env: Environment,\n {\n defaultLmStudioModel,\n defaultMistralModel = \"mistral-medium-latest\",\n defaultOpenAIModel = \"gpt-5.4-nano\",\n defaultProvider = \"openai\",\n requireExperimentalIdentityOptIn = false,\n requireStorage = true,\n }: ParseSurveyAssistantEnvironmentOptions = {},\n): SurveyAssistantRuntimeConfig => {\n if (getConfiguredEnabledOverride(env) === false) {\n return createDisabledSurveyAssistantRuntimeConfig();\n }\n const provider = parseProvider(env, defaultProvider);\n const modelIdOptions = { allowNestedId: provider === \"lmstudio\" };\n const configuredModelId = getOptionalSameProviderModelId(\n env,\n \"SURVEY_ASSISTANT_MODEL\",\n modelIdOptions,\n );\n if (provider === \"lmstudio\" && !configuredModelId && !defaultLmStudioModel) {\n throw new Error(\n \"SURVEY_ASSISTANT_MODEL must be configured when SURVEY_ASSISTANT_PROVIDER is lmstudio.\",\n );\n }\n const defaultModelId =\n configuredModelId ??\n getSameProviderModelId(\n provider === \"lmstudio\"\n ? defaultLmStudioModel!\n : provider === \"mistral\"\n ? defaultMistralModel\n : defaultOpenAIModel,\n provider === \"lmstudio\"\n ? \"defaultLmStudioModel\"\n : provider === \"mistral\"\n ? \"defaultMistralModel\"\n : \"defaultOpenAIModel\",\n modelIdOptions,\n );\n const configuredModelIds = getCommaSeparatedValues(env, \"SURVEY_ASSISTANT_MODELS\").map(\n (modelId) => getSameProviderModelId(modelId, \"SURVEY_ASSISTANT_MODELS\", modelIdOptions),\n );\n const modelIds = [\n ...new Set(\n configuredModelIds.includes(defaultModelId)\n ? configuredModelIds\n : [defaultModelId, ...configuredModelIds],\n ),\n ];\n const taskModelId = getOptionalSameProviderModelId(\n env,\n \"SURVEY_ASSISTANT_TASK_MODEL\",\n modelIdOptions,\n );\n const sendReasoning = getBoolean(env, \"SURVEY_ASSISTANT_SEND_REASONING\", true);\n const providerOptionsKey = resolveSurveyAssistantProviderOptionsKey(provider);\n const providerReasoningEffort = getValue(\n env,\n `SURVEY_ASSISTANT_${providerOptionsKey.toUpperCase()}_REASONING_EFFORT`,\n );\n const reasoningEffort =\n providerReasoningEffort ??\n getValue(env, \"SURVEY_ASSISTANT_REASONING_EFFORT\") ??\n (provider === \"openai\" || provider === \"azure-openai\" ? \"low\" : \"none\");\n const promptCacheRetention = getEnum(\n env,\n provider === \"azure-openai\"\n ? \"SURVEY_ASSISTANT_AZURE_PROMPT_CACHE_RETENTION\"\n : \"SURVEY_ASSISTANT_PROMPT_CACHE_RETENTION\",\n [\"in_memory\", \"24h\"] as const,\n );\n const serviceTier = getEnum(env, \"SURVEY_ASSISTANT_OPENAI_SERVICE_TIER\", [\n \"auto\",\n \"flex\",\n \"priority\",\n \"default\",\n ] as const);\n const textVerbosity = getEnum(env, \"SURVEY_ASSISTANT_OPENAI_TEXT_VERBOSITY\", [\n \"low\",\n \"medium\",\n \"high\",\n ] as const);\n const reasoningSummaryValue = getEnum(env, \"SURVEY_ASSISTANT_OPENAI_REASONING_SUMMARY\", [\n \"auto\",\n \"concise\",\n \"detailed\",\n \"off\",\n \"none\",\n ] as const);\n const reasoningSummary =\n reasoningSummaryValue === \"off\" || reasoningSummaryValue === \"none\"\n ? undefined\n : (reasoningSummaryValue ?? \"detailed\");\n const resolvedReasoningEffort =\n reasoningEffort === \"default\" || reasoningEffort === \"provider-default\"\n ? undefined\n : reasoningEffort;\n const providerOptions: AgentExecutionOptions[\"providerOptions\"] =\n provider === \"lmstudio\"\n ? undefined\n : {\n [providerOptionsKey]: {\n parallelToolCalls: false,\n ...(resolvedReasoningEffort ? { reasoningEffort: resolvedReasoningEffort } : {}),\n ...(provider === \"openai\" || provider === \"azure-openai\"\n ? {\n promptCacheKey:\n getValue(env, \"SURVEY_ASSISTANT_PROMPT_CACHE_KEY\") ??\n \"survey-assistant-chat-v21\",\n ...(promptCacheRetention ? { promptCacheRetention } : {}),\n ...(sendReasoning && reasoningSummary ? { reasoningSummary } : {}),\n ...(provider === \"openai\" && serviceTier ? { serviceTier } : {}),\n ...(textVerbosity ? { textVerbosity } : {}),\n }\n : {}),\n },\n };\n const azure: SurveyAssistantAzureConfig | undefined =\n provider === \"azure-openai\"\n ? {\n resourceName: getValue(env, \"AZURE_RESOURCE_NAME\"),\n apiKey: getValue(env, \"AZURE_API_KEY\"),\n apiVersion: getEnum(env, \"SURVEY_ASSISTANT_AZURE_API_VERSION\", [\"v1\", \"preview\"]) ?? \"v1\",\n discoverModels: getBoolean(env, \"SURVEY_ASSISTANT_AZURE_DISCOVER_MODELS\", false),\n management: parseAzureManagement(env),\n }\n : undefined;\n const lmstudio: SurveyAssistantLmStudioConfig | undefined =\n provider === \"lmstudio\"\n ? {\n baseUrl:\n getValue(env, \"SURVEY_ASSISTANT_LMSTUDIO_BASE_URL\") ?? \"http://127.0.0.1:1234/v1\",\n apiKey: getValue(env, \"SURVEY_ASSISTANT_LMSTUDIO_API_KEY\"),\n }\n : undefined;\n const providerApiKey =\n provider === \"openai\"\n ? getValue(env, \"OPENAI_API_KEY\")\n : provider === \"mistral\"\n ? getValue(env, \"MISTRAL_API_KEY\")\n : provider === \"lmstudio\"\n ? getValue(env, \"SURVEY_ASSISTANT_LMSTUDIO_API_KEY\")\n : getValue(env, \"AZURE_API_KEY\");\n const memoryModelId =\n getOptionalSameProviderModelId(env, \"SURVEY_ASSISTANT_MEMORY_MODEL\", modelIdOptions) ??\n defaultModelId;\n const memoryModel =\n provider === \"lmstudio\"\n ? {\n providerId: \"lmstudio\",\n modelId: memoryModelId,\n url: lmstudio!.baseUrl,\n ...(providerApiKey ? { apiKey: providerApiKey } : {}),\n }\n : provider === \"azure-openai\"\n ? `${provider}/${memoryModelId}`\n : `${provider}/${memoryModelId}`;\n const observationalMemory = getBoolean(env, \"SURVEY_ASSISTANT_MEMORY_ENABLED\", true)\n ? createSurveyAssistantObservationalMemoryOptions({\n model: memoryModel,\n temporalMarkers: getBoolean(env, \"SURVEY_ASSISTANT_MEMORY_TEMPORAL_MARKERS\", false),\n observation: {\n messageTokens: getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_MEMORY_MESSAGE_TOKENS\",\n SURVEY_ASSISTANT_OBSERVATIONAL_MEMORY_DEFAULTS.messageTokens,\n ),\n bufferOnIdle: getBoolean(env, \"SURVEY_ASSISTANT_MEMORY_BUFFER_ON_IDLE\", false),\n observeAttachments: false,\n },\n reflection: {\n observationTokens: getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_MEMORY_OBSERVATION_TOKENS\",\n SURVEY_ASSISTANT_OBSERVATIONAL_MEMORY_DEFAULTS.observationTokens,\n ),\n },\n })\n : false;\n const configuredMaxSteps = getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_MAX_STEPS\",\n DEFAULT_MAX_STEPS,\n );\n const enabled = resolveConfiguredEnabled(env, undefined, requireExperimentalIdentityOptIn);\n const allModelIds = [\n ...new Set([...modelIds, ...(taskModelId ? [taskModelId] : []), memoryModelId]),\n ];\n\n return {\n provider,\n defaultModelId,\n memoryModelId,\n modelIds,\n models: allModelIds.map((id) => ({\n id,\n label: id,\n upstreamModelId: id,\n providerOptions,\n })),\n modelCatalogTtlMs: getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_MODEL_CATALOG_TTL_MS\",\n DEFAULT_CATALOG_TTL_MS,\n ),\n azure,\n lmstudio,\n enabled,\n readinessError: getReadinessError({\n azure,\n env,\n modelWasConfigured: Boolean(configuredModelId),\n provider,\n requireStorage,\n }),\n requestLimits: {\n maxAttachmentBytes: getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_MAX_ATTACHMENT_BYTES\",\n SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS.maxAttachmentBytes,\n ),\n maxAttachments: getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_MAX_ATTACHMENTS\",\n SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS.maxAttachments,\n ),\n maxRequestBytes: getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_MAX_REQUEST_BYTES\",\n SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS.maxRequestBytes,\n ),\n maxTextPartChars: getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_MAX_TEXT_PART_CHARS\",\n SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS.maxTextPartChars,\n ),\n maxTotalAttachmentBytes: getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_MAX_TOTAL_ATTACHMENT_BYTES\",\n SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS.maxTotalAttachmentBytes,\n ),\n },\n supportBundle: { enabled: resolveSupportBundleEnabled(env) },\n execution: {\n firstResponseTimeoutMs: getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_FIRST_RESPONSE_TIMEOUT_MS\",\n DEFAULT_FIRST_RESPONSE_TIMEOUT_MS,\n ),\n idleTimeoutMs: getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_IDLE_TIMEOUT_MS\",\n DEFAULT_IDLE_TIMEOUT_MS,\n ),\n maxConcurrentRequests: getPositiveNumber(env, \"SURVEY_ASSISTANT_MAX_CONCURRENT_REQUESTS\", 4),\n maxDurationMs: getPositiveNumber(\n env,\n \"SURVEY_ASSISTANT_MAX_DURATION_MS\",\n DEFAULT_MAX_DURATION_MS,\n ),\n maxSteps: Math.min(configuredMaxSteps, HARD_MAX_STEPS),\n providerOptions,\n sendReasoning,\n },\n observationalMemory,\n taskModelId,\n };\n};\n","import type { AgentExecutionOptions } from \"@mastra/core/agent\";\nimport { AzureOpenAIGateway, type MastraModelGatewayInterface } from \"@mastra/core/llm\";\nimport type { Mastra } from \"@mastra/core/mastra\";\nimport type { RequestContext } from \"@mastra/core/request-context\";\nimport type { SurveyAssistantModelCatalog } from \"../protocol\";\nimport { createSurveyAssistantAgent, type CreateSurveyAssistantAgentOptions } from \"./agent\";\nimport { SURVEY_ASSISTANT_AGENT_ID, SURVEY_ASSISTANT_TASK_AGENT_ID } from \"./constants\";\nimport {\n createSurveyAssistantChatHandler,\n SurveyAssistantAuthorizationError,\n type SurveyAssistantAuthorize,\n type SurveyAssistantChatHandlerOptions,\n type SurveyAssistantResolveModel,\n} from \"./handler\";\nimport { createMastraMemoryThreadRepository } from \"./memory-thread-repository\";\nimport type {\n SurveyAssistantModelSelection,\n SurveyAssistantRequestContext,\n} from \"./request-context\";\nimport type { SurveyAssistantCapabilitySet } from \"../engine\";\nimport type { SurveyAssistantRuntimeConfig } from \"./runtime-config\";\nimport {\n createSurveyAssistantTaskAgent,\n createSurveyAssistantTaskHandler,\n type CreateSurveyAssistantTaskHandlerOptions,\n type SurveyAssistantTaskModelResolutionInput,\n} from \"./tasks\";\nimport type { SurveyAssistantThreadDocumentRepository } from \"./thread-documents\";\nimport {\n createSurveyAssistantThreadHandlers,\n type CreateSurveyAssistantThreadHandlersOptions,\n} from \"./thread-handlers\";\nimport { SURVEY_ASSISTANT_TOOL_IDS } from \"./tools\";\n\nexport {\n parseSurveyAssistantEnvironment,\n parseSurveyAssistantConfigurationDocument,\n resolveSurveyAssistantProviderOptionsKey,\n surveyAssistantConfigurationDocumentSchema,\n type ParseSurveyAssistantEnvironmentOptions,\n type SurveyAssistantAzureConfig,\n type SurveyAssistantConfigurationDocument,\n type SurveyAssistantConfiguredModel,\n type SurveyAssistantExecutionConfig,\n type SurveyAssistantLmStudioConfig,\n type SurveyAssistantModelRole,\n type SurveyAssistantProvider,\n type SurveyAssistantProviderOptionsKey,\n type SurveyAssistantRuntimeConfig,\n} from \"./runtime-config\";\n\nexport interface SurveyAssistantModelRouter {\n defaultModel: SurveyAssistantModelSelection[\"model\"];\n gateways?: Record<string, MastraModelGatewayInterface>;\n getCatalog(options?: { refresh?: boolean }): Promise<SurveyAssistantModelCatalog>;\n memoryModel: SurveyAssistantModelSelection[\"model\"];\n providerName: string;\n providerOptions?: AgentExecutionOptions[\"providerOptions\"];\n resolveModel: SurveyAssistantResolveModel;\n resolveTaskModel(\n input: SurveyAssistantTaskModelResolutionInput,\n ): ReturnType<SurveyAssistantResolveModel>;\n taskModel?: SurveyAssistantModelSelection[\"model\"];\n}\n\nexport const createSurveyAssistantModelRouter = (\n config: SurveyAssistantRuntimeConfig,\n): SurveyAssistantModelRouter => {\n const configuredModels = new Map(config.models?.map((model) => [model.id, model]));\n const getConfiguredModel = (modelId: string) =>\n configuredModels.get(modelId) ?? {\n id: modelId,\n label: modelId,\n upstreamModelId: modelId,\n providerOptions: config.execution.providerOptions,\n };\n const toProviderModel = (\n modelId: string,\n configName: string,\n ): SurveyAssistantModelSelection[\"model\"] => {\n const configuredModel = getConfiguredModel(modelId);\n const upstreamModelId = configuredModel.upstreamModelId;\n if (config.provider === \"lmstudio\") {\n if (!config.lmstudio) {\n throw new Error(\"LM Studio configuration is missing for the lmstudio provider.\");\n }\n return {\n providerId: \"lmstudio\",\n modelId: upstreamModelId,\n url: config.lmstudio.baseUrl,\n ...(config.lmstudio.apiKey ? { apiKey: config.lmstudio.apiKey } : {}),\n };\n }\n if (upstreamModelId.includes(\"/\")) {\n throw new Error(\n `${configName} must be a model or deployment id without a provider prefix. ` +\n \"All survey assistant models use the configured provider.\",\n );\n }\n const id = `${config.provider}/${upstreamModelId}` as `${string}/${string}`;\n return config.providerApiKey && config.provider !== \"azure-openai\"\n ? { id, apiKey: config.providerApiKey }\n : id;\n };\n const defaultModel = toProviderModel(config.defaultModelId, \"defaultModelId\");\n const chatModelIds = config.modelIds.map((modelId) => {\n toProviderModel(modelId, \"modelIds\");\n return modelId;\n });\n if (!chatModelIds.includes(config.defaultModelId)) {\n throw new Error(\"modelIds must include defaultModelId.\");\n }\n const taskModel = config.taskModelId\n ? toProviderModel(config.taskModelId, \"taskModelId\")\n : undefined;\n const memoryModel = toProviderModel(config.memoryModelId, \"memoryModelId\");\n if (config.observationalMemory !== false) {\n const configuredMemoryModel = toProviderModel(config.memoryModelId, \"memoryModelId\");\n if (\n JSON.stringify(config.observationalMemory.model) !== JSON.stringify(configuredMemoryModel) ||\n config.observationalMemory.observation?.model !== undefined ||\n config.observationalMemory.reflection?.model !== undefined\n ) {\n throw new Error(\n \"The standard runtime requires observationalMemory to use memoryModelId \" +\n \"for both observation and reflection. Use the low-level Agent factory \" +\n \"for custom memory model routing.\",\n );\n }\n }\n const deploymentIds = [\n ...new Set([\n ...chatModelIds.map((id) => getConfiguredModel(id).upstreamModelId),\n ...(config.taskModelId ? [getConfiguredModel(config.taskModelId).upstreamModelId] : []),\n getConfiguredModel(config.memoryModelId).upstreamModelId,\n ]),\n ];\n const azureGateway = config.azure\n ? new AzureOpenAIGateway({\n resourceName: config.azure.resourceName ?? \"\",\n apiKey: config.azure.apiKey,\n apiVersion: config.azure.apiVersion,\n useResponsesAPI: true,\n ...(config.azure.management\n ? { management: config.azure.management }\n : { deployments: deploymentIds }),\n })\n : undefined;\n let cachedCatalog: { expiresAt: number; value: SurveyAssistantModelCatalog } | undefined;\n\n const getCatalog = async ({ refresh = false }: { refresh?: boolean } = {}) => {\n if (!refresh && cachedCatalog && cachedCatalog.expiresAt > Date.now()) {\n return cachedCatalog.value;\n }\n let ids = chatModelIds;\n if (azureGateway && config.azure?.discoverModels) {\n try {\n const providers = await azureGateway.fetchProviders();\n const configuredUpstreamIds = new Set(\n chatModelIds.map((id) => getConfiguredModel(id).upstreamModelId),\n );\n const discoveredIds = (providers[\"azure-openai\"]?.models ?? []).filter(\n (id) => !configuredUpstreamIds.has(id),\n );\n ids = [...new Set([...chatModelIds, ...discoveredIds])];\n } catch {\n // Keep the explicit catalog available when Azure management discovery is temporarily down.\n }\n }\n const value = {\n defaultModelId: config.defaultModelId,\n models: ids.map((id) => {\n const configuredModel = getConfiguredModel(id);\n return { id, label: configuredModel.label };\n }),\n } satisfies SurveyAssistantModelCatalog;\n cachedCatalog = { expiresAt: Date.now() + config.modelCatalogTtlMs, value };\n return value;\n };\n const resolveRequestedModel = async (requestedModelId?: string) => {\n const catalog = await getCatalog();\n const id = requestedModelId ?? catalog.defaultModelId;\n return catalog.models.some((model) => model.id === id)\n ? {\n id,\n model: toProviderModel(id, \"requestedModelId\"),\n providerName: config.provider,\n ...(getConfiguredModel(id).providerOptions\n ? { providerOptions: getConfiguredModel(id).providerOptions }\n : {}),\n }\n : null;\n };\n\n return {\n defaultModel,\n gateways: azureGateway\n ? {\n // Mastra 1.47 narrows one method's environment type in the concrete class.\n \"azure-openai\": azureGateway as unknown as MastraModelGatewayInterface,\n }\n : undefined,\n getCatalog,\n memoryModel,\n providerName: config.provider,\n providerOptions: config.execution.providerOptions,\n resolveModel: async ({ requestedModelId }) => resolveRequestedModel(requestedModelId),\n resolveTaskModel: async ({ requestedModelId }) =>\n config.taskModelId\n ? {\n id: config.taskModelId,\n model: taskModel!,\n providerName: config.provider,\n ...(getConfiguredModel(config.taskModelId).providerOptions\n ? { providerOptions: getConfiguredModel(config.taskModelId).providerOptions }\n : {}),\n }\n : resolveRequestedModel(requestedModelId),\n taskModel,\n };\n};\n\nexport interface SurveyAssistantRuntimeComponents {\n agents: Record<\n string,\n | ReturnType<typeof createSurveyAssistantAgent>\n | ReturnType<typeof createSurveyAssistantTaskAgent>\n >;\n gateways?: Record<string, MastraModelGatewayInterface>;\n modelRouter: SurveyAssistantModelRouter;\n}\n\nexport const createSurveyAssistantRuntimeComponents = (\n config: SurveyAssistantRuntimeConfig,\n): SurveyAssistantRuntimeComponents => {\n const modelRouter = createSurveyAssistantModelRouter(config);\n const chatModel: CreateSurveyAssistantAgentOptions[\"model\"] = ({\n requestContext,\n }: {\n requestContext: RequestContext<SurveyAssistantRequestContext>;\n }) => requestContext.get(\"modelSelection\")?.model ?? modelRouter.defaultModel;\n const taskModel = modelRouter.taskModel ?? chatModel;\n const observationalMemory =\n config.provider === \"lmstudio\" && config.observationalMemory !== false\n ? { ...config.observationalMemory, model: modelRouter.memoryModel }\n : config.observationalMemory;\n return {\n agents: {\n [SURVEY_ASSISTANT_AGENT_ID]: createSurveyAssistantAgent({\n model: chatModel,\n observationalMemory,\n }),\n [SURVEY_ASSISTANT_TASK_AGENT_ID]: createSurveyAssistantTaskAgent({ model: taskModel }),\n },\n gateways: modelRouter.gateways,\n modelRouter,\n };\n};\n\ntype ChatHandlerOverrides = Partial<\n Omit<\n SurveyAssistantChatHandlerOptions,\n \"authorize\" | \"mastra\" | \"providerName\" | \"providerOptions\" | \"resolveModel\"\n >\n>;\ntype TaskHandlerOverrides = Partial<\n Omit<\n CreateSurveyAssistantTaskHandlerOptions,\n \"agent\" | \"authorize\" | \"providerOptions\" | \"resolveModel\"\n >\n>;\n\nexport interface CreateSurveyAssistantRuntimeHandlersOptions {\n authorize: {\n chat: SurveyAssistantAuthorize;\n model?: (request: Request) => unknown | Promise<unknown>;\n task: CreateSurveyAssistantTaskHandlerOptions[\"authorize\"];\n thread: CreateSurveyAssistantThreadHandlersOptions[\"authorize\"];\n };\n chat?: ChatHandlerOverrides;\n config: SurveyAssistantRuntimeConfig;\n mastra: Mastra | (() => Mastra | Promise<Mastra>);\n modelRouter: SurveyAssistantModelRouter;\n task?: TaskHandlerOverrides;\n threads?: Pick<CreateSurveyAssistantThreadHandlersOptions, \"onError\">;\n threadDocuments?: SurveyAssistantThreadDocumentRepository;\n}\n\nexport type CreateConfiguredSurveyAssistantRuntimeHandlersOptions = Omit<\n CreateSurveyAssistantRuntimeHandlersOptions,\n \"config\" | \"modelRouter\"\n>;\n\nconst resolveMastra = async (mastra: Mastra | (() => Mastra | Promise<Mastra>)) =>\n typeof mastra === \"function\" ? mastra() : mastra;\n\nexport const createSurveyAssistantRuntimeHandlers = ({\n authorize,\n chat = {},\n config,\n mastra,\n modelRouter,\n task = {},\n threads: threadOptions = {},\n threadDocuments,\n}: CreateSurveyAssistantRuntimeHandlersOptions) => {\n const isEnabled = chat.isEnabled ?? (() => config.enabled);\n const getReadinessError = chat.getReadinessError ?? (() => config.readinessError);\n const chatHandler = createSurveyAssistantChatHandler({\n ...chat,\n mastra,\n agentId: SURVEY_ASSISTANT_AGENT_ID,\n activeTools:\n chat.activeTools ??\n (config.observationalMemory === false\n ? SURVEY_ASSISTANT_TOOL_IDS\n : [...SURVEY_ASSISTANT_TOOL_IDS, \"recall\"]),\n authorize: authorize.chat,\n firstResponseTimeoutMs: chat.firstResponseTimeoutMs ?? config.execution.firstResponseTimeoutMs,\n getReadinessError,\n isEnabled,\n idleTimeoutMs: chat.idleTimeoutMs ?? config.execution.idleTimeoutMs,\n maxConcurrentRequests: chat.maxConcurrentRequests ?? config.execution.maxConcurrentRequests,\n maxDurationMs: chat.maxDurationMs ?? config.execution.maxDurationMs,\n maxSteps: chat.maxSteps ?? config.execution.maxSteps,\n providerName: modelRouter.providerName,\n providerOptions: modelRouter.providerOptions,\n requestLimits: { ...config.requestLimits, ...chat.requestLimits },\n resolveModel: modelRouter.resolveModel,\n sendReasoning: chat.sendReasoning ?? config.execution.sendReasoning,\n threadDocuments,\n });\n const taskHandler = createSurveyAssistantTaskHandler({\n ...task,\n agent: async () => (await resolveMastra(mastra)).getAgent(SURVEY_ASSISTANT_TASK_AGENT_ID),\n authorize: authorize.task,\n getReadinessError: task.getReadinessError ?? getReadinessError,\n isEnabled: task.isEnabled ?? isEnabled,\n maxConcurrentRequests: task.maxConcurrentRequests ?? config.execution.maxConcurrentRequests,\n maxDurationMs: task.maxDurationMs ?? config.execution.maxDurationMs,\n providerOptions: modelRouter.providerOptions,\n resolveModel: modelRouter.resolveTaskModel,\n });\n const getMemory = async () => {\n const memory = await (\n await resolveMastra(mastra)\n )\n .getAgent(SURVEY_ASSISTANT_AGENT_ID)\n .getMemory();\n if (!memory) throw new Error(\"Survey assistant memory is not configured.\");\n return memory;\n };\n const threads = createSurveyAssistantThreadHandlers({\n authorize: async (request) => {\n if (!config.enabled) {\n throw new SurveyAssistantAuthorizationError(\"Survey assistant is disabled.\", 404);\n }\n return authorize.thread(request);\n },\n ...threadOptions,\n repository: createMastraMemoryThreadRepository({ getMemory, threadDocuments }),\n });\n const models = async (request: Request) => {\n if (!config.enabled) {\n return Response.json(\n { code: \"authorization_failed\", error: \"Survey assistant is disabled.\" },\n { status: 404 },\n );\n }\n try {\n if (authorize.model) {\n await authorize.model(request);\n } else {\n await authorize.task({ request });\n }\n return Response.json(await modelRouter.getCatalog());\n } catch (error) {\n const status =\n typeof error === \"object\" &&\n error !== null &&\n \"status\" in error &&\n typeof error.status === \"number\"\n ? error.status\n : 403;\n return Response.json(\n {\n code: \"authorization_failed\",\n error: \"The survey assistant request is not authorized.\",\n },\n { status },\n );\n }\n };\n\n return {\n chat: chatHandler,\n models,\n task: taskHandler,\n threads,\n };\n};\n\nexport interface SurveyAssistantRuntime extends SurveyAssistantRuntimeComponents {\n config: SurveyAssistantRuntimeConfig;\n createHandlers(\n options: CreateConfiguredSurveyAssistantRuntimeHandlersOptions,\n ): ReturnType<typeof createSurveyAssistantRuntimeHandlers>;\n}\n\nexport interface CreateSurveyAssistantRuntimeOptions {\n /** Trusted server-side capabilities for custom registry item types. */\n trustedCapabilities?: SurveyAssistantCapabilitySet;\n}\n\n/**\n * Creates the reusable assistant runtime without hiding Mastra from the host.\n * Register `agents` and `gateways` in the host's standard Mastra instance, then\n * call `createHandlers` with that instance and host authorization policy.\n */\nexport const createSurveyAssistantRuntime = (\n config: SurveyAssistantRuntimeConfig,\n runtimeOptions: CreateSurveyAssistantRuntimeOptions = {},\n): SurveyAssistantRuntime => {\n const components = createSurveyAssistantRuntimeComponents(config);\n return {\n ...components,\n config,\n createHandlers: (handlerOptions) =>\n createSurveyAssistantRuntimeHandlers({\n ...handlerOptions,\n chat: {\n ...handlerOptions.chat,\n trustedCapabilities:\n handlerOptions.chat?.trustedCapabilities ?? runtimeOptions.trustedCapabilities,\n },\n config,\n modelRouter: components.modelRouter,\n }),\n };\n};\n"],"mappings":"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"}
|
package/dist/server-tasks.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as SurveyAssistantTaskAuthorizationInput, c as createSurveyAssistantTaskAgent, d as runSurveyAssistantSuggestItemLabelTask, f as runSurveyAssistantTask, i as RunSurveyAssistantTaskOptions, l as createSurveyAssistantTaskHandler, n as CreateSurveyAssistantTaskHandlerOptions, o as SurveyAssistantTaskAuthorizedIdentity, p as runSurveyAssistantTranslateContentTask, r as RunSurveyAssistantBuiltInTaskOptions, s as SurveyAssistantTaskModelResolutionInput, t as CreateSurveyAssistantTaskAgentOptions, u as runSurveyAssistantSuggestItemKeyTask } from "./tasks-
|
|
1
|
+
import { a as SurveyAssistantTaskAuthorizationInput, c as createSurveyAssistantTaskAgent, d as runSurveyAssistantSuggestItemLabelTask, f as runSurveyAssistantTask, i as RunSurveyAssistantTaskOptions, l as createSurveyAssistantTaskHandler, n as CreateSurveyAssistantTaskHandlerOptions, o as SurveyAssistantTaskAuthorizedIdentity, p as runSurveyAssistantTranslateContentTask, r as RunSurveyAssistantBuiltInTaskOptions, s as SurveyAssistantTaskModelResolutionInput, t as CreateSurveyAssistantTaskAgentOptions, u as runSurveyAssistantSuggestItemKeyTask } from "./tasks-CYqrcaRO.mjs";
|
|
2
2
|
export { CreateSurveyAssistantTaskAgentOptions, CreateSurveyAssistantTaskHandlerOptions, RunSurveyAssistantBuiltInTaskOptions, RunSurveyAssistantTaskOptions, SurveyAssistantTaskAuthorizationInput, SurveyAssistantTaskAuthorizedIdentity, SurveyAssistantTaskModelResolutionInput, createSurveyAssistantTaskAgent, createSurveyAssistantTaskHandler, runSurveyAssistantSuggestItemKeyTask, runSurveyAssistantSuggestItemLabelTask, runSurveyAssistantTask, runSurveyAssistantTranslateContentTask };
|
package/dist/server-tasks.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { T as surveyAssistantTaskRequestSchema } from "./protocol-
|
|
2
|
-
import { n as SURVEY_ASSISTANT_TASK_AGENT_ID } from "./constants-
|
|
3
|
-
import { d as readSurveyAssistantRequestJson, u as SurveyAssistantRequestError } from "./request-guardrails-
|
|
4
|
-
import {
|
|
5
|
-
import { n as FAIR_ITEM_KEY_RULES_TEXT } from "./fair-guidance-
|
|
1
|
+
import { T as surveyAssistantTaskRequestSchema } from "./protocol-BhzQbx81.mjs";
|
|
2
|
+
import { n as SURVEY_ASSISTANT_TASK_AGENT_ID } from "./constants-0UHGFcRJ.mjs";
|
|
3
|
+
import { d as readSurveyAssistantRequestJson, u as SurveyAssistantRequestError } from "./request-guardrails-TmgQtqp4.mjs";
|
|
4
|
+
import { a as surveyAuthoringReferences } from "./authoring-references-BJQ_1nMX.mjs";
|
|
5
|
+
import { n as FAIR_ITEM_KEY_RULES_TEXT } from "./fair-guidance-CRYCRxQm.mjs";
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
import { RequestContext } from "@mastra/core/request-context";
|
|
8
8
|
import { Agent } from "@mastra/core/agent";
|
package/dist/server-tools.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as surveyAuditTool, n as surveyAssistantTools, r as surveyAssetTool, t as SURVEY_ASSISTANT_TOOL_IDS } from "./index-
|
|
1
|
+
import { i as surveyAuditTool, n as surveyAssistantTools, r as surveyAssetTool, t as SURVEY_ASSISTANT_TOOL_IDS } from "./index-x0qprHgK.mjs";
|
|
2
2
|
export { SURVEY_ASSISTANT_TOOL_IDS, surveyAssetTool, surveyAssistantTools, surveyAuditTool };
|
package/dist/server-tools.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as surveyAuditTool, n as surveyAssistantTools, r as surveyAssetTool, t as SURVEY_ASSISTANT_TOOL_IDS } from "./tools-
|
|
1
|
+
import { i as surveyAuditTool, n as surveyAssistantTools, r as surveyAssetTool, t as SURVEY_ASSISTANT_TOOL_IDS } from "./tools-BvSovehT.mjs";
|
|
2
2
|
export { SURVEY_ASSISTANT_TOOL_IDS, surveyAssetTool, surveyAssistantTools, surveyAuditTool };
|
package/dist/server.d.mts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { p as SurveyAssistantTurnTerminationReason } from "./lifecycle-
|
|
2
|
-
import {
|
|
3
|
-
import { a as SurveyAssistantThreadDocumentRepository, c as loadSurveyAssistantThreadAttachments, d as replaceCurrentSurveyAssistantAttachmentsWithReferences, i as SurveyAssistantThreadDocumentContent, l as registerSurveyAssistantThreadAttachments, n as SurveyAssistantModelAttachment, o as getSurveyAssistantReplayableDocuments, r as SurveyAssistantThreadDocument, s as loadSurveyAssistantDocuments, t as SurveyAssistantAttachmentAccess, u as removeHistoricalSurveyAssistantAttachments } from "./thread-documents-
|
|
4
|
-
import { a as SurveyAssistantModelSelection, c as deriveSurveyAssistantDocumentTransition, d as parseSurveyAssistantSnapshot, f as requireSurveyAssistantTurnState, i as SurveyAssistantIdentityContext, l as parseSurveyAssistantPreviousApplyOutcome, n as SURVEY_ASSISTANT_TASK_AGENT_ID, o as SurveyAssistantRequestContext, r as SurveyAssistantDocumentTransition, s as buildSurveyAssistantRequestContext, t as SURVEY_ASSISTANT_AGENT_ID, u as parseSurveyAssistantPreviousSettledVersion } from "./constants-
|
|
5
|
-
import { A as readSurveyAssistantRequestJson, C as SURVEY_ASSISTANT_MAX_ATTACHMENT_NAME_CHARS, D as SURVEY_ASSISTANT_MAX_TOTAL_ATTACHMENT_BYTES, E as SURVEY_ASSISTANT_MAX_TEXT_PART_CHARS, O as SurveyAssistantRequestError, S as SURVEY_ASSISTANT_MAX_ATTACHMENT_BYTES, T as SURVEY_ASSISTANT_MAX_REQUEST_BYTES, _ as describeSurveyAssistantStreamError, a as SurveyAssistantThreadRepository, b as SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS, c as SurveyAssistantAuthorizationInput, d as SurveyAssistantChatHandlerOptions, f as SurveyAssistantModelResolutionInput, g as createSurveyAssistantChatHandler, h as SurveyAssistantTurnMetrics, i as SurveyAssistantThreadIdentity, j as validateSurveyAssistantMessages, k as SurveyAssistantRequestLimits, l as SurveyAssistantAuthorize, m as SurveyAssistantStreamErrorContext, n as SurveyAssistantStoredThread, o as createSurveyAssistantThreadHandlers, p as SurveyAssistantResolveModel, r as SurveyAssistantThreadErrorContext, s as SurveyAssistantAuthorizationError, t as CreateSurveyAssistantThreadHandlersOptions, u as SurveyAssistantAuthorizedIdentity, v as formatSurveyAssistantStreamError, w as SURVEY_ASSISTANT_MAX_MESSAGES, x as SURVEY_ASSISTANT_MAX_ATTACHMENTS, y as SURVEY_ASSISTANT_ACCEPTED_ATTACHMENT_TYPES } from "./thread-handlers-
|
|
6
|
-
import { a as SurveyAssistantTaskAuthorizationInput, g as
|
|
1
|
+
import { p as SurveyAssistantTurnTerminationReason } from "./lifecycle-Bx0aq_4S.mjs";
|
|
2
|
+
import { x as TurnSurveyDraft } from "./index-Tnqv-yKW.mjs";
|
|
3
|
+
import { a as SurveyAssistantThreadDocumentRepository, c as loadSurveyAssistantThreadAttachments, d as replaceCurrentSurveyAssistantAttachmentsWithReferences, i as SurveyAssistantThreadDocumentContent, l as registerSurveyAssistantThreadAttachments, n as SurveyAssistantModelAttachment, o as getSurveyAssistantReplayableDocuments, r as SurveyAssistantThreadDocument, s as loadSurveyAssistantDocuments, t as SurveyAssistantAttachmentAccess, u as removeHistoricalSurveyAssistantAttachments } from "./thread-documents-rmd6nyX9.mjs";
|
|
4
|
+
import { a as SurveyAssistantModelSelection, c as deriveSurveyAssistantDocumentTransition, d as parseSurveyAssistantSnapshot, f as requireSurveyAssistantTurnState, i as SurveyAssistantIdentityContext, l as parseSurveyAssistantPreviousApplyOutcome, n as SURVEY_ASSISTANT_TASK_AGENT_ID, o as SurveyAssistantRequestContext, r as SurveyAssistantDocumentTransition, s as buildSurveyAssistantRequestContext, t as SURVEY_ASSISTANT_AGENT_ID, u as parseSurveyAssistantPreviousSettledVersion } from "./constants-Be91Gay9.mjs";
|
|
5
|
+
import { A as readSurveyAssistantRequestJson, C as SURVEY_ASSISTANT_MAX_ATTACHMENT_NAME_CHARS, D as SURVEY_ASSISTANT_MAX_TOTAL_ATTACHMENT_BYTES, E as SURVEY_ASSISTANT_MAX_TEXT_PART_CHARS, O as SurveyAssistantRequestError, S as SURVEY_ASSISTANT_MAX_ATTACHMENT_BYTES, T as SURVEY_ASSISTANT_MAX_REQUEST_BYTES, _ as describeSurveyAssistantStreamError, a as SurveyAssistantThreadRepository, b as SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS, c as SurveyAssistantAuthorizationInput, d as SurveyAssistantChatHandlerOptions, f as SurveyAssistantModelResolutionInput, g as createSurveyAssistantChatHandler, h as SurveyAssistantTurnMetrics, i as SurveyAssistantThreadIdentity, j as validateSurveyAssistantMessages, k as SurveyAssistantRequestLimits, l as SurveyAssistantAuthorize, m as SurveyAssistantStreamErrorContext, n as SurveyAssistantStoredThread, o as createSurveyAssistantThreadHandlers, p as SurveyAssistantResolveModel, r as SurveyAssistantThreadErrorContext, s as SurveyAssistantAuthorizationError, t as CreateSurveyAssistantThreadHandlersOptions, u as SurveyAssistantAuthorizedIdentity, v as formatSurveyAssistantStreamError, w as SURVEY_ASSISTANT_MAX_MESSAGES, x as SURVEY_ASSISTANT_MAX_ATTACHMENTS, y as SURVEY_ASSISTANT_ACCEPTED_ATTACHMENT_TYPES } from "./thread-handlers-DBAaU7BA.mjs";
|
|
6
|
+
import { _ as surveyAuthoringReferences, a as SurveyAssistantTaskAuthorizationInput, g as surveyAuthoringReferenceTopics, h as formatSurveyAuthoringReferenceRoutingInstructions, m as SurveyAuthoringReferenceTopic, o as SurveyAssistantTaskAuthorizedIdentity } from "./tasks-CYqrcaRO.mjs";
|
|
7
7
|
import { UIMessageChunk } from "ai";
|
|
8
8
|
import { MastraMemory } from "@mastra/core/memory";
|
|
9
9
|
|
|
@@ -125,5 +125,5 @@ declare const createSurveyAssistantTurnStream: ({
|
|
|
125
125
|
turnStartedAt
|
|
126
126
|
}: SurveyAssistantTurnStreamOptions) => ReadableStream<UIMessageChunk>;
|
|
127
127
|
//#endregion
|
|
128
|
-
export { type CreateMastraMemoryThreadRepositoryOptions, type CreateSurveyAssistantSurveyLifecycleOptions, type CreateSurveyAssistantThreadHandlersOptions, type DeleteSurveyAssistantSurveyThreadsInput, type DeleteSurveyAssistantSurveyThreadsResult, SURVEY_ASSISTANT_ACCEPTED_ATTACHMENT_TYPES, SURVEY_ASSISTANT_AGENT_ID, SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS, SURVEY_ASSISTANT_MAX_ATTACHMENTS, SURVEY_ASSISTANT_MAX_ATTACHMENT_BYTES, SURVEY_ASSISTANT_MAX_ATTACHMENT_NAME_CHARS, SURVEY_ASSISTANT_MAX_MESSAGES, SURVEY_ASSISTANT_MAX_REQUEST_BYTES, SURVEY_ASSISTANT_MAX_TEXT_PART_CHARS, SURVEY_ASSISTANT_MAX_TOTAL_ATTACHMENT_BYTES, SURVEY_ASSISTANT_SURVEY_ID_METADATA_KEY, SURVEY_ASSISTANT_TASK_AGENT_ID, type SurveyAssistantAttachmentAccess, SurveyAssistantAuthorizationError, type SurveyAssistantAuthorizationInput, type SurveyAssistantAuthorize, type SurveyAssistantAuthorizedIdentity, type SurveyAssistantChatHandlerOptions, type SurveyAssistantDocumentTransition, type SurveyAssistantIdentityContext, type SurveyAssistantModelAttachment, type SurveyAssistantModelResolutionInput, type SurveyAssistantModelSelection, type SurveyAssistantRequestContext, SurveyAssistantRequestError, type SurveyAssistantRequestLimits, type SurveyAssistantResolveModel, type SurveyAssistantScopedSurvey, type SurveyAssistantStoredThread, type SurveyAssistantStreamErrorContext, type SurveyAssistantSurveyLifecycle, type SurveyAssistantSurveyPanelProps, type SurveyAssistantThreadCleanupResult, type SurveyAssistantThreadDocument, type SurveyAssistantThreadDocumentContent, type SurveyAssistantThreadDocumentRepository, type SurveyAssistantThreadErrorContext, type SurveyAssistantThreadIdentity, type SurveyAssistantThreadRepository, type SurveyAssistantTurnMetrics, type SurveyAssistantTurnStreamOptions, type SurveyAuthoringReferenceTopic, buildSurveyAssistantRequestContext, createMastraMemoryThreadRepository, createSurveyAssistantChatHandler, createSurveyAssistantSurveyLifecycle, createSurveyAssistantSurveyThreadMetadata, createSurveyAssistantThreadHandlers, createSurveyAssistantTurnStream, deriveSurveyAssistantDocumentTransition, describeSurveyAssistantStreamError, formatSurveyAssistantStreamError, getSurveyAssistantReplayableDocuments, loadSurveyAssistantDocuments, loadSurveyAssistantThreadAttachments, parseSurveyAssistantPreviousApplyOutcome, parseSurveyAssistantPreviousSettledVersion, parseSurveyAssistantSnapshot, readSurveyAssistantRequestJson, registerSurveyAssistantThreadAttachments, removeHistoricalSurveyAssistantAttachments, replaceCurrentSurveyAssistantAttachmentsWithReferences, requireSurveyAssistantTurnState, surveyAuthoringReferenceTopics, surveyAuthoringReferences, validateSurveyAssistantMessages };
|
|
128
|
+
export { type CreateMastraMemoryThreadRepositoryOptions, type CreateSurveyAssistantSurveyLifecycleOptions, type CreateSurveyAssistantThreadHandlersOptions, type DeleteSurveyAssistantSurveyThreadsInput, type DeleteSurveyAssistantSurveyThreadsResult, SURVEY_ASSISTANT_ACCEPTED_ATTACHMENT_TYPES, SURVEY_ASSISTANT_AGENT_ID, SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS, SURVEY_ASSISTANT_MAX_ATTACHMENTS, SURVEY_ASSISTANT_MAX_ATTACHMENT_BYTES, SURVEY_ASSISTANT_MAX_ATTACHMENT_NAME_CHARS, SURVEY_ASSISTANT_MAX_MESSAGES, SURVEY_ASSISTANT_MAX_REQUEST_BYTES, SURVEY_ASSISTANT_MAX_TEXT_PART_CHARS, SURVEY_ASSISTANT_MAX_TOTAL_ATTACHMENT_BYTES, SURVEY_ASSISTANT_SURVEY_ID_METADATA_KEY, SURVEY_ASSISTANT_TASK_AGENT_ID, type SurveyAssistantAttachmentAccess, SurveyAssistantAuthorizationError, type SurveyAssistantAuthorizationInput, type SurveyAssistantAuthorize, type SurveyAssistantAuthorizedIdentity, type SurveyAssistantChatHandlerOptions, type SurveyAssistantDocumentTransition, type SurveyAssistantIdentityContext, type SurveyAssistantModelAttachment, type SurveyAssistantModelResolutionInput, type SurveyAssistantModelSelection, type SurveyAssistantRequestContext, SurveyAssistantRequestError, type SurveyAssistantRequestLimits, type SurveyAssistantResolveModel, type SurveyAssistantScopedSurvey, type SurveyAssistantStoredThread, type SurveyAssistantStreamErrorContext, type SurveyAssistantSurveyLifecycle, type SurveyAssistantSurveyPanelProps, type SurveyAssistantThreadCleanupResult, type SurveyAssistantThreadDocument, type SurveyAssistantThreadDocumentContent, type SurveyAssistantThreadDocumentRepository, type SurveyAssistantThreadErrorContext, type SurveyAssistantThreadIdentity, type SurveyAssistantThreadRepository, type SurveyAssistantTurnMetrics, type SurveyAssistantTurnStreamOptions, type SurveyAuthoringReferenceTopic, buildSurveyAssistantRequestContext, createMastraMemoryThreadRepository, createSurveyAssistantChatHandler, createSurveyAssistantSurveyLifecycle, createSurveyAssistantSurveyThreadMetadata, createSurveyAssistantThreadHandlers, createSurveyAssistantTurnStream, deriveSurveyAssistantDocumentTransition, describeSurveyAssistantStreamError, formatSurveyAssistantStreamError, formatSurveyAuthoringReferenceRoutingInstructions, getSurveyAssistantReplayableDocuments, loadSurveyAssistantDocuments, loadSurveyAssistantThreadAttachments, parseSurveyAssistantPreviousApplyOutcome, parseSurveyAssistantPreviousSettledVersion, parseSurveyAssistantSnapshot, readSurveyAssistantRequestJson, registerSurveyAssistantThreadAttachments, removeHistoricalSurveyAssistantAttachments, replaceCurrentSurveyAssistantAttachmentsWithReferences, requireSurveyAssistantTurnState, surveyAuthoringReferenceTopics, surveyAuthoringReferences, validateSurveyAssistantMessages };
|
|
129
129
|
//# sourceMappingURL=server.d.mts.map
|
package/dist/server.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { n as SURVEY_ASSISTANT_TASK_AGENT_ID, t as SURVEY_ASSISTANT_AGENT_ID } from "./constants-
|
|
2
|
-
import { a as parseSurveyAssistantPreviousSettledVersion, i as parseSurveyAssistantPreviousApplyOutcome, n as deriveSurveyAssistantDocumentTransition, o as parseSurveyAssistantSnapshot, s as requireSurveyAssistantTurnState, t as buildSurveyAssistantRequestContext } from "./request-context-
|
|
3
|
-
import { a as SURVEY_ASSISTANT_MAX_ATTACHMENT_NAME_CHARS, c as SURVEY_ASSISTANT_MAX_TEXT_PART_CHARS, d as readSurveyAssistantRequestJson, f as validateSurveyAssistantMessages, i as SURVEY_ASSISTANT_MAX_ATTACHMENT_BYTES, l as SURVEY_ASSISTANT_MAX_TOTAL_ATTACHMENT_BYTES, n as SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS, o as SURVEY_ASSISTANT_MAX_MESSAGES, r as SURVEY_ASSISTANT_MAX_ATTACHMENTS, s as SURVEY_ASSISTANT_MAX_REQUEST_BYTES, t as SURVEY_ASSISTANT_ACCEPTED_ATTACHMENT_TYPES, u as SurveyAssistantRequestError } from "./request-guardrails-
|
|
4
|
-
import { a as describeSurveyAssistantStreamError, c as loadSurveyAssistantDocuments, d as removeHistoricalSurveyAssistantAttachments, f as replaceCurrentSurveyAssistantAttachmentsWithReferences, i as createSurveyAssistantChatHandler, l as loadSurveyAssistantThreadAttachments, n as createSurveyAssistantThreadHandlers, o as formatSurveyAssistantStreamError, p as createSurveyAssistantTurnStream, r as SurveyAssistantAuthorizationError, s as getSurveyAssistantReplayableDocuments, t as createMastraMemoryThreadRepository, u as registerSurveyAssistantThreadAttachments } from "./memory-thread-repository-
|
|
5
|
-
import {
|
|
1
|
+
import { n as SURVEY_ASSISTANT_TASK_AGENT_ID, t as SURVEY_ASSISTANT_AGENT_ID } from "./constants-0UHGFcRJ.mjs";
|
|
2
|
+
import { a as parseSurveyAssistantPreviousSettledVersion, i as parseSurveyAssistantPreviousApplyOutcome, n as deriveSurveyAssistantDocumentTransition, o as parseSurveyAssistantSnapshot, s as requireSurveyAssistantTurnState, t as buildSurveyAssistantRequestContext } from "./request-context-CG4SWijt.mjs";
|
|
3
|
+
import { a as SURVEY_ASSISTANT_MAX_ATTACHMENT_NAME_CHARS, c as SURVEY_ASSISTANT_MAX_TEXT_PART_CHARS, d as readSurveyAssistantRequestJson, f as validateSurveyAssistantMessages, i as SURVEY_ASSISTANT_MAX_ATTACHMENT_BYTES, l as SURVEY_ASSISTANT_MAX_TOTAL_ATTACHMENT_BYTES, n as SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS, o as SURVEY_ASSISTANT_MAX_MESSAGES, r as SURVEY_ASSISTANT_MAX_ATTACHMENTS, s as SURVEY_ASSISTANT_MAX_REQUEST_BYTES, t as SURVEY_ASSISTANT_ACCEPTED_ATTACHMENT_TYPES, u as SurveyAssistantRequestError } from "./request-guardrails-TmgQtqp4.mjs";
|
|
4
|
+
import { a as describeSurveyAssistantStreamError, c as loadSurveyAssistantDocuments, d as removeHistoricalSurveyAssistantAttachments, f as replaceCurrentSurveyAssistantAttachmentsWithReferences, i as createSurveyAssistantChatHandler, l as loadSurveyAssistantThreadAttachments, n as createSurveyAssistantThreadHandlers, o as formatSurveyAssistantStreamError, p as createSurveyAssistantTurnStream, r as SurveyAssistantAuthorizationError, s as getSurveyAssistantReplayableDocuments, t as createMastraMemoryThreadRepository, u as registerSurveyAssistantThreadAttachments } from "./memory-thread-repository-KWHQWFEW.mjs";
|
|
5
|
+
import { a as surveyAuthoringReferences, i as surveyAuthoringReferenceTopics, n as formatSurveyAuthoringReferenceRoutingInstructions } from "./authoring-references-BJQ_1nMX.mjs";
|
|
6
6
|
//#region src/server/survey-lifecycle.ts
|
|
7
7
|
const SURVEY_ASSISTANT_SURVEY_ID_METADATA_KEY = "surveyId";
|
|
8
8
|
const normalizeIdentifier = (value, label) => {
|
|
@@ -132,6 +132,6 @@ const createSurveyAssistantSurveyLifecycle = ({ getMemory, getThreadApi, scopeMe
|
|
|
132
132
|
});
|
|
133
133
|
};
|
|
134
134
|
//#endregion
|
|
135
|
-
export { SURVEY_ASSISTANT_ACCEPTED_ATTACHMENT_TYPES, SURVEY_ASSISTANT_AGENT_ID, SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS, SURVEY_ASSISTANT_MAX_ATTACHMENTS, SURVEY_ASSISTANT_MAX_ATTACHMENT_BYTES, SURVEY_ASSISTANT_MAX_ATTACHMENT_NAME_CHARS, SURVEY_ASSISTANT_MAX_MESSAGES, SURVEY_ASSISTANT_MAX_REQUEST_BYTES, SURVEY_ASSISTANT_MAX_TEXT_PART_CHARS, SURVEY_ASSISTANT_MAX_TOTAL_ATTACHMENT_BYTES, SURVEY_ASSISTANT_SURVEY_ID_METADATA_KEY, SURVEY_ASSISTANT_TASK_AGENT_ID, SurveyAssistantAuthorizationError, SurveyAssistantRequestError, buildSurveyAssistantRequestContext, createMastraMemoryThreadRepository, createSurveyAssistantChatHandler, createSurveyAssistantSurveyLifecycle, createSurveyAssistantSurveyThreadMetadata, createSurveyAssistantThreadHandlers, createSurveyAssistantTurnStream, deriveSurveyAssistantDocumentTransition, describeSurveyAssistantStreamError, formatSurveyAssistantStreamError, getSurveyAssistantReplayableDocuments, loadSurveyAssistantDocuments, loadSurveyAssistantThreadAttachments, parseSurveyAssistantPreviousApplyOutcome, parseSurveyAssistantPreviousSettledVersion, parseSurveyAssistantSnapshot, readSurveyAssistantRequestJson, registerSurveyAssistantThreadAttachments, removeHistoricalSurveyAssistantAttachments, replaceCurrentSurveyAssistantAttachmentsWithReferences, requireSurveyAssistantTurnState, surveyAuthoringReferenceTopics, surveyAuthoringReferences, validateSurveyAssistantMessages };
|
|
135
|
+
export { SURVEY_ASSISTANT_ACCEPTED_ATTACHMENT_TYPES, SURVEY_ASSISTANT_AGENT_ID, SURVEY_ASSISTANT_DEFAULT_REQUEST_LIMITS, SURVEY_ASSISTANT_MAX_ATTACHMENTS, SURVEY_ASSISTANT_MAX_ATTACHMENT_BYTES, SURVEY_ASSISTANT_MAX_ATTACHMENT_NAME_CHARS, SURVEY_ASSISTANT_MAX_MESSAGES, SURVEY_ASSISTANT_MAX_REQUEST_BYTES, SURVEY_ASSISTANT_MAX_TEXT_PART_CHARS, SURVEY_ASSISTANT_MAX_TOTAL_ATTACHMENT_BYTES, SURVEY_ASSISTANT_SURVEY_ID_METADATA_KEY, SURVEY_ASSISTANT_TASK_AGENT_ID, SurveyAssistantAuthorizationError, SurveyAssistantRequestError, buildSurveyAssistantRequestContext, createMastraMemoryThreadRepository, createSurveyAssistantChatHandler, createSurveyAssistantSurveyLifecycle, createSurveyAssistantSurveyThreadMetadata, createSurveyAssistantThreadHandlers, createSurveyAssistantTurnStream, deriveSurveyAssistantDocumentTransition, describeSurveyAssistantStreamError, formatSurveyAssistantStreamError, formatSurveyAuthoringReferenceRoutingInstructions, getSurveyAssistantReplayableDocuments, loadSurveyAssistantDocuments, loadSurveyAssistantThreadAttachments, parseSurveyAssistantPreviousApplyOutcome, parseSurveyAssistantPreviousSettledVersion, parseSurveyAssistantSnapshot, readSurveyAssistantRequestJson, registerSurveyAssistantThreadAttachments, removeHistoricalSurveyAssistantAttachments, replaceCurrentSurveyAssistantAttachmentsWithReferences, requireSurveyAssistantTurnState, surveyAuthoringReferenceTopics, surveyAuthoringReferences, validateSurveyAssistantMessages };
|
|
136
136
|
|
|
137
137
|
//# sourceMappingURL=server.mjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as SurveyAssistantThreadDocumentRepository } from "./thread-documents-
|
|
1
|
+
import { a as SurveyAssistantThreadDocumentRepository } from "./thread-documents-rmd6nyX9.mjs";
|
|
2
2
|
import { PostgresStore, PostgresStoreConfig } from "@mastra/pg";
|
|
3
3
|
|
|
4
4
|
//#region src/storage/postgres.d.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { u as SurveyAssistantRequestError } from "./request-guardrails-
|
|
1
|
+
import { u as SurveyAssistantRequestError } from "./request-guardrails-TmgQtqp4.mjs";
|
|
2
2
|
import { createHash, randomUUID } from "node:crypto";
|
|
3
3
|
import { OBSERVATIONAL_MEMORY_TABLE_SCHEMA } from "@mastra/core/storage";
|
|
4
4
|
import { PostgresStore } from "@mastra/pg";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { c as SurveyAssistantSuggestItemKeyInput, d as SurveyAssistantSuggestItemLabelResult, l as SurveyAssistantSuggestItemKeyResult, m as SurveyAssistantTaskInvocationMode, p as SurveyAssistantTaskContext, u as SurveyAssistantSuggestItemLabelInput, v as SurveyAssistantTranslateContentInput, y as SurveyAssistantTranslateContentResult } from "./index-
|
|
2
|
-
import { a as SurveyAssistantModelSelection, n as SURVEY_ASSISTANT_TASK_AGENT_ID, o as SurveyAssistantRequestContext } from "./constants-
|
|
1
|
+
import { c as SurveyAssistantSuggestItemKeyInput, d as SurveyAssistantSuggestItemLabelResult, l as SurveyAssistantSuggestItemKeyResult, m as SurveyAssistantTaskInvocationMode, p as SurveyAssistantTaskContext, u as SurveyAssistantSuggestItemLabelInput, v as SurveyAssistantTranslateContentInput, y as SurveyAssistantTranslateContentResult } from "./index-nhrgbgO5.mjs";
|
|
2
|
+
import { a as SurveyAssistantModelSelection, n as SURVEY_ASSISTANT_TASK_AGENT_ID, o as SurveyAssistantRequestContext } from "./constants-Be91Gay9.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { RequestContext } from "@mastra/core/request-context";
|
|
5
5
|
import * as _$_mastra_core_agent0 from "@mastra/core/agent";
|
|
@@ -12,48 +12,60 @@ declare const surveyAuthoringReferences: {
|
|
|
12
12
|
readonly "core-rules": {
|
|
13
13
|
readonly title: "Core authoring rules";
|
|
14
14
|
readonly content: string;
|
|
15
|
+
readonly loadWhen: "Load when the task depends on canonical tool choice, validation/apply semantics, identifier handling, or another cross-cutting authoring rule that the current turn has not already established.";
|
|
15
16
|
};
|
|
16
17
|
readonly "survey-data-model": {
|
|
17
18
|
readonly title: "Survey data model";
|
|
18
19
|
readonly content: string;
|
|
20
|
+
readonly loadWhen: "Load before reasoning about raw survey storage, hierarchy, ids, translation maps, assets, template values, or any direct survey-json-patch path whose exact location has not already been inspected and documented in the current turn.";
|
|
19
21
|
};
|
|
20
22
|
readonly "source-material-surveys": {
|
|
21
23
|
readonly title: "Source-material survey implementation";
|
|
22
24
|
readonly content: string;
|
|
25
|
+
readonly loadWhen: "Load before implementing or adapting a questionnaire, document, image, or other supplied source material so completeness, respondent-input mapping, meaningful layout, language, and digital adaptation rules are available before the first mutation.";
|
|
23
26
|
};
|
|
24
27
|
readonly localization: {
|
|
25
28
|
readonly title: "Survey localization";
|
|
26
29
|
readonly content: string;
|
|
30
|
+
readonly loadWhen: "Load before adding, removing, translating, or assessing a survey locale, including requests for localization completeness or locale lifecycle changes.";
|
|
27
31
|
};
|
|
28
32
|
readonly "rich-text-content": {
|
|
29
33
|
readonly title: "Rich text content";
|
|
30
34
|
readonly content: string;
|
|
35
|
+
readonly loadWhen: "Load before authoring or changing meaningful formatting, links, images, headings, lists, info boxes, separators, footnotes, or existing structured rich-text content; do not load it for ordinary unformatted plain text.";
|
|
31
36
|
};
|
|
32
37
|
readonly "item-types": {
|
|
33
38
|
readonly title: "Item types";
|
|
34
39
|
readonly content: string;
|
|
40
|
+
readonly loadWhen: "Load with itemType before creating or changing an item when its configuration, response behavior, or content surfaces are not already fully specified by the current capability and focused operation contract; omit itemType only for a genuine cross-type comparison.";
|
|
35
41
|
};
|
|
36
42
|
readonly "embedded-forms": {
|
|
37
43
|
readonly title: "Choice option embedded forms";
|
|
38
44
|
readonly content: string;
|
|
45
|
+
readonly loadWhen: "Load before creating or changing a choice-option follow-up or embedded form, including \"Other, specify\", option-specific inputs, embedded field groups, or embedded-form layout and translations.";
|
|
39
46
|
};
|
|
40
47
|
readonly expressions: {
|
|
41
48
|
readonly title: "Expressions";
|
|
42
49
|
readonly content: string;
|
|
50
|
+
readonly loadWhen: "Load before the first survey_expression prepare call for expression, condition, validation-expression, prefill, or template-value work unless the exact relevant JsonExpression and mutation shapes were already supplied by a current-turn authoring reference. survey_expression context supplies currently available runtime references and value types, but it does not replace the grammar reference. Expressions are not assumed to be survey-response-only; use the references and variable sources supported by the current runtime and reference.";
|
|
43
51
|
};
|
|
44
52
|
readonly "assistant-operations": {
|
|
45
53
|
readonly title: "Assistant operations";
|
|
46
54
|
readonly content: string;
|
|
55
|
+
readonly loadWhen: "Load with operationKind before the first survey_change call when the exact canonical fields of that operation are not already present in the current turn; add itemType when item-specific configuration or capability guidance is needed. Prefer compact detail and use full only for protocol debugging.";
|
|
47
56
|
};
|
|
48
57
|
readonly "fair-by-design": {
|
|
49
58
|
readonly title: "FAIR-by-design survey authoring";
|
|
50
59
|
readonly content: string;
|
|
60
|
+
readonly loadWhen: "Load before advising or editing when FAIR, interoperability, harmonization, cross-study reuse, stable coding, value sets, missingness semantics, metadata, provenance, versioning, standard instruments, controlled vocabularies, or machine-readable export is material; do not impose it on ordinary authoring.";
|
|
51
61
|
};
|
|
52
62
|
readonly "survey-quality": {
|
|
53
63
|
readonly title: "Survey quality review";
|
|
54
64
|
readonly content: string;
|
|
65
|
+
readonly loadWhen: "Load before a substantive questionnaire-quality critique, wording or flow review, respondent-burden assessment, or recommendations about measurement quality; it is not required for a purely technical defect check.";
|
|
55
66
|
};
|
|
56
67
|
};
|
|
68
|
+
declare const formatSurveyAuthoringReferenceRoutingInstructions: () => string;
|
|
57
69
|
//#endregion
|
|
58
70
|
//#region src/server/tasks.d.ts
|
|
59
71
|
type SurveyAssistantTaskAgentConfig = AgentConfig<typeof SURVEY_ASSISTANT_TASK_AGENT_ID, Record<string, never>, undefined, SurveyAssistantRequestContext>;
|
|
@@ -140,5 +152,5 @@ declare const createSurveyAssistantTaskHandler: ({
|
|
|
140
152
|
resolveModel
|
|
141
153
|
}: CreateSurveyAssistantTaskHandlerOptions) => (request: Request) => Promise<Response>;
|
|
142
154
|
//#endregion
|
|
143
|
-
export { SurveyAssistantTaskAuthorizationInput as a, createSurveyAssistantTaskAgent as c, runSurveyAssistantSuggestItemLabelTask as d, runSurveyAssistantTask as f,
|
|
144
|
-
//# sourceMappingURL=tasks-
|
|
155
|
+
export { surveyAuthoringReferences as _, SurveyAssistantTaskAuthorizationInput as a, createSurveyAssistantTaskAgent as c, runSurveyAssistantSuggestItemLabelTask as d, runSurveyAssistantTask as f, surveyAuthoringReferenceTopics as g, formatSurveyAuthoringReferenceRoutingInstructions as h, RunSurveyAssistantTaskOptions as i, createSurveyAssistantTaskHandler as l, SurveyAuthoringReferenceTopic as m, CreateSurveyAssistantTaskHandlerOptions as n, SurveyAssistantTaskAuthorizedIdentity as o, runSurveyAssistantTranslateContentTask as p, RunSurveyAssistantBuiltInTaskOptions as r, SurveyAssistantTaskModelResolutionInput as s, CreateSurveyAssistantTaskAgentOptions as t, runSurveyAssistantSuggestItemKeyTask as u };
|
|
156
|
+
//# sourceMappingURL=tasks-CYqrcaRO.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks-CYqrcaRO.d.mts","names":[],"sources":["../src/server/authoring-references.ts","../src/server/tasks.ts"],"mappings":";;;;;;;;cAMa,8BAAA;AAAA,KAcD,6BAAA,WAAwC,8BAAA;AAAA,cAmCvC,yBAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAqEA,iDAAA;;;KCjGR,8BAAA,GAAiC,WAAA,QAC7B,8BAAA,EACP,MAAA,4BAEA,6BAAA;AAAA,UAGe,qCAAA;EACf,KAAA,EAAO,8BAAA;AAAA;AAAA,cAGI,8BAAA;EAAkC;AAAA,GAAW,qCAAA,KAAqC,KAAA,gCAAA,MAAA,4BAAA,6BAAA,EAAA,qBAAA,CAAA,iBAAA;AAAA,UAc9E,6BAAA,iBAA8C,CAAA,CAAE,OAAA;EAC/D,KAAA,EAAO,IAAA,CAAK,KAAA;EACZ,MAAA;EACA,KAAA;EACA,OAAA,EAAS,0BAAA;EACT,MAAA,EAAQ,OAAA;EACR,YAAA;EACA,eAAA,YAA2B,6BAAA;EAC3B,cAAA,GAAiB,cAAA,CAAe,6BAAA;EAChC,eAAA,GAAkB,qBAAA;EAClB,WAAA,GAAc,WAAA;AAAA;AAAA,cAWH,sBAAA,mBAAgD,CAAA,CAAE,OAAA;EAAS,KAAA;EAAA,MAAA;EAAA,KAAA;EAAA,OAAA;EAAA,MAAA;EAAA,YAAA;EAAA,eAAA;EAAA,cAAA;EAAA,eAAA;EAAA;AAAA,GAWrE,6BAAA,CAA8B,OAAA,MAAW,OAAA,CAAQ,CAAA,CAAE,MAAA,CAAO,OAAA;AAAA,UAiF5C,oCAAA;EACf,KAAA,EAAO,IAAA,CAAK,KAAA;EACZ,OAAA,EAAS,0BAAA;EACT,IAAA,GAAO,iCAAA;EACP,cAAA,GAAiB,cAAA,CAAe,6BAAA;EAChC,eAAA,GAAkB,qBAAA;EAClB,WAAA,GAAc,WAAA;AAAA;AAAA,cA8CH,oCAAA,GACX,KAAA,EAAO,kCAAA,EACP,OAAA,EAAS,oCAAA,KACR,OAAA,CAAQ,mCAAA;AAAA,cA6DE,sCAAA,GACX,KAAA,EAAO,oCAAA,EACP,OAAA,EAAS,oCAAA,KACR,OAAA,CAAQ,qCAAA;AAAA,cA6CE,sCAAA,GACX,KAAA,EAAO,oCAAA,EACP,OAAA,EAAS,oCAAA,KACR,OAAA,CAAQ,qCAAA;AAAA,UA8CM,qCAAA;EACf,UAAA;EACA,QAAA;AAAA;AAAA,UAGe,qCAAA;EACf,OAAA,EAAS,OAAA;EACT,mBAAA;EACA,iBAAA;AAAA;AAAA,UAGe,uCAAA;EACf,QAAA,EAAU,qCAAA;EACV,OAAA,EAAS,OAAA;EACT,gBAAA;AAAA;AAAA,UAGe,uCAAA;EACf,KAAA,EACI,IAAA,CAAK,KAAA,uBACE,IAAA,CAAK,KAAA,gBAAqB,OAAA,CAAQ,IAAA,CAAK,KAAA;EAClD,SAAA,CACE,KAAA,EAAO,qCAAA,GACN,qCAAA,GAAwC,OAAA,CAAQ,qCAAA;EACnD,iBAAA,EAAmB,OAAA,EAAS,OAAA,mBAA0B,OAAA;EACtD,SAAA,EAAW,OAAA,EAAS,OAAA,aAAoB,OAAA;EACxC,qBAAA;EACA,aAAA;EACA,aAAA,EAAe,KAAA;IACb,UAAA;IACA,QAAA,EAAU,qCAAA;IACV,MAAA;IACA,MAAA;EAAA;EAEF,eAAA,GAAkB,qBAAA;EAClB,YAAA,EACE,KAAA,EAAO,uCAAA,GAEL,6BAAA,sBAGA,OAAA,CAAQ,6BAAA;AAAA;AAAA,cAmCD,gCAAA;EAAoC,KAAA;EAAA,SAAA;EAAA,iBAAA;EAAA,SAAA;EAAA,qBAAA;EAAA,aAAA;EAAA,aAAA;EAAA,eAAA;EAAA;AAAA,GAU9C,uCAAA,MAWa,OAAA,EAAS,OAAA,KAAU,OAAA,CAAQ,QAAA"}
|
|
@@ -104,4 +104,4 @@ declare const loadSurveyAssistantDocuments: ({
|
|
|
104
104
|
}) => Promise<SurveyAssistantModelAttachment[]>;
|
|
105
105
|
//#endregion
|
|
106
106
|
export { SurveyAssistantThreadDocumentRepository as a, loadSurveyAssistantThreadAttachments as c, replaceCurrentSurveyAssistantAttachmentsWithReferences as d, SurveyAssistantThreadDocumentContent as i, registerSurveyAssistantThreadAttachments as l, SurveyAssistantModelAttachment as n, getSurveyAssistantReplayableDocuments as o, SurveyAssistantThreadDocument as r, loadSurveyAssistantDocuments as s, SurveyAssistantAttachmentAccess as t, removeHistoricalSurveyAssistantAttachments as u };
|
|
107
|
-
//# sourceMappingURL=thread-documents-
|
|
107
|
+
//# sourceMappingURL=thread-documents-rmd6nyX9.d.mts.map
|